奥赛C语言复习_第1页
奥赛C语言复习_第2页
奥赛C语言复习_第3页
奥赛C语言复习_第4页
已阅读5页,还剩65页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言复习提纲第一章挈概述.程序设计语言:机器语言、汇编语言、高级语言。.高级语言翻译成机器语言的两种方式:编译方式、解释方式。.算法+数据结构=程序.结构化程序设计的三种基本结构:顺序结构、分支(选择)结构、循环结构.算法的表示方法:自然语言、传统的程序流程图、N-S流程图。.结构化程序设计的32字原则:.C语言的产生及发展:UNIX操作系统.C语言的特点P13页:.C语言由函数组成,有且仅有一个main函数。.函数:说明部分、函数体。.一条复杂语句分行书写,用反斜杠。)续行。.注释用/* */第二章基本输入输出语句.单字符输入/出:getchar(),putchar(字符变量)。.字符串:gets(字符数组名)、puts(数组名)。3..格式化输入:scanf(“格式控制符”,地址列表);格式控制符:%c、%d、%〇,%x、%s、%fu若输入long型、double型应加1,如%Id、%lo、%lfu 格式%s输入字符串不包含空格,且对应地址表列是字符数组名。u 默认分隔符:空格、回车、Tab键(也可按域宽截取)u 格式控制符间不宜加其它字符,如加入其它字符,输入时应原样输入,否则数据接收错误。如:scanfl;“%d,%dM,&a,&b):输入数据时两数据间要有逗号;scanf("%d%d",&a,&b):%d间有两个空格,则输入数据时至少有两个空格。u 输入函数中%f格式不能带小数,如:scanflf"%7.2f”,&a)是错误的。u %c格式输入单字符,空格字符和转义字符都作为有效字符接收。u %*d表示跳过它对应的输入数据。4..格式化输出:printf(“格式控制符”,输出列表);u 格式控制符部分可加入其它字符,原样输出。如:提示语或使输出结果清楚显示u 输出列表:可以是变量、常量、表达式、函数调用等。u 转义字符:P19页,以斜杠へ)开始,作为一个字符,如求字符串长度:,,jk\\gk\bl\Ok\nlj",长度为7。u注意:输出long、double型数据,用%Id、%lfu 可设定输出宽度,m和n,如:%5d、%6.2f、%.2fu 负号表示域内向左对齐,如:%-12d第三章数据类型.常量:u 整型常量:235、0235、ー0x235(前可加负号),长整型:-121、ー0651、0x551等。u实型常量:小数形式、指数形式。u 字符常量:用单引号,如'c'(注意转义字符)。u 字符串常量:用双引号,如''hglhg"、“a”,内存占用为实际长度加1。u 符号常量:无参宏(#define)。.变量:u 标识符命名规则:4条(P37页)。u 各种类型变量的长度。u 数据类型转换:自动、强制。u注:强制类型转换只得到所需类型的结果值,原变量或表达式的类型仍为原类型。如(float)(x+y).各种运算符运算规则及其优先级P51页。.补充一ー逻辑表达式的优化运算:u &&运算:只要算出第一个表达式为0,第二个表达式不再运算。u ||运算:只要算出第一个表达式为1,第二个表达式不再运算。如:inti=0j=0,a=6;if((++i>0)||(++j>0)) a++;printf(%d%d%d",ij,a);结果i为1,j为〇,a为7。.其它运算符:条件运算、逗号运算、长度运算符(形式:sizeof表达式或sizeof(数据类型))第四章控制语句l.if、while、for中的表达式,一般是逻辑或关系表达式,也可以是任意类型表达式。如while(a=5)….2.如果有多条语句,必须用大括号括起,构成复合语句。3.switch语句中case后面只能是常量值:若执行完某case后的语句没遇到break,则继续执行下一个case语句。.循环程序:注意循环变量的初值、修正值、循环条件等,以及循环中用到的某些变量赋初值,如求累加和变量。.一般是先判断条件,再执行循环体;但do—while语句是先执行一遍循环体,再判断条件。.break、continue语’ロJ。.本章主要是算法构思。(先考虑好需要那些变量,即数据结构,再考虑怎样求解问题)第五章.数组定义:inta[10]!或inta[N](N需要事先定义为符号常量:#defineN10);数组长度必须是常量值,不能是变量,可以是在程序开始前定义的符号常量,进行长度定义。.下标引用:O〜N-1,切记不能引用到N。(inta[5]; a[5]=10i这种引用是错误的).数组初始化时可省略长度定义。.数组定义后如没有给任何ー个元素赋初值,对于static类型,各元素初值为0s对于auto类型,各元素值不定。.数组不能整体赋值。数组中各元素值的输入/出,应使用循环程序逐个输入/出;字符数组例外(gets、puts)〇.数组中的两种排序方法;u冒泡法:外循环为i=0;i<n-l;内循环为j=0;j<n-l-i;循环中比较a[j]和a[j+l]两个元素,并互换。(考试内容)u选择法:外循环为i=0;i<n-1:内循环为j=i;j<n;内循环开始前,先赋初值min=i;循环中比较a[min]和a[j]两个元素,不互换,只让min=j;内循环结束后再进行互换,a[i]和a[min]互换。(不做考试内容,但是希望同学们记住这种好的排序方法).二维数组:按行存放;赋初值的5种情况P83页。8,字符数组:通常定义较长长度,如:chars[50],通常用于存放字符串,结束标志为‘、〇‘。可用字符串常量为其初始化,如:chars[]="sdkhg"? 也可由键盘输入,如gets(s):输出用puts(s);注意:chars[5]={'a'd'f'g'w'};此种形式不是字符串,无字符串结束标志,仅仅是普通一维字符数组,不能用puts输出,只能用%c格式逐个输出。字符数组的输入/出还有两种形式:%c、%s。9.字符串函数:strcpy(sl,s2)、strcat(sl,s2)、strcmp(sl,s2),strclen(s)>strupr(s)、strlwr(s).函数定义:intfunc(inta,inty);如定义时没指明函数类型,如:fun(inta);默认是int型,返回值不确定。.声明:函数定义在前,使用在后,可省略函数声明,反之需要在使用前声明。函数声明的几种变通形式。u 函数声明后加分号,而函数定义后没有分号。.函数调用:函数名(实参表);u 实参与形参个数、类型、位置一致。u 形参与实参占据不同的存储单元:形参只在函数调用时才为其分配存储单元,函数调用结束后释放。u 实参与形参之间是传值调用,单向传递关系,形参值改变,不会影响实参值。u 补充:函数可嵌套调用,不可嵌套定义。u 嵌套调用:ー个函数内部又调用另外一个函数。u 递归调用:ー个函数调用它自身。(考试不作要求).数组作为函数参数:voidfunc(inta[],intn);u 传递的是实参数组的首地址。调用时实参是数组名,如fiinc(a,10);.多维数组:voidfiinc(inta[][5],intn);(可省略第一维,但不能省略其它高维)。.从作用域角度,变量分为:全局变量、局部变量。u 局部变量:在函数内部定义,只能在该函数中使用,包括函数的形参和复合语句中定义的变量,main函数中定义的变量也是局部变量,不能被其它函数使用。u 不同函数内定义的同名变量,互不影响,因其作用域不同,内存空间独立。u 全局变量:在函数外部定义,作用域从定义开始到本文件结束。其间的所有函数都可以使用它,可在各函数间传递值,但容易带来副作用,降低模块独立性。.变量的存储类别:auto、static>register、extern〇.局部变量的存储类别:auto、static、register。u auto型的生存周期时函数被调期间,两次调用之间不保留值。uvoidfiinc(intn){staticinta=l;a+=n;prints"%d,",a);}main(){intb=2;func(b);fiinc(b);}程序运行结果为3,5,static型的生存期是整个程序运行期间,保留上一次调用后的值,且只赋一次初值(在程序运行前初始化,默认初值为0)。如:.全局变量的存储类别:static、extern〇u 全局变量总是存放在静态存储区间,生存期是整个程序运行期间,只赋ー次初值,在程序运行前初始化,默认初值为〇。u用extern对全局变量加以声明,可以将其作用域扩充到整个文件或其它文件。例:P113页、P114页。u 定义全局变量时加上static,可将其作用域限制在本文件中,不能被其它文件使用。例:P114页。.函数的作用域是全局的,可被其它函数调用。u 函数存储类别:static>extern0默认为extern型。#defineSQR(x)x*xmain(){inta,k=3;a=-H-SQR(k+l);printff%d\n",a);}替换后的表达是为a=++k+l*k+l结果为9如:staticintfunc(inta);则函数不被其它文件使用,所以两文件中的同名静态函数,互不干扰。第七章预处理与宏命令预处理命令以“#"开头,末尾不加分号。在程序编译之前处理。2.宏替换:将函数中出现宏名的地方用宏体进行替换。u 宏体可以是数字、也可以是组成C表达式或语句的其它字符,还可以引用已定义的其它宏名。u 宏的作用域:定义宏之后到本源文件结束,可用#undef提前结束。u 无参宏(符号常量):#definePI3.14注意:函数中双引号内的宏名不替换,如printf(“PI”);U 有参宏:#define宏名(形参表)宏体u 引用:宏名(实参表)u 注意有参宏如果宏体和参数没用括号括起,可能有副作用。u 分析有参宏的程序时,必须先将宏替换后的表达式写到纸上,再分析结果。u 文件包含:#include〈文件名〉搜索系统标准目录#include"文件名”先搜索当前目录,找不到再搜索系统标准目录第八章指针.指针的基本概念:指针三地址;.指针常量:某已知变量的地址,或数组名等,:inta,b[5];此时&a和b就是指针常量(固定值)。.指针变量:如inta,*p=&a;chars[9],*q=s;u 赋值:必须赋地址值,如inta,*p;p=&a;如p=2001;是错误的。.间接访问:*p=5;等同于a=5;.指针作为函数的参数,传递的是实参变量的地址,如:voidfiinc(int*p)u 调用时用某变量的地址常量,或指向该变量的指针作为实参,如主调函数中有定义inta,*q;q=&a;则可用&a或q作为实参进行调用,即fiinc(&a);或ftinc(q);都是将变量a的地址传递给形参指针p,使指针p指向变量a。函数中使用・p就是对a的间接访问,就可以改变a的值,或者将结果放入a中。但形参变量本身改变,反过来不会影响实参指针值。.指针与一维数组:inta[10],*p=a:则a代表数组首地址,是指针常量,U 元素的表示方法:a[i]、*(a+i)、p[i]、*(p+i)u 元素地址:&a[i]>a+i、p+Iu区别:a实指针常量,只不能变,而p是指针变量,可进行增减运算;所以常通过p的增减运算来快速访问数组a,如:while(p<a+5)scanflf"%d",p++);或while(p〈a+5){(*p)-H-;printR"%d,",*p++);}u 理解(*p)++、・p++、*(p++)、p++的含义。u执行p++后指针拨动的单元数(由元素类型决定).ー维数组作为函数形参,实际上就是ー个指针变量,如:func(inta[],intn);等同于func(int*a,intn);u 函数声明的几种变通形式,P144页。u 所以指针a在函数中值可以改变,如*a++,不同于函数内定义的数组如:intb[5];这里b是指针常量。.指针与字符串:char*p,s[50]=^fdjfjdfjp=s;u可用p间接访问字符串,如指针法:fbr(;*p!=ヘ〇';p-H-)或下表法:for(i=0;p[i]!=ハ〇';i卄).指针形参在函数间传递字符串:voidcopy(char*sl,char*s2){while(*sl-H-=*s2+4-);}u 调用时用字符数组名或指向某字符串的指针做实参,如:char*p=Msdgygkh";charss[5O];func(ss,p);u 函数调用的灵活形式:fimc(ss+2,p)或func(ss,p+2)u注意:输入字符串常用gets函数,但参数应是字符数组名,或已指向某字符数组的指针,如:chars[5O],*p:gets(s);是正确的,而gets(p)是错误的,因为p没被赋地址值,无任何指向。改正:p=s;gets(p);注意:以下的10、II、12、13节所列内容不作期末考试要求,但是等级考试要考,同学们如果课下有时间最好看看.数组指针与多维数组:inta[3][4]; int(*p)[4];p=a;up指向a的一整行,此时・p就代表a[0];如果执行p++,则p指向下一行,即・p代表a[l],p跳过单元数为2*4=8个字节。u 引用元素的两种形式:或(*p)[j]u 几个等价关系式:由x[i]等价于・(x+i)和&x[i]等价于x+i得出:等价(*(a+i))[j]等价・(a[i]+j)等价*(*(a+i)+j)等价*(a+i)+j等价a[i]+ju 指针形参在函数间传递多维数组:intfunc(int(*b)[4],intn):等价于intfiinc(intb[][4],intn);u 调用时用二维数组名做实参,如:func(a,3);.指针数组:char*s[3],表示数组s有3个元素,每一个元素都是ー个指针变量,都可以指向ー个字符串。u 赋初值:char*s[3]={“sdgg",“ww“,"q"}:或单独赋值:s[0]="sdgg";s[l]=“ww";s[2]="q”:u 用于指向多个字符串。u 也可用字符数组存储多个字符串,只是占用内存空间大。.指向指针的指针:二级指针,char**p:u 用于访问指针数组,或在函数间传递指针数组,通常就是传递多个字符串。.char*s[3]={"sdgg"ww"q"};char**p;p=s;u p指向数组s的首地址,此时・p代表s[0],即指向第0个字符串,*P和s[0]都是第0个字符串的首地址,u可用gets(*p)或gets(p[i])来输入字符串,用puts(*p)或puts(p[i])来输出字符串。u 在函数间传递多个字符串的参数形式:fbnc(char**s,intn)或func(char*s[],intn)或func(chars[][],intn)总结:1、通常在主调函数中定义指针数组指向多个字符串。2、函数:func(char**s,intn)或fbnc(char*s[],intn)传递多个字符串首地址;3、在函数内的使用形式:s[i]或*(s+i),都代表第i个串首地址,或・s++;4、一般都是整串操作,循环一般使用字符串个数进行控制,如:for(i=0;i<n;i++) {s[i]……}u 字符串操作函数:strlen。、strcpy。、strcmp().返回指针值的函数:char*func(char*s,charch)u切记:返回的是地址,在主调函数中应使用指针类型变量接收函数返回值,如:char*p,aロ="asdgg"; p=func(a,'d');.动态内存分配:掌握malloc函数的使用方法。第九章结构体.结构体:struct,.定义的几种形式P177页。成员可以是任意类型。成员引用:结构体变量名.成员名u 占用内存大小为:各成员占用内存之和。U 结构体数组:同普通数组ー样使用。初始化时注意双重括号。U 结构体指针:(*p).成员名或p->成员名注意:只能用结构体变量地址赋值,不能赋某成员的地址,如:p=&;是错误的。u 通常定义变量或形参时必须加上struct,如:voidfunc(structstudent*p){structstudenta[4],temp; }.共用体:union,定义形式同结构体。成员引用:共用体变量名.成员名u 占用内存大小为:共用体中较长的成员的长度。u 某ー时刻只有一个成员起作用,最后一个存放的成员值有效。U 结构体类型与共用体类型可互相嵌套使用,即结构体成员的类型也可以是共用体类型,反之亦然。.枚举类型:如:enumweek{sun,mon,tues,wen,thur,fri,sat}day;u 枚举元素就是枚举变量的可能取值,如:da戸mon;u 枚举元素视为常量,其值就是序号(0~n-l)o也可以在定义时改变其值,如:enums{a=3,b=l,c=2};.类型标识符自定义:typedef,如:typedefintINTEGER;typedefstruct{ }STU;typedefintARR[10];以后可直接使用INTEGER、ARR,STU类型进行变量定义,书写简略。u注意:只能为类型另起新名,不能创造新类型,也不能为变量或函数重新命名(define)〇第十章文件.流式文件:文本文件、二进制文件。u 文本文件:若干字符序列,较长,可用type命令或记事本查看。u二进制文件:若干字节序列,短,存取速度快,不能用type或记事本等查看。.文件操作:读操作、写操作。使用有关文件函数来完成,需包含头文件stdio.h.操作步骤:①定义文件类型指针②打开文件③检测指针④读/写 ⑤关闭文件。.打开文件时的使用方式各6种,P207页。.读/写函数:fgetc(fp),fputc(ch,fp),fread(*p,size,n,fp),f\vrite(*p,size,n,巾)、fgets(*str,n,fp)、fputs(*str,fp)fscanfl[ヤ,“格式控制符”,地址列表)、fprintfl[中,'’格式控制符”,输出列表),以上函数是简要书写,具体参考P238页。.三个标准设备文件指针:stdin,stdout,stderr7、有关文件操作函数ferror(m)、feof(れ、clearerr(fp);10.控制循环:while((ch=fgetc(fp))!=EOF)或while(你of伸))EOF是在头文件中定义的符号常量,值为•1代表文件结束。ー、选择题1、ー个C语言程序总是从A、主过程开始执行 B、主函数开始执行C、子程序开始执行 D、主程序开始执行2、若num、a^b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为.A、4 B、16C、32 D、523、下面四个选项中,均是C语言关键字的选项是AヽautoenumincludeB、switchtypedefcontinueC、signedunionscanfD、ifstructtype4、下面四个选项中,均是合法整型常量的选项是A、160-Oxffff011B、•OxcdfOlaOxeC、ー01986,0120668D、-0x48a2e5Ox5、下面四个选项中,均是合法浮点数的选项是A、+le+l5e-9.403e2B、«.6012e-4-8e5C、!23e1.2e-.4+2e-lD、-e3.8e-45.e-06、下面四个选项中,均是合法转义字符的选项是A、ヤ’3'\n'B、ヘ’へ017‘へ’”C、へ018,へf,xab,D.'WO'MOI'\lf7、下面正确的字符常量是A、へX17'B、へ80,C、バD、“\n”8、下面四个选项中,均是正确的ハ进制数和十六进制数的选项是A、-100x8f-011B、Oabc-017OxcC、010-0x11OxflD、0al2-0x123-Oxa9、下面四个选项中,均是正确的数值常量或字符常量的选项是A、0.0Of8.9e&B、%”3.9E-2.5leiヤ”C、3011OxFFOO0aD、+001Oxabcd2e250.10、若有代数式,则正确的C语言表达式是Aヽ2*ln(x)*cos(x)/3*xB、2*ln(x)*cos(x)/(3*x)C、2*log(x)*cos(x)/3*xD、2*log(x)*cos(x)/(3*x)11、若有说明语句:charchl-\065f;charch2-,2n;charch3-2,;则:chi中,ch2中,ch3中A、包含1个字符 B、包含2个字符C、包含3个字符 D、字符个数不确定,说明不正确12、若有运算符:>、・=、?:、%,sizeof,则将它们按运算的优先级排列的正确次序为(由低至高) A、*=—>?:—>%T>Tsizeof B、?:一・=—>>T%—>sizeofC、*=—>>—*?:TsizeoJ%D、*=—>?:—►>—►%—>sizeof13>若有以下类型说明语句:chara;intb;floatc;doubled;则表达式a*b+d-c的结果类型为A、floatB、charC>intD、double14、若有变量说明:inta=0,b=0,c=0;,以下符合C语言语法的赋值表达式是A、a=9+b+c=a+9B、a=9+b;c=a+9;C、a=(9+b,b++)D、a=9+b++=a+715、已知字母A的ASCII码为(65)10,变量chi为字符型,则执行语句chl=,A屮6しす;后,chi中的值为A、DB、68C、ー个不确定的值D、C16、以下运算符中优先级最高的运算符是A、&&B、++C、?:D、!=17、若有定义:intk=7;floata=2.5,b=4.7i则表达式a+k%3*(int)(a+b)%2/4的值是A、2.500000 B、2.7500000C、3.500000 D、0.00000018、sizeofiffloat)是A、双精度型表达式B、一个整型表达式C、ー个函数调用 D、ー个不合法的表达式19、设变量y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是A、y=(y*100+0.5)/100.0B、x=y*100+0.5,y=x/100.0C、y=y*100+0.5/100,0D、y=(y/100+0.5)*100.020、设int类型的数据长度为2个字节,则unsignedint类型数据的取值范围是A、〇〜255 B、〇〜65535C、-32768〜+32767 D、-256〜+25521、若有以下定义,则能得到值为3的表达式是(intm=7,n=12)A、n%=(m%=5) B、n%=(m-m%5)C、n%=m-m%5 D、(n%=m)-(m%=5)22>若有说明:inta=l,b=2,c=3,d=4;则表达式a〈b?a:c<d?c:d的值是A、4B、3C、2D、123、若x为int类型,则逗号表达式(x=4*5,x*5),x+25的结果是,x的值是A、20B、100C、表达式不正确 D、4524、putchar函数可以向终端输出ー个A,整型变量值 B、实型变量值C、字符串 D、字符或字符型变量值25、若有以下变量说明和数据的输入方式,则正确的输入语句为C 代表空格)变量说明:floatxl,x2;数据的输入方式:4.52V回车〉3.5v回车,A、scanf("%f,%r,&xl,&x2):B、scanf(',%f%f,,&xl,&x2);C、scanfC%)1-1%2.1f;&xl,&x2);D、scanff%3.2f%2",&xl,&x2);26、若运行以下程序时,从键盘输入25,13,10〈回车》,则输出结果为main(){intal,a2,a3;scanf(,,%d%d%d,',&al,&a2,&a3);printf(na1+a2+a3=%d\n",a1+a2+a3);}A、al+a2+a3=48 B、al+a2+a3=25B>al+a2+a3=10 D、不确定值2フ、已知a、b、c为int类型变量,若有输入语句:scanf(na=%db=%dc=%dn,&a,&b,&c);为使a值为1,b值为3,c值为2,从键盘输入数据的正确形式应当是A、132V回车, B、a=lb=3c=2〈回车〉C、1v回车>3〈回车>2v回车, D、a=lv回车>b=3〈回车,c=2v回车,28、以下能正确定义整型变量x、y和z并为其赋初值5的语句是Aヽintx=y=z=5; B>intx,y,z=5;C^intx=5,y=5,z=5;D、x=5,y=5,z=5;29、执行下面程序段后,x的值是intx;printf("%d\n">(x=3*5,x+5));A、!0B、15C、20D、530、下面程序段的输出结果是inta=023;printf(n%d\n",—a):A、23B、17C、18D、2431、已知ch是字符型变量,则不正确的赋值语句是Aヽch=5+9; B、ch-\0f;C、ch=ヮ屮9'; D、ch='a+b';32、设x,y是float型变量,则不正确的赋值语句是A、++x; B、y=int⑸;C、x*=y+l; D、x=y=0:33、设有说明:doubleb=0.5,c=1.5;inta=10;则正确使用了C语言库函数的赋值语句是

A^c=asin(c)+fabs(a);B、b=log10(b)+pow(b);C、c=sqrt(b-c); D、a=(int)(atan2((double)a,b)+exp(b-0.2));34、以下程序段的输出结果是inti=lj=4,k=2;floatx=5.5,y=9.0,z;z=(i+j)/k+sqrt((double)y)*1.2/k+x;printfC%f\n”,z);A、9.800000 B、9.300000C、8.500000 D、8.00000035、若a为int类型变量,则执行以下程序段后a的值为a=5;a*=a/=a++;A、2B、1C、40D、336、若a和b均为im型变量,则执行以下程序断后x的输出是x=15;y=15;printf(H%d\nH,x%=(y%=2));A、〇B、1C、6C、1237、若x为unsignedint类型变量,则执行以下程序段后x的值是x=65535;printf(n%d\nn,x);A、65535B、1C、无定值D、-138、以下语句的执行结果是printf(M%d\n';NULL);A、1B、〇C、•1 无定值39、若x为int类型变量,则执行以下程序段后的输出结果是x=0xDEF;printf(H%4d,%4o,%4x\n,',x,x,x);A、3567,6757,def B、3567,6757,xdefC、3567,06757,Oxdef D、3567,6757,Odef40、若a、b、c均为血型变量,则执行以下程序段后的输出结果为.b=(a=1〇,a+5,c=10);printf("a=%d,b=%d,c=%d\nH,a,b,c);c=(a=10,b=5,a+b);printf("a=%d,b=%d,c=%d\nH,a,b,c);Ana=10,b=15,c=10

