1、选择题1. 下列字符序列中,不可用作 C 语言标识符的是( ) 。Aabc123 Bno.1 C_123_ D_ok 2. 请选出可用作 C 语言用户标识符的一组标识符( ) 。 Avoid Ba3_b3 CFor D2adefine _123 -abc DOWORD IF Case sizeof3. 不属于 C 语言关键字的是( ) 。 Aint Bbreak Cwhile Dcharacter 4. 以下不能定义为用户标示符的是( ) 。 Ascanf BVoid C_3com_ Dint 5. C 语言程序的基本单位是( ) 。 A程序行 B语句 C函数 D字符6. 以下说法中正确的是(
2、 ) 。 AC 语言程序总是从第一个定义的函数开始执行B在 C 语言程序中,要调用的函数必须在 main( )函数中定义CC 语言程序总是从 main( )函数开始执行DC 语言程序中的 main( )函数必须放在程序的开始部分7. 以下选项中,合法的用户标识符是( ) 。Along B_2abc C3dmax DA.dat8. 已知大写字母 A 的 ASCII 码值是 65, 小写字母 a 的 ASCII 码是 97,则用八进制表示的字符常量 101是( ) 。A字符 A B字符 a C字符 c D非法的常量9. 以下选项中,正确的字符常量是( ) 。A ”F” B C W D 10. 下列
3、变量定义中合法的是 Ashort _a=1-.le-1; Bdouble b=1+5e2.5; Clong do=0xfdaL; Dfloat 2_and=1-e-3;11. 为了避免嵌套的 if-else 语句的二义性,C 语言规定 else 总是与()组成配对关系。A缩排位置相同的 ifB在其之前未配对的 ifC在其之前未配对的最近的 ifD同一行上的 if12. 下列运算符中优先级最高的是() 。A=a ) 则表达式(x=z else if (x=0) y=0;else y= -1;By=0;if (x0) y=1;else if (x=0)if(x0) y=1;else y= -1;D
4、if (x=0)if (x0) y=1;else y=0;else y= -1;16. 已知 int a=1,b=2,c=3; 以下语句执行后 a,b,c 的值是() 。if(ab)c=a; a=b; b=c;Aa=1, b=2, c=3 Ba=2, b=3, c=3Ca=2, b=3, c=1 Da=2, b=3, c=217. 以下程序的运行结果是() 。#include ”stdio.h”main() int a=1;if (a+1) printf(”%dn”, a);else printf(”%dn”, a-);A0 B1 C2 D318. 执行以下程序段后,变量 x,y,z 的值分别
5、为() 。int a=1,b=0, x, y, z;x=(-a=b+)?-a:+b;y=a+;z=b;Ax=0,y=0,z=0 Bx= -1,y= -1,z= 1Cx=0,y=1,z=0 Dx= -1,y= 2, z= 119. 以下程序的输出结果是() 。#include ”stdio.h”main()int a=5, b=4, c=6, d;printf(”%dn”, d=ab? ac?a:c :b);A5 B4 C6 D不确定20. 执行下列程序,输入为 3 的数出结果是() 。#include ”stdio.h”main() int k;scanf(”%d”, switch(k) ca
6、se 1: printf(”%dn”, k+);case 2: printf(”%dn”, k+);case 3: printf(”%dn”, k+);case 4: printf(”%dn”, k+);break;default: printf(”Full!n”);A3 B4 C3 D45 421. 有如下程序,写出该执行结果() 。#include ”stdio.h”main() float x=2.0, y;if (x100) break; B. for ( ; ;);C.int k=1000;do +k;while (k=10000);D.int s=36;while (s) ;-s;
7、25. 下面程序的运行结果为( ) 。main() int n;for(n=1;n0|Emain() int i;char c;for(i=0;i代表换行符。uwxstaA.uwxsta B.u C.u D.uw w wx xs xsta28. 在 C 语言中,为了结束 while 语句构成的循环,while 后一对圆括号中表达式的值应该为( ) 。A.0 B.1 C.true D.非 029. 在 C 语言中,为了结束由 do-while 语句构成的循环,while 后一对圆括号中表达式的值应为( ) 。A.0 B.1 C.true D.非 030. 下列程序的输出为( ) 。#includ
8、emain()int i=0,j=0,a=6;if(+i0)|(+j0)a+;printf(“i=%d,j=%d,a=%dn“,i,j,a);A.i=0,j=0,a=6 B.i=1,j=1,a=7 C.i=1,j=0,a=7 D.i=0,j=1,a=731. 下列程序段的输出结果为( ) 。main()int x=3;do printf(“%3d“,x-=2);while(!(-x);A.1 B.3 0 C.1 -2 D.死循环32. 以下程序运行后,输出结果是( )。 main()int n5=0,0,0,i,k=2;for(i=0;imain() int *p, *q, a, b;p=pr
9、intf(“input a:“);scanf(“%d“, *p);A *p 表示的是指针变量 p 的地址B *p 表示的是变量 a 的值,而不是变量 a 的地址C *p 表示的是指针变量 p 的值D *p 只能用来说明 p 是一个指针变量50. 以下不能正确进行字符串赋初值的语句是() 。A. char str5= “good!“; B char *str=“good!“;C. char str=“good!“; D char str5=g, o,o, d;51. 若有说明语句:char s=“it is a example“, *t=“it is a example.“;则以下不正确的叙述(
10、) 。A s 表示的是第一个字符 i 的地址,s+1 表示的是第二个字符 t 的地址B t 指向另外的字符串时,字符串的长度不受限制C t 变量中存放的地址值可以改变D s 中只能存放 16 个字符52. 下列程序的输出结果是() 。#include “stdio.h“main() int a=1,2,3,4,5,6,7,8,9,0, *p;p=a;printf(“%dn“, *p+9);A 0 B 1 C 10 D 953. 以下不是 C 语言的特点的是( ) 。A 语言简洁紧凑 B 能够编制出功能复杂的程序 C C 语言可以直接对硬件操作 D C 语言移植性好54. 正确的 C 语言标识符
11、是 ( ) 。A_buy_2 B2_buy C?_buy Dbuy?55. 下列符号中,不属于转义字符的是( ) 。 A B0xAA Ct D056. 是 C 语言提供的合法关键字的是( ) 。 AFloat Bsigned Cinteger DChar57. 一个 C 程序是由( ) 。 A 一个主程序和若干子程序组成E 一个或多个函数组成B 若干过程组成C 若干子程序组成58. 下列说法中,错误的是( ) 。 A每个语句必须独占一行,语句的最后可以是一个分号,也可以是一个回车换行符号B每个函数都有一个函数头和一个函数体,主函数也不例外C主函数只能调用用户函数或系统函数,用户函数可以相互调用
12、D程序是由若干个函数组成的,但是必须有、而且只能有一个主函数59. C 编译程序是( ) 。 AC 程序的机器语言版本 B一组机器语言指令 C将 C 源程序编译成目标程序 D由制造厂家提供的一套应用软件60. 以下选项中,合法的实型常数是( ) 。A5E2.0 BE-3 C2E0 D1.3E61. 以下选项中, 合法转义字符的选项是( ) 。A B 018 C xab D abc62. 以下选项中可作为 C 语言合法整数的是A10110B B0386 C0Xffa Dx2a263. 与数学式子 对应的 C 语言表达式是( ) 。129xnA9*xn/(2*x-1) B9*x*n/(2*x-1)
13、C9*pow(x,n)*(1/(2*x-1) D9*pow(n,x)/(2*x-1)64. 设 a=5,b=6,c=7,d=8,m=2,n=2, 则执行(m=ab) for(i=0;imain()int i=0,j=0,a=6;if(+i0)|(+j0)a+;printf(“i=%d,j=%d,a=%dn“,i,j,a);A.i=0,j=0,a=6 B.i=1,j=1,a=7 C.i=1,j=0,a=7 D.i=0,j=1,a=782. 以下关于数组的描述正确的是( )。 A. 数组的大小是固定的,但可以有不同的类型的数组元素B. 数组的大小是可变的,但所有数组元素的类型必须相同C. 数组的大
14、小是固定的,所有数组元素的类型必须相同D. 数组的大小是可变的,可以有不同的类型的数组元素83. 假定 int 类型变量占用两个字节,其有定义:int x10=0,2,4;,则数组 x 在内存中所占字节数是( )。 A. 3 B. 6 C. 10 D. 2084. 以下程序的输出结果是( ) main()int i, a10;for(i=9;i=0;i-) ai=10-i;printf(“%d%d%d“,a2,a5,a8);A. 258 B. 741 C. 852 D. 36985. 以下程序运行后,输出结果是( )。 main() int y=18,i=0,j,a8;do ai=y%2; i
15、+;y=y/2; while(y=1);for(j=i-1;j=0;j-) printf(“%d“,aj);printf(“n“);A. 10000 B. 10010 C. 00110 D. 1010086. 若二维数组 c 有 m 列,则计算任一元素 cij在数组中的位置的公式为( )。(假设 c00位于数组的第一个位置)A. i*m+j B. j*m+i C. i*m+j-1 D. i*m+j+187. 若有数组定义: char array =“China“; 则数组 array 所占的空间为( )。 A. 4 个字节 B. 5 个字节 C. 6 个字节 D. 7 个字节88. 若有定义和
16、语句: char s10;s=“abcd“;printf(“%sn“,s);则结果是(以下 代表空格)( )。A. 输出 abcd B. 输出 a C. 输出 abcd D. 编译不通过89. 下面程序运行后,输出结果是( ) 。 main()char ch7= “65ab21“;int i,s=0;for(i=0;chi= 0char name10;int age;void fun(struct stu *p)printf(“%sn“,(*p).name);main()struct stu students3=9801,“zhang“,20,9802,“Wang“,19,9803,“zhao
17、“,18;fun(students+2);A.Zhang B.Zhao C.Wang D.18阅读程序1. 以下程序的运行结果是_。#include ”stdio.h”main() int a,b,c,d,e;a=c=1;b=20;d=100;if (!a) d=d+;else if (!b)if (d) d= -d;else d= d-;printf(”%dnn”, d);答案:1002. 此程序运行时,输入 qwert?程序的运行结果是_ 。#includemain()char c;while(c=getchar()!=?)putchar(+c);答案:rxfsu3. 如果输入1 , 2,
18、 3, 4,程序运行输出的是_。#includemain()char c;int i,k;k=0;for(i=0;i=0static int array33=100,200,300,28,72,-30,-850,2,6;m=array00;for (i=0; i0) s=a+b;if (a0)if (c0) w=a-b;else t=c;printf(”%d %d %d”, s,w,t);答案:2 0 012. 以下程序运行的结果_。#include#includemain()int i,k,m,n=0;for(m=1;mk)printf(“%2d“,m);n+;答案:1 3 5 713. 以
19、下程序运行的结果是_。#includemain() int a,b; for(a=1,b=1;a=20)break;if(b%3=1) b+=3;continue;b-=5;printf(“%dn“,a);答案:814. 以下程序运行后,输出结果是_。 main() char cf35=“AAAA“,“BBB“,“CC“;printf(“%s“n“,ch1);答案: “BBB“ 15. 以下程序运行后,输出的结果是_。 #include #includemain() char w 10=“ABCD“,“EFGH“,“IJKL“,“MNOP“,k;for (k=1;kf(in b, int n)
20、 int i, r;r=1; for(i=0; imain() char ss10=“12345“;strcat(ss, “6789“ );gets(ss);printf(“%sn“,ss); 答案: ABC 20. 当运行以下程序时,从键盘输入:apple tample则下面程序的运行结果是_。#include “stdio.h“main() char s80, *t;t=s;gets(t);while (*(+t)!=0)if (*t=a) break;else t+; gets(t); puts(t);答案:ample21. 下面程序段的运行结果是_。#include “stdio.h“
21、main() char s=“example!“, *t;t=s;while( *t!=p) printf(“%c“, *t-32);t+;答案: EXAM 22. 对以下程序:当输入 65 14 时,其运行结果是【1】 。当输入 14 63 时,其运行结果是【2】 。当输入 25 125 时,其运行结果时【3】 。#includemain()int m,n;scanf(“%d%d“,while(m!=n)while(mn)m-=n;while(nm)n-=m;printf(“m=%dn“,m);答案:1.m=1, 2.m=7,3.m=2523. 以下程序运行后,输出结果是_#includev
22、oid main()char arr24;strcpy(arr,“you“); strcpy(arr1,“me“);arr03=printf(“%s n“,arr);答案:youfor(I=1;【1】;I+)for(j=0;j#includemain()int I,k,m;scanf(“%d“,k=sqrt(【1】);for(I=2;I=k+13. 以下程序完成功能是:计算两个 3*4 阶矩阵相加,并打印出结果。请填空。#includemain()int a34=3,-2,1,2,0,1,3,-2,3,1,0,4;int b34=-2,3,0,-1,1,0,-2,3,-2,0,1,-3;int
23、 i,j,c34;for(i=0;i0) 【2】;printf(“nThe first string is:%sn“,temp);答案:【1】 gets(temp) 【2】 strcpy(temp,str)5. 下面 pi 函数的功能是,根据以下公式返回满足精度 e 要求的 p 的值。根据以下算法补足所缺语句。 )12*75317*5312*31(*2 np double pi(double eps) double s=0.0,t=1.0;int n;for(【1】 ;teps;n+) s+=t;t=n*t/(2*n+1);return(2.0* 【2】 ); 答案:【1】 n=1 【2】 s
24、6. 用“起泡法”对输入的 10 个字符排序后按从小到大的次序输出。#define N 10char strN;main()int i,flag;for(flag=1;flag=1;) scanf(“%s“,str);flag=0; printf(“n“);sort( 【1】 ); for(i=0;istri+1)t=stri; 【2】 ; 【3】 ;答案:【1】 str 【2】 stri=stri+1 【3】 stri+1=t7. 下面程序段是把从终端读入的一行字符作为字符串放在字符数组中,然后输出。请填空。#include “stdio.h“#include “string.h“main(
25、) int m;char s80, *t;for (m=0; mday9. 求出 1000 以内的“完全数” 。 (提示:如果一个数恰好等于它的因子之和(因子包括1,不包括数本身) ,则称该数为“完全数” 。如:6 的因子是 1,2,3 而 6=1+2+3,则6 是个“完数” ) 。main()int i,a,m;for(i=1;i#include main( ) int num26,i; char c;for(i=0; imain()char s81;int i , c, num=0,word=0;【1】;for(i=0;(c=si)!=0;i+)if(c=32) 【2】;else if (
26、word=0) word=1; 【3】; printf(“there are %d words.n“,num); 答案:【1】 gets(s) 【2】 word=0 【3】 num+13. 用选择法对数组进行由小到大排序。void sort(n,array)【1】 ; int i,j,k,t;for(i=0;iarrayj) k=j;t=arrayi;arrayi=arrayk;arrayk=t;main()int i,a10;printf(“input the array:n“);for(i=0;i 9) tn=tm; n+;【2】;main() char *s;s=(char *) mal
27、loc (sizeof(char); /*给 s 分配一个地址*/printf(“n input the original string:“);gets(s);delnum(s);puts(【3】);答案:【1】| 【2】tn= 0 【3】s16. 下面程序的功能是统计字串 sub 在母串 s 中出现的次数。#include “stdio.h“#include “string.h“main() char s80, sub80;int n;gets(s);gets(sub);printf(“%dn“, count(s,sub);int count( char *p, char *q) int m
28、, n, k, num=0;for (m=0; pm; m+)for (【1 】, k=0; qk=pn; k+, n+)if(q【2】=0) num+; break;return (num);答案:1. n=m, 2. k+117. 下面程序完成功能是:判定用户输入的正整数是否为“回文数”,所谓“回文数”是指正读反读都相同的数。请填空。#includemain() int buffer10, i,k,flag;long number ,n;printf(“please input one number“);scanf(“%ld“,k=0;n=number;do 【1】 ;k=k+1;n=n/10;while (n!=0);flag=1;for( i=0;i=(k-1)/2;i+)if ( 【2】 )flag=0;if(flag) printf(“%ld is huiwenshun“,number);else printf(“%ld is not huiwenshun“,number);答案:1. bufferk=n%10,2. bufferi!=bufferk-1-i