C语言练习题3
C语言程序设计习题集3

{ num++ ; break ; }
return (num);
}
4下面函数的功能就是用递归法将一个整数存放到一个字符数组中,存放时按逆序存放,如483存放成“384”,请填空使程序完整。
void convert(char *a, int n)
{ int i;
A*pxBaCpxD&a
9若指针px为空指针,则_B__。。
A px指向不定B px的值为零C px的目标为零D px的地址为零
10对下语句int *px[10];,下面正确的说法就是_B__。
A px就是一个指针,指向一个数组,数组的元素就是整数型。
B px就是一个数组,其数组的每一个元素就是指向整数的指针。
A语句有错误B z值为68 Cz值为60 D z值为180
4以下程序运行后的输出结果就是_A__。
#define F(X,Y)(X)*(Y)
main()
{int a=3,b=4;
printf("%d\n",F(a++,b++));
}
A 12B15C16D 20
5以下程序运行后的输出结果就是_C__。
{int a[5]={2,4,6,8,10}, *p;
p=a; p++;
printf("%d", *p);
}
4以下程序的输出结果就是__55__。
#defineM5
#defineNM+M
main()
{int k;
k=N*N*5; printf("%d\n",k);
c语言习题

C语言阶段测试三一、单项选择题1、有以下定义:int a[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}int (*ptr)[3]=a,*p=a[0];则下列能够正确表示数组元素a[1][2]的表达式是( A )。
A)*((*ptr+1)[2])B)*(*(p+5))C)(*ptr+1)+2 D)*(*(a+1)+2)2、# include <stdio.h> Dvoid main ( ){ int a[3][3]={1,2,3,4,5,6,7,8,9};int s=0,i;for (i=0;i<3;i++)s+=(*(a+i))[i];printf("%d",s);}A)9 B)12 C)14 D)153、设有说明语句:char a= '\123abc';则变量a ( A )A) 包含7个字符 B) 包含6个字符C) 包含5个字符D) 包含4个字符4、有以下程序段int k=0while(k=1)k++;while 循环执行的次数是( C )A) 无限次B) 有语法错,不能执行C) 一次也不执行D) 执行1次5、下面四个选项中,均是合法转义字符的选项是_C___。
a. '\''b. '\'c. '\018'd. '\\0''\\' '\017' '\f' '101'\n' '\"' 'xab' 'xlf'6、下面四个选项中,均是不正确的八进制数或十六进制数的选项是____。
a. 016b. oabcc. 010d. 0a120x8f 017 -0x11 7ff018 0x8 0x16 -1237、设int x;则执行printf(″%x\n″,~x^x);的结果是( )A.0B.1C.ffD.ffff8、设int a=9,b=20;则printf(″%d,%d\n″,a--,--b);的输出结果是( A )A.9,19B.9,20C.10,19D.10,209、对于while语句,错误的说法是(B )A.用条件控制循环体的执行次数B.循环体至少要执行一次C.循环体有可能一次也不执行D.循环体中可以包含若干条语句10、执行下列语句int a=8,b=7,c=6;if(a<b)if(b>c){a=c;c=b;}printf(″%d,%d,%d\n″,a,b,c);后输出的结果是( A )A.6,7,7B.6,7,8C.8,7,6D.8,7,811、设static char x[ ]=″12345″,y[ ]={′1′,′2′,′3′,′4′,′5′,′\0′};那么( A )A.x数组的长度等于y数组的长度B.x数组的长度大于y数组的长度C.x数组的长度少于y数组的长度D.x数组与y数组的存储区域相同12、设int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句for(i=0;i<3;i++)printf(″%d″,x[i][2-i]);的输出结果是( C )A.147B.159C.357D.36913、设int b[ ]={1,2,3,4},y,*p=b;则执行语句y=*p++;之后,变量y的值为( A )A.1B.2C.3D.414、假设int型变量占两个字节的存储单元,若有定义:int x[10]={0,2,4};则数组x在内存中所占字节数为____D__。
C语言程序设计-第3章 练习题

