一、选择题
题号1...选择题A:( 1分,正确答案A,学生答案 * )
阅读以下程序
#include
main()
{int case; float printf;
printf ("请输入 2 个数:");
scanf ("%d %f", &case, &printF);
printf ("%d %f\n", case, printF);}
该程序在编译时产生错误,其出错原因是()。
A:定义语句出错,case 是关键字,不能用作用户自定义标识符B:定义语句出错,printf 不能用作用户自定义标识符
C:定义语句无错,scanf 不能作为输入函数使用
D:定义语句无错,printf 不能输出 case 的值
题号2...选择题A:( 1分,正确答案 B,学生答案 * )
若有定义语句:int x=10;,则表达式 x-=x+x 的值为()。A:-20 B:-10 C:0 D:10
题号3...选择题A:( 1分,正确答案 D,学生答案 * )
有以下程序
#include
main()
{int a=1, b=0;
printf ("%d,", b=a+b);
printf ("%d\n", a=2*b);}
程序运行后的输出结果是()。
A:0,0 B:1,0 C:3,2 D:1,2
题号4...选择题A:( 1分,正确答案 A,学生答案 * )
有以下程序
#include
main()
{int c=0, k;
for(k=1; k<3; k++)
switch (k)
{default: c+=k;
case 2: c++; break;
case 4: c+=2; break;}
printf("%d\n", c);}
程序运行后的输出结果是()。
A:3B:5 C:7 D:9
题号5...选择题A:( 1分,正确答案 B,学生答案 * )
当需要定义一个函数时,以下标识符中,()不能用作函数名。A:scanf B:for C:_sum D:F2
题号6...选择题A:( 1分,正确答案 C,学生答案 * )
若要对a进行++运算,则a应具有以下说明()。
A:int a[3][2]; B:char *a[]={"12","ab"};
C:int b[10],*a=b; D:char (*a)(char);
题号7...选择题A:( 1分,正确答案 B,学生答案 * )
在定义任何一个函数时,下列选项中,()是不可缺少的。
A:函数名之前的数据类型B:函数名之后的一对圆括号
C:形式参数声明D:函数体内的语句
题号8...选择题A:( 1分,正确答案 D,学生答案 * )
已知某程序如下:
float p=1.5;
#define p 2.5
main()
{printf("%f",p);}
则main函数中标识符p代表的操作数是()。
A:float型变量B:double型变量 C:float型常量D:double型常量题号9...选择题A:( 1分,正确答案 A,学生答案 * )
已有声明"int s[2][3]",以下选项中()正确地引用了数组s中的基本元素。A:s[1>2][!1] B:s[2][0] C:s[1] D:s
题号10...选择题A:( 1分,正确答案 B,学生答案 * )
若有以下程序:
int x:
int f(int y)
{return 标识符;}
#include
int w:
main()
{in t z=2;f(z);…}
则在函数f中return语句后允许出现的标识符是()。
A:x或w B:x或y C:z或w D:NULL
题号11...选择题A:( 1分,正确答案 D,学生答案 * )
逻辑"异或"运算可描述为"a xor b",其中a和b为参加运算的两个操作数,运算结果为当且仅当a、b两个
操作数中只有一个为真时才为真,其他情况下均为假,以下表达式中()可以正确表示逻辑"异或"运算。
A:a||b B:a&&b C:(a&&b)&&!(a||b) D:(a||b)&&!(a&&b)
题号12...选择题A:( 1分,正确答案 C,学生答案 * )
以下跳转语句中,只有()可以选择不唯一的跳转目的地。
A:continue; B:break; C:goto 标识符; D:return;
题号13...选择题A:( 1分,正确答案 D,学生答案 C )
在缺省情况下,标准C的编译系统中预定义的标准输出流stdout直接连接的设备是()。
A:软盘B:硬盘C:键盘D:显示器
题号14...选择题A:( 1分,正确答案 A,学生答案 * )
一个用c语言编写的程序,()是必不可少的。
A:取名为main的函数定义B:#include
以下声明中正确的是()。
A:int n=2,a[n]={10}; B:int n=10,*p[2]=&n; C:int n=10,a[2]={n}; D:int a[2][2]={10},(*p)[2]=a+1;
题号16...选择题A:( 1分,正确答案 A,学生答案 * )
已知数据类型定义和变量声明如下:
struct sk {int a;float b;} data[2],*p;
若有p=data,则以下对data[0]中成员a的引用中错误的是()。
A:data[0]->a B:data->a C:p->a D:(*p).a
题号17...选择题A:( 1分,正确答案 D,学生答案 * )
以下单目运算符均只需一个操作数,其中要求操作数的类型只能是指针型的是()。
A:& B:++ C:! D:*
题号18...选择题A:( 1分,正确答案 D,学生答案 * )
C语言规定,在一个源程序中main函数的位置()。
A:必须在最开始B:必须在最后 C:必须在预处理命令的后面D:可以在其他函数之前或之后
题号19...选择题A:( 1分,正确答案 D,学生答案 * )
以下选项中,()是C语言关键字。
A:printf B:include C:fun D:default
题号20...选择题A:( 1分,正确答案 A,学生答案 B )
已知有声明"int a=3,b=4,c;",则执行语句"c=1/2*(a+b);"后,c的值为()。A:0 B:3 C:3.5 D:4
题号21...选择题A:( 1分,正确答案 C,学生答案 * )
已知有声明"int a=3,b=4;",下列表达式中合法的是()。
A:a+b=7 B:a=|b| C:a=b=0 D:(a++)++
题号22...选择题A:( 1分,正确答案 D,学生答案 * )
已知有声明"char s[20]="Hello";",在程序运行过程中,若要想使数组s中的内容修改为"Good",
则以下语句中能够实现此功能的是()。
A:s="Good"; B:s[20]="Good"; C:strcat(s,"Good"); D:strcpy(s,"Good");
题号23...选择题A:( 1分,正确答案 A,学生答案 A )
已知有声明"int a[4][4]={{1,2,3,4},{5,6,7,8),{9,10,11,12},{13,14,15,16)};",
若需要引用值为12的数组元素,则下列选项中错误的是()。
A:*(a+2)+3 B:*(*(a+2)+3) C:*(a[2]+3) D:a[2][3]
题号24...选择题A:( 1分,正确答案 B,学生答案 * )
已知有声明"int n;float x,y;",则执行语句"y=n=x=3.89;"后,y的值为()。A:3 B:3.0 C:3.89 D:4.0
题号25...选择题A:( 1分,正确答案 C,学生答案 * )
已知有声明"int a=12,b=15,c;",则执行表达式"c=(a||(b-=a))"后,变量b和c 的值分别为( )。
A:3,1 B:15,12 C:15,1 D:3,12
下列叙述中,正确的是()。
A:C语言中的文件是流式文件,因此只能顺序存取文件中的数据
B:调用fopen函数时若用"r"或"r+"模式打开一个文件,该文件必须在指定存储位置或默认存储位置处存在
C:当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到该文件中的第1个数据
D:无论以何种模式打开一个已存在的文件,在进行了写操作后,原有文件中的全部数据必定被覆盖
题号27...选择题A:( 1分,正确答案 C,学生答案 * )
以下叙述中正确的是()。
A:C语言系统以函数为单位编译源程序
B:main函数必须放在程序开始
C:用户定义的函数可以被一个或多个函数调用任意多次
D:在一个函数体内可以定义另外一个函数
题号28...选择题A:( 1分,正确答案 B,学生答案 * )
已知int类型数据在内存中存储长度为2个字节,以下语句中能正确输出整数32768的是()。
A:printf("%d",32768); B:printf("%ld",32768); C:printf("%f",32768); D:printf("%c",32768);
题号29...选择题A:( 1分,正确答案 D,学生答案 * )
已知有声明"int a=3,b=4,c=5;",以下表达式中值为0的是()。
A:a&&b B:a<=b C:a||b&&c D:!(!c||1)
题号30...选择题A:( 1分,正确答案 B,学生答案 * )
已知有声明"int m[]={5,4,3,2,1},i=0;",下列对m数组元素的引用中,错误是()。
A:m[++i] B:m[5] C:m[2*2] D:m[m[4]]
题号31...选择题A:( 1分,正确答案 D,学生答案 * )
若函数调用时的实参为变量,则以下关于函数形参和实参的叙述中正确的是()。A:实参和其对应的形参占用同一存储单元B:形参不占用存储单元
C:同名的实参和形参占用同一存储单元D:形参和实参占用不同的存储单元题号32...选择题A:( 1分,正确答案 B,学生答案 * )
C语言源程序的基本单位是()。
A:过程 B:函数 C:子程序 D:标识符
题号33...选择题A:( 1分,正确答案 C,学生答案 B )
下列程序的输出结果是()。
main( )
{ int a=7,b=5;
printf("%d\n",b=b/a);
}
A:5 B:1 C:0 D:不确定值
题号34...选择题A:( 1分,正确答案 B,学生答案 * )
假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是()。
A:7 B:8 C:9 D:2
设a为int型变量,执行下列赋值语句后,a的取值分别是()。
a=125.534; a=(int)125.521%4; a=5<<2;
A:125,31,1 B:125,1,20 C:125,31,20 D:125.534,2,20
题号36...选择题A:( 1分,正确答案 C,学生答案 * )
设有如下程序段,下面描述中正确的是()。
int k=10; while(k=0) k=k-1;
A:循环执行一次 B:循环是无限循环
C:循环体语句一次也不执行D:循环体语句执行一次
题号37...选择题A:( 1分,正确答案 A,学生答案 * )
以下程序的输出结果为()。
int i;
void prt( )
{ for(i=5;i<8;i++)printf("%c",'*');
printf("\t");
}
main( )
{for(i=5;i<=8;i++) prt( );
}
A:*** B:*** *** *** *** C:*** *** D:* * *
题号38...选择题A:( 1分,正确答案 A,学生答案 * )
以下函数调用语句中含有()个实参。
func((e1,e2),(e3,e4,e5));
A:2 B:3 C:5 D:语法错误
题号39...选择题A:( 1分,正确答案 A,学生答案 * )
下面选项中正确的赋值语句是(设 char a[5],*p=a;)()。
A:p="abcd"; B:a="abcd"; C:*p="abcd"; D:*a="abcd";
题号40...选择题A:( 1分,正确答案 D,学生答案 * )
C语言中的文件类型只有()。
A:索引文件和文本文件两种B:文本文件一种
C:二进制文件一种D:ASCII码文件和二进制文件两种
题号41...选择题B:( 2分,正确答案 D,学生答案 * )
以下函数 findmax 拟实现在数组中查找最大值并作为函数值返回,但程序中有错导致不能实现预定功能。
#define MIN -2147483647
int findmax (int x[],int n)
{int i,max;
for(i=0;i {max=MIN; if(max return max;} 造成错误的原因是()。 A:定义语句 int i,max;中 max 未赋初值B:赋值语句 max=MIN;中,不应给max 赋 MIN 值 C:语句 if(max 题号42...选择题B:( 2分,正确答案 A,学生答案 A ) 若有定义语句:int a[4][10],*p,*q[4];且 0≤i<4,则错误的赋值是()。A:p=a B:q[i]=a[i] C:p=a[i] D:p=&a[2][1] 题号43...选择题B:( 2分,正确答案 C,学生答案 * ) 有以下程序 #include main() {int a[]={2, 3, 5, 4}, i; for(i=0;i<4;i++) switch(i%2) {case 0 : switch(a[i]%2) {case 0 : a[i]++;break; case 1 : a[i]--; }break; case 1 : a[i]=0;} for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");} 程序运行后的输出结果是()。 A:3 3 4 4 B:2 0 5 0 C:3 0 4 0 D:0 3 0 4 题号44...选择题B:( 2分,正确答案 A,学生答案 * ) 下列函数的功能是()。 fun(char *a,char *b) {while((*b=*a)!='\0'){a++; b++;} } A:将 a 所指字符串赋给 b 所指空间B:使指针 b 指向 a 所指字符串 C:将 a 所指字符串和 b 所指字符串进行比较 D:检查 a 和 b 所指字符串中是否有'\0' 题号45...选择题B:( 2分,正确答案 C,学生答案 * ) 有以下程序 # include int f(int n); main() {int a=3,s; s=f(a);s=s+f(a);printf("%d\n",s);} int f(int n) {static int a=1; n+=a++; return n;} 程序运行后的输出结果是()。 A:7 B:8 C:9 D:10 题号46...选择题B:( 2分,正确答案 A,学生答案 * ) 有以下程序 # include # define f(x) x*x*x main() {int a=3,s,t; s=f(a+1);t=f((a+1)); printf("%d,%d\n",s,t);} 程序运行后的输出结果是()。 A:10,64 B:10,10 C:64,10 D:64,64 题号47...选择题B:( 2分,正确答案 B,学生答案 * ) 下面结构体的定义语句中,错误的是()。 A:struct ord {int x; int y; int z;}; struct ord a; B:struct ord {int x; int y; int z;} struct ord a; C:struct ord {int x; int y; int z;}a; D:struct {int x; int y; int z;} a; 题号48...选择题B:( 2分,正确答案 A,学生答案 C ) 设有定义:char *c;,以下选项中能够使字符型指针 c 正确指向一个字符串的是()。 A:char str[]="string";c=str; B:scanf("%s",c); C:c=getchar(); D:c=*string"; 题号49...选择题B:( 2分,正确答案 D,学生答案 * ) 有以下程序 #include #include struct A {int a; char b[10]; double c;}; struct A f(struct A t); main() {struct A a={1001,"ZhangDa",1098.0}; a=f(a); printf("%d,%s,%6.1f\n",a.a,a.b,a.c);} struct A f(struct A t) {t.a=1002; strcpy(t.b,"ChangRong");t.c=1202.0;return t;} 程序运行后的输出结果是()。 A:1001,ZhangDa,1098.0 B:1002,ZhangDa,1202.0 C:1001,ChangRong,1098.0 D:1002,ChangRong,1202.0 题号50...选择题B:( 2分,正确答案 C,学生答案 C ) 下列关于 C 语言文件的叙述中正确的是()。 A:文件由一系列数据依次排列组成,只能构成二进制文件 B:文件由结构序列组成,可以构成二进制文件或文本文件 C:文件由数据序列组成,可以构成二进制文件或文本文件 D:文件由字符序列组成,其类型只能是文本文件 题号51...选择题B:( 2分,正确答案 D,学生答案 * ) 下列程序段执行后的结果为()。 main() { static int a[3][3]={1,3,5,7,9,11,13,15,17},y,x,*p=&a[2][2]; for(x=0;x<3;x++) y+=*(p-4*x); printf("\n%d",y);} A:45 B:33 C:17 D:27 题号52...选择题B:( 2分,正确答案 D,学生答案 * ) 若有声明: int k,a,b; unsigned long y=5; double x=1.23; 则以下表达式中正确的是()。 A:x%(-5) B:x=y[6] C:k=(a=l,b=2,&a+&b) D:a+=a-=(b=2)*(a=3) 题号53...选择题B:( 2分,正确答案 C,学生答案 * ) 若有以下声明和定义: void fun(int c){printf("%d",c);} main() {void(*a)(int)=fun,*b(int),(*c)(int); /*调用fun函数语句位置*/} void *b(int c){} 如果在main函数中需要调用fun函数,以下调用语句中错误的是( )。 A:fun(1); B:(*a)(1); C:b=fun;(*b)(1); D:c=a;(*c)(1); 题号54..选择题A:( 1分,正确答案 C,学生答案 * ) 以下选项中,能用作用户标识符的是()。 A:void B:8_8 C:_0_ D:unsigned 题号55...选择题A:( 1分,正确答案 C,学生答案 * ) 设有定义:int a=l, b=2, c=3;,以下语句中执行效果与其它三个不同的是()。A:if(a>b)c=a,a=b,b=c; B:if(a>b){c=a,a=b,b=c;} C:if(a>b)c=a;a=b;b=c; D:if(a>b){c=a;a=b;b=c;} 题号56...选择题A:( 1分,正确答案 D,学生答案 * ) 已有声明语句"unsigned char ch;",与表达式"ch='B'"的值不相同的表达式是()。(注释:字符A的Ascii码以十进制表示为65) A:ch=0x42 B:ch=0102 C:ch='\102' D:ch=066 题号57...选择题A:( 1分,正确答案 B,学生答案 * ) 以下对于break语句使用的正确描述是()。 A:可以出现在程序中的任何位置 B:只能出现在循环或switch结构中 C:只能出现在switch结构中 D:只能出现在循环结构中 题号58...选择题A:( 1分,正确答案 B,学生答案 * ) 若有声明语句"int a=5,b=4,c=3,*p=&a;",则下列()表达式语句是正确的。A:(*p)++=c; B:printf(a%4==0?"%3d\n":"%3d",*p); C:*(*p)++; D:a>20?return *p-20:return *p-1; 题号59...选择题A:( 1分,正确答案 A,学生答案 * ) 设 int x=2,y=3,z=(++x<=y--)?((--y==1)?y--:--y):y--; 则x,y,z的值为()。A:3,0,1 B:2,0,0 C:3,1,1 D:2,2,1 题号60..选择题A:( 1分,正确答案 B,学生答案 * ) 若有函数fun的定义为 void fun(…) {static int a=1; ...} 则下列叙述中不正确的是()。 A:在每次调用fun函数时,变量a的值是上次调用结束时a的值 B:在fun函数之外,可以用变量名a直接引用a的值 C:在其他函数中,可以出现声明double a=2.5; D:fun函数的形式参数不能取名为a 题号61...选择题A:( 1分,正确答案 D,学生答案 * ) 已知有声明 char c='1';int x=300;float t=35000;double d=3.1234567e10; 则以下表达式求值时除( )外其结果都可能是不准确的。 A:x=t/c B:t=d/x C:t=d/le5f D:t=x+c 题号62...选择题A:( 1分,正确答案 C,学生答案 * ) 以下叙述中正确的是()。 A:C语言系统以函数为单位编译源程序 B:main函数必须放在程序开始 C:用户定义的函数可以被一个或多个函数调用任意多次 D:在一个函数体内可以定义另外一个函数 题号63...选择题A:( 1分,正确答案 C,学生答案 * ) 以下选项中,不能用作c语言标识符的是()。 A:print B:FOR C:&a D:_00 题号64...选择题A:( 1分,正确答案 C,学生答案 * ) 已知有声明"long x,y;"且x中整数的十进制表示有n位数字(4 A:y=x/(10*(n-1)) B:y=x%(10*(n-1)) C:y=x%(long)pow(10,n-1) D:y=x%(10^(n-1)) 题号65...选择题A:( 1分,正确答案 A,学生答案 * ) 已知有声明 char s[80]; ,若需要将键盘输入的一个不含空格的字符串保存到数组中,则下列语句中正确的是()。 A:scanf("%s",s); B:scanf("%s",s[0]); C:s=gets();D:s=getchar(); 题号66...选择题A:( 1分,正确答案 B,学生答案 * ) 在C语言程序中,以下说法正确的是()。 A:函数的定义可以嵌套,但函数的调用不可以嵌套 B:函数的定义不可以嵌套,但函数的调用可以嵌套 C:函数的定义和函数的调用都不可以嵌套 D:函数的定义和函数的调用都可以嵌套 题号67...选择题A:( 1分,正确答案 A,学生答案 * ) 设有以下定义,值为5的枚举常量是()。 enum week{sun,mon=4,tue,wed,thu,fri,sat} w; A:tue B:sat C:fri D:thu 题号68...选择题B:( 2分,正确答案 C,学生答案 * ) 有以下定义语句,编译时会出现编译错误的是()。 A:char a='a'; B:char a='\n'; C:char a='aa'; D:char a='\x2d'; 题号69...选择题B:( 2分,正确答案 A,学生答案 * ) 有以下程序 #include main() { char c1,c2; c1='A'+'8'-'4'; c2='A'+'8'-'5'; printf("%c,%d\n",c1,c2);} 已知字母 A 的 ASCII 码为 65,程序运行后的输出结果是()。 A:E,68 B:D,69 C:E, D D:输出无定值 题号70..选择题B:( 2分,正确答案 C,学生答案 * ) 有以下程序 #include void fun (int p) {int d=2; p=d++; printf("%d",p);} main() {int a=1;fun(a); printf("%d\n",a);} 程序运行后的输出结果是()。 A:32 B:12 C:21 D:22 题号71..选择题B:( 2分,正确答案 C,学生答案 A ) 有以下程序 #include #include main() {char str[][20]={"One*World","One*Dream!"},*p=str[1]; printf("%d,",strlen(p));printf("%s\n",p);} 程序运行后的输出结果是()。 A:9,One*World B:9,One*Dream! C:10,One*Dream! D:10,One*World 题号72...选择题B:( 2分,正确答案 B,学生答案 * ) 设有定义如下; typedef stuct{int x,y;}pOINT; typedef enum{RED,YELLOW,BLUE,GREEN}COLOR; struct {pOINT xy;COLOR c;}pixel,*p=&pixel; 以下对变量pixel的赋值操作中正确的是( )。 A:pixel={1,2,BLUE}; B:p->xy.x=1;p->xy.y=2;p->c=BLUE; C:scanf("%d%d%d",p->xy.x,p->xy.y,&pixel.c); D:pixel.color=2; 题号73...选择题B:( 2分,正确答案 C,学生答案 * ) 已有预处理命令和声明如下: #define N 10 int a=2,c=1; double b=1.2; 下述程序段正确的是()。 A:switch(a) {case c: a--;break; case c+1:a++;break;} B:switch(a) {case N>0:a=1;break; case 1:a=O;break;} C:switch(a) {case 2: b++;break; case '0': b=3;} D:switch(b) {case 1.0: b++;break; case 1.2: b=1;break;} 题号74...选择题B:( 2分,正确答案 B,学生答案 * ) 设有以下程序段,则值为6的表达式是()。 struct st { int n; struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p; p=&a[0]; A:p++->n B:++p->n C:p->n++ D:(*p).n++ 题号75...选择题B:( 2分,正确答案 A,学生答案 * ) 以下程序的输出结果为()。 #include "stdio.h" void xy(int *x,int *y) {int *t;t=x;x=y;y=t;} int main() {int a=7,b=8,*x=&a,*y=&b;xy(x,y); printf("%d,%d,%d,%d",a,b,*x,*y);} A:7,8,7,8 B:7,8,8,7 C:8,7,7,8 D:8,7,8,7 题号76...选择题A:( 1分,正确答案 D,学生答案 D ) 以下叙述中正确的是()。 A:程序设计的任务就是编写程序代码并上机调试 B:程序设计的任务就是确定所用数据结构 C:程序设计的任务就是确定所用算法 D:以上三种说法都不完整 题号77...选择题A:( 1分,正确答案 B,学生答案 B ) 表达式:(int)((double)9/2)-(9)%2 的值是()。 A:0 B:3 C:4 D:5 题号78...选择题A:( 1分,正确答案 C,学生答案 B ) 若有声明"int a [5],*b=a,(*c)[3],*d[3];",则在以下表达式中有语法错误的是()。 A:a[0]=0 B:b[0]=0 C:c[0]=0 D:d[0]=0 题号79...选择题A:( 1分,正确答案 B,学生答案 C ) 设指针变量占2个字节的内存空间,若有声明"char *p="123";int c;",则执行语句"c=sizeof(p);"后,c的值为( )。 A:1 B:2 C:3 D:4 题号80...选择题A:( 1分,正确答案 D,学生答案 D ) 已知有声明 int i,a[10],*p=a; ,现需要将1到l0保存到元素a[0]到a[9]中,以下程序段中不能实现这一功能的是()。