a=10,b=5,c=10C、Ana=10,b=15,c=10

a=10,b=5,c=10C、a=10,b=10,c=10

a=10,b=5,c=1541、若al、a2、a3、a=10,b=5,c=10D、a=10,b=10,c=10a=10,b=5,c=5a4均为char类型变量,则执行以下程序段后的输出结果为.al=T;a2=2;a3=3;a4='4,;printfi("%lc\nH,al);printf("%2c\nH,a2);printf(n%3c\nH,a3);printfi(n%4c\nH,a4);A、1B、1C、1D、输出格式的描述符不正确TOC\o"1-5"\h\z2 2 023 3 0034 4 000442>执行语句printff'Theprogram'snameisc:\\tools\book.txtH);后的输出是ーA、Theprogram'snameisc:toolsbook.txtBヽTheprogram'snameisc:\toolsbook.txtC、Theprogram'snameisc:\\toolsbook.txtD、Theprogram'snameisc:\toolook.txt43、设a、b、c、d均是int类型变量,为了使以下程序段的输出为:1234+123+12+1,正确的输入形式应当是scanf("%4d+%3d+%2d+%ld",&a,&b,&c,&d);printf("%4d+%3d+%2d+%ld",a,b,c,d);A、1234123121V回车, B、1234123412341234V回车〉C、1234+1234+1234+1234V回车,D、1234+123+12+lv回车〉44、设cl、c2均是char类型变量,则以下不正确的函数调用是A、scanfif'c1=%cc2=%c",&c1,&c2); B、getchar()C^putchar(c2); D、putchar(cl,c2)45>逻辑运算符两侧运算对象的数据A、只能是〇或1 B、只能是〇或非〇正数C、只能是整型或字符型数据 D、可以是任何类型的数据46、判断char型变量cl是否为大写字母的正确表达式是A>'A'<=cl<='Z' B、(cl>=,A')&(cl<=,Z,)C、(c1>='A')&&(c1<='Z')D、('A'<=c1)AND('Z'>=c1)47、执行以下程序段后的a值是,b的值是,c的值是inta=5,b=6,c=1,x=2,y=3,z=4;c=(a=c>x)&&(b=y>z);A、〇B、6C、1D、548、设i、j、和k是int型变量,且i=3j=4,k=5,则以下值为〇的表达式是A、'i'&&'j, B、i<=jC、i||j+k&&j-k D.!((i<j)&&!k||l)49、设ch是char类型变量,其值是A,则以下表达式的值是ch=(ch>='A'&&ch<='Z')?(ch4-32):chA、ZB、AC、aD、z50、若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是Aヽnum%2==l B、!(num%2=0)C^!(num%2) D^num%2二、填空题1,C源程序的基本单位是〇2、ー个C语句中至少应包含ー个.3、在C语言中,输入操作可以由库函数完成,输出操作可以由库函数完成。4、若x是int型变量,且x=6,则表达式x%2+(x+1)%2的值为〇5、若a、b、c均是int型变量,则执行表达式c=(a=5)-(b=2)+a后,c的值为。6、若有定义:int尸7;floatx=2.5,z=4.7;,则表达式x+(int)(y/3*(int)(x+z)/2)%4的值为7、若采用十进制数的表示形式,则077为,0111为,0x29为,Oxab为。8、设x为float型变量,y为double型变量,a为int型变量,b为!ong型变量,c为char型变量,则表达式x+y*a/x+b/y+c的结果类型为«9、若有说明intx=10,y=20;请写出下面各printf语句对应的输出结果。®printfi("%3d\n",x+y);②printfC%3o\n",x*y);@printf("%3o\n",x%y);@printf("%3x\n",(x%y,x-y,x+y)):10、设有以下变量说明:inta=5,b=10;floatx=3.5,y=10.8;charcl-A',c2-B*;请根据以下输出格式和结果,完成printf语句中的填空。①a=5,b=10,x+y=14.3printtf",);②x-y=-7.3I-'a-b=-5printfif"",);③cl='A'or65(ASCI1)1~1c2='B'or66(ASCII)printfi["",);Ik若有说明:inta=123;floatb=456.78;doublec=-123.45678;请写出以下各printf语句的输出结果。®printfi("%.3f%.3e%lf\n",b,b,c):@printfi["%8.3f%8.3e%g\n",b,b,c);@printf("%u%-10.3f%-10.3e\n",a,b,c);12、若al和a2都是double型变量,且al的初值为3.0,a2的初值为2.0,则表达式pow(a2,fabs(al))的值为〇13、假设变量x和y均为整型,以下语句可以不借助任何变量把x、y中的值进行交换。请填空。x+=;y=x-; x-=;14、已有定义intm:floatn,k;charchl,ch2;,为使m=3,n=6.5,k=12.6,chl='a',ch2='A',对应的scanf语句是,输入数据的方式是15、已有定义int岫:floatk:,为将一10赋给a,将12赋给b,410.34赋给k;则对应以下scanf语句的数据输入形式是。scanff'%〇%x%e",&a,&b,&k);16、在C语言中,&作为双目运算符时表示的是,而作为单目运算符时表示的是ー17、设x、y、z均为int型变量,且x=3,尸ー4,z=5,请写出下面每个表达式对应的结果。①、(x&&y)=(x||z)②、!(x>y)+(y!=z)||(x+y)&&(y-z)③、x++-y+(-H-z)18、设x、y、z均为int类型变量,请用C语言的表达式描述以下命题。①、x或y中有一个小于z②、x、y和z中只有两个为负数③、y是奇数19、以下程序的输出结果为main(){intx,y,z=246;x=z/100%9:y=(-l)&&(-!);printff%d,%d\n”,x,y);C语言程序设计第4章练习题ー、选择题51、以下正确的if语句是A、if(n>0)print吋%'n)printf(H%rrn);B、げ(n>0){n=n+m;printfC%f',n);}elseprintfC%伊,・n);C>if(n>0){n=n+m; };elseprintfT%f',-n);D、if(n>0){n=n+m;printグ%ド,n)};elseprintf(n%f',-n);52、以下程序main(){intxl=3,x2=0,x3=0;

if(xl=x2+x3)printf("****");elseprintff####"); }A、输出:****B、输出:####C、存在语法错误 D、无输出结果53、为了避免在嵌套的条件语句i&else中产生二义性,C语言规定:else子句总是与A、缩排位置相同的if配对B、其之前最近且不带else的if配对C、其之前最近的if配对 D、第一个if配对54、若w、x、y、z、k均为int类型变量,则执行下面语句后的k的值是w=l; x=2; y=3; z=4;k=(w<x)?w:x;k=(k<y)?k:y;k=(k<z)?k:z;A>1B、2C、3D、455、下面程序段所表示的数学函数关系是x=-l;if(a!=0)if(a>0)x=l;elsex=0;-1(a<0) 1(a<0)A、x= 0(a=0) B、x=-1(a=0)1(a>0) 0(a>0)0(a<0) -1(a<0)C、x=-1(a=0)D、x=1(a=0)1(a>0) 0(a>0)56、以下关于switch语句和break语句的描述中正确的是A、在switch语句中必须使用break语句B、break语句只能用于switch语句体中C、break语句只能用于循环语句中D、在switch语句中使用break语句或continue语句的作用相同57、设有说明:inta=l,b=0;则执行以下语句后的输出结果是switch(a){case1:switch(b){case〇:printff**0**\nn);break:

case1:printf(H**1**\nM);break;}case2:printff'**2**\nn);break;ハ**q**Bハ**q**B、**0****2****2**C、**0****I**D、switch语句中存在语法错误**2**58、设有程序段intx=10;while(x=0)x=x-1;A、while循环执行10次B、循环是无限循环C、循环体语句ー次也不执行 D、循环体语句只执行一次59、语句while(!y)中的表达式!y等价于A、y=0B、y!=lC、y!=0D、y==l60>以下关于do-while循环不正确的描述是A、dO-while的循环体至少执行一次B、do・while循环由do开始,用while结束,在while(表达式)后面不能写分号C、在do-while循环体中,一定要有能使while后面表达式的值变为零("假”)的操作D、do・while的循环体可以是复合语句61、设x、y均是int类型变量,且x值为100,则关于以下fbr循环的正确判断是for(y=100;x!=y;++x,y++)printf(,'****\nM);A、循环体只执行一次 B、是无限循环C、循环体一次都不执行D、for语句中存在语法错误62、以下程序段中的do・while循环m=-l;do{m=m*m;}while(!m);A、是死循环 B、执行二次C、执行一次D、有语法错误63、以下关于for循环的正确描述是A、for循环只能用于循环次数已经确定的情况B、for循环是先执行循环体语句,后判断表达式C、在for循环中,不能用break语句跳出循环体D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来64、语句for(表达式1;J表达式3)等价于A、for(表达式1;0;表达式3)B、for(表达式1;15表达式3)C、for(表达式1;表达式1;表达式3)D、for(表达式1;表达式3:表达式3)65、若k为整型变量,则以下for循环的执行次数是for(k=2;k=0;)printff%d”,k一);A、无限次B、〇次C、1次D、2次66、以下程序段的执行结果是intx=-3;do{printff%d\n”,x-H-);}while(!x);A、•3 D、•3Bx-2 -2C、陷入死循环•167、执行以下程序段后,y的值是,x的值是ーintx=l,y=10;do{y-=x;X"H";}while(y—<0);A>9B、8C、-2D、2E、4F、368、执行以下程序段后a的值是,b的值是inta,b;for(b=l,a=l;b<=50;b++){if(a>=10)break;if(a%2=l){a+=5;continue;}a-=3; }A、!0B、6C、7D、8E、469、以下程序段的执行结果是inta,b;for(a=l;a<5;a+=2){for(b=l;b<5;b++)printf(”%2d”,a*b);if(b==5)printf(“山();}A、1234B、123436912 691215C.2346912D、234691210152070、以下程序段中是死循环的是A、intn=l; B>intn=l;while(!n)do{n—;n++; }while(n);C、intn=l;D、for(n=5;n<l;);do{n++;}while(n);71、下面程序的运行结果是main(){intm=0;while(m<=2){m-H-;printグ%d\n”,m);})TOC\o"1-5"\h\zA、1 B、12C、1 D、 12372、以下能正确计算Ix2x3x…xio的程序段是A、do B、do{k=l:n=l: {k=l;n=0;n=n*k; n=n*k;k-H-; k-H-;}while(k<=10); }while(k<=10);C、k=l;n=l; D、k=l;n=0;do do{n=n*k; {n=n*k;k-H-; k++;}while(k<=10); }while(k<=10);73、下面程序的功能是计算1至10之间的奇数之和以及偶数之和。请选择填空。main(){intx,y,z,k;x=z=0;for(k=0;k<=10;k+=2){x+=k;z+=y;)printf("偶数之和=%d\n",x);printf("奇数之和=%d\n",);)①、A,y=k-B、y=k+lC、y=k-H-D、y=k-l②、A,z-10B、zC、z-11D、z-y74、下面程序段的功能是计算100〇!的末尾含有多少个零。请选择填空。(提示:只要算出1000!中含有因数5的个数即可。)for(m=0,n=5;n<=1000;n+=5){t=n;while(){m-H-; t=t/5; }}A、t%5B、t=t%5=0C、t%5=0D、t%5!=075、若有以下程序段:for(m=1;m<=100;m-H-){scanff%d\&y);if(y<0)continue;printf("%3dH,m); }正确的描述是A、当y<0时整个循环结束B、y>=0时什么也不输出C、printf函数永远也不执行D、最多允许输出100个非负整数76.以下程序段等价于for(k=100;k<=200;k卄){if(k%3=0)continue;printff%4d”,k);}A、for(k=100;(k%3)&&k<=200;k++)printf(”%4d”,k);B、for(k=100;(k%3)||k<=200;k++)printf(”%4d”,k);C、for(k=100;k<=200;k++)if(k%3!=0)printff%4d”,k);D、for(k=100;k<=200;k++){if(k%3)printf("%4d”,k);elsecontinue;break;}二、填空题20、以下程序的功能是:输入三个整数nl、n2、n3«按从大到小的顺序进行输出。请填空。main(){intnl,n2,n3,temp;scanf(,,%d%d%dn,&nl,&n2,&n3);if(){temp=n2; n2=n3;n3=temp;}if(){temp=nl;nl=n2;n2=temp;printfC,%d,%d,%d\nH,nl,n2,n3);21、以下程序的功能是:输入一个小写字母,按字母排列顺序后移5个位置后输出(如把冒变为?'w,变成け)。请填空。#include"stdio.h”main(){charcl;c1=getchar();if(cl>='a'&&clv='u')elseif(cl>=V&&clv='z')putchar(cl);)22、输入一个字符,如果它是ー个大写字母,则把它变成小写字母;如果它是ー个小写字母,则把它变成大写字母;其它字符不变。请填空。main(){charchi;scanf("%c”,chi);if( )chl=chl+32;elseif(chl>-a*&&ch1<=,z')printf(n%c",chi);)23、阅读下面的程序并回答问题。main(){intm,n,x,y;scanff'%d,%d”,&x,&y);m=l;n=l;if(x>0)m=m+l;if(x>y)n=m+n;elseif(x==y)n=5;elsen=2*m;printf("m=%d,n=%d",m,n); }问题:为了使输出n=4,x的输入值应当为,y的输入值应当为24、以下程序的功能是:根据输入的三条边的值判断是否能组成三角形,若能组成则输出三角形的面积和三角形的类型。请填空。#include"math.h”main(){floatal,a2,a3;floats,area;scanfi(,,%f%f%f,&al,&a2,&a3);if(){s=(al+a2+a3)/2;area=sqrt(s*(s-al)*(s-a2)*(s-a3));printfC'%f,area);/ )print*”等边三角形");elseif()printf("等腰三角形”);elseif((a1*a1+a2*a2=a3*a3)||(al*al+a3*a3==a2*a2)||(a2*a2+a3*a3=al*al))prin提”直角三角形");elseprintf("一般三角形");}elseprintズ不能组成三角形”);}25、以下程序的功能是判断输入的年份是否是闰年。请填空。main(){intyear,yes;scanff%d”,&year);if(year%400==0)year=l;elseif()yes=1;elseif(yes)printfi("%dis*',year);elseprintグ%disnot",year);printfif”aleapyear.\nM);}26、以下程序段根据输入的截止日期(年:yend,月:mend,B:dend)和出生日期(byear,bmonth,bday),计算出实际年龄。请填空。intyend,mend,bend,byear,bmonth,bday,age;age=yend-byear;if(mendbmonth)age-;elseif(mendbmonth&&dendbday)age-;2フ、如果运行以下程序段时输入字符“t”,则程序段的运行结果是main(){charcl;scanf(”%c”,&cl);cl=(cl>='A'&&clv=Z)?(cl+32):cl;cl=(cl>-a'&&cl<-zf)?(cl-32):cl;printff%c”,cl);)28、以下程序的功能是找出x、y、z三个数中的最小值。请填空。main(){intx=4,y=5,z=8;intu,v;u=x<y?;v=u<z?;printff%d”,v);29、若运行以下程序时,输入下面指定数据,则运行结果为#include<stdio.h>main(){intch;while((ch=getchar())!=*\n*){switch(ch-'l'){case0:putchar(ch+3);putchar(ch+3);break;putchar(ch+3);default:putchar(ch+l);break;printfC'\nn);输入数据(从第一列开始):1234V回车〉30、将以下嵌套的if语句改写成对应的switch语句,使其完成相同的功能。请填空。(假设mark的取值在1至100之间。)if语句:if(mark<60)k=l;elseif(mark<70)k=2;elseif(mark<80)k=3;elseif(mark<90)k=4;elseif(mark<=100)k=5;switch语句:switch(){k=l;break;k=2;break;k=3;break;k=4;break; k=5;31、将以下含有switch语句的程序段改写成对应的含有非嵌套if语句的程序段,请填空。含有switch语句的程序段:ints,t,m;t=(int)(s/10);switch(t){casecase10:m=5;break;break;9:m=4;case8:m=3;break;case7:m=2;break;case6:m=l;break;default:m=0;含有非嵌套if语句的程序段:ints,m;if()m=5;if((s<100)&&(s>=90))m=4;if((s<90)&&(s>=80))m=3;if((s<80)&&(s>=70))m=2;if((s<70)&&(s>=60))m=l;if() 32、用switch语句实现以下数学关系,请填空。-1(x<0)y=0(x=0)1(x>0)switch(x<0){case1:y=-l;case0:switch(x=0){case1:y=0; y=l;33、将以下含有switch语句的程序段改写成对应的含有嵌套if语句的程序段,请填空。含有switch语句的程序段:ints,t,m;t=(int)(s/10);switch(t){case10:m=5;break;case9:m=4;break;case8:m=3;break;case7:m=2;break;case6:m=l;break;default:m=0;)含有嵌套if语句的程序段:ints,m;if()m=0;elseif(s<70)m=l;elseif(s<80)m=2;elseif(s<90)m=3;elseif(s<100)m=4;34、设x和y均为int类型变量,则以下for循环中的scanf语句最多可执行的次数是for(x=0,y=0;y!=123&&x<3;x-H-)scanf(H%dH,&y);35、设a、b、c均是int类型变量,则执行以下fbr循环后,c的值为for(a=1,b=5;a<=b;a++)c=a+b;36、以下程序的运行结果为main(){intj=5;while(j<=15)if(++j%2!=l)continue;elseprintグ%d",j);printf(,'\nn);)37、设chi为char类型变量,若从键盘上由第一列输入以下数据:right?〈回车》则以下三个程序段的输出结果分别是,,0①、c=getchar();while(c!=?){putchar(c);c=getchar(); }②、while((c=getchar())!=?)putchar(++c);③、while(putchar(getchar())!-?*);38、下面程序段的功能是统计从键盘输入的字符中的数字字符个数,用换行符へズ结束循环,请填空。intn=0,c;c=getchar();while(){if()n-H";c=getchar();)39、以下do-while语句中循环体的执行次数是a=10;b=0;do{b+=2; a-=2+b;}while(a>=0);40、以下程序段的运行结果是x=2;do{printff*;x-;}while(!x=0);41、下面程序段是找出整数的所有因子,请填空。scanf("%d",&x);for(;: ){if(x%i==0)printf("%3d,\i);i++;42、设鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。for(x=1;x<=29;x++){y=30-x:if()printf(,,%d,%d\nH,x,y); }43、若用以下形式表示fbr循环语句:for(表达式1;表达式2;表达式3)循环体语句则执行语句fbr(i=0;i<3;i++)printff*");时,表达式1执行次,表达式3执行次。44、下面程序的功能是计算!-3+5-7+……-99+101的值,请填空。main(){inti,t=l,s=0;for(i=1;i<=101;i+=2){;s=s+t;; }printf(H%d\nM,s);}45、以下程序的功能是求出下面算式中的X、Y、Z的值,请填空。算式:XYZ+YZZ532maim){intx,y,z,k,result=532;for(x=I;x<10;x++)for(y=l;y<10;y-H-)for(z=;;z++){k=()+(100*y+10*z+z);if(k==result)printff'X=%d,Y=%d,Z=%d\nM,x,y,z);})46、下面程序的功能是求1000以内的所有完全数,请填空。(说明:ー个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6为完全数。)main(){inta,i,m;for(z=1;a<=1000;a++){for(;i<=a/2;i-H-)if(!(a%i));if(m=a)printff%4d”,a);47、下面程序的运行结果是#include"stdio.h"main(){inti,j;for(i=4;i>=l;i-){for(j=l;j<=i?j++)printf("#");for(j=l;j<4-i;j-H-)putchar(,*1);putcha^'Xn1);})48、下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5,请填空。main(){inti,s,k,count=0;for(i=100;i<=1000:i++){s=0;k=i;while(){s=s+k%10;k=;}if(s!=5)count++;}printf(,,%dH,count);}49、下面程序的功能是打印100以内个位数为6且能被3整除的所有数,请填空。main(){inti,j;for(i=0;;i++){j=i*10+6;if()continue?printff%d”,j);}}C语言程序设计第5章练习题ー、选择题77、以下对ー维数组a的正确说明是A、chara(10);B、inta[];C>intk=5,a[k];D、chara[]={,a,,'b','c');78、若有说明语句:inta[2][4];,则对a数组元素的正确引用是A、a[0][3]B、a[0][4]C、a[2][2]D、a[2][2+l]79、以下能对二维数组y进行初始化的语句是A、staticinty[2][]={{lAl},{5,2,3});B、staticinty[][3]={{1,2,3},{4,5,6}};C.staticinty[2][4]={{l,2,3},{4,5},{6}};D、staticinty[][3]={{1,0,1,0},{},{1,1}};80、若有说明语句:inty[][4]={0,0};则下面叙述不正确的是A、数组y的每个元素都可得初值0B、二维数组y的行数为1C、该说明等价于inty[][4]={0};D、只有元素y[〇][〇]和y[〇][1]可得到初值〇,其余元素均得不到初值081、以下各组选项中,均能正确定义二维实型数组s的选项是A、floats[3][4]; B、floats(3,4);floats[][4];floats[][]={{0};{0}};floats[3][ド{{1},{0}}:floats[3][4];C、floats[3][4]; D、floats[3][4];staticfloats[][4]={{0},{0}};floats[3][];autofloats[][4]={{〇},{〇},{〇}};floats[][4];82、若有说明语句:inta[][3]={l,2,3,4,5,6,7,8};,则a数组的行数为A、3B、2C、无确定值 D、183、若二维数组y有m歹リ,则在y[i][j]前的元素个数为A、j*m+iB、i*m-+jC、i*m+j-lD、i*m+j+l84、下面程序中有错误的行是main(){intx[3]={l};intk;scanグ%d”,&x);for(k=l;k<3; k++)x[0]=x[O]+x[i];printf(,'x[O]=%d\n",x[0]);}A、3B、6C>7D、585、若有以下语句,则正确的描述是charx[>"12345";chary[]={'!','2',3','4','5'};A、x数组与y数组的长度相同B、x数组长度大于y数组长度C、x数组长度小于y数组长度D、x数组等价于y数组86、以下不正确的数组定义语句是A、doublex[5]={2.0,4.0,6.0,8,0,10.0};B、inty[5]={0,1,3,5,7,9);C、charchiロ={T,2,'3745};D、charch2[]={^10;W,'\x8f};8フ、以下正确的数组定义语句是A、chara[5]={じ,2m5い〇’};B>intb[2][]={{l}s{2});C、floatc[][3]={l,2,3,4,5};D、chard[5]=T,CHINAn;88、判断字符串strl是否大于字符串str2,应当使用Aヽif(strl>str2)B>if(strcmp(strl,str2))C、if(strcmp(str2,strl)>0)D、if(strcmp(str1,str2)>0)89、下面程序段的运行结果是charx[5]={'a','b','\0','c',printf("%s",x);A、‘a"b'B,abC、abucD,abc90、有两个字符数组a,b,则以下能正确为a,b进行赋值的语句是Aヽgets(a,b); B、scanf("%s%sn,&a,&b);C、getchar(a);getchar(b);D、gets(a);gets(b);91、有字符数组sl[80]和s2[80],则以下能正确对si,s2进行输出的语句是Aヽputs(sl,s2)B、printf(,f%s,%sM,si,s2);C^putchar(sl,s2);D、puts(sl),puts(s2);92、以下程序段的运行结果是chara[7]=nabcdef';charb[4]="ABC”;strcpy(a,b);prin氓"%c”,a[5]);A、リB,\0C、eD、f93、以下描述正确的是A、两个字符串所包含的字符个数相同时,才能比较字符串B、字符个数多的字符串比字符个数少的字符串大C、字符串,'STOPロ"与"STOP”相等D、字符串"That"小于字符串tThe"94、以下对字符数组的描述中错误的是A、字符数组中可以存放字符串B、字符数组中的字符串可以整体输入、输出C、可以在赋值语句中通过赋值运算符"="对字符数组整体赋值D、不可以用关系运算符对字符数组中的字符串进行比较95、若有语句:charsl[10],s2ロ0]={"books"},则能将字符串books赋给数组si的正确语句是 A、sl={"books*'}; B、strcpy(s1,s2);C>sl=s2; D、strcpy(s2,si);96>以下printf语句的输出结果是printグ%d\n",strlen(”school”);

A、7B、6C、存在语法错误D、不定值97、下面程序的功能是将字符串s中所有的字符c删除。请选择填空。ー#include<stdio.h>main(){chars[80]:inti,j;gets(s);for(i=j=O;s[i]!=W;i++)if(s[i]!='c')s[j曰0’;puts(s);)A、s[j++]=s[i] B、s[+-lj]=s[i]C、s[j]=s[i]; D>s[j]=s[i];98、当运行以下程序时候,从键盘输入:abv回车〉cv回车〉def<回车〉则下面程序的运行结果是ー#include<stdio.h>#defineN6main(){charch1[N];intk=O;for(;k<N;chl[k]=getchar(),k++);for(k=O;k<N;k++)putchar(chl[k]);A、abcdefB>abcdeC>bDA、abcdefB>abcdec cd d99、下面程序的运行结果是ー#include<stdio.h>#include<string.h>main(){charx[80]=nABu,y[80]=MLMNPM;(98题答案:)intn=0;strcat(x,y);while(x[n++]!=,\O,)y[n]=x[n];puts(y);)A,LB B、ABLMNPC,AB D、LBLMNP二、填空题50、在C语言中,二维数组元素在内存中的存放顺序是^,〇51、若有定义:doublex[3][5];,则x数组中行下标的下限为,列下标的上限为52、若二维数组a有m列,则计算任一元素在数组中相对位置的公式为ー〇(设a[〇][0]是数组的第一个元素)53、若有定义:inta[3][4]={{l,2},{〇},{4,6,8,10}};,则初始化后,a[l]⑵得到的初值是, 得到的初值是〇54、若有说明:chars[20];,如果想从键盘上把字符串:Thisisabook.输入到数组s中,应当调用的函数是,函数调用语句的形式是«55、请写出下面各primf语句的结果。①、printf("%s\n",strcat("school","student"));②、printf("%d\n",strlen("CHINA")+strlen("C"));③、printf("%d\n",strcmp("The","The"));56、根据下面说明和要求,完成对应的填空。①、若有:charstrl[10],str2[]={"student"}:能把str2中的字符串赋给strl的串函数调用语句是 ②、若有:charstrl[20]={"agood"),str2[]={"student");能把str2中的字符串接到strl中的字符串后面的串函数调用语句是57、下面程序将二维数组a的行和列元素互换后存到另一个二维数组b中。请填空。main(){inta[2][3]={{l,2,3},{4,5,6}}:intb[3][2],i,j;printf^^arraya:\nM);for(i=0;i<=l; i-H-){for(j=0;;j-H-){printfC%5d'\a[i][j]);}printf("\n");}printf{narrayb:\nH);for(i=0; ; i-H-){for(j=0; j<=l; j-H-)printf(H%5dn,b[

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论