一、单项选择题题目1若x的值为15,则执行“if(x>10) x++; else x--;”语句后,x的值为()。
a. 14b. 15c. 10d. 16题目2若x的值为-10,则执行“if(!x) x++; else x--;”语句后,x的值为()。
a. -9b. -11c. -10d. 0题目3若x的值为10,则执行“switch(x%3){case0: x++; case 1:x++; case 2: x++;}”语句后,x的值为()。
a. 13b. 12c. 11d. 10题目4若x的值为10,则执行“switc h(x%3){case0: x++; break; case 1:x++; default: x++;}”语句后,x的值为()。
a. 9b. 10c. 11d. 12题目5若n的值为10,则执行“for(i=1;i<n; i++) S;”语句的过程中,表达式i=1共被执行的次数为()。
a. nb. n+1c. 1 B. n-1 C.n-1d. 1题目6若n的值为10,则执行“for(i=0;; i++) if(i>n/3) break;”语句后,i的值为()。
a. 3b. 6c. 4d. 5题目7若n的值为10,则执行“for(i=1;i<n; i++) S;”语句的过程中,表达式i++共被执行的次数为()。
a. n+1b. nc. 1d. n-1题目8若n的值为10,则执行“for(i=0;i<n; i++) for(j=i; j<n; j++) S;”语句后,内层循环体S语句的执行总次数为()。
a. n(n-1)/2b. (n+1)/2c. n*nd. n(n+1)/2题目9若n的值为10,则执行“while(n-->0)s+=n;”语句的过程中,循环体被执行的次数为()。
a. 8b. 10c. 11d. 9题目10若n的值为5,s的值为0,则执行“while(n-->0) s+=n;”语句后,s的值为()。
C语言练习3(数组)=参考答案

