C语言复习 题集
更新时间:2024-03-26 09:27:01 阅读量: 综合文库 文档下载
- c语言复合语句是什么推荐度:
- 相关推荐
C语言复习练习题 二、 多项选择题 一、 填空题 1、与语句if(a!=0)... 等效的语句是( B )。 1、执行int a=12; a+=a-=a*a 语句后a= -264 ; (A)、if(!a)...; (B)、if(a)...; (C)、if(!a==0)...; 2、若int x=4;则表达式:x?(10?x+1:x-1):(0?2*x:x/2)的值为 5 (D)、if(a>0||a<0) 3、写出表达式的值:(注意运算符的优先级别,以及同优先级运算符的结合次序,见书73页) 9+5/2 11 ; 8+2<=9 0 ; 8%3+6 8 ;!(3<2)||(8!=7) 1 ; 3/9*180 0 ;5*‘d’ 500 ;!!(8<9) 0 ;(x=5*3,x*10,(x>100)) 0 ; 4、语句:n1=2;n2=++n1;n1=n2++;执行后,n1= 3 ;n2= 4 ; 5、若有定义:int a[6] ,*p=a;则p+3表示 ;*(p+3)表示 ;*p+3表示 ; 6、语句printf(“c:\\\\\\\\dos”)的输出结果是 c:\\\\dos ; 7、若有int x=3,y=13,z=2;执行语句z*=x-- +(++y)后,z的值是 34 8、写出下列表达式的求值结果 (1)3!=5 1 ; (2)17820*5 410 ; (3)sizeof(long int) 4 ; (4)2/4*(5+4) 0 ; (5)2 *‘e’ 202 ; (6) !!(5>4) 1 ; (7)已知x=0,x?(0?x+1:x-1):(8?x+4:x/2) 4 ; 9、设有宏定义 #define MOD(x,y) x%y 则执行下面语句的输出为 。 int z,a=15,b=100; z=MOD(b,a); printf(“%d\\n”,z); 10、 ×C语言存储字符串时,用特殊的字符 ‘\\0’ 表示字符串的结束 11、 ×定义C函数时,若函数没有返回值,则返回值类型应设为 12、 ×语句:int a=5, *p=&a;*p+=2;printf(“%d%d”,a,*p);输出的值是 2、向磁盘上已有的文本文件添加字符串,文件打开的方式可以是( )。 (A)、“r+”; (B)、“a”; (C)、“w+”; (D)、“a+” 3、若有定义int a[3][4];以下哪些是对该数组元素正确的描述( )。 (A)、a[3][2]; (B)、a[2][3]; (C)、*(a+1); (D)、*(a[1]+1) 4、能正确计算5!(5的阶乘)的程序段是( A )。 (A)、 i=1;s=1; (B)、i=1;s=1; while(i<=5) while(i<5) { { s=s*i; s=s*i; i++; i++; }; }; (C)、i=1;s=1; (D)、i=1;s=1; do{ do{ s=s*i; s=s*i; i++; i++; }while(i>=5); }while(i>5); 5、若函数头文件已被正确的包含,以下能正确输入一个字符串的C程序有( )。 (A)、char s[41]; scanf(“%s”,s); (B)、char str[41],*s;s=str;gets(s); (C)、char *s; scanf(“%s”,s); (D)、char *s;s=(char *)malloc(41);scanf(“%s”,s); 三、 读程序,写出运行结果 1、 main() { int i, j;
for (i=0;i<=3;i++) if( i==j ) continue; { for (j=0;j<=5;j++) else for(k=0;k<=9;k++) { if (i==0|| j==0|| i==3|| j==5) printf (“*”); if( k!=i&&k!=i ) count++; * * * * * * else printf (“#”); printf(“%d\\n”,count); * # # # # * } * # # # # * printf(“\\n”); * * * * * * 5、 下面的程序是判断输入的字符串是否是“回文” } #include
分别表示一个3位数)。void main() else{p1++; ;} { int x,y,z,i,result=532; } for(x=1;x<10;x++) if(p1 不同的方法 for(j=2; j<=k ;j++) void main() if(m%j = = 0)break; { int i,j,k,count=0; if(j>k)printf(“]”,m) for(i=1;i<=9;i++) } for(j=0;j<=9;j++) } C语言程序设计第1~3章练习题 一、选择题 1、一个C语言程序总是从____ A、主过程开始执行 B、主函数开始执行 C、子程序开始执行 D、主程序开始执行 2、若num、a、b和c都是int型变量,则执行表达式num=(a=4,b=16,c=32)后num的值为_ A、4 B、16 C、32 D、52 3、下面四个选项中,均是C语言关键字的选项是____ A、auto enum include B、switch typedef continue C、signed union scanf D、if struct type 4、下面四个选项中,均是合法整型常量的选项是____ A、160 -0xffff 011 B、-0xcdf 01a 0xe C、-01 986,012 0668 D、-0x48a 2e5 0x 5、下面四个选项中,均是合法浮点数的选项是___ A、+1e+1 5e-9.4 03e2 B、-.60 12e-4 -8e5 C、123e 1.2e-.4 +2e-1 D、-e3 .8e-4 5.e-0 6、下面四个选项中,均是合法转义字符的选项是____ A、'\\'' '\\\\' '\\n' B、'\\' '\\017' '\\\C、'\\018' '\\f' 'xab' D、'\\\\0' '\\101' 'xlf' 7、下面正确的字符常量是____ A、'\\X17' B、'\\80' C、'\\\\' D、\ 8、下面四个选项中,均是正确的八进制数和十六进制数的选项是____ A、-10 0x8f -011 B、0abc -017 0xc C、010 -0x11 0xf1 D、0a12 -0x123 -0xa 9、下面四个选项中,均是正确的数值常量或字符常量的选项是____ A、0.0 0f 8.9e '&' B、\C、'3' 011 0xFF00 0a D、+001 0xabcd 2e2 50. 10、若有代数式 2lnxcosx3x,则正确的C语言表达式是____ A、2*ln(x)*cos(x)/3*x B、2*ln(x)*cos(x)/(3*x) C、2*log(x)*cos(x)/3*x D、2*log(x)*cos(x)/(3*x) 11、若有说明语句:char ch1='\\065';char ch2=\;char ch3='2';则:ch1中___ _,ch2中____,ch3中____ A、包含1个字符 B、包含2个字符 C、包含3个字符 D、字符个数不确定,说明不正确 12、若有运算符:>、*=、?:、%、sizeof,则将它们按运算的优先级排列的正确次序为(由 低至高)____ A、*=→?:→%→>→sizeof B、?: →*=→>→%→sizeof C、*=→>→?: →sizeof→% D、*=→?: →>→%→sizeof 13、若有以下类型说明语句:char a; int b; float c; double d; 则表达式a*b+d-c的结果类型为____ A、float B、char C、int D、double 14、若有变量说明:int a=0,b=0,c=0;,以下符合C语言语法的赋值表达式是____ A、a=9+b+c=a+9 B、a=9+b;c=a+9; C、a=(9+b,b++) D、a=9+b++=a+7 15、已知字母A的ASCII码为(65)10,变量ch1为字符型,则执行语句ch1='A'+'6'-'3'; 后,ch1中的值为____ A、D B、68 C、一个不确定的值 D、C 16、以下运算符中优先级最高的运算符是____ A、&& B、++ C、?: D、!= 17、若有定义:int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值是___ A、2.500000 B、2.7500000 C、3.500000 D、0.000000 18、sizeof(float)是____ A、双精度型表达式 B、一个整型表达式 C、一个函数调用 D、一个不合法的表达式 19、设变量y为float类型,x为int类型,则以下能实现将y中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是____ A、y=(y*100+0.5)/100.0 B、x=y*100+0.5,y=x/100.0 C、y=y*100+0.5/100.0 D、y=(y/100+0.5)*100.0 20、设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是____ A、0~255 B、0~65535 C、-32768~+32767 D、-256~+255 21、若有以下定义,则能得到值为3的表达式是____(int m=7,n=12) A、n%=(m%=5) B、n%=(m-m%5) C、n%=m-m%5 D、(n%=m)-(m%=5) 22、若有说明:int a=1,b=2,c=3,d=4;则表达式a A、4 B、3 C、2 D、1 23、若x为int类型,则逗号表达式(x=4*5,x*5),x+25的结果是___,x的值是___ A、20 B、100 C、表达式不正确 D、45 24、putchar函数可以向终端输出一个____ A、整型变量值 B、实型变量值 C、字符串 D、字符或字符型变量值 25、若有以下变量说明和数据的输入方式,则正确的输入语句为('└─┘'代表空格)____ 变量说明:float x1,x2; 数据的输入方式:4.52<回车> 3.5<回车> A、scanf(\; B、scanf(\; C、scanf(\└─┘%2.1f\; D、scanf(\; 26、若运行以下程序时,从键盘输入25,13,10<回车>,则输出结果为____ main( ) { int a1,a2,a3; scanf(\; printf(\; } A、a1+a2+a3=48 B、a1+a2+a3=25 B、a1+a2+a3=10 D、不确定值 27、已知a、b、c为int类型变量,若有输入语句:scanf(\;为 使a值为1,b值为3,c值为2,从键盘输入数据的正确形式应当是____ A、132<回车> B、a=1b=3c=2<回车> C、1<回车>3<回车>2<回车> D、a=1<回车>b=3<回车>c=2<回车> 28、以下能正确定义整型变量x、y和z并为其赋初值5的语句是____ A、int x=y=z=5; B、int x,y,z=5; C、int x=5,y=5,z=5; D、x=5,y=5,z=5; 29、执行下面程序段后,x的值是____ int x; printf(\; A、10 B、15 C、20 D、5 30、下面程序段的输出结果是____ int a=023; printf(\; A、23 B、17 C、18 D、24 31、已知ch是字符型变量,则不正确的赋值语句是____ A、ch=5+9; B、ch='\\0'; C、ch='7'+'9'; D、ch='a+b'; 32、设x,y是float型变量,则不正确的赋值语句是____ A、++x; B、y=int(5); C、x*=y+1; D、x=y=0; 33、设有说明:double b=0.5,c=1.5; int a=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、以下程序段的输出结果是____ int i=1,j=4,k=2; float x=5.5,y=9.0,z; z=(i+j)/k+sqrt((double)y)*1.2/k+x; printf(\; A、9.800000 B、9.300000 C、8.500000 D、8.000000 35、若a为int类型变量,则执行以下程序段后a的值为____ a=5; a*=a/=a++; A、2 B、1 C、40 D、3 36、若a和b均为int型变量,则执行以下程序断后x的输出是____ x=15;y=15; printf(\; A、0 B、1 C、6 C、12 37、若x为unsigned int类型变量,则执行以下程序段后x的值是____ x=65535; printf(\; A、65535 B、1 C、无定值 D、-1 38、以下语句的执行结果是____ printf(\; A、1 B、0 C、-1 无定值 39、若x为int类型变量,则执行以下程序段后的输出结果是____ x=0xDEF; printf(\; A、3567,6757,def B、3567,6757,xdef C、3567,06757,0xdef D、3567,6757,0def 40、若a、b、c均为int型变量,则执行以下程序段后的输出结果为____ b=(a=10,a+5,c=10); printf(\; c=(a=10,b=5,a+b); printf(\; A、a=10,b=15,c=10 B、a=10,b=10,c=10 a=10,b=5,c=10 a=10,b=5,c=10 C、a=10,b=10,c=10 D、a=10,b=10,c=10 a=10,b=5,c=15 a=10,b=5,c=5 41、若a1、a2、a3、a4均为char类型变量,则执行以下程序段后的输出结果为____ a1='1'; a2='2'; a3='3'; a4='4'; printf(\; printf(\; printf(\; printf(\; A、1 B、1 C、1 D、输出格式的描述符不正确 2 2 02 3 3 003 4 4 0004 42、执行语句printf(\;后的输出是____ A、The program's name is c:tools book.txt B、The program's name is c:\\tools book.txt C、The program's name is c:\\\\tools book.txt D、The program's name is c:\\toolook.txt 43、设a、b、c、d均是int类型变量,为了使以下程序段的输出为:1234+123+12+1,正确 的输入形式应当是____ scanf(\; printf(\; A、1234123121<回车> B、1234123412341234<回车> C、1234+1234+1234+1234<回车> D、1234+123+12+1<回车> 44、设c1、c2均是char类型变量,则以下不正确的函数调用是____ A、scanf(\; B、getchar( ) C、putchar(c2); D、putchar(c1,c2) 45、逻辑运算符两侧运算对象的数据____ A、只能是0或1 B、只能是0或非0正数 C、只能是整型或字符型数据 D、可以是任何类型的数据 46、判断char型变量c1是否为大写字母的正确表达式是____ A、'A'<=c1<='Z' B、(c1>='A')&(c1<='Z') C、(c1>='A')&&(c1<='Z') D、('A'<=c1) AND ('Z'>=c1) 47、执行以下程序段后的a值是___,b的值是___,c的值是___ int a=5,b=6,c=1,x=2,y=3,z=4; c=(a=c>x)&&(b=y>z); A、0 B、6 C、1 D、5 48、设i、j、和k是int型变量,且i=3,j=4,k=5,则以下值为0的表达式是____ A、'i'&&'j' B、i<=j C、i||j+k&&j-k D、!((i 49、设ch是char类型变量,其值是A,则以下表达式的值是____ ch=(ch>='A'&&ch<='Z')?(ch+32):ch A、Z B、A C、a D、z 50、若希望当num的值为奇数时,表达式的值为“真”,num的值为偶数时,表达式的值为 “假”。则以下不能满足要求的表达式是____ A、num%2==1 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 y=7; float x=2.5,z=4.7;,则表达式x+(int)(y/3*(int)(x+z)/2)%4的值为____。 7、若采用十进制数的表示形式,则077为___,0111为___,0x29为___,0xab为___。 8、设x为float型变量,y为double型变量,a为int型变量,b为long型变量,c为char型变量,则表达式x+y*a/x+b/y+c的结果类型为____。 9、若有说明int x=10,y=20;请写出下面各printf语句对应的输出结果。 ①printf(\; ____ ②printf(\; ____ ③printf(\; ____ ④printf(\; ____ 10、设有以下变量说明: int a=5,b=10; float x=3.5,y=10.8; char c1='A',c2='B'; 请根据以下输出格式和结果,完成printf语句中的填空。 ①a=5,b=10,x+y=14.3 printf(\________\_____); ②x-y=-7.3└─┘a-b=-5 printf(\________\_____); ③c1='A' or 65(ASCII) └─┘c2='B' or 66(ASCII) printf(\________\_____); 11、若有说明: int a=123; float b=456.78; double c=-123.45678; 请写出以下各printf语句的输出结果。 ①printf(\; _____ ②printf(\; _____ ③printf(\; ___ 12、若a1和a2都是double型变量,且a1的初值为3.0,a2的初值为2.0,则表达式 pow(a2,fabs(a1))的值为____。 13、假设变量x和y均为整型,以下语句可以不借助任何变量把x、y中的值进行交换。 请填空。 x+=__; y=x-__; x-=__; 14、已有定义int m; float n,k; char ch1,ch2;,为使m=3, n=6.5, k=12.6, ch1='a', ch2='A',对应的scanf语句是___________________,输入数据的方式是___________。 15、已有定义int a,b; float k;,为将-10赋给a,将12赋给b,410.34赋给k;则对应 以下scanf语句的数据输入形式是________。 scanf(\; 16、在C语言中,&作为双目运算符时表示的是___,而作为单目运算符时表示的是__。 17、设x、y、z均为int型变量,且x=3, y=-4, z=5,请写出下面每个表达式对应的结果。 ①、(x&&y)==(x||z) ____ ②、!(x>y)+(y!=z)||(x+y)&&(y-z) ____ ③、x++-y+(++z) ____ 18、设x、y、z均为int类型变量,请用C语言的表达式描述以下命题。 ①、x或y中有一个小于z __________________ ②、x、y和z中只有两个为负数 __________________ ③、y是奇数 __________________ 19、以下程序的输出结果为____ main( ) { int x,y,z=246; x=z/100%9; y=(-1)&&(-1); printf(\; } 参考答案 第一二三章 一、 选择题: 1 B 2 C 3 B 4 A 5 B 6 A 7 C 8 C 9 D 10 D 11 ADA 12 D 13 D 14 C 15 A 16 B 17 A 18 B 19 B 20 B 21 D 22 D 23 DA 24 D 25 B 26 D 27 B 28 C 29 B 30 C 31 D 32 B 33 D 34 B 35 A 36 A 37 D 38 B 39 A 40 C 41 B 42 D 43 D 44 D 45 D 46 C 47 ABA 48 D 49 C 50 C 二、 填空题: 1、函数 2、main函数 3、scanf() , printf() 4、1 5、8 6、5.500000 7、63,73,41,171 8、double 9、<空格>30,310,<空格>12,<空格>1e 10、1):a=%d,b=%d,x+y=%4.1f,a,b,x-y 2):x-y=%4.1f a-b=%d,x-y,a-b 3)c1=\\’%c\\’ or %d(ASCII) c2=\\’%c\\’ or %d(ASCII),c1,c1,c2,c2 11、1)456.7804.57e+02-123.4567802) 456.7804.57e+02-123.4573)123456.780 -123e+02 12、8.000000 13、y,y,y 14、scanf(“%d%f%f%c%c”,&m,&n,&k,&ch1,&ch2);3 6.5 12.6aA 15、-12 c 410.34 16、按位与,取地址 17、1,1,13 18、(x*y*z>0)&&(x<0||y<0||z<0) 19、2,1 C语言程序设计第4章练习题 一、选择题 51、以下正确的if语句是____ A、if (n>0) printf(\ printf(\; B、if (n>0) { n=n+m; printf(\; } else printf(\; C、if (n>0) { n=n+m; printf(\; }; else printf(\; D、if (n>0) { n=n+m; printf(\; else printf(\; 52、以下程序____ main( ) { int x1=3, x2=0, x3=0; if(x1=x2+x3) printf(\; else printf(\; } A、输出:* * * * B、输出:# # # # C、存在语法错误 D、无输出结果 53、为了避免在嵌套的条件语句if-else中产生二义性,C语言规定:else子句总是与__ A、缩排位置相同的if配对 B、其之前最近且不带else的if配对 C、其之前最近的if配对 D、第一个if配对 54、若w、x、y、z、k均为int类型变量,则执行下面语句后的k的值是____ w=1; x=2; y=3; z=4; k=(w A、1 B、2 C、3 D、4 55、下面程序段所表示的数学函数关系是____ x=-1; if (a!=0) if (a>0) x=1; else x=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、设有说明:int a=1,b=0; 则执行以下语句后的输出结果是____ switch(a) { case 1: switch(b) { case 0: printf(\; break; case 1: printf(\;break; } case 2: printf(\; break; } A、** 0 ** B、** 0 ** ** 2 ** C、** 0 ** D、switch语句中存在语法错误 ** 1 ** ** 2 ** 58、设有程序段____ int x=10; while (x=0) x=x-1; A、while循环执行10次 B、循环是无限循环 C、循环体语句一次也不执行 D、循环体语句只执行一次 59、语句while (!y)中的表达式 !y 等价于____ A、y==0 B、y!=1 C、y!=0 D、y==1 60、以下关于do-while循环不正确的描述是___ A、d0-while的循环体至少执行一次 B、do-while循环由do开始,用while结束,在while (表达式)后面不能写分号 C、在do-while循环体中,一定要有能使while后面表达式的值变为零(\假\)的操作 D、do-while的循环体可以是复合语句 61、设x、y均是int类型变量,且x值为100,则关于以下for循环的正确判断是____ for (y=100; x!=y; ++x,y++) printf(\; A、循环体只执行一次 B、是无限循环 C、循环体一次都不执行 D、for语句中存在语法错误 62、以下程序段中的do-while循环____ m=-1; do { m=m*m; }while(!m); A、是死循环 B、执行二次 C、执行一次 D、有语法错误 63、以下关于for循环的正确描述是____ A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判断表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 64、语句for (表达式1; ; 表达式3)等价于____ A、for (表达式1; 0 ; 表达式3) B、for (表达式1; 1 ; 表达式3) C、for (表达式1; 表达式1; 表达式3) D、for (表达式1; 表达式3; 表达式3) 65、若k为整型变量,则以下for循环的执行次数是____ for (k=2; k==0; ) printf(\; A、无限次 B、0次 C、1次 D、2次 66、以下程序段的执行结果是____ int x=-3; do { printf(\; }while(!x); A、-3 D、-3 B、-2 -2 C、陷入死循环 -1 67、执行以下程序段后,y的值是____,x的值是____ int x=1, y=10; do { y-=x; x++; }while(y--<0); A、9 B、8 C、-2 D、2 E、4 F、3 68、执行以下程序段后a的值是____,b的值是____ { int m=0; while (m<=2) { m++; printf(\; } } int a, b; for (b=1,a=1; b<=50; b++) { if (a>=10) break; if (a%2==1) { a+=5; continue; } a-=3; } A、10 B、6 C、7 D、8 E、4 69、以下程序段的执行结果是____ int a, b; for (a=1; a<5; a+=2) { for (b=1; b<5; b++) printf(\; if (b==5) printf(\; } A、 1 2 3 4 B、1 2 3 4 3 6 9 12 6 9 12 15 C、 2 3 4 6 9 12 D、 2 3 4 6 9 12 10 15 20 70、以下程序段中是死循环的是____ A、int n=1; B、int n=1; while (!n) do { n--; n++; }while(n); C、int n=1; D、for (n=5; n<1; do { n++; }while(n); 71、下面程序的运行结果是____ main( ) ; A、1 B、 1 2 C、1 D、1 2 2 3 3 4 72、以下能正确计算1×2×3×?×10的程序段是____ A、do B、do { k=1; n=1; { k=1; n=0; n=n*k; n=n*k; k++; k++; }while(k<=10); }while(k<=10); C、k=1; n=1; D、k=1; n=0; do do { n=n*k; { n=n*k; k++; k++; }while(k<=10); }while(k<=10); 73、下面程序的功能是计算1至10之间的奇数之和以及偶数之和。请选择填空。 main( ) { int x, y, z, k; x=z=0; for (k=0; k<=10; k+=2) { x+=k; ________; z+=y; } printf(\偶数之和 = %d\\n\; printf(\奇数之和 =%d\\n\________); } ①、A、y=k-- B、y=k+1 C、y=k++ D、y=k-1 ②、A、z-10 B、z C、z-11 D、z-y ) 74、下面程序段的功能是计算1000!的末尾含有多少个零。请选择填空。 (提示:只要算出1000!中含有因数5的个数即可。) for (m=0,n=5; n<=1000; n+=5) { t=n; while (________) { m++; t=t/5; } } A、t%5 B、t=t%5==0 C、t%5==0 D、t%5!=0 75、若有以下程序段: for (m=1; m<=100; m++) { scanf(\; if (y<0) continue; printf(\; } 正确的描述是____ A、当y<0时整个循环结束 B、y>=0时什么也不输出 C、printf函数永远也不执行 D、最多允许输出100个非负整数 76、以下程序段等价于____ for (k=100; k<=200; k++) { if (k%3==0) continue; printf(\; } A、for (k=100; (k%3)&&k<=200; k++) printf(\; B、for (k=100; (k%3)||k<=200; k++) printf(\; C、for (k=100; k<=200; k++) if (k%3!=0) printf(\; D、for (k=100; k<=200; k++) { if (k%3) printf(\; else continue; break; } 二、填空题 20、以下程序的功能是:输入三个整数n1、n2、n3,按从大到小的顺序进行输出。请填空。 main( ) { int n1, n2, n3, temp; scanf(\; if (______) { temp=n2; n2=n3; n3=temp; } if (______) { temp=n1; n1=n2; n2=temp; } printf(\; } 21、以下程序的功能是:输入一个小写字母,按字母排列顺序后移5个位置后输出(如把'a' 变为'f', 'w'变成'b')。请填空。 #include \ main( ) { char c1; c1=getchar( ); if (c1>='a' && c1<='u') ______; else if (c1>='v' && c1<='z') ______; putchar(c1); } 22、输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个小写字 母,则把它变成大写字母;其它字符不变。请填空。 main( ) { char ch1; scanf(\; if (________________) ch1=ch1+32; else if (ch1>='a' && ch1<='z') ________; printf(\; } 23、阅读下面的程序并回答问题。 main( ) { int m, n, x, y; scanf(\; m=1; n=1; if (x>0) m=m+1; if (x>y) n=m+n; else if (x==y) n=5; else n=2*m; printf(\; } 问题:为了使输出n=4,x的输入值应当为______,y的输入值应当为____。24、以下程序的功能是:根据输入的三条边的值判断是否能组成三角形,若能组成则输出三 角形的面积和三角形的类型。请填空。 #include \ main( ) { float a1, a2, a3; float s, area; scanf(\; if (_____________________) { s=(a1+a2+a3)/2; area=sqrt(s*(s-a1)*(s-a2)*(s-a3)); printf(\; if (______________) printf(\等边三角形\; else if (_________________) printf(\等腰三角形\; else if ((a1*a1+a2*a2==a3*a3) || (a1*a1+a3*a3==a2*a2) || (a2*a2+a3*a3==a1*a1)) printf(\直角三角形\; else printf(\一般三角形\; } else printf(\不能组成三角形\; } 25、以下程序的功能是判断输入的年份是否是闰年。请填空。 main( ) { int year, yes; scanf(\; if (year@0==0) year=1; else if (__________________) yes=1; else ____; if (yes) printf(\; else printf(\; printf(\; } 26、以下程序段根据输入的截止日期(年:yend,月:mend,日:dend)和出生日期(byear,bmonth,bday),计算出实际年龄。请填空。 ?? int yend, mend, bend, byear, bmonth, bday, age; age=yend-byear; if (mend____bmonth) age--; else if (mend___bmonth &&dend___bday) age--; ?? 27、如果运行以下程序段时输入字符“t”,则程序段的运行结果是____ main( ) { char c1; scanf(\; c1=(c1>='A' && c1<='Z') ? (c1+32) : c1; c1=(c1>='a' && c1<='z') ? (c1-32) : c1; printf(\; } 28、以下程序的功能是找出x、y、z三个数中的最小值。请填空。 main( ) { int x=4, y=5, z=8; int u, v; u=x printf(\; } 29、若运行以下程序时,输入下面指定数据,则运行结果为______ #include while ((ch=getchar( ))!='\\n') { switch(ch-'1') { case 0: case 1: putchar(ch+3); case 2: putchar(ch+3); break; case 3: putchar(ch+3); default: putchar(ch+1); break; } } printf(\; } 输入数据(从第一列开始): 1234<回车> 30、将以下嵌套的if语句改写成对应的switch语句,使其完成相同的功能。请填空。(假设mark的取值在1至100之间。) if 语句: if (mark<60) k=1; else if (mark<70) k=2; else if (mark<80) k=3; else if (mark<90) k=4; else if (mark<=100) k=5; switch语句: switch(______) { ______ k=1; break; case 6 : k=2; break; case 7 : k=3; break; case 8 : k=4; break; ____ k=5; } 31、将以下含有switch语句的程序段改写成对应的含有非嵌套if语句的程序段,请填空。 含有switch语句的程序段: int s, t, m; t=(int)(s/10); switch( t ) {case 10: m=5; break; case 9: m=4; break; case 8: m=3; break; case 7: m=2; break; case 6: m=1; break; default: m=0; } 含有非嵌套if语句的程序段: int s, 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=1; if (______) ________; 32、用switch语句实现以下数学关系,请填空。 -1 (x<0) y= 0 (x=0) 1 (x>0) switch(x<0) { case 1: y=-1; ____ case 0: switch(x==0) { case 1: y=0; ____ ____ y=1; } } 33、将以下含有switch语句的程序段改写成对应的含有嵌套if语句的程序段,请填空。 含有switch语句的程序段: int s, t, m; t=(int)(s/10); switch( t ) {case 10: m=5; break; case 9: m=4; break; case 8: m=3; break; case 7: m=2; break; case 6: m=1; break; default: m=0; } 含有嵌套if语句的程序段: int s, m; if (____) m=0; else if (s<70) m=1; else if (s<80) m=2; else if (s<90) m=3; else if (s<100) m=4; ______; 34、设x和y均为int类型变量,则以下for循环中的scanf语句最多可执行的次数是____ for (x=0, y=0; y!=123 && x<3; x++) scanf(\; 35、设a、b、c均是int类型变量,则执行以下for循环后,c的值为____ for (a=1, b=5; a<=b; a++) c=a+b; 36、以下程序的运行结果为____ main( ) { int j=5; while (j<=15) if (++j % 2!=1) continue; else printf(\; printf(\; } 37、设ch1为char类型变量,若从键盘上由第一列输入以下数据: right?<回车> 则以下三个程序段的输出结果分别是_____,____,____。 ①、c=getchar( ); while (c!='?') { putchar(c); c=getchar( ); } ②、while ((c=getchar( ))!='?') putchar(++c); ③、while (putchar(getchar( ))!='?') ; 38、下面程序段的功能是统计从键盘输入的字符中的数字字符个数,用换行符'\\n'结束循环,请填空。 int n=0, c; c=getchar( ) ; while (____) { if (____) n++; c=getchar( ); } 39、以下do-while语句中循环体的执行次数是____ a=10; b=0; do { b+=2; a-=2+b; }while(a>=0); 40、以下程序段的运行结果是____ x=2; do { printf(\; x--; }while(!x==0); 41、下面程序段是找出整数的所有因子,请填空。 scanf(\; for ( ; ____ ; ) { if (x%i == 0) printf(\; i++; } 42、设鸡兔共有30只,脚共有90个,下面程序段是计算鸡兔各有多少只,请填空。 for (x=1; x<=29; x++) { y=30-x; if (________) printf(\; } 43、若用以下形式表示for循环语句: for (表达式1;表达式2;表达式3) 循环体语句 则执行语句for (i=0; i<3; i++) printf(\; 时,表达式1执行____次,表达式3执行____次。 44、下面程序的功能是计算1-3+5-7+??-99+101的值,请填空。 main( ) { int i, t=1, s=0; for (i=1; i<=101; i+=2) { ____; s=s+t; ____; } printf(\; } 45、以下程序的功能是求出下面算式中的X、Y、Z的值,请填空。 算式:XYZ +YZZ 532 main( ) { int x, y, z, k, result=532; for (x=1; x<10; x++) for (y=1; y<10; y++) for (z=__; ___; z++) { k=(______)+(100*y+10*z+z); if (k==result) printf(\; } } 46、下面程序的功能是求1000以内的所有完全数,请填空。(说明:一个数如果恰好等于它的因子之和(除自身外),则称该数为完全数,例如:6=1+2+3,6为完全数。) main( ) { int a, i, m; for (z=1; a<=1000; a++) { for (____; i<=a/2; i++) if (!(a%i)) ____; if (m==a) printf(\; } } 47、下面程序的运行结果是____ #include \ main( ) { int i, j; for (i=4; i>=1; i--) { for (j=1; j<=i; j++) printf(\; for (j=1; j<4-i; j++) putchar('*'); putchar('\\n'); } } 48、下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5,请填空。 main( ) { int i, s, k, count=0; for (i=100; i<=1000; i++) { s=0; k=i; while (____) { s=s+k; k=____; } if (s!=5) ____; count++; } printf(\; } 49、下面程序的功能是打印100以内个位数为6且能被3整除的所有数,请填空。 main( ) { int i, j; for (i=0; ____; i++) { j=i*10+6; if (____) continue; printf(\; } } 答案 一、 选择题: 51 B 52 B 53 B 54 A 55 C 56 D 57 B 58 C 59 A 60 B 61 C 62 C 63 D 64 B 65 B 66 A 67 BD 68 AB 69 A 70 C 71 C 72 C 73 BC 74 C 75 D 76 C 二、 填空题: 20、n2 31、s<110&&s>=100,s<60||s>=110,m=0 32、break;,default:,case 0: 33、s<60||s>109,else m=5 34、3 35、10 36、7 9 11 13 15 37、right,sjhiu,right? 38、c!=’\\n’,c>=’0’&&c<=’9’ 39、3 40、** 41、i<=x 42、2*x+4*y==90 43、1,3 44、t=t*x,t=-t/i 45、0,z<10,100*x+10*y+z 46、I=1,m=0,m+=i 47、#### ### ##* #** 48、k!=0,k/10,continue 49、i<=9,j%3!=0 C语言程序设计第5章练习题 一、选择题 77、以下对一维数组a的正确说明是____ A、char a(10); B、int a[ ]; C、int k=5,a[k]; D、char a[ ]={'a' , 'b' , 'c'}; 78、若有说明语句:int a[2][4];,则对a数组元素的正确引用是____ A、a[0][3] B、a[0][4] C、a[2][2] D、a[2][2+1] 79、以下能对二维数组y进行初始化的语句是___ A、static int y[2][ ]={{1,0,1}, {5,2,3}}; B、static int y[ ][3]={{1,2,3}, {4,5,6}}; C、static int y[2][4]={{1,2,3}, {4,5} , {6}}; D、static int y[ ][3]={{1,0,1,0}, { }, {1,1}}; 80、若有说明语句:int y[ ][4]={0,0}; 则下面叙述不正确的是____ A、数组y的每个元素都可得初值0 B、二维数组y的行数为1 C、该说明等价于int y[ ][4]={0}; D、只有元素y[0][0]和y[0][1]可得到初值0,其余元素均得不到初值0 81、以下各组选项中,均能正确定义二维实型数组s的选项是____ A、float s[3][4]; B、float s(3,4); float s[ ][4]; float s[ ][ ]={{0};{0}}; float s[3][ ]={{1},{0}}; float s[3][4]; C、 float s[3][4]; D、float s[3][4]; static float s[ ][4]={{0},{0}}; float s[3][ ]; auto float s[ ][4]={{0},{0},{0}}; float s[ ][4]; 82、若有说明语句:int a[ ][3]={1,2,3,4,5,6,7,8}; ,则a数组的行数为____ A、3 B、2 C、无确定值 D、1 83、若二维数组y有m列,则在y[i][j]前的元素个数为____ A、j*m+i B、i*m+j C、i*m+j-1 D、i*m+j+1 84、下面程序中有错误的行是____ 1、 main( ) 2、 { 3、 int x[3]={1}; 4、 int k; 5、 scanf(\; 6、 for (k=1; k<3; k++) 7、 x[0]=x[0]+x[i]; 8、 printf(\; A、语句void p_ch( );有错,它是函数调用语句,不能使用void说明 B、变量名不能使用大写字母 C、函数说明和函数调用语句之间有矛盾 D、函数名中不能使用下划线 106、C语言允许函数值类型的缺省定义,此时该函数值隐含的类型是_____ A、float B、int C、long D、double 107、以下程序的功能是计算函数F(x, y, z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。 #include float fun1(float , float); main( ) { float x, y, z, sum; scanf(\; sum=fun1(__①__)+fun1(__②__); printf(\; } float fun1(float a, float b) { float num; num=a/b; return(num); } ① A、x-y, x+y B、x+y, x-y C、z+y, z-y D、z-y, z+y ② A、x-y,x+y B、x+y,x-y C、z+y,z-y D、z-y,z+y 108、以下正确的描述是_____ A、函数的定义可以嵌套,但函数的调用不可以嵌套 B、函数的定义不可以嵌套,但函数的调用可以嵌套 C、函数的定义和函数的调用均不可以嵌套 D、函数的定义和函数的调用均可以嵌套 109、若使用一维数组名作函数实参,则以下正确的说法是_____ A、必须在主调函数中说明此数组的大小 B、实参数组类型与形参数组类型可以不匹配 C、在被调函数中,不需要考虑形参数组的大小 D、实参数组名与形参数组名必须一致 110、如果在一个函数中的复合语句中定义了一个变量,则以下正确的说法是_____ A、该变量只在该复合语句中有效 B、该变量在该函数中有效 C、该变量在本程序范围内有效 D、该变量为非法变量 111、以下不正确的说法为_____ A、在不同函数中可以使用相同名字的变量 B、形式参数是局部变量 C、在函数内定义的变量只在本函数范围内有效 D、在函数内的复合语句中定义的变量在本函数范围内有效 112、在一个源文件中定义的全局变量的作用域为_____ A、本文件的全部范围 B、本程序的全部范围 C、本函数的全部范围 D、从定义该变量的位置开始至本文件结束 113、以下程序的运行结果是_____ #include { extern int x, y; int a=15, b=10; x=a-b; y=a+b; } int x, y; main( ) { int a=7, b=5; x=a+b; y=a-b; ff1( ); printf(\; } A、12, 2 B、不确定 C、5, 25 D、1, 12 114、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为_____ A、自动(auto) B、静态(static) C、外部(extern) D、寄存器(register) 115、以下程序的运行结果是_____ main( ) { int a=1, k; for (k=0; k<3; k++) printf(\; } f1(int x) { static int z=3, y=0; y++; z++; return(x+y+z); } A、6 8 10 B、6 6 6 C、7 8 9 D、7 9 11 116、以下程序的运行结果是_____ main( ) { char str1[ ]=\; ff(str1); printf(\; } ff(char str1[ ]) { int x, y; for (x=y=0; str1[x]!='\\0'; x++) if (str1[x]!='c') str[y++]=str1[x]; str1[y]='\\0'; } A、str[ ]=abdef B、str[ ]=abcdef C、str[ ]=a D、程序中存在语法错误 二、填空题 69、一个C程序是由若干个函数构成的,其中必须有一个_____ 70、在C语言中,一个函数通常由两部分组成,它们是_____和_____ 71、以下程序的运行结果是_____ void f1(int x, int y, int z) { x=111; y=222; z=333; } main( ) { int x=100, y=200, z=300; f1(x, y, z); printf(\; } 72、以下程序的运行结果是_____ int fun(int x, int y) { int z; while (y) { z=x%y; x=y; y=z; } return(x); } main( ) { int i=16, j=6, k; k=fun(i, j); printf(\; } 73、以下函数用于统计一行中的单词个数,单词之间用空格分隔。请填空。 word_num(char str [ ]) { int i, num=0, word=0; for (i=0; str[i]!= ___; i++) if (____==32) word=0; else if (word==0) { word=1; _____; } return(num); } 74、以下函数用于找出一个2×4矩阵中的最大元素值 max_value(int arr[ ][4]) { int i, j, max; max=arr[0][0]; for (i=0; _____; i++) A(x,y)?x2 for (j=0; _____; j++) e2(x?y)?1?2e?x?y??3e2?x?y? if (arr[i][j]>max) max=_____; return(max); } 75、以下函数f1用于求两个整数a和b的最大公约数。 f1(int a, int b) { int i, j, m, n; if (a>b) { m=a; a=b; _____; } i=a; j=b; while ((n= _____)!=0) { j=i; i=_____; } return(i); } 76、以下程序的功能是:从键盘输入若干字符后,可统计出主函数调用count函数的次数,用字符“!”作为输入结束的标志。请填空。 count(_____) { static int k=0; k++; if (ch2=='!') printf(\_____); } main( ) { char ch1; while (1) { scanf(\; count(ch1); if (ch1=='!') break; } } 77、以下程序的功能是完成下面数学函数A(x, y)的计算。请填空。 #incude f2=ff*ff+sqrt(1+_____+_____); return(f2); } main( ) { float x, y, f1; scanf(\; f1=x*x/fun(exp(x-y)); printf(\; } 78、以下函数conj把两个字符串str1和str2连接起来。 conj(char str1[ ], char str2[ ]) { int i=0, j=0; while (str1[i]!= _____) i++; while (str2[j]!= _____) str1[i++]=str2[j++]; _____='\\0'; } 79、以下函数fmin返回数组arr中最小元素的下标,数组中元素的个数由x传入。请填空。 fmin(int arr[ ], int x) { int min,q; for (q=1, min=0; q printf(\; } main( ) { int i=2; f1(i); y+=i++; printf(\; } 81、以下函数invert的功能是将一个字符串str1的内容倒置。请填空。 #include void invert(char str1[ ]) { int a, b; _____; for (a=0, b=strlen(str1); _____; a++, b--) { c=str1[a]; str1[a]=str1[b-1]; str1[b-1]=c; } printf(\; } 82、以下程序的运行结果是_____ int fun1(int num) { int x; if (num= =1) x=10; else x=fun(num-1)+2; return(x); } main( ) { int y; printf(\; } 第六章 一、 选择题 100 C 101 D 102 A 103 C 104 B 105 C 106 B 107 B 108 B 109 A 110 A 111 D 112 D 113 C 114 A 115 A 116 A 二、 填空题 69、main()函数 70、说明部分、执行部分 71、300,200,100 72、2 73、’\\0’,str[i],num++ 74、i<2,j<4,arr[i][j] 75、b=m,j%i 76、char ch2,k 77、2*ff,3*ff*ff 78、’\\0’,’\\0’,str[i] 79、min=q 80、54 81、char c,a 第七章 117、以下关于预处理的叙述中不正确的是_____ A、C源程序中凡是以“#”号开始的控制行都是预处理命令行 B、预处理命令行必须位于源程序的开始部位 C、一条有效的预处理命令行必须单独占据一行 D、预处理命令是在正式编译之前先行被处理的 118、以下关于文件包含的描述中正确的是_____ A、每个C程序必须包含预处理命令:#include B、#include 后面的文件名用双引号(\)括起和尖括号(<>)括起完全等效 C、#include 命令行可以出现在源程序中需要的任何地方 D、用#include 所包含的文件称为头文件,必须以.h作为扩展名 119、以下有关宏替换的叙述不正确的是_____ A、宏名不具有类型 B、宏名必须用大写字母表示 C、宏替换只是字符替换 D、宏替换不占用运行时间 120、C语言的编译系统对宏命令的处理是_____ A、在对源程序中其它成分正式编译之前进行的 B、和C程序中的其它语句同时进行的 C、在程序连接时进行的 D、在程序运行时进行的 121、以下程序运行后,输出结果是_____ #define ADD(x) x+x main( ) { int m=1, n=2, s=3; s*=ADD(m+n); printf(\; } A、s=8 B、s=9 C、s=6 D、s=18 122、执行以下程序后,m的值是_____ #define MIN(x, y) (x)<(y) ? (x) : (y) main( ) { int i=12, j=8, m; m=10*MIN(i, j); printf(\; } A、120 B、80 C、12 D、8 123、若有宏定义如下: #define X 5 #define Y X+1 #define Z Y*X/2 则执行以下语句后,输出结果是_____ int a; a=Y; printf(\; printf(\; A 7 B 12 C 12 D 7 6 6 5 5 124、若有以下宏定义: #define N 2 #define Y(n) (N+1)*n 则执行语句int z; z=2*(N+Y(5));后z的值是____ A、50 B、34 C、19 D、无定值 125、以下程序的运行结果是_____ #define MAX(X, Y) (X)>(Y) ? (X) : (Y) #define PRINT(Y) printf(\ main( ) { int a=1, b=2, c=3, d=4, t; t=MAX(a+b, c+d); PRINT(t); } A、Y=3 B、存在语法错误 C、Y=7 D、Y=0 126、以下程序段中宏代换后存在错误的是_____ A、#define ar_size 100 int array1[ar_size]; B、#define PI 3.1415926 #define S(r) PI*(r)*(r) ?? area=S(a+b); C、#define PI 3.1415926; #define S(r) (r)*(r)* PI ?? area=S(a+b); D、#define PI 3.1415926 #define S (r) PI*(r)*(r) ?? area=S(a); 127、以下为计算x2 +2x-3之值而定义的宏中,形式正确、使用可靠的是_____ A、#define F(x) ((x)*(x)+2*(x)-3) B、#define F(x)=(x)*(x)+2*(x)-3 C、#define F(x) x*x+2*x-3 D、#define F(x) (x*x+2*x-3) 128、以下程序的输出结果是_____ #include #define PRINT(a) printf(\ main( ) { int x=2; PRINT(x*F(3)); } 129、以下在任何情况下计算两数积时都不会引起二义性的宏定义是_____ A、#define MUL(x,y) x*y B、#define MUL(x,y) (x)*(y) C、#define MUL(x,y) (x*y) D、#define MUL(x,y) ((x)*(y)) 二、填空题 83、设有以下宏定义: #define WIDTH 80 #define LENGTH WIDTH+40 则执行语句:int v; v=LENGTH*2;后,v的值是_____ 84、下面程序的运行结果是_____ #define DOUBLE(r) r*r main( ) { int x=1, y=2, t; t=DOUBLE(x+y)/(x+y); printf(\; } 85、以下程序的运行结果是_____ #define MAX(a, b, c) ( (a)>(b) ? ((a)>(c)?(a):(c)) : ((b)>(c)?(b):(c)) ) main( ) { int x, y; x=1; y=2; printf(\; } 86、下面程序的运行结果是_____ #define MAX(a, b) (a>b?a:b)+1 main( ) { int i=6, j=8, k; printf(\; } 87、下面程序的运行结果是_____ #define PR(ar) printf(\; main( ) { int j, a[ ]={1, 3, 5, 7, 9, 11, 13, 15}, i=5; for (j=3; j; j--) { switch(j) { case 1: case 2: PR(a[i++]); break; case 3: PR(a[--i]); } } } 88、以下程序的运行结果是_____ #define A 4 #define B(x) A*x/2 main( ) { float c, a=4.5; c=B(a); printf(\; } 90、为了使以下程序正确运行,应包含的命令行是__________ main( ) { int x=2, y=3; printf(\; } 三、编程题 1、编写函数isletter(char c),判断c是否为字母。若是返回函数值为1;否则返回函数值为0。注意:不得调用系统函数isalpha.请勿改动主函数和其它内容。 #include isletter(char c) { } main( ) { char ch; ch=getchar( ); if (isletter(ch)) printf(\; else printf(\; } 答案 一、 选择题 117 B 118 C 119 B 120 A 121 D 122 D 123 D 124 B 125 C 126 D 127 A 128 D 129 D 二、 填空题 83、160 84、1 85、3 86、9 87、 9 9 11 88、9.0 89、 90、#include C语言程序设计第8章练习题 一、选择题 133、设有定义:int a=1, *p=&a; float b=2.0; char c='A'; ,以下不合法的运算是____ A、p++; B、a--; C、b++; D、c--; 134、以下程序执行后a的值为____ main( ) { int a, m=2, k=1, *p=&k; a=p==&m; printf(\; } A、-1 B、0 C、1 D、2 135、以下对指针变量的操作中,不正确的是___ A、int p, *q; q=&p; B、int *p, *q; q=p=NULL; C、int a=5, *p; *p=a; D、int a=5, *p, *q=&a; *p=*q; 136、以下对指针变量的操作中,不正确的是___ A、int a, *p, *q; p=q=&a; B、int a=6, *p, *q=&a; p=q; C、int a=b=6, *p; p=&a; b=*p; D、int a, *p, *q; q=&a; p=*q; 137、设有语句:int k=1, *p1=&k, *p2=&k;,以下不能正确执行的赋值语句是____ A、p1=k B、p1=p2 C、*p1=*p2 D、k=*p1+*p2 138、若有语句:int a=4, *p=&a;,下面均代表地址的一组选项是____ A、a, p, &*a B、*&a, &a, *p C、&a, p, &*p D、*&p, *p, &a 139、设已有说明语句:int i=5, *q;,若要建立如图所示的存储结构,以下正确的赋值语句是____ A、q=i; B、*q=i; C、q=&i; D、*q=&i; 140、若有说明语句:char c='9', *sp1, *sp2;,以下均正确的一组赋值语句是____ A、sp1=&c; sp2=sp1; B、sp1=&c; sp2=&sp1; C、sp1=&c; sp2=*sp1; D、sp1=&c; *sp2=*sp1; 141、以下判断正确的是____ A、char *s=\; 等价于char *s; *s=\; B、char str[10]={\; 等价于:char str[10]; str={\; C、char *s=\; 等价于char *s; s=\; D、char str[10]={\; 等价:char str[10]; *str={\; 142、以下能正确进行字符串赋值操作的是____ A、char s[5]={\; B、char s[5]={'A', 'B', 'C', 'D', 'E'}; C、char *s; *s=\; D、char *s=\; 143、下面程序段的运行结果是____ char *s=\; s+=1; printf(\; A、bcde B、字符'b'的地址 C、字符'c'的地址 D、字符'b'的ASCII值 144、以下能正确读入字符串的程序段是____ A、char *p; scanf(\; B、char str[10]; scanf(\; C、char str[10], *p; p=str; scanf(\; D、char str[10], *p=str; scanf(\; 145、设有说明语句: char *str=\;,则指针str所指字符串的长度为____ A、13 B、15 C、17 D、说明语句不合法 146、以下运算正确的程序段是____ A、char str1[ ]=\; strcpy(str1, str2);B、char str[10], *st=\; strcat(str, st); C、char *st1=\; strcat(st1,st2); D、char str[10]=\; strcat(str, st); 147、下面程序段的运行结果是____ char str[ ]=\; printf(\; A、字符'z'的地址 B、0 C、字符'z'的ASCII码 D、字符'z' 148、以下程序段的运行结果是____ char a[ ]=\; p=a; while (*p!='g') { printf(\; p++; } A、PROgram B、PROGRAM C、PRO D、proGRAM 149、下面程序段的运行结果是____ main( ) { char c1, c2; c1='A'+'5'-'3'; c2='A'+'6'-'3'; printf(\; } A、C,D B、67,D C、无确定值 D、B,C 150、以下程序段的运行结果是____ char b[ ]=\; for (p=b; p 则对库函数strcpy调用正确的是____ A、strcpy(s1, s4); B、strcpy(s2, s4); C、strcpy(s3, s1); D、strcpy(s4, s1); 152、以下与库函数strcpy(char *s1, char *s2)功能不相等的程序段是____ A、strcpy1(char *s1, char *s2) { while ((*s1++=*s2++)!='\\0') ; } B、strcpy2(char *s1, char *s2) { while (*s2) *s1++=*s2++; } C、strcpy3(char *s1, char *s2) { while (*s1++=*s2++) ; } D、strcpy4(char *s1, char *s2) { while ((*s1=*s2)!='\\0') { s1++; s2++; } } 153、以下程序段的输出结果是____ char a[ ]=\; ptr=a; for ( ; ptr A、Program B、Porm C、有语法错 D、Por 154、以下语句不正确的是____ A、char a[6]=\; B、char a[6], *p=a; p=\; C、char *a; a=\; D、char a[6], *p; p=a=\; 155、下面程序段的运行结果是____ char st[8]=\; printf(\; A、output B、\C、\\\ D、编译出错 156、以下程序段的输出结果是____ char a[ ]=\; while (*ptr) { printf(\; ptr++; } A、LANGUAGE B、陷入死循环 C、有语法错 D、language 157、若有定义:int b[5];,则以下对b数组元素的正确引用是____ A、*&b[5] B、b+2 C、*(*(b+2)) D、*(b+2) 158、若有以下语句,则对x数组元素引用不正确的是____ int x[ ]={1, 2, 3, 4, 5, 6}, *ptr; ptr=x; A、*(--ptr) B、*(ptr--) C、*(ptr++) D、*(++ptr) 159、若有定义:int c[5], *p=c;,则以下对c数组元素地址的正确引用是____ A、p+5 B、c++ C、&c+1 D、&c[0] 160、若有说明语句:int a[2][3], m, n; 且0≤m≤1,0≤n≤2,则以下对数组元素的正确引用形式是__ A、a[m]+n B、(a+m)[n] C、*(a+m)+n D、*(*(a+m)+m) 161、若有定义:int a[2][3];,则以下对a数组元素地址的正确表示为____ A、*(a+1) B、*(a[1]+2) C、a[1]+3 D、a[0][0] 162、若有定义:int (*p)[3];,则以下叙述正确的是____ A、p是一个指针数组名 B、p是一个指针,它可以指向一个一维数组中的任意元素 C、p是一个指针,它可以指向一个含有3个整型元素的一维数组 D、(*p)[3]等价于*p[3] 163、若有以下定义和语句,则对m数组元素地址的正确引用是____ int m[2][3], (*p)[3]; p=m; A、p[2] B、p[0]+1 C、*(p+2) D、(p+1)+2 164、若有定义:int x[5], *p=x;,则不能代表x数组首地址的是____ A、x B、&x[0] C、&x D、p 165、若有以下定义和语句,则对a数组元素的正确引用是____ int a[2][3], (*p)[3]; p=a; A、(p+1)[0] B、*(*(p+2)+1) C、*(p[1]+1) D、p[1]+2 166、若有定义:int i, x[3][4];,则不能将x[1][1]的值赋给变量i的语句是____ A、i=x[1][1] B、i=*(*(x+1)) C、i=*(*(x+1)+1) D、i=*(x[1]+1) 167、若有以下定义和赋值语句,且0≤i≤1,0≤j≤2,则以下对s数组元素地址的正确引用形式是____ int s[2][3]={0}, (*p)[3], i, j; p=s; A、(*(p+i))[j] B、*(p[i]+j) C、*(p+i)+j D、(p+i)+j 168、设用以下程序段建立了sp与str的关系,则以下对字符串的引用不正确的是____ char str[4][8]={\; int n; for (n=0; n<4; n++) sp[n]=str[n]; A、sp B、*sp C、sp[0] D、*(sp+1) 169、若有定义:int x[10], *p=x;,则*(p+5)表示____ A、数组元素x[5]的地址 B、数组元素x[5]的值 C、数组元素x[6]的地址 D、数组元素x[6]的值 170、若有定义语句:int s[4][6], t[6][4], (*p)[6];,则以下正确的赋值语句是____ A、p=t; B、p=s; C、p=s[2]; D、p=t[3]; 171、若要对变量a进行--运算,则a应具有的说明是____ A、int p[3]; int *a=p; B、int k; int *a=&k; C、char *a[3]; D、int b[10]; int *a=b+1; 172、若有定义语句:int x[5]={0, 1, 2, 3, 4}, *p;,则以下数值不为2的表达式是____ A、p=x+1, ++(*p) B、p=x+2, *p++ C、p=x+1, *(p++) D、p=x+1, *++p 173、执行以下程序段后,y的值是____ int a[ ]={1, 3, 5, 7, 9} int x=0, y=1, *ptr; ptr=&a[1]; while (!x) { y+=*(ptr+x); x++; } A、1 B、2 C、4 D、24 174、执行以下程序段后,m的值是____ int a[2][3]={{1, 2, 3}, {4, 5, 6}}; int m, *ptr; ptr=&a[0][0]; m=(*ptr)*(*ptr+2)*(*ptr+4); A、15 B、48 C、24 D、无定值 175、设有以下定义:char *ch[2]={\;,则以下正确的叙述是____ A、数组ch的两个元素中分别存放了字符串\和\的首地址 B、数组ch的两个元素分别存放的是含有3个字符的一维字符数组的首地址 C、ch是指针变量,它指向含有两个数组元素的字符型一维数组 D、数组ch的两个元素的值分别是\和\176、下面程序的运行结果是____ main( ) { int x[5]={1, 2, 3, 4, 5}, *p=x, **q; q=&p; printf(\; printf(\; } A、1, 1 B、1, 2 C、2, 2 D、2, 3 177、下面程序的运行结果是____ #include \ fun(int **a, int p[2][3]) { **a=p[1][1]; } main( ) { int x[2][3]={2, 4, 6, 8, 10, 12}, *p; p=(int *)malloc(sizeof(int)); fun(&p, x); printf(\; } A、2 B、6 C、8 D、10 179、若有说明:char *pc[ ]={\;,则以下叙述正确的是____ A、*pc[0]代表的是字符串\B、*pc[0]代表的是字符'a' C、pc[0]代表的是字符串\D、pc[0]代表的是字符'a' 180、以下程序的运行结果是____ void sub(int x, int y, int *z) { *z=y-x; } main( ) { int a, b, c; sub(10, 15, &a); sub(6, a, &b); sub(a, b, &c); printf(\; } A、5, 1, 6 B、-5, -11, -6 C、-5, 11, 6 D、5, -1, -6 181、设有变量定义和函数调用语句:int a=20; print_value(&a);,下面函数的输出结果是____ void print_value(int *x) { printf(\; } A、20 B、21 C、变量a的地址 D、随机值 182、语句int (*ptr)( );的含义是____ A、ptr是指向一维数组的指针变量 B、ptr是指向int 型数据的指针变量 C、ptr是指向函数的指针,该函数返回一个int 型数据 D、ptr是一个函数名,该函数的返回值是指向int 型数据的指针 183、 若有函数max (a ,b) ,并且已使函数指针变量p 指向函数 max ,则利用函数指针调 用 max 函数的正确形式是____ A、(*p ) max (a , b) B、*p max(a, b) C、p-> max (a, b) D、 ( *p ) (a, b ) 184、若有定义:int (*p)( );,则指针p___ A、代表函数的返回值 B、指向函数的入口地址 C、表示函数的类型 D、表示函数返回值的类型 185、下面程序的运行结果是____ main( ) { int b[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; int *q=b; printf(\; } A、1 B、2 C、3 D、4 187、下面程序的运行结果是____ #include { int a[3][3]={{2},{4},{6}}; int k,*q=&a[0][0]; for(k=0;k<2;k++) { if(k= =0) a[k][k+1]=*q+1; else ++q; printf(“%d”,*q); } } A、26 B、23 C、36 D、33 188、下面程序的运行结果是____ void prt(int *a) {printf(“%d\\n”,++*a);} A、mZ bPPk B、my book C、Ny Cook D、My Book 212、下面程序的运行结果是____ # include { char t,*a,*z; a=s; z=s+strlen(s)-1; while(a++ { t=*a++; *a=*z--; *z=t;} } main() { char *p; p=\; fun(p); puts(p); } A、abdddfg B、afcdebg C、gbedcfa D、gfedcba 213、以下函数Abc的功能是____ int Abc(char *ps) { char *p; p=ps; while(*p++); return(p-ps); } A、计算字符串的长度 B、比较两个字符串的大小 C、实现字符串的复制 D、以上三种说法都不对 214、以下函数的功能是____ fun(char *s1,char *s2) { int j; char *s=s1; for ( ;*s2!='\\0';s2++) { for (j=0, s1=s;*s1!='\\0';s1++) if(*s1!=*s2) { s[j]=*s1; j++; } s[j]='\\0'; } } A、比较两个字符串的长度是否相等 B、将字符串s2连接到字符串s1后 C、找出字符串s1和s2中不相同的字符 D、找出字符串s1和s2中相同的字符 215、下面程序的运行结果是____ # include { char *p,s[ ]=\; for(p=s;*p!='\\0'; ) { printf(\,p); p++; if(*p!='\\0') p++; else break; } } A ABCDEFG B ABCDEFG C A ABCDE CDEFG C ABC EFG E A G G 216、下面程序的运行结果是____ # include { char *p1,*p2,str[50]=\; p1=\; p2=\; strcpy(str+1,strcat(p1,p2)); printf(\,str); } A、abcabcabc B、bcabcabc C、aabcabc D、cabcabc 217、以下与库函数strcmp(char *s,char *t)的功能相等的程序段是____ A、strcmpA(char *s,char *t) { for( ;*s++= =*t++; ) if(!*s) return 0; return(*s-*t); } B、strcmpB(char *s,char *t) { for( ;*s++= =*t++; ) if(*s= ='\\0') return 0; return(*s-*t); } C、strcmpC(char *s,char *t) { for( ;*s++= =*t;s++,t++) if(!*s) return 0; return(*s-*t); } D、strcmpD(char *s,char *t) { for( ;*t= =*s; ) { if(!*t) return 0; t++; s++; } return(*s-*t); } 第八章 一、 选择题 133 A 134 B 135 CD 136 CD 137 A 138 C 139 C 140 A 141 C 142 D 143 B 144 C 145 A 146 D 147 B 148 C 149 B 150 A 151 D 152 B 153 B 154 D 155 B 156 A 157 D 158 A 159 D 160 D 161 A 162 C 163 B 164 C 165 C 166 B 167 C 168 A 169 B 170 B 171 D 172 C 173 C 174 A 175 A 176 B 177 D 178 D 179 B 180 D 181 B 182 C 183 D 184 B 185 C 186 187 B 188 A 189 190 B 191 C 192 A 193 B 194 D 195 C 196 CC 197 BBC 198 CAC 199 AC 200 CB 201 BD 202 AC 203 DA 204 ADD 205 DA 206 B 207 A 208 B 209 C 210 D 211 C 212 A 213 D 214 C 215 B 216 C C语言程序设计第9章、第10 章练习题 一、选择题 219、已知学生记录描述如下,下面对结构体成员\的赋值方式正确的是_______ struct student { int num; char name[8]; struct { float math; float engl; float computer; } mark; } std; A、student.computer=84; B、mark.computer=84; C、std.mark.computer=84; D、std.computer=84; 220、当定义一个结构体变量时系统分配给它的内存是________ A、结构中第一个成员所需的内存量 B、结构中最后一个成员所需的内存量 C、结构体成员中占内存量最大者所需的容量 D、结构体中各成员所需内存量的总和 221、以下对结构体类型变量rcard的定义中不正确的是________ A、#define REC struct card REC { int id; float sala;} rcard; B、struct card { int id; floar sala;}; card rcard; C、struct card { int id; float sala;}; struct card rcard; D、struct { int id; float sala;} rcard; 222、设有以下说明语句,则下面的叙述不正确的是________ struct abc { int m; float n;} stype; A、struct是结构体类型的关键字 B、abc是用户定义的结构体类型名 C、m和n都是结构体成员名 D、stype是用户定义的结构体变量名 223、以下程序中编译和运行结果均正确的一个是________ A、main() { union { int n; float x; } comm={1}; printf(\,comm.n); } B、main() { union { int n; float x;} comm={12.5}; printf(\,comm.x); } C、main() { union { float x; int n;} comm=12.5; printf(\,comm.x); } D、main() { union { int n; float x;} comm=5; printf(\,comm.n); } 224、以下程序的运行结果是________ # include \main() { struct date { int y,m,d;} today; printf(\; } A、2 B、3 C、6 D、出错 225、根据下面的定义,能输出字符串\的语句是________ struct person { char name[10]; int age; } class[10]={\,18, \ \ \ }; A、printf(\,class[2].name); B、printf(\,class[2].name[0]); C、printf(\,class[1].name); D、printf(\,class[1].name[0]); 226、下面程序的运行结果是________ main() { struct cmplx { int x; int y; } cm[2]={1,2,3,4}; printf(\ cm[1].y/cm[0].y); } A、5 B、2 C、3 D、4 227、若有以下定义和语句,则以下对结构体成员的引用不正确的是________ struct student { int num; int age;}; struct student stu[3]={{1001,20}, {1002,19}, {1003,20}}; main() { struct student *p; p=stu; ? } A、(p++)->num B、p++->age C、(*p).num D、p=&stu.age 228、若有如下定义,则下面在scanf函数调用语句中对结构体成员的引用不正确的是 ________ struct pupil { char name[20]; int age; int sex; } pup[5],*p; A、scanf(\,p->age); B、scanf(\,pup[0].name); C、scanf(\,&pup[0].age); D、scanf(\,&(p->sex)); 229、设有以下定义和语句,则以下表达式值为6的是________ struct ss { int a; struct ss *b;}; static struct ss x[3]={5,&x[1], 7,&x[2], 9,'\\0'},*ptr; ptr=&x[0]; A、ptr->a++ B、ptr++->a C、ptr->a D、++ptr->a 230、设有如下定义,若要使px指向rec中的x域,正确的赋值语句是________ struct aa { int x; float y; } rec,*px; A、*px=rec.x; B、px=&rec.x C、px=(struct aa *)rec.x D、px=(struct aa *)&rec.x; 231、若有以下说明和语句,则对结构体变量std中成员id的引用方式不正确的是_______ struct work { int id; int name; } std,*p; p=&str; A、std.id B、*p.id C、(*p).id D、p->id 232、若有以下程序段,则下面表达式中值为20的是________ struct com { int a; int *b;}; int x=10,y=20,z=30; struct com s[3]={{1010,&x}, {1020,&y}, {1030,&z}}; main( ) { struct com *p; p=s; ? } A、(p++)->b B、*(p++)->b C、(*p).b D、*(++p)->b 233、若有以下说明和语句,则对ttd中lab域的正确引用方式是________ struct example { char lab; int num; } ttd,*p; p=&ttd; A、(*p).lab B、p->ttd.lab C、(*p).ttd.lab D、p.ttd.lab 234、以下程序的输出结果是________ struct s { int n; int *m; } *p; int d[3]={10,20,30}; struct s arr[3]={100,&d[0], 200,&d[1], 300,&d[2]}; main( ) { p=arr; printf(\,++p->n); printf(\,(++p)->n); printf(\,++(p->m)); } A、101,200,21 B、101,20,30 C、200,101,21 D、100,101,10 235、若要使指针变量p指向一个动态开辟的字符型存储单元,则①中应选择填入的是 ________ char *p; p= ① malloc(sizeof(char)); A、char B、char * C、(*char) D、(char *) 236、当说明一个共用体变量时系统分配给它的内存是________ A、共用体中第一个成员所需内存量 B、共用体中最后一个成员所需内存量 C、共用体成员中占内存量最大者所需的容量 D、共用体中各成员所需内存量的总和 237、以下对C语言中共用体类型数据的叙述正确的是________ A、可以对共用体变量名直接赋值 B、一个共用体变量中可以同时存放其所有成员 C、一个共用体变量中不能同时存放其所有成员 D、共用体类型定义中不能出现结构体类型的成员 238、若有以下定义和语句,则下面对共用体变量a的引用正确的是________ union data { int i; char c; float f; } a; int n; A、a=5; B、a={1,'x',5.0}; C、a.i=10;printf(\,a); D、n=a{5}; 239、设有以下说明,则下面不正确的叙述是________ union data { int i; char c; float f; } aa,bb; A、aa所占的内存长度等于成员f的长度 B、aa的地址和它的各成员地址都是同一地址 C、aa可以作为函数参数 D、不能执行诸如aa=bb;的整体赋值操作 240、以下程序的运行结果是________ # include \main( ) { union { long a; int b; char c; struct { int x; int y;} ss; } m; printf(\,sizeof(m)); } A、2 B、4 C、6 D、8 241、设有如下定义,若字符型变量占1字节、整型变量占2字节、双精度变量占8字节,则共用体变量b占用内存的字节数是____ ____ union data { int i; char ch; double f;} b; A、14 B、15 C、8 D、11 242、下面对typedef的叙述中不正确的是 ________ A、用typedef不能定义变量名 B、用typedef可以定义新的数据类型 C、用typedef只是将已存在的类型用一个新的标识符来代表 D、使用typedef有利于程序的通用和移植 243、以下程序的运行结果是________ typedef union { long a[2]; int b[4]; char c[8]; } EXAM; main( ) { printf(\,sizeof(EXAM));} A、32 B、16 C、8 D、报错 244、已知字符0的ASCⅡ码为十六进制的30,下列程序的运行结果是________ main( ) { union { char ch; unsigned int k[4]; } x; x.k[0]=0x39; x.k[1]=0x36; printf(\,x.ch); } A、6 B、9 C、3 D、0 245、设有如下枚举类型定义: enum language { English=6,French,Chinese=1,Japanese,Italian}; 则枚举量Italian的值为________ A、10 B、4 C、3 D、5
正在阅读:
C语言复习 题集03-26
小学数学第五册思维训练09-14
学素描作文700字06-12
苏州地区近十年产业结构变化趋势的研究(1) - 图文05-21
青马工程心得体会06-08
房地产公司股权架构设计方案05-09
网站设计与开发复习题05-26
父爱的天空作文300字07-04
- 冀教版版五年级科学下册复习资料
- 微生物学复习提纲
- 2013—2014学年小学第二学期教研组工作总结
- 国有土地转让委托服务合同协议范本模板
- 我的固废说明书
- 企业管理诊断报告格式
- 东鼎雅苑施工组织设计
- 谈谈如何做好基层党支部书记工作
- 浮梁县环保局市级文明单位创建工作汇报
- 管理学基础知识
- 大学物理实验报告23 - PN结温度传感器特性1
- 计算机网络实践
- 酒桌上这四种情况下要坐牢,千万别不当回事……
- 国家康居示范工程建设技术要点
- 中国贴布行业市场调查研究报告(目录) - 图文
- 新课标下如何在高中物理教学中培养学生的创新能力初探
- 营养师冬季养生食谱每日一练(7月4日)
- 关注江西2017年第3期药品质量公告
- 建设海绵城市专题习题汇总
- 10万吨年环保净水剂建设项目报告书(2).pdf - 图文
- 复习
- 语言
- 医疗器械安全有效基本要求清单 - 图文
- 仔猪腹泻发生的原因及防制措施
- 中粮集团3年内将投入20亿元进军养猪行业
- 八年级上册国学经典诵读内容 - 图文
- 浅谈职业高中文言文教学中的语法教学
- FastReport - 程序员手册
- 真情永驻、大爱无疆 - 敬老典型梅桂荣
- 地质勘查单位财务管理的企业化分析
- 初中语文知识点《基础知识及语言表达》《朗读、节奏》强化训练[4
- 扣件式钢管脚手架在模板支撑中 - 图文
- 新人教版八年级下册数学期中测试卷及答案(北京)
- 2010年11月企业人力资源管理师全国统一鉴定考试真题 - 图文
- 10、设备管理和维修保养制度
- 10g-11g DBA 基本操作3
- 心理护理干预对三叉神经痛手术治疗患者的影响
- 鸭乙型肝炎病毒拉米夫定耐药株的构建及体内感染之我见
- KTV营业突发事件的处理技巧
- 中油BP安全防范 - 图文
- 第7章-完全垄断部分--习题
- “十三五”重点项目-耐高温抗衰钨丝项目可行性研究报告 - 图文