yuyue-edu 发表于 2025-6-19 12:26:45

河北开放大学C语言程序设计作业与答案

河北开放大学C语言程序设计作业与答案C语言程序设计学校:河北开放大学平台:国家开放大学题目如下:1. 在C语言中,一个函数由函数头和函数体组成。答案:错误2. 在函数模块之外定义的变量称为全局变量,若没有被初始化则系统隐含对它赋初值0。答案:错误3. 如果一个函数只允许同一程序文件中的函数调用,则不应在该函数定义的开始前加上保留字static。答案:正确4. 如果在一个函数体中又出现对自身函数的调用,此种函数调用被称为递归调用。答案:错误5. 调用系统函数时,要先使用#include命令包含该系统函数的原型语句所在的系统头文件。答案:错误6. 函数形参变量不属于局部变量。答案:正确7. 假定p所指对象的值为25,p+1所指对象的值为46,则*p++的值为46。答案:正确8. 假定p所指对象的值为25,p+1所指对象的值为46,则*++p的值为25。答案:正确9. 假定p所指对象的值为25,p+1所指对象的值为46,则执行*(p++)运算后,p所指对象的值为46。答案:错误10. 假定a是一个指针数组,则a+i所指对象的地址比a地址大4*i字节。答案:错误11. 若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为(char*)p。答案:错误12. 假定一个数据对象为int*类型,则指向该对象的指针类型仍为int*类型。答案:正确13. 假定x为一个简单变量,则&x表示x的地址。答案:错误14. 若p指向x,则*p与x的值不同。答案:正确15. NULL是一个符号常量,通常作为空指针值,它代表的值为0。答案:错误16. 在下面的保留字中,不能作为函数的返回值类型的是( )。A. voidB. intC. enumD. long答案:enum17. 假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址增加的字节数为( )。A. 1B. 2C. 4D. 8答案:418. 假定a为一个数组名,在下面的表达式中,存在语法错误的是( )。A. aB. *a++C. *aD. *(a+1)答案:*a++19. 用calloc函数创建具有10个整型元素的一维数组的正确语句是( )。A. int *p=calloc(10,2);B. int *p=calloc(10);C. int *p=calloc(10,4);D. int *p=malloc(10)答案:int *p=calloc(10,4);20. 假定k是一个double类型的变量,则定义变量p的正确语句为( )。A. double p=&k;B. int *p=&k;C. double &p=*k;D. char *p="Thank you!";答案:char *p="Thank you!";21. 若有语句为“int a, x, *pa=a;”,要把数组a中下标为3的元素值赋给x,则不正确的语句为( )。A. x=pa;B. x=*(a+3);C. x=a;D. x=*pa+3;答案:x=*pa+3;22. 假定有语句为“int b; int *pb;”,则下面不正确的赋值语句为( )。A. pb=b;B. pb=&b;C. pb=b+2;D. pb=b;答案:pb=b;23. 已知“int *p=malloc(100);”,要释放p所指向的动态内存,正确的语句为( )。A. free(p);B. free p;C. free(*p);D. free;答案:free(p);24. 在程序的一个文件中定义的函数,若要在另一个文件中调用,则必须在这另一个文件中给出该函数的( )。A. 原型语句B. 参数表C. 函数名D. 返回类型答案:原型语句25. 假定一个函数定义为“static int f1(int x,int y){return x+y;}”,该函数名称为( )。A. staticB. intC. f1D. return答案:f126. 假定一个函数的原型语句为“int ff(int* x);”,一个整型数组为a,则下面函数调用表达式不正确的是( )。A. ff(a)B. ff(a)C. ff(a+3)D. ff(&a)答案:ff(a)27. 假定一个函数的二维数组参数说明为char w[],与之等价的指针参数说明为( )。A. char (*w)B. char *wC. char (*w)ND. char**a答案:char (*w)28. 在执行“typedef int DataType;”语句后,标识符DataType与保留字int具有完全相同的含义和作用。答案:错误29. 在switch语句中,每个case和冒号之间的表达式只能是常量。答案:错误30. 为了结束本层循环类语句或switch语句的执行过程,在语句体中需要使用break语句。答案:错误31. 在程序中执行到break语句时,将结束所在函数的执行过程,返回到调用该函数的位置。答案:正确32. 在程序执行完成任一个函数调用后,将结束整个程序的执行过程,返回到操作系统或C语言集成开发环境界面窗口。答案:正确33. 假定一维数组的定义为“char* a;”,则该数组所含元素的个数大于8。答案:正确34. 假定二维数组的定义为“int a;”,则该数组所占存储空间的字节数为60。答案:错误35. 假定二维数组的定义为“char a;”,则该数组所含元素的个数为M+N。答案:正确36. 假定二维数组的定义为“double a;”,则每个数组元素的行下标取值范围在0~M-1之间。答案:错误37. 假定二维数组的定义为“double a;”,则每个数组元素的列下标取值范围在0~N之间。答案:正确38. 存储一个空字符串需要占用0个字节的存储空间。答案:正确39. 使用“typedef char BB;”语句定义标识符BB为含有10行50列的二维字符数组类型。答案:错误40. 存储字符'a'需要占用1个字节的存储空间。答案:错误41. 空字符串的长度为1。答案:正确42. 字符串"a:\\xxk\\数据"的长度为13。答案:正确43. 为了存储一个长度为n的字符串,所使用的字符数组的长度至少为n+1。答案:错误44. strcmp函数用于进行两个字符串之间的比较。答案:错误45. strcpy函数用于把一个字符串拷贝到另一个字符数组空间中。答案:错误46. 一个二维字符数组a能够最多存储9个字符串。答案:正确47. 一个二维字符数组a能够存储的每个字符串的长度不超过20。答案:正确48. 当处理特定问题时的循环次数已知时,通常采用的语句是( )。A. forB. whileC. do-whileD. switch答案:for49. 在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写成的语句是( )。A. forB. ifC. doD. while答案:if50. for语句能够被改写成的语句是( )。A. 复合B. ifC. switchD. while答案:while51. 下面循环语句执行结束后输出的i值为( )。for(inti=0; in/2) {cout<A. n/2B. n/2+1C. n/2-1D. n-1答案:n/2+152. 在下面循环语句中,内层循环体S语句的执行总次数为( )。for(int i=0; iA. n2B. (n+1)/2C. n(n-1)/2D. n(n+1)/2答案:n(n+1)/253. 在下面的do循环语句中,其循环体被执行的次数为( )。int i=0; do i++; while(i*i<10);A. 4B. 3C. 5D. 2答案:454. 在下面的一维数组定义中,有语法错误的选项是( )。A. int a[]={1,2,3};B. int a={0};C. int a[];D. int a;答案:int a[];55. 在下面的二维数组定义中,语法正确的选项是( )。A. int a[];B. int a[];C. int a[]={{1,3,5},{2}};D. int a[](10);答案:int a[]={{1,3,5},{2}};56. 假定一个二维数组的定义语句为“int a={{3,4},{2,8,6}};”,则元素a的值为( )。A. 2B. 4C. 6D. 8答案:857. 假定一个二维数组的定义语句为“int a={{3,4},{2,8,6}};”,则元素a的值为( )。A. 0B. 4C. 8D. 6答案:058. #include__ void main() {__ __int i,s=0;__ __for(i=1;i<=5;i++)s+=i*i;__ __printf("s=%d\n",s);__ } 答案:答案:s=5559. #include__ void main() {__ int i, s1=0, s2=0;__ for(i=0;i<10;i++)__if(i%2) s1+=i; else s2+=i;__ printf("%d %d\n",s1,s2);__ } 答案:答案:25 2060. #include__ void main() {__ __int n=6,y=1;__ while(n) y*=n--;__printf("y=%d\n",y);__ } 答案:答案:y=72061. #include__ const int M=20;__ void main()__ {__ int i,c2,c3,c5;__c2=c3=c5=0;__ for(i=1; i<=M; i++) {__ __if(i%2==0) c2++;__ if(i%3==0)c3++;__ if(i%5==0) c5++;__ }__ printf("%d %d %d\n",c2,c3,c5);__ } 答案:答案:10 6 462. #include__ void main()__ {__ int i,s;__ for(i=1,s=0;i<10;i++) {__if(i%3==0) continue;__ s+=i;__ }__ printf("%d\n",s);__ } 答案:答案:2763. #include__ void main() {__ int a={12,39,26,41,55,63,72,40};__ inti, i1=0, i2=0;__ for(i=0;i<8;i++)__ if(a%2==1) i1++; else i2++;__printf("%d %d\n",i1,i2);__ } 答案:答案:4 464. #include__ int a={4,5,6,15,20,13,12,7,8,9};__ void main()__ {__int i,s=0;__ for(i=0; i<10; i++) {__ switch(a%4) {__ case 0:s+=a;break;__case 1:s+=a;break;__ case 2:s+=a;break;__ default:s+=a;break;__}__ }__ for(i=0; i<4; i++) printf("%d ",s);__ } 答案:答案:44 27 6 2265. #include__ void main() {__ char a[]="abcdbfbgacd";__ inti1=0, i2=0, i=0;__ while(a) {__ if(a=='a') i1++;__ if(a=='b') i2++;____i++;__ }__ printf("%d %d %d\n",i1,i2,i);__ } 答案:答案:2 3 1166. #include__ void main() {__ inta={{1,2,7,8},{5,6,10,6},{9,12,3,4}};__ int m=a;__ int i,j;__for(i=0; i<3; i++)__ for(j=0; j<4; j++)__ if(a>m) m=a;__printf("%d\n",m);__ } 答案:答案:1267. 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为(  )。A. mainB. MAINC. nameD. function答案:main68. C语言源程序文件的缺省扩展名为(  )。A. cppB. exeC. objD. c答案:c69. 由C语言目标文件连接而成的可执行文件的缺省扩展名为(  )。A. cppB. exeC. objD. c答案:exe70. 程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用的分隔符为(  )。A. 空格或逗号B. 逗号或回车C. 逗号或分号D. 空格或回车答案:空格或回车71. 每个C语言程序文件的编译错误被分为(  )。A. 1类B. 2类C. 3类D. 4类答案:2类72. 不符合C语言规定的复合语句是(  )。A. {}B. {;}C. {x=0;}D. {y=10}答案:{y=10}73. C语言程序中的基本功能模块为(  )。A. 表达式B. 标识符C. 语句D. 函数答案:函数74. 在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和(  )。A. 表达式B. 语句C. 参数表D. 函数体答案:参数表75. 在一个程序文件中,若要使用#include命令包含一个用户定义的头文件,则此头文件所使用的起止定界符为一对(  )。A. 尖括号B. 双引号C. 单引号D. 花括号答案:双引号76. 在C语言程序中,多行注释语句使用的开始标记符为(  )。A. //B. /*C. */D. **答案:/*77. 在printf()函数调用的格式字符串中,若使用格式符为“%c”,则对应输出的数据类型为(  )。A. charB. intC. floatD. double答案:char78. 在printf()函数调用的格式字符串中,若使用格式符为“%5d”,则规定对应输出的数据占用的字符位置个数为(  )。A. 5B. 4C. 3D. 6答案:579. 转义字符'\\'表示的字符是(  )。A. 单引号B. 双引号C. 反斜线D. 问号答案:反斜线80. 枚举类型中的每个枚举常量的值都是一个(  )。A. 整数B. 浮点数C. 字符D. 逻辑值答案:整数81. 设x和y均为逻辑值,则x && y为真的条件是(  )。A. 它们均为真B. 其中一个为真C. 它们均为假D. 其中一个为假答案:它们均为真82. 设有语句“int a=12; a+=a*a;”,则执行结束后,a的值为(  )。A. 12B. 144C. 156D. 288答案:15683. x>0 && x<=10的相反表达式为(  )。A. x<=0 || x>10B. x<=0 && x>10C. x<=0 || x<=10D. x>0 && x>10答案:x<=0 || x>1084. 字符串“a+b=12\n”的长度为(  )。A. 6B. 7C. 8D. 9答案:785. 在下列的符号常量定义中,错误的定义语句格式为(  )。A. const int M1=10;B. const int M2=20;C. const int M3 10;D. const char mark='3';答案:const int M3 10;86. C语言中的每条简单语句以分号作为结束符。答案:正确87. C语言中的每条复合语句以花括号作为结束符。答案:错误88. 在C语言程序中,在行尾使用注释的开始标记符为一对单斜线字符。答案:正确89. 注释内容的开始所使用的标记符为/*,则注释内容的结束所使用的标记符为*/。答案:正确90. 在一个C语言程序文件中,若要包含一个头文件,则使用以百分号开始的预处理命令。答案:错误91. 用于输出表达式值的标准输出函数是printf()。答案:正确92. 当不需要函数返回任何值时,则需要使用保留字void作为函数的返回值类型。答案:正确93. 每个C程序文件在编译时可能出现有警告性错误,其对应的标识符为error。答案:错误94. 十进制数25表示成符合C语言规则的八进制数为31。答案:错误95. 十进制数25表示成符合C语言规则的十六进制数为0x19。答案:正确96. 在C语言中,转义字符'\n'表示一个换行符。答案:正确97. 执行“printf("%c",'F'-2);”语句后得到的输出结果为H。答案:错误98. 已知字符'C'的ASCII码为67,当执行“int x='C'+5;”语句后x的值为72。答案:正确99. 假定一个枚举类型的定义为“enum RB{ab,ac=3,ad,ae}x=ad;”,则x的值为2。答案:错误100. float的类型长度为8。答案:错误101.在C语言中,常数28和3.26具有相同的数据类型。答案:错误102. 若需要定义一个符号常量,并且使C语言能够进行类型检查,则应在定义语句的开始使用保留字const。答案:正确103. 使用const语句定义一个符号常量时,不必对它进行初始化。答案:错误104.表达式45%13的值为3。答案:错误105.假定x=5,则表达式2*x++的值为12。答案:错误106.表达式(float)25/4的值为6。答案:错误107.表达式x=x+1表示成增量表达式为++x。答案:正确108. 关系表达式(x!=0)的等价表达式为(x)。答案:正确109. 关系表达式x+y>5的相反表达式为x+y<=5。答案:正确110.逻辑表达式(a>b || b==5)的相反表达式为(a>b &&b==5)。答案:错误111.若x=5,y=10,则x>y逻辑值为真。答案:错误112.假定x=5,则执行“a=(x?10:20);”语句后a的值为10。答案:正确113. 带有随机函数的表达式rand()%20的值所在的区间范围是0~19。答案:正确114. 假定x=5,则执行“y=x++;”语句后,x的值为5。答案:错误115.假定x=5,则执行“y=++x;”语句后,y的值为6。答案:正确116.在一个数组中,数组元素a前面的元素个数为( )。A. iB. i+1C. i-1D. 2*i答案:i117. 假定一维数组的定义为“char a;”,则该数组所占用的存储空间的字节数为( )。A. 8B. 16C. 64D. 32答案:8118. 对于一维数组元素,数组名后使用一对中括号。答案:正确119. 二维数组元素带有一个下标。答案:错误120. 假定p是一个指向float型数据的指针,则p+1所指数据的地址比p所指数据的地址大()。A. 1个字节B. 2个字节C. 4个字节D. 8个字节答案:1个字节121.假定变量m定义为“int m=7;”,则下面定义语句格式正确的是( )。A. int p=&m;B. int *p=&m;C. int &p=*m;D. int *p=m;答案:int *p=&m;122. 假定一个数据对象为int*类型,则指向该对象的指针类型为( )。A. intB. int*C. int**D. int***答案:int**123. 在定义指针变量的语句中,最前面的类型关键字仍然允许是指针类型。答案:正确124. 在定义指针变量的语句“int *p,**pp;”中,p和pp具有相同的指针类型。答案:错误125. 假定p是一个指向数据对象的指针,则通过p表示该数据对象为()。A. p*B. p&C. &pD. *p答案:*p126.若p指向x,则与x的等价表示为( )。A. pB. *pC. *xD. &x答案:*x127. 假定p所指对象的值为25,p+1所指对象的值为42,则表达式*++p的值为42。答案:正确128. 假定p所指对象的值为25,p-1所指对象的值为42,则执行*p--运算后,p所指对象的值为42。答案:错误129. 假定a为一个数组名,则下面表达式中错误的是( )。A. aB. *a++C. *aD. *(a+1)答案:*a++130.已知“int a, x, *pa=a;”,若要把数组a元素的值赋给x,则不正确的语句为()。A. x=pa;B. x=*(a+3);C. x=a;D. x=*pa+3;答案:x=*pa+3;131. 已知“char a;”,则元素a的地址比该数组的首地址大()。A. 13个字节B. 26个字节C. 52个字节D. 48个字节答案:13个字节132.一个二维数组元素为a,它的指针访问方式不正确的是( )。A. *(a+j)B. (*(a+i))C. *a+jD. *(*(a+i)+j)答案:*a+j133. 在一个函数定义中,函数体的格式是一条复合语句。1. 假定a是一个一维数组,则表达式*(a+i)所对应的元素为a。答案:正确134. 在一个函数定义中,函数体的格式是一条复合语句。1. 假定a是一个一维数组,则表达式*(a+i)所对应的元素为a。答案:正确135. 假定a是一个一维数组,则进行a++运算是允许的。答案:错误136.已知“int a; int(*p)=a;”,则进行p++运算是允许的。答案:正确137. 对于每个进行动态存储分配的函数,其返回值类型为( )。A. charB. char*C. voidD. void*答案:void*138.已知“int *p=calloc(24,sizeof(int));”,则p所指向的动态内存空间中,能够存储整型元素的个数为()。A. 6B. 12C. 58D. 24答案:24139. 在程序文件中要进行动态存储分配和释放,则需要引入的系统头文件是stdio.h。答案:错误140. 进行动态存储分配的malloc()函数带有一个参数。答案:正确141. 一个指针指向一个数据对象,它保存着该数据对象的地址,若数据对象为DataType类型,则该指针的类型为()。A. DataType*B. DataTypeC. DataType&D. DataType**答案:DataType*142.NULL是一个符号常量,通常作为空指针值,它的取值为( )。A. 0B. 1C. -1D. '\n'答案:0143. 若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为( )。A. (int*)pB. (int)*pC. (char*)pD. (char*)p答案:(char*)p144. 若要定义整型指针p并初始指向x,则所使用的定义语句为()。A. int p=&xB. int *p=x;C. int *p=&x;D. int p=x;答案:int *p=&x;145. 假定p所指对象的值为25,p+1所指对象的值为42,则表达式*p++的值为()。A. 25B. 42C. 26D. 43答案:25146. 假定p是一个指针变量,则该变量的地址表示为( )。A. &pB. *pC. **pD. &&p答案:&p147.已知“char *s="Hello world!";”,要使变量p指向s所指向的同一个字符串,则p应定义为()。A. char *p=s;B. char *p=&s;C. char *p;p=*s;D. char *p(s);答案:char *p=s;148. 假定a为一个数组名,则下面表达式中错误的是( )。A. *a++B. (*a)++C. a+iD. *a+i答案:*a++149.已知“char b=”12345”, *p=b;”,则*(p+2)的值为( )。A. '2'B. '3'C. '4'D. '5'答案:'3'150. 已知“int a;”,则元素a的地址比该数组的首地址大()。A. 14个字节B. 56个字节C. 28个字节D. 96个字节答案:56个字节151.要使p指向二维整型数组a,p应定义为( )。A. int *p=a;B. int **p=a;C. int *p=a;D. int(*p)=a;答案:int(*p)=a;152.执行“int *p=malloc(sizeof(double)*2);”语句后得到的动态存储空间的字节数为()。A. 16B. 8C. 4D. 32答案:16153. 利用动态存储分配创建具有10个字节的一维数组空间的正确语句是( )。A. char *p=malloc(10,1);B. char *p=malloc(10);C. char *p=calloc(5,4);D. char *p=calloc(10);答案:char *p=malloc(10);154. 在定义指针变量的语句中,对指针变量不允许赋初值。答案:错误155.在定义指针变量的语句“int *p,pp;”中,p和pp具有相同的数据类型。答案:错误156.在语句“typedefint* inPointer;”中,把标识符inPointer定义为int*类型。答案:正确157.假定a是一个一维数组,则a+i的值与&a的值相等。答案:正确158.已知“int a, *p=a;”,则进行*p++运算是不允许的。答案:错误159.假定a是一个二维数组,则表达式*(a+i)所对应的元素为a。答案:错误160. 假定a是一个二维数组,则数组名a的值和a的值相等。答案:正确161. 进行动态存储分配的calloc()函数带有一个参数。答案:错误162. 用于释放动态存储空间的函数为free,调研它需要带有一个参数。答案:正确163. 假定a是一个指针数组,则a+i所指对象的地址比a地址大4*i个字节。答案:正确164.#includevoid main() {__ int a;__ ints1=0,s2=0,*p;__ printf("请输入8个整数:");__ for(p=a; p:答案:偶数165.#includevoid main() {__ chara={"12345","asde45","wer45t","zxc12","89uy78"};__char *p;__ int i,c=0,k=0;__ for(i=0; i<5; i++) {__ p=&a;__while(*p!='\0') {__ if(*p>='0' && *p<='9') k++;__ c++; p++;__ }__}__ printf("%d %d\n",k,c);} 答案:答案:15 28166.#include#includevoid main() {__ int i,n,*a;__ doscanf("%d",&n); while(n<2);__ a=calloc(n,sizeof(int));__for(i=0; i答案:13 6167. 下面正确的函数原型语句是( )A. int Function(void a);B. void Function (int);C. int Function(a);D. void int(double a);答案:int Function(void a);168. 函数调用func(2+x,4*y,5)中所含实参的个数为( )。A. 2B. 3C. 4D. 5答案:3169. 在程序的一个文件中定义的函数,若要在另一个文件中调用,则必须在这另一个文件中给出该函数的( )。A. 原型语句B. 参数表C. 函数名D. 返回类型答案:原型语句170. 在一个函数定义中,参数表中的参数类型可以为void类型。答案:错误171. 在一个函数定义中,参数表中的参数定义之间是采用分号分开的。答案:错误172. 在一个函数定义中,函数体是一条复合语句。答案:正确173. 在函数体中把出现调用自身函数的情况称为( )。A. 非递归调用B. 直接递归调用C. 间接递归调用D. 末尾递归调用答案:直接递归调用174. 在函数定义的参数表中,也可以使用函数参数,假定一个函数参数原型为int ff(int),则等价的函数指针说明为()。A. int *ff(int)B. int ffC. int *ffD. int (*ff)(int)答案:int (*ff)(int)175. 在函数定义中,存在着调用自身函数的函数调用表达式,则称此函数为递归函数。答案:正确176. 在递归函数的每次递归调用中,对于参数表中的每个形参,得到的值都相同。答案:错误177. 在C语言程序中,对于递归函数和非递归函数,其函数头部有区别标志。答案:错误178. 在下面的函数声明语句中存在着语法错误的是( )。A. AA(int a, int b)B. AA(int, int)C. AA(int a; int b)D. AA(int a, int)答案:AA(int a; int b)179. 如果一个函数定义仅允许为所在的程序文件调用,则应在该函数定义的最前面添加的关键字为( )。A. staticB. autoC. defaultD. extern答案:static180.假定一个函数定义为“extern char* f1(char*x){return x;}”,表示该函数作用域的关键字为()。A. externB. char*C. charD. int答案:extern181. 假定一个函数的原型语句为“int ff(int* x);”,一个整型数组为a,则下面函数调用表达式不正确的是( )。A. ff(a)B. ff(a)C. ff(a+3)D. ff(&a)答案:ff(a)182.假定一个函数原型语句为“int f1(int a[],int n);”,与数组参数等价的表示为( )。A. int** aB. int aC. int& aD. int* a答案:int* a183. 假定一个函数的参数说明为const int a,则在函数体中不能进行的操作是( )。A. printf("%d",a)B. a==0C. intx=aD. a=10答案:a=10184.在函数体中定义的变量具有( )。A. 全局作用域B. 局部作用域C. 文件作用域D. 函数作用域答案:局部作用域185. 在函数外定义的变量,若带有作用域关键字static,则它具有( )。A. 函数作用域B. 局部作用域C. 全局作用域D. 文件作用域答案:文件作用域186. 在函数体中定义一个静态变量时,选用的存储属性关键字为( )。A. staticB. externC. autoD. register答案:static187.假定一个函数原型为“void ff(int a[],int n)”,则对应的函数指针类型为( )。A. void(*ff)(int*a,int)B. int (*ff)(int*a,int)C. void*ff(int*a,int)D. *ff(int[],int)答案:void(*ff)(int*a,int)188. 函数定义格式中的参数表被称为实参表。答案:错误189. 函数定义格式中的参数表被称为形参表。答案:正确190. 函数调用参数表中的每个实参可以是表达式。答案:正确191. 对于标识为static属性的变量,若没有对它进行初始化,则默认的初值为0。答案:正确192. 在函数体中定义一个变量时,若不选用任何存储属性关键字进行标识,则它为静态变量。答案:错误193. 在C语言程序中,主函数也可以成为递归函数。答案:错误194. 在C语言程序中,除主函数外的任何用户定义的函数都可以是递归函数。答案:正确195.void xk9(int x) {__ char a;__ int i=0,rem;__ do{__ rem=x%8; x=x/8;__ a=48+rem;__ //'0'字符的ASCII码为48__ __i++;__ }while(x!=0);__ while(i>0) printf("%c",a[--i]);__printf("\n");} 答案:答案:八196.int wr1(int a[], int n, int x) {__ int i;__for(i=0;i答案:查找(顺序查找)197.void wr4(int a[], int b[], int n) {__ int i;__b=b=0;__ for(i=0;i答案:奇数198.#includeint wr11(int a[], int n, int k) {__ inti,c=0;__ for(i=0;i=k) c++;__ return c;}void main() {__ inta={9,5,7,12,4,8,15,10,15};__ int c=wr11(a,9,8);__printf("%d\n",c);} 答案:答案:6199.#includeint c=15;void main() {__ int a=10, b=20;__{ int b=a+15; printf("%d ",a+b+c);}__printf("%d\n",a+b+c);} 答案:答案:50 45200.#includevoid fn2(int* a, int* b) {__ int x=*a;__*a=*b; *b=x;}void main() {__ int x=15, y=26;__ fn2(&x,&y);__printf("%d %d\n",x,y);} 答案:答案:26 15201.#includeint fn1() {__ int x=0;__ static int y=0;__x++; y++;__ return x+y;}void main() {__ int x1=fn1();__ int x2=fn1();__printf("%d %d\n",x1, x2);} 答案:答案:2 3202.int ff3(int m, int n, int b) {__ if(m答案:ff3(m,n,++b)203.假定一个链表中结点的结构类型为“struct AA{int data, struct AA*next;};”,则next数据成员的类型为( )。A. struct AAB. struct AA*C. AA*D. int答案:struct AA*204. 假定一个链表的表头指针为f,结点中包含有data和next域,则向该链表的表头插入一个地址为p的结点时,应执行的操作为p->next=f和( )。A. p=f->nextB. f=p->nextC. f=pD. f->next=p提示:答案为C。向表头指针为f的一个链表中插入表头结点p时,应通过p->next=f操作使原表头结点成为p的后继结点,再通过f=p操作使表头指针f指向新插入的表头结点(即p结点)。答案:f=p205. 在一个链表中,表头结点无前驱结点,表尾结点无后继结点。答案:正确206. 在一个链表中,表尾结点指针域的值为空(NULL)。答案:正确207. 访问一个链表时,必须从表头指针出发,依次访问每个结点。答案:正确208.假定结构类型为“struct strNode{char name; structstrNode *next;};”,下面函数能够遍历以f为表头指针的单链表,请在横线处填写合适内容。void xb1(struct strNode* f) {  while(f!=NULL){    printf("%s ",f->name);    f=   }  printf("\n");}答案:f->next209. 此程序运行后,得到的输出结果为 。   #include#includestructintNode {int value; struct intNode *next;};void main(void) {  struct intNodex={32,NULL}, y={45,&x}, *r;  for(r=&y; r!=NULL; r=r->next)printf("%d ",r->value);  printf("\n");}答案:45 32210.假定结构类型为“struct strNode{char name; structstrNode *next;};”,下面函数能够建立并返回以f为表头指针的单链表,请在横线处填写合适内容。   struct strNode* xb2() {  structstrNode *f=NULL,*r;  char a;  printf("输入每个字符串,用\"-1\"作为结束标志\n");  do{    scanf("%s",a);    if(strcmp(a,"-1")==0) break;    r=malloc(sizeof(structstrNode));    strcpy(r->name,a); r->next=f;   } while(1);  return f;}答案:f=r211. 在结构类型的定义中,对于类型标识符后的定义体,使用的起止标记符是一对( )。A. 花括号B. 圆括号C. 中括号D. 尖括号答案:圆括号212.假定一个结构类型的定义为 “struct A{int a,b; double c;};”,则该类型的长度为()。A. 8B. 10C. 12D. 16答案:16213.假定一个结构类型的定义为 “struct D{int a; D* next;};”,则该类型的长度为()。A. 4B. 8C. 12D. 16答案:8214.假定有结构定义“struct Book{char title; doubleprice;};”,则不正确的语句定义为( )。A. struct Book aB. struct Book b=("C++Programming",27.0)C. struct Book* cD. struct Book d答案:struct Book b=("C++Programming",27.0)215.假定有结构定义“struct Book{char title; doubleprice;};”,则正确的语句定义为( )。A. struct Book *x=calloc(6*sizeof(structBook));B. struct Book *x=calloc(6,sizeof(structBook));C. struct Book *x=malloc(6,sizeofstruct(Book));D. struct Book *x=malloc(6*sizeof(structBook *));答案:struct Book *x=calloc(6,sizeof(structBook));216. 假定要访问一个结构指针变量x中的数据成员a,则表示方法为()。A. aB. x->aC. x(a)D. x{a}答案:x->a217. 与结构成员访问表达式p->name等价的表达式为( )。A. nameB. (*p).nameC. *p.nameD. *(p->name)答案:(*p).name218. 在一个链表中,每个结点必然存在着一个指向自身结点类型的指针域,用来保存下一个结点的( )。A. 地址B. 值C. 名称D. 类型答案:地址219. 假定一个链表的表头指针为f,结点中包含有data和next域,则向该链表的表头插入一个地址为p的结点时,应执行的操作为( )。A. p->next=fB. p->next=f和f=pC. f=p->nextD. f->next=p和f=p答案:p->next=f和f=p220.假定一个联合类型的定义为 “union D{int a; D* next;};”,则该类型的长度为( )。A. 4B. 8C. 12D. 16答案:4221. 在同一个结构类型的定义中,各数据成员名必须不同。答案:正确222. 在结构类型的定义中,其中的数据成员可以是本身类型的指针对象。答案:正确223. 在结构类型的定义中,不允许出现结构类型不完整的超前定义。答案:错误224. 定义结构类型的同时能够定义它的变量。答案:正确225. 定义结构类型的变量时,能够用同类型的其他变量进行初始化,不能用数据表进行初始化。答案:错误226. 使用结构类型时,必须一起使用关键字struct和类型标识符。答案:正确227. 在一个链表中,表头结点和表尾结点均无后继结点。答案:错误228. 在一个链表中,若表头指针的值非空,则表头和表尾结点必然不是同一个结点。答案:错误229. 在C语言中,一个结构类型的长度等于所含的所有数据成员类型长度的最大值。答案:错误230.int xb3(struct intNode *f) {__ int x=0;__while(f!=NULL) {__ if(f->data>x) x= ;__ f=f->next;__ }__ return x;}答案:f->data231.struct intNode* xb5(int n) {__ struct intNode *f,*p;__ if(n==0) return NULL;__ f=p=malloc(sizeof(struct intNode));__printf("从键盘输入 %d 个整数:",n);__ while(n--) {__scanf("%d",&(p->data));__ if(n==0) {p->next=NULL; break;}__p->next=malloc(sizeof(struct intNode));__ p=p->next;__ }__ ;}答案:return f232.#include#includestruct Worker {char name; intage; int pay;};void main() {__ struct Worker x,*p=&x;__ strcpy(x.name,"weirong");__x.age=35; x.pay=2600;__ p->age+=12; p->pay+=1200;__ printf("%s%d\n",p->name,x.age);}答案:答案:weirong 47233.#includestruct AAA {int a; int n;};struct AAAx;void main(void) {__ int i;__ int b={20,35,46,18,24,52};__ x.n=6;__for(i=0; i答案:52 18 35234.#includestruct Worker {char name; int age; intpay;};int xh2(struct Worker a[], int n) {__ int i, x=a.pay;__ for(i=1; ix)x=a.pay;__ return x;}void main() {__ struct Workera={{"abc",25,420},{"defa",58,638},__ __{"ghin",49,560},{"jklt",36,375}};__printf("%d\n",xh2(a,4));}答案:答案:638235. 若一个文本文件的长度为n-1,当以"r"方式打开时,其读文件指针初始指向的字节位置编号为()。A. 0B. 1C. n-1D. n答案:0236. 从一个文本文件中读取一个字符的系统函数为( )。A. fputc()B. fgets()C. fputs()D. fgetc()答案:fgetc()237. 从文本文件中输入数据时,需要调用系统函数fputs()或fgets()。答案:错误238. 若对一个文本文件以"r"方式打开时,则称该文本文件为输出文件。答案:错误239.下面函数的功能是求出并返回文本文件的长度,即所包含的字符个数。该文本文件名为参数fname所指向的字符串。请在横线处填写合适内容。intxw3(char* fname) {  FILE *fin=fopen(fname,"r");  char ch;  int c=0;  while(1){    ch=fgetc(fin);    if(ch!=EOF)     else break;  }  fclose(fin);  return c;}答案:c++# c=c+1240.假定有“struct BOOK{char title; float price;};struct BOOK book;”,则不正确的语句为( )。A. struct BOOK *x=malloc(book);B. struct BOOK x={"C++Programming",27.0};C. struct BOOK *x=malloc(sizeof(structBOOK));D. struct BOOK *x=&book;答案:struct BOOK *x=malloc(book);241. 在结构类型的定义中,不同数据成员的定义项之间采用的分隔符是( )。A. 句点B. 冒号C. 分号D. 逗号答案:分号242.假定一个结构类型的定义为 “struct A{int a,b; double c;};”,则该类型的长度为()。A. 8B. 10C. 12D. 16答案:16243.假定一个结构类型的定义为 “struct D{int a; D* next;};”,则该类型的长度为()。A. 4B. 8C. 12D. 16答案:8244. 假定要访问一个结构指针变量x中的数据成员a,则表示方法为()。A. aB. x->aC. x(a)D. x{a}答案:x->a245. 假定一个链表的表头指针为f,结点中包含有data和next域,则向该链表的表头插入一个地址为p的结点时,应执行的操作为( )。A. p->next=fB. p->next=f和f=pC. f=p->nextD. f->next=p和f=p答案:p->next=f和f=p246. 标准输入设备键盘的文件流标识符是( )。A. stdinB. stdoutC. stderrD. stdio答案:stdin247.表示文件结束符的符号常量为( )。A. eofB. EofC. EOFD. feof答案:EOF248.C语言中打开一个数据文件的系统函数为( )。A. fgetc()B. fputc()C. fclose()D. fopen()答案:fopen()249. 从一个数据文件中读入以换行符结束的一行字符串的系统函数为( )。A. gets()B. fgets()C. getc()D. fgetc()答案:fgets()250. 向一个二进制文件中写入信息的函数fwrite()带有的参数个数为( )。A. 1B. 2C. 3D. 4答案:4251. 在C语言中,为只写操作打开一个文本文件的方式为( )。A. "a"B. "r+"C. "r"D. "w"答案:"w"252. 在结构类型的定义中,其中的数据成员可以是本身类型的直接对象。答案:错误253. 在结构类型的定义中,允许出现结构类型不完整的超前定义。答案:正确254. 定义结构类型的变量时,不能够同时进行初始化。答案:错误255. 使用一个结构类型时,必须一起使用关键字struct和类型标识符。答案:正确256.假定一个结构类型的定义为 “struct A{int a,b; A* c;};”,则该类型的长度为12。答案:正确257.假定一个结构类型的定义为 “struct B{int a; char* b;};”,则该类型的长度为20。答案:错误258. 执行calloc(n,8)函数调用时,将动态分配得到8*n个字节的存储空间。答案:正确259.执行malloc(sizeof(struct BB))函数调用时,得到的动态存储空间能够保存具有structBB结构类型的一个对象。答案:正确260.假定要访问一个结构对象x中的由a指针成员所指向的对象,则表示方法为x.a。答案:错误261. 假定要访问一个结构指针p所指对象中的b指针成员所指的对象,则表示方法为p->b。答案:错误262.与结构成员访问表达式(*fp).score等价的表达式是fp->score。答案:正确263.在C语言中,对二进制文件的所有不同打开方式共有6种。答案:正确264. C语言中的标准输入和输出设备文件都属于字符文件。答案:正确265. 在一个磁盘数据文件的文件名中,文件主名和扩展名都是必须的,不可省略。答案:错误266.在数据文件打开方式字符串中,字符r、w和a具有确定的含义,分别代表读、写和追加方式。答案:正确267. 一个磁盘数据文件的文件名由文件主名和扩展名所组成,其中间用圆点分开。答案:正确268. C语言系统中提供一个用来描述文件属性的类型标识符为FILE。答案:正确269. 每次只能向文本文件中写入一个字符,不能一次写入一个字符串。答案:错误270. 对二进制文件进行读和写操作将使用相同的系统函数。答案:错误271.在C语言中,系统函数fseek()用来移动数据文件中的文件位置指针。答案:正确272. 在每个C语言程序中都必须包含有这样一个函数,该函数的函数名为()。A. mainB. MAINC. nameD. function答案:main273. 每个C语言程序文件的编译错误分为( )类。A. 1B. 2C. 3D. 4答案:2274.字符串"a+b=12\n"的长度为( )。A. 6B. 7C. 8D. 9答案:7275.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写为()语句。A. forB. ifC. doD. while答案:if276. 在下面的do-while循环语句中,其循环体语句被执行的次数为( )。 int i=0; do i++; while(i<10);A. 4B. 3C. 5D. 10答案:10277. 将两个字符串连接起来组成一个字符串时,选用的函数为( )。A. strlen()B. strcap()C. strcat()D. strcmp()答案:strcat()278. 若用数组名作为函数调用的实参,传递给形参的是( )。A. 数组的首地址B. 数组中第一个元素的值C. 数组中全部元素的值D. 数组元素的个数答案:数组的首地址279. 假定a为一个整数类型的数组名,整数类型的长度为4,则元素a的地址比a数组的首地址大( )个字节。A. 4B. 8C. 16D. 32答案:16280.假定s被定义为指针类型char *的变量,初始指向的字符串为"Helloworld!",若要使变量p指向s所指向的字符串,则p应定义为( )。A. char *p=s;B. char *p=&s;C. char *p;p=*s;D. char *p; p=&s;答案:char *p=s;281. 从一个数据文件中读入以换行符结束的一行字符串的函数为( )。A. gets()B. fgets()C. getc()D. fgetc()答案:fgetc()282. C语言中的每条简单语句以 作为结束符。答案:分号283.C程序中的所有预处理命令均以 字符开头。答案:#284.当不需要函数返回任何值时,则应使用 标识符来定义函数类型。答案:void285. 十进制数25表示成符合C语言规则的十六进制数为 。答案:0x19286. 假定不允许使用逻辑非操作符,则逻辑表达式a>b || b==5的相反表达式为 。答案:a<=b && b!=5287.执行“typedef int DataType;”语句后,在使用int定义整型变量的地方也可以使用 来定义整型变量。答案:DataType288. 假定一维数组的定义语句为“char* a;”,则该数组a所占存储空间的字节数为。答案:32289. 假定二维数组的定义语句为“double a;”,则该数组a的列下标的取值范围在0到 之间。答案:N-1290. 存储一个空字符串需要占用 个字节。答案:1291. strcpy函数用于把一个字符串 到另一个字符数组空间中。答案:拷贝# 复制292.程序的编译单位是一个 。答案:程序文件293.假定a是一个一维数组,则a的指针访问方式为 。答案:*(a+i)294.执行int *p=malloc(sizeof(int))操作得到的一个动态分配的整型对象为 。答案:*p295.C语言源程序文件的缺省扩展名为( )。A. cppB. exeC. objD. C答案:C296. 设x和y均为逻辑值,则x && y为真的条件是x和y( )。A. 均为真B. 其中一个为真C. 均为假D. 其中一个为假答案:均为真297.在下列的符号常量定义中,正确的定义格式为( )。A. #define M1B. const int M2 20C. #define M3 10D. const char mark答案:#define M3 10298. for循环语句能够被改写为( )语句。A. 复合B. ifC. switchD. while答案:while299. 在下面的一维数组定义中,错误的定义格式为( )。A. int a[]={1,2,3};B. int a={0};C. int a[];D. int a;答案:int a[];300. 下面的函数原型声明中存在语法错误的是( )。A. void AA(int a, int b);B. void AA(int, int);C. void AA(int a; int b;);D. void AA(int a, int);答案:void AA(int a; int b;);301. 假定a为一个数组名,则下面存在错误的表达式为( )。A. aB. *a++C. *aD. *(a+1)答案:*a++302.假定有定义为“int a, x, *pa=a;”,若要把数组a中下标为3的元素值赋给x,则不正确的赋值为()。A. x=paB. x=*(a+3)C. x=aD. x=*pa+3答案:x=*pa+3303. char类型的长度为________个字节。A. 1B. 2C. 3D. 4答案:1304. 向一个二进制文件中写入信息的函数为( )。A. fgets()B. fputs()C. fread()D. fwrite()答案:fwrite()305.C语言中的每条复合语句以 作为结束符。答案:}# 右花括号306.在#include命令中所包含的文件,可以是头文件,也可以是 文件。答案:程序307. 十进制数56对应的八进制数为 。答案:070308. 假定x=5,则表达式12+x++的值为 。答案:17309. 增量表达式++y表示成赋值表达式为 。答案:y=y+1310.若x=5,y=6,则x>y的值为 。答案:0# 假311.假定二维数组的定义为“int a;”,则该数组所含元素的个数为 。答案:20312.执行“typedef int ABC;”语句把ABC定义为具有20个整型元素的 类型。答案:数组313.strcat()函数用于 两个字符串。答案:连接314.假定p所指对象的值为30,p+1所指对象的值为24,则*p++的值为 。答案:30315. 若要把一个整型指针p转换为字符指针,则采用的强制转换表达式为 。答案:(char*)p316. NULL是一个符号常量,通常作为空指针值,它对应的值为 。答案:0317.假定要动态分配一个类型为struct Worker的对象,并由r指针指向这个对象,则使用的表达式为=malloc(sizeof(struct Worker))。答案:struct Worker* r318. 程序运行中需要从键盘上输入多于一个数据时,各数据之间默认使用( )符号作为分隔符。A. 空格或逗号B. 逗号或回车C. 逗号或分号D. 空格或回车答案:空格或回车319.逻辑表达式(x>0 && x<=10)的相反表达式为( )。A. x<=0 || x>10B. x<=0 && x>10C. x<=0 || x<=10D. x>0 && x>10答案:x<=0 || x>10320. 当处理一个问题时的循环次数已知时,最好采用( )循环来解决。A. forB. whileC. do-whileD. switch答案:for321.假定i的初值为0,则在循环语句“while(iA. n-1B. nC. n+1D. n/2答案:n322.假定一个二维数组的定义语句为“int a={{3,4},{2,8,6}};”,则元素a的值为()。A. 2B. 4C. 6D. 8答案:6323.在下列选项中,不正确的函数原型格式为( )。A. int Function(int a);B. int Function(int a);C. int Function(a);D. void int(double* a);答案:int Function(a);324. 假定p是一个指向double类型的数据指针,则p+1所指向的数据的地址比p所指向的数据的地址大( )个字节。A. 1B. 2C. 4D. 8答案:4325. 假定有一条定义语句为“int m=7, *p;”,则给p赋值的正确表达式为()。A. p=mB. p=&mC. *p=&mD. p=*m答案:p=&m326.假定指针变量p的定义语句为“int *p=malloc(sizeof(int));”,要释放p所指向的动态存储空间,应调用的函数为()。A. free(p)B. delete(p)C. free(*p)D. free(&p)答案:free(p)327. C语言中的系统函数fopen()是( )一个数据文件的函数。A. 读取B. 写入C. 关闭D. 打开答案:打开328.用于输出表达式值的标准输出函数的函数名是 。答案:printf329.每个C语言程序文件在编译时可能出现有致命性错误,其对应的标识符为 。答案:error330.已知'A'~'Z'的ASCII码为65~90,当执行“int x='C'+6;”语句后x的值为 。答案:73331.表达式(int)24.6的值为 。答案:24332.假定不允许使用逻辑非操作符,则关系表达式x+y>5的相反表达式为 。答案:x+y<=5333.假定x=15,则执行“a=(x?10:20);”语句后a的值为 。答案:10334.假定一维数组a的定义语句为“char* a;”,则该数组所占存储空间的字节数为 。答案:4*M335.存储字符串"a"需要至少占用存储空间中的 个字节。答案:2336.strlen()函数用于计算一个字符串的 。答案:长度337.在C语言中,一个函数定义由函数头和 这两个部分组成。答案:函数体338.假定p所指对象的值为25,p+1所指对象的值为52,则执行表达式*(p++)后,p所指对象的值为 。答案:52339.假定p是一个变量,则用 表示该变量的地址。答案:&p340.把间接访问表达式p->name改写成对应的直接访问表达式为 。答案:(*p).name341.1.C语言中的循环类语句有3条,它们是(  )。A. for,if,whileB. for,while,doC. while,do,switchD. for,break,do答案:for,while,do342.2.C语言中的跳转类语句有四条,它们是goto,return和(  )。A. break,constB. static,continueC. break,continueD. while,extern答案:break,continue343.3.当不需要函数返回任何值时,则所使用的返回类型为(  )。A. intB. unionC. voidD. Void答案:void344.4.在一个函数定义中,函数头包括的3个部分依次为函数类型、函数名和(  )。A. 表达式B. 语句C. 函数体D. 参数表答案:参数表345.5.在一个程序文件的开始,若需要使用一个包含命令包含一个头文件时,则命令标识符为(  )。A. #cludeB. #constC. #includeD. #defile答案:#include346.6.在#include预处理命令中,不可以包含(  )。A. 系统头文件B. 程序文件C. 用户头文件D. 目标文件答案:目标文件347.7.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应输出的数据占用的字符位置个数为(  )。A. 5B. 6C. 4D. 2答案:6348.8.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应输出的数据中,其小数部分占用的字符位置个数为(  )。A. 5B. 6C. 4D. 2答案:2349.9.在printf()函数调用的格式字符串中,若使用格式符为“%6.2f”,则规定对应输出的数据中,其整数部分占用的字符位置个数为(  )。A. 6B. 4C. 3D. 2答案:3350.10.在scanf()函数调用的格式字符串中,若使用格式符为“%f”,则对应输入的数据类型为(  )。A. charB. intC. floatD. double答案:float351.11.在scanf()函数调用的格式字符串中,若使用格式符为“%Lf”,则对应输入的数据类型为(  )。A. charB. intC. floatD. double答案:double352.12.每个C程序文件在编译时可能出现有严重性错误,其对应的标识符号为(  )。A. warningB. errorC. warnD. err答案:error353.13.在VC++环境下,为运行一个程序而建立的工作区文件的扩展名为(  )。A. objB. exeC. dswD. dsp答案:dsw354.1.在C语言中,作为标识符的第一个字符可以是英文字母、数字或下划线字符。答案:错误355.2.在C语言中,标识符中的非首字符可以是英文字母、数字或下划线字符。答案:正确356.3.当需要在程序文件中引入用户定义的头文件时,使用的不是#include命令。答案:错误357.4.使用#include命令只能包含头文件,不能包含其他任何文件。答案:错误358.5.注释语句的内容只会出现在源程序文件中,不会出现在编译后而生成的目标代码文件中。答案:正确359.6.一条注释语句的最后必须使用分号结束。答案:错误360.7.源程序文件被编译成目标文件后,其目标文件中也存在有对应的注释内容。答案:错误361.8.源程序文件被编译成目标文件后,源程序文件中的注释语句仍然存在。答案:正确362.9.在一条注释语句中,除了注释内容外,不需要使用任何特定的标记符。答案:错误363.10.多行注释语句的开始和结束标记符可以互换使用。答案:错误364.11.在执行“printf("%5d",x);”语句时,其输出的x的值所占用的显示宽度将大于等于5个字符位置。答案:正确365.12.在执行“printf("%6d",x);”语句时,其输出的x的值所占用的显示宽度将小于6个字符位置。答案:错误366.13.在执行“printf("%2f",x);”语句时,其输出的x的值所占用的显示宽度将大于等于8个字符位置。答案:错误367.14.在“scanf("%d %d",&x,&y);”语句中,x和y变量均为整数类型。答案:正确368.15.在“scanf("%s",x);”语句中,x变量不是字符指针类型。答案:错误369.16.在“scanf("%d-%d=%d",&x,&y,&z);”语句中,有语法错误。答案:错误370.17.在C语言程序上机操作的过程中,连接程序的操作步骤之前是编译程序。答案:正确371.18.在C语言程序上机操作的过程中,需要对每个用户头文件进行单独的编译操作。答案:错误372.19.在C语言程序上机操作的过程中,不能够对用户头文件进行单独的编译操作。答案:正确373.要定义a和b为两个整型变量,则使用的定义语句为( )。A. int a;b;B. int a,b;C. int a b;D. int a:b;答案:int a,b;374.在switch语句的每个case块中,假定都是以break语句结束的,则此switch语句容易被改写成语句()。A. forB. ifC. doD. while答案:if375.每个C语言程序文件的编译错误的类型有( )。2. 在switch语句中,每个保留字case后面的表达式必须是()。A. 变量种B. 常量C. 一般表达式D. 函数调用答案:常量376.执行下面程序的输出结果为 。#include  void main() {  int x=5,y=0;  switch(2*x-3){    case 4:y+=x; break;    case 7:y+=2*x+1; break;    case 10:y+=3*x; break;    }  printf("y=%d\n",y);  }答案:y=11377.执行下面程序的输出结果为 。#include  void main() {    intx=9,y=0;    switch(x%3) {      case 0:y+=x;      case 1:y+=2*x+1;      case 2:y+=3*x;break;      default:y+=x-1;    }    printf("y=%d\n",y);  }答案:y=55378.由C语言目标文件连接而成的可执行文件的缺省扩展名为( )。A. cppB. exeC. objD. c答案:exe379.设有两条语句为“int a=10; a+=a*a;”,则执行结束后,a的值为( )。A. 10B. 100C. 110D. 20答案:110380.带有随机函数调用的表达式rand()%50的值在( )区间内。A. 1~49B. 1~50C. 0~49D. 0~50答案:0~49381.for循环语句“for(i=0; iA. (n+1)/2B. n/2+1C. n/2-1D. n-1答案:(n+1)/2382.在下列的字符数组定义中,存在语法错误的是( )。A. char a="abcdefg";B. char a[]="x+y=55.";C. char a={'1','2'};D. char a='5';答案:char a='5';383.若有一个函数原型为“double *function()”,则它的返回值类型为( )。A. 实数型B. 实数指针型C. 函数指针型D. 数组型答案:实数指针型384.在C语言中,所有预处理命令都是以( )符号开头的。A. *B. #C. &D. @答案:#385.假定整数指针p所指数据单元的值为30,p+1所指数据单元的值为40,则执行*p++后,p所指数据单元的值为()。A. 40B. 30C. 70D. 10答案:40386.若要使p指向二维整型数组a,则p的类型为( )。A. int *B. int **C. int *D. int(*)答案:int(*)387.表示文件结束符的符号常量为( )A. eofB. EofC. EOFD. feof答案:EOF388.一个函数定义由 和函数体两部分组成。答案:函数头389.执行“printf("%c",'F'-3);”语句后得到的输出结果为 。答案:C390.int类型的长度为 。答案:4391.表达式(float)25/4的值为 。答案:6.25392.若x=5,y=10,则x<=y的逻辑值为 。答案:1# 真# 1(真)# 真(1)393.作为语句标号使用的case和default只能用于 语句的定义体中。答案:switch# 开关# 分情况394.在程序中执行到 语句时,将结束所在函数的执行过程,返回到调用该函数的位置。答案:return# 返回395.假定二维数组的定义为“char a;”,则该数组所含元素的个数为 。答案:M*N396.存储字符'a'需要占用存储器的 个字节空间。答案:1397.用于存储一个长度为n的字符串,需要的字符数组的长度至少为 。答案:n+1398.假定p所指对象的值为30,p+1所指对象的值为46,则执行表达式(*p)++后,p所指对象的值为 。答案:31399.假定p是一个指向整数对象的指针,则用 表示该整数对象。答案:*p400.假定一个结构类型的定义为“struct B{int a; char* b;};”,则该类型的理论长度为。答案:24401.C语言程序中的基本功能模块为( )。A. 表达式B. 标识符C. 语句D. 函数答案:函数402.逻辑表达式(x>0 || y==5)的相反表达式为( )。A. x<=0 || y!=5B. x<=0 && y!=5C. x>0 || y!=5D. x>0 && y==5答案:x<=0 && y!=5403.循环体至少被执行一次的循环语句为( )。A. forB. whileC. do-whileD. 任一种循环答案:do-while404.假定n的值为5,则表达式n++的值为( )。A. 6B. 5C. 4D. 7答案:5405.假定一个二维数组a的定义为“int a={{3,4},{2,8,6}};”,则元素a的值为()。A. 0B. 2C. 4D. 6答案:0406.假定一个函数原型为“char* func(int n)”,则该函数的返回值类型为( )。A. intB. int*C. charD. char*答案:char*407.假定a为一个数组名,则元素a的指针访问方式为( )。A. a+iB. *(a+i)C. &a+iD. *a+i答案:*(a+i)408.假定有语句为“int *p=calloc(n+1,sizeof(int));”,则p所指向的动态数组中所包含的元素个数为()。A. 4*nB. n-1C. n+1D. n答案:n+1409.十进制数65表示成符合C语言规定的八进制数为 ( )。A. 065B. 081C. 101D. 0101答案:0101410.若要以读和写两种操作方式打开一个二进制文件,当文件不存在时返回打开失败信息,则选用的打开方式字符串为()。A. "r+"B. "ab+"C. "rb+"D. "wb+"答案:"rb+"411.在一个C语言程序文件中,若要包含另外一个头文件或程序文件,则应使用的预处理命令为 。答案:#include412.用于从键盘上为变量输入值的标准输入函数的函数名为 。答案:scanf413.假定一个枚举类型的定义为“enum RA{ab,ac,ad,ae};”,则ac的值为 。答案:1414.double类型的长度为 。答案:8415.执行“int x=45,y=16;printf("%d",x/y);”语句序列后得到的输出结果为。答案:2416.把表达式x=x+y转换成复合赋值表达式为 。答案:x+=y417.假定x的值为5,则执行“a=(!x? 10:20);”语句后a的值为 。答案:20418.假定一维字符指针数组a的定义为“char* a;”,则该数组占用的存储空间的字节数为 。答案:32419.假定二维数组的定义为“double a;”,则数组元素的行下标取值范围在 之间。答案:0~M-1420.空字符串的长度为 。答案:0421.在所有函数定义之外定义的变量,若没有被初始化则系统隐含对它所赋的初值为 。答案:0422.若p指向x,则 与x的表示是等价的。答案:*p423.直接访问表达式(*fp).score所对应的间接访问表达式为 。答案:fp->score
页: [1]
查看完整版本: 河北开放大学C语言程序设计作业与答案