C语言(数组)一、选择题1. 设有程序:main(){ int i,a[11];printf("给数组赋值:\n");for (i=0;i<=10;i++)scanf("%d",( ));... ...printf("输出数组:\n");for(i=0;i<=10;i++)printf("%d,",( ));}则在程序中的两个园括号中分别应填入:CA) &a[i]和&a[i]B) a[i]和&a[i]C) &a[i]和a[i]D) a[i]和a[i]2. 设已定义:int a[15]; 则数组a占用的内存单元数是( C ).A) 15 B) 16 C) 30 D) 323. 阅读程序:main(){ int a[2]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) a[j]=a[i]+1;printf("%d\n",a[k]);}以上程序的输出结果是( D ).A) 1 B) 3 C) 2 D) 不确定的值4. 阅读程序:f(int b[],int n){ int i,r=1;for(i=0;i<=n;i++) r=r*b[i];return r;}main(){ int x,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf("%d\n",x);}以上程序的输出结果是( D ).A) 720 B) 6 C)24 D) 1205. 以下定义语句中,错误的是( B ).A) int a[ ] = {6,7,8};B) int n=5, a[n];C) char a[ ]= "string";D) char a[5 ]={'0','1','2','3','4'};6. 以下描述中正确的是( D ).A) 数组名后面的常量表达式用一对圆括弧括起来B) 数组下标从1开始C) 数组下标的数据类型可以是整型或实型D) 数组名的规定与变量名相同7. 若定义数组并初始化char a[10]={'0','1 ','2','3','4','5','6','7','8','9'};指出以下错误语句( AB ).A) scanf("%c",a[0]);B) scanf("%s",&a);C) printf("%c",a[3]);D) printf("%s",a);8.若定义数组int a[10] ,其最后一个数组元素为( C ).A) a[0]C) a[9]D) a[10]9. 若定义数组并初始化int a[10]={ 1,2,3,4},以下语句哪一个不成立( B )?A) a[8] 的值为0B) a[1] 的值为1C) a[3] 的值为4D) a[9] 的值为010. 指出以下错误语句( A ).A) int n=10,a[n];B) int n,a[10];C) int a[10]={1,2,3};D) int a[10]={1,2,3,4,5,6,7,8,9,10};11. 请读程序:main(){int n[2],i,j,k;for(i=0;i<2;i++) n[i]=0;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++) n[j]=n[i]+1;printf("%d\n",n[k]);}上面程序的输出结果是( A ).A)不确定的值 B)3 C)2 D)112. 若有以下的定义和语句:int str[12]={1,2,3,4,5,6,7,8,9,10,11,12};char c='e',则数值为2的表达式是( C ).A)str['g'-c] B)str[2] C)str['d'-'c'] D)str['d'-c]13. 设有数组定义:int a[5];则下列给数组元素赋值错误的是( B ).B) scanf("%c",a[3]);C) a[3]=getchar();D) a[3]='a'+3;14. 以下数组定义中错误的是( D ).A) #define N 30int a[N+30];B) #define N 30int a[N];C) int a[30];D) int a[N];15. 在定义一个一维数组时,不能用来表示数组长度的是( D ).A)常量 B)符号常量 C)常量表达式 D) 已被赋值的变量16. 若float型变量占用4个字节,有定义float a[20]={1.1,2.1,3.1};则数组a在内存中所占的字节数是( D ).A)12 B)20 C)40 D)8017. 设已定义:int x[2][4]={1,2,3,4,5,6,7,8}; 则元素x[1][1]的正确初值是( A ).A) 6 B) 5 C) 7 D) 118. 设有定义:int a[][3]={{1,2,3},{4,5,6},{7,8,9}}; 则a[1][2]的初值为( C ).A) 2 B) 4 C) 6 D) 819. 设有:int a[4][5]; 则数组a占用的内存字节数是( C ).A) 12 B) 24 C) 40 D) 2020. 以下数组定义中,不正确的是( B ).A) int b[3][4];B) int c[3][ ]={{1,2},{1,2,3},{4,5,6,7}};C) int b[200][100]={0};D) int c[ ][3]={{1,2,3},{4,5,6}};21. 定义数组:int x[2][3]; 则数组x 的维数是( 2 ).A) 1 B) 2 C) 3 D) 622. 若定义数组并初始化int b[2][3]= { 1,2,3,4,5,6},以下语句哪一个成立( C )?A) 表达式b[1][2]的值为1B) 表达式b[1][2]的值为4C) 表达式b[1][2]的值为6D) 表达式b[1][2]的值为223. 若定义数组并初始化int a[2][3]={{1,2,3},{4,5,6}};for(i=0;i<2;i++)for(j=0;j<3;j++)printf("%d",a[i][j]);语句的结果是哪一个( C )?A) 1,2,3,4,5,6B) 1 2 3 4 5 6C) 12345624. 若定义数组并初始化int a[2][3]= {{1,2, 3},{4,5,6}};以下语句哪一个不成立( B )?A) a数组中有6个元素B) a[2][3]是a数组的最后一个元素的引用C) a数组中每个元素都为整数D) a数组是整型数组25. 定义如下变量和数组:int i;int x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是( C ).for(i=0;i<3;i++) printf("%d",x[i][2-i]);A) 1 5 9 B) 1 4 7 C) 3 5 7 D) 3 6 926. 如有以下定义:double s[][5]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14};则数值为2的元素是( C ).A) s[1][3] B) s[0][3] C) s[0][2] D) s[1][2]27. 以下程序的输出结果是( A ).main(){int a[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf("%d",s);}A) 18 B) 19 C) 20 D) 2128. 若已有char b[10][50];则该二维字符数组在内存所占字节数为( D ).A) 10 B)50 C)60 D)50029. 设有:char a[10]; 下列语句那个是正确的( D )?A) scanf("%s",a[0]);B) scanf("%s",&a);C) printf("%s",a[0])D) printf("%s",a)30. 阅读程序:main(){ char a[10];int i;for(i=1;i<=5;i++)scanf("%c",&a[i]);printf("%c",a[0]);}设从键盘输入字符串:abcde,则程序的输出结果是( C ).A) a B)空格 C)不确定D)031. 合法的数组定义是( D ).A) int a[ ] = "string";B) int a[5]={0,1,2,3,4,5};C) char a= "string";D) char a[ ]={'0','1','2','3'};32. 设有数组定义:char string[ ]="China";则数组string所占的空间为( B ).A) 5个字节B) 6个字节C) 7个字节D) 10个字节33. 定义字符数组c:char c[ ]={"c language"};数组c在内存中所占字节数是( C ).A) 9 B) 10 C) 11 D) 1234. 指出以下错误语句( C ).A) char a[10]={'0','1','2','3','4','5','6','7','8','9'};B) char a[10]={'0','1 ','2','3'};C) char a[2]= {"1","2"};D) char a[2]= {'a’,'b’};35. 若定义数组并初始化char a[10]={"hello"},该数组的元素个数是( A ).A) 10B) 5C) 6D) 736. 若定义数组并初始化char a[10]={"HELLO"},该数组的元素中 a[2]是( A ).A) 'L'B) 'E'C) 'H'D) 'O'37. 若定义数组并初始化int b[10]={ 1,2,3,4},以下哪几个语句成立( A C D)?A)b[8]的值为0B)b[1]的值为1C)b[3]的值为整数D)b[10]不是b数组中的元素38. 若定义数组int a[10];指出下列错误语句:ABCDA) a数组共有10个元素,其引用方法是:a[1],a[2]...a[10];B) a数组是整型数组,其元素自动初始化为0;C) a数组最后一个元素的引用方法是a[10];D) a数组第一个元素的引用方法是a[1];二、判断题1.数组是数目固定的若干变量的有序集合,数组中各元素的类型可以不同。
C语言习题级答案3

测试题31.C语言中不合法的字符常量是 CA、’\65’B、’\xff’C、’\028’D、’&’2.具有相同类型的指针变量p与数组a,不能进行的操作是(C)。
A、p=&a[0];B、p=a;C、p=&a;D、*p=a[0];3.若有x=22,y=26,z=0;,则执行下面语句后,z的输出结果是(B )z=x>y?x:yA、72B、26C、48D、224.对于建立函数的目的,正确的说法是DA、提高程序的执行效率B、减少程序的篇幅C、减少程序文件所占的内存D、提高程序的可读性5.有定义:char*p1,*p2;则下列表达式中正确合理的是CA、p1/=5B、p1+=5C、p1=&p2D、p1*=p26.以下程序的运行结果是(B)。
main(){int i=1,sum=0;while(i<10) sum=sum+1;i++;printf("i=%d,sum=%d",i,sum);}A、i=10,sum=9B、运行出现错误C、i=2,sum=17.若变量已正确定义且k 的值是4,计算表达式( j =4, k--) 后,j和k的值为(C)A、j=4, k=4B、j=3, k=3C、j=4, k=3D、j=3, k=48.给出以下定义:char x[ ]="abcdefg";char y[ ]={'a','b','c','d','e','f','g'};则正确的叙述为(A)A、数组x的长度大于数组y的长度B、数组x和数组y等价C、数组x和数组y的长度相同D、数组x的长度小于数组y的长度9.在下述程序中,判断i > j共执行了多少次 C#include <stdio.h>main(){int i = 0, j = 10, k = 2, s = 0;for( ; ; ){i += k;if(i > j){printf(“%d\n”, s);break;}s += i;}}A、4B、8C、6D、710.下列各m的值中,能使m%3==2&&m%5==3&&m%7==2为真的是(D)。
C语言课程习题

C语言综合练习题(一)一选择题(7分,每小题0.5分)1.设a为整型变量,初值为12,执行完语句 a+=a-=a*a后,a的值是()。
A 552B 144C 264D -2642.下列标识符中,不能作为合法的C用户定义标识符的是()。
A a3_b3B voidC _123D IF3.下列整数值中,不正确的八进制或十六进制数值常量是()。
A 0xcdB -017C -ox123D 0xfdc4.若给定条件表达式(M)?(a++):(a--),则其中表达式M和()等价。
A M==0B M=1C M!=1D M!=05.在C语言中,if语句后的一对圆括号中,用以决定分支流程的表达式为()。
A 只能是逻辑表达式 B只能是关系表达式C 只能是逻辑表达式或关系表达式 D可以是任意表达式6.以下程序的输出结果为()。
main( ){ char c;int i;for(i=65;i<68;i++){ c=i+32;switch(c){ case ‘a’:printf("%c,",c);break;case ‘b’:case ‘e’:printf("ok,");default: printf("end");}} }A a,ok,endB a,ok,endendC a,ok,end,endD a,ok,ok7.数组名作为实参数传递给函数时,数组名被处理为()。
A 该数组的长度B 该数组的元素个数C 该数组的首地址D 该数组中各元素的值8.关于return语句,下列正确的说法是()。
A 可以在同一函数中出现多次B 在主函数中不能出现C 必须在每个函数中出现D 只能在除主函数之外的函数中出现一次9.以下程序的输出结果为()。
#define A 3#define B(a) (A+1)*amain(){ int x;x=3*A+B(7);printf("x=%d\n",x);}A x=93B x=37C x=60D x=9010.设有以下定义,则以下对变量w的赋值()是错误的。
C语言练习题及答案

综合强化练习一一、选择题(每题1分,共40分)1、以下叙述正确的是( )A)C语言总是从第一个定义的函数开始执行B)在C程序中,要调用的函数必须在main函数中定义C)C程序的执行总是从main函数开始执行的D)C程序中的main函数必须放在程序的开始部分2、下列合法的用户标识符为( )A)_4sum B) static C) 1max D) #dtotal3、ch为字符型变量,则下面赋值语句正确的为( )。
A)ch="ABC" B) ch="A" C) ch= a D) ch=674、C语言中整形常量有哪几种形式( )A) 十进制、八进制、十六进制B) 二进制、十进制、八进制、十六进制C) 二进制、八进制、十六进制D) 二进制、十进制5、字符串" China "在内存中占用的字节数是( )A) 1 B) 2 C) 5 D) 66、int x,y; x=7/2;y=7/2.0;则x的值为( )A) 3.500000 3D)3 37、下面程序int x=0x2B; printf("%d",x);的输出结果为( )A) 2B B) 0x2B C) 43 D) 448、实型常量用指数形式表示,下列哪一项不是合法的( )A)C)356e39、设有语句int a=3;则执行了语句a-= a+=a*a;后变量a的值是( )A)0 B)3 C) -9 D) -310、下列字符中,错误的转义字符是( )A)'\085' B) '\\' C) '\0' D) '\n '11、下面程序的输出结果是( )int a=2;if(a=5) a=a+2;printf("%d ",a);A) 2 B) 4 C) 5 D)712、下列程序段的循环次数是( )int k=0;while(k= =0) printf("%d",k);k--; printf ("\n");A) 无限次B) 0 次C) 1次D)2次13、下列说法正确的是( )A) 在循环体中可以用break语句结束本次循环B) 在循环体中可以用continue语句结束本次循环C) break语句仅能使用在switch结构中D) 可以使用continue语句跳出switch结构14、以下正确的函数形式是()。
C语言练习题及答案解析三

C语言练习题及答案解析三(共3页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--一、单项选择题1.下面不属于C语言的数据类型是【】。
A) 整型 B) 实型 C) 逻辑型 D) 双精度实型分析:和其它高级语言相比,C语言中没有逻辑型数据,也没有逻辑型变量。
本题正确答案为C。
语言中,下列属于构造类型的是【】。
A) 整型 B) 实型 C) 指针类型 D) 结构体类型分析:C语言中构造类型的数据有三种:数组、结构体和共用体,数组是同类型数据的集合,结构体是不同类型的数据集合。
本题正确答案为D。
3.下列字符串不符合标识符规定的是【】。
A) SUM B) sum C) 3cd D) end分析:标识符规定只能由26个英文字母(大小写均可),数字0~9和下划线组成,且不能以数字开头,题中的3cd不符合规定。
本题正确答案为C。
4.下面能正确表示八进制数的是【】。
A) 0x16 B) 029 C) -114 D) 033分析:选项A)以0x开头是十六进制数,选项B)虽然是0开头,但出现了数字9,选项C)是十进制数。
本题正确答案为D。
5.下面四个选项中,均是合法实数的选项是【】。
A) B) C) D)-e5分析:实数有两种表示形式:小数形式和指数形式,小数形式必须有小数点,指数形式中,字母e之前必须有数字,e之后必须是整数。
选项A)中的"",选项C)中的"",选项D)中的"-e5"均是不合法的。
本题正确答案为B。
语言中,字符型数据在内存中存储形式是【】。
A) 原码 B) 反码 C) 补码 D) ASCII码分析:C语言中int型数据是以补码形式存放的,字符型数据是以ASCII码形式存放的。
本题正确答案为D。
7.下列正确的字符型常量是【】。
A) "a" B) ′\\\\′ C) "\\r" D) 277分析:字符常量的定义是用单引号括起来的一个字符,A和C的定界符不对,D超过了char型数据的表示范围,′\\\\′是转义字符。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、单项选择题(每空1分,共25分,请将答案填入表格)1.以下叙述错误的是 ___ 。
A) 一个C源程序可由一个或多个函数组成B) 一个C源程序必须包含一个main函数C) C程序的基本组成单位是函数D) 在C程序中,注释说明只能位于一条语句的后面2.C语言中运算对象必须是整型的运算符是 ___ 。
A) %= B) / C) = D) 〈=3.有如下程序,程序运行后的输出结果是 ___ 。
main(){ unsigned int x=0xffff;printf(“%u\n”,x );}A) -1 B) 65535 C) 32767 D) 0xFFFF4.若有代数式(其中e仅代表自然对数的底数,不是变量),则以下能够正确代表该代数式的C语言表达式是 ___ 。
A) sqrt(abs(n^x+e^x)B) sqrt(fabs(pow(n,x)+pow(x,e)))C) sqrt(fabs(pow(n,x)+exp(x)))D) sqrt(fabs(pow(x,n)+exp(x)))5.字符串“\t12\x42\\abcd”的长度是 ___ 。
A) 14 B) 9 C) 15 D)206.以下叙述中错误的是 ___ 。
A) 计算机不能直接执行用C语言编写的源程序B) C语言经C编译程序编译后,生成后缀为.obj的文件是二进制文件C) 后缀为.obj的文件,经连接后生成后缀为.exe的文件是二进制文件D) 后缀为.obj和.exe的二进制文件都可以直接运行7.以下选项中,与k=x++;完全等价的表达式是 ___ 。
A) x=x+1;k=x; B) k=x;x=x+1;C) k=x+1; D) k+=x+1;8.以下叙述中正确的是 ___ 。
A) break语句只能用于switch 语句中B) continue语句的作用是:使程序的执行流程跳出包含它的所有循环C) break语句只能用在循环体内和switch语句体内D) 在循环体内使用break语句和continue 语句的作用相同9.判断字符型变量 ch是否为大写英文字母的表达式为 ___ 。
A) ‘A’<=ch<=‘Z’B) ch>=‘A’&& ch<=‘Z’C) ch>‘a’&& ch<=‘z’D) ch>=‘A’|| ch<=‘Z’10.若表达式(m)? a++:a--, 则表达式m和 ___等价。
A) m==0 B) m!=0 C) m=0 D) m=111.设有 int i=010,j=10;则printf( “%d,%d\n”,++i,j--);的输出是 _ _。
A) 11,10 B) 9,10 C) 010,9 D)10,912.已知w=1,x=2,y=3,z=3,a=4,b=2;则执行语句(a=w>x)&&(b=y>z) ;后,a,b的值为 ___ 。
A) 1和1 B) 0和0 C) 4和2 D) 0和213.定义如下变量关系,则下面语句的输出结果是_________。
int i;int x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf(" %d",x[0][ 2-i]);A) 1 5 9 B) 1 2 3 C) 3 5 7 D) 3 2 114.已知数组float b[3][2];该数组行下标的范围是________。
A) 1—3 B) 0—3 C) 1—2 D) 0—215.下列语句中,正确的是 ___ 。
A) #define PI=3.14159 B) include “stdio.h”C) define M 3 D) #define PI 3.1415916.有如下程序, 该程序段的输出结果是 ___ 。
void main(void){ int n=5;while(n>2) { n--; printf(“%d”,n);}}A) 543 B)432 C)4321 D)543217.下列四种数组定义,合法的数组定义是 ___ 。
A) char a[ ]="hello"; B) int a[4]={4,3,2,1,0};C) char a="hello" ; D) char a[4]= "hello";18.设p1和p2均为指向int型的指针变量, k为int型变量,下列不正确的赋值语句是___ 。
A)k=*p1+*p2; B)k=*p1*(*p2)C)p2=k D)p1=p219.有如下程序,该程序的输出结果是 ___ 。
void main(void){ char s[]=“ABCD”,*p;for( p=s+1;p<=s+3;p++)printf(“%c\n”,*p); }A) ABC B)A C)B D)BCDBC B C CDC CD D20.对于C程序的函数,下列叙述中正确的是 ___ 。
A)函数的定义不能嵌套,但函数调用可以嵌套B)函数的定义可以嵌套,但函数调用不能嵌套C)函数的定义和调用均可以嵌套D)函数的定义和调用均不能嵌套21.设x为整型变量, p是指向整型的指针变量, 则下列赋值表达式正确的是____ 。
A) p=&x B) p=x C) *p=&x D) *p=*x22.函数定义时,形参是整型变量,则函数调用时,实参不可以是________。
A) 整型常量 B) 字符型常量 C) 数组名 D) 整型表达式23. 以下程序的输出结果是________。
void main(void){ int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;printf(“%d\n”,*p+*q);}A) 16 B) 10 C) 8 D) 624.设有如下定义,若有p=&ab;,则对ab中成员项的正确引用是________。
struct ss{ int a; float b; }ab,*p;A) (*p).ab.a B) p->a C) p->ab.a D) p.ab.a25. 若要对E盘上的一个非空文件“w1.dat”进行修改,正确的打开语句是________。
A) fp=fop en(“w1.dat”,“r+”);B) fp=fopen(“w1.dat”, “w+”);C) fp=fopen(“E:\\w1.dat”,“r+”);D) fp=fopen(“E:\\w1.dat”,“w+”);二、填空题(每空1分,共15分,请将答案填入表格)1.若s是int型变量,且s=7,则表达式: s/2+(s+1)%2 的值为_________。
2.C语言中,以 ___打头的int常数是十六进制。
3.有说明语句char s=‘\102’; S包含了_____个字符。
4.有数学表达式sinx+ -6x,写出其对应的C语言的表达式 ____________ _____。
5.有定义语句:int a[][3]={ {0},{1},{2} }; 则数组元素a[1][2]的值是。
6.若程序中使用了函数strlen(),则必须包含的头文件名为____________。
7.有如下程序,该程序的输出结果是。
void main(void){int x=1,a=0,b=0;switch(x){ case 0:b++;case 1:a++;case 2: a++,b++;}printf("a=%d,b=%d\n",a,b);}8. 若a函数中调用了b函数,而b函数又调用了a函数,这种调用称为_______调用。
9.函数调用时,若形参和实参均为数组名时,传递方式为 ____ ____。
10.若有以下定义语句,则输出的结果是_____________。
char s1[ ]=“abcdef”, *s2=“1234”;printf(“%d\n”, strlen(strcpy(s1,s2)));11.若宏定义为:#define y(x) 2+x则表达式a=4+3*y(2)的值为。
12.设有以下语句:static int a[4][2]={1,2,3,4,5,6,7,8};int (*p)[2];p=a;则 *(*(p+2)+1)的值为。
13.在turbo C中,int型数据占2字节,则定义struct node{char x[10];int y;union{float a;long b;}ab;}t;后,sizeof(t)= 。
14.设有一个名为“ww1.c”的C程序,其主函数为 main(int argc,char *argv[]),如果在执行时,输入的命令行为: ww1 aa bb cc↙则形式参数argc的值是______。
15. 执行下列程序段后,(**q-1)的值为 ____________。
int a,*p,**q;a=100;p=&a; q=&p;三、程序分析题(每小题5分,共30分,请将答案填入表格)1.#include <stdio.h>void main(void){int a=10,b=11;int c=0,d=0;printf("%5d,%5d\n",a++,--b);printf("%5d",a&&b);printf("%5d",!a);printf("%d\n",!c);printf("%5d",d+=a);}要求注明输出格式!2. #include <stdio.h>void main(void){int i,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf(“%d+%d=%d ”,i,j,i+j);printf(“\n”);}}3. #include<stdio.h>int a=1,b;void fun(void);void main(void){static int c;int b=-5;printf("a=%d,b=%d,c=%d\n",a,b,c); fun();a+=1;c+=2;printf("a=%d,b=%d,c=%d\n",a,b,c); }void fun(){int c=10;a+=1;b+=2;printf("a=%d,b=%d,c=%d\n",a,b,c); }4. 说明如下程序作用,并写出运行结果。