C语言考试题1

  • 格式:doc
  • 大小:362.50 KB
  • 文档页数:8

第一 题:选择题(1-18题每题1分;19-22题每题3分; 总分数:30) 1:用C语言编写的代码:(P6:如果要使C程序在一台计算机上执行,必须经过“编辑”源程序、“编译”和“链接”及调试运行,最后得到可执行程序。)

A)可立即执行 B)是一个源程序 C)经过编译即可执行 D)经过编译解释才能执行 2:对C语言来说,下列标识符合法的是:(P33:C语言标识符的命名规则)

A)x&y B)x1_

C)1_y D)*1_x 3:在C语言中,以下合法的字符常量是:P34

A)‘\084’ B)‘\x43’ C)‘ab’ D)“\0” 4:下列运算符中优先级最高的是:P60

A): B)&& C)+ D)!= 5:设x 、y均为f1oat型变量,则以下不合法的赋值语句是:P51-2-3

A) y=(x%2)/10; B)x*=y+8; C)x=y=0; D)++x; 6:假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是:P58逗号表达式

A)7 B)8 C)6 D)2 7:已知char ch=′C′;则表达式(ch>=′A′ && ch<=′Z′)?(ch+32):ch;的值是: P57条件表达式和P60混合运算考虑优先

A)A B)a

C)C D)c 8:已有定义int x; f1oat y;且执行scanf("%3d%f",&x,&y);语句,若从第一列开始输入数据12345 678(回车),则x 的值为:P45-6-7-8 C

A)12345 B)123

C)45 D)345 9:printf函数中用到格式符%5s ,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式:P45

A)从左起输出该字串,右补空格 B)按原字符长从左向右全部输出 C)右对齐输出该字串,左补空格 D)输出错误信息 10:int x=10,y=20,z=30;if(x>y) z=x;x=y;y=z;以上语句执行后,x,y,z的值是:

A)x=10,y=20,z=30 B)x=20,y=30,z=30 C)x=20,y=30,z=10 D)x=20,y=30,z=20 11:程序段for (i=5;i;i--) for( j=0;j<4;j++){语句} 中,{语句}总的执行次数是:

A)20 B)25 C)24 D)30 12:以下描述错误的是:

A)C程序中,函数可以直接或间接的调用自己 (递归) B)函数调用时,函数名必须与所定义的函数名字完全一致

C)函数说明语句中的类型必须与函数返回值的类型一致 D)实参数可以与形参个数不一致 13:若有定义:int a[5]={1,2,3,4,5};则语句a[1]=a[3]+a[2+2]-a[3-1];运行后a[1]的值为:

A) 6 B)5 C)1 D)2 14:不能把字符串:Hello!赋给数组b的语句是:

A)char b[10]={‘H’,‘e’,‘l’,‘l’,‘o’,‘!’}; B)char b[10]; b=“Hello!”;

C)char b[10]; strcpy(b,“Hello!”); D)char b[10]=“Hello!”; 15:若有说明:int a[3][4]; 则对a数组元素的正确引用是: A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1); 16:若有定义:int *p,a=4; p=&a;则以下均代表地址的是:

A)a,p B)&a,p C)&a,*p D)a,*p 17:设char s[10],*p=s;,下列表达式中,不正确的表达式是:

A)p=a+5 B)s=p+s p205 C)*p=s[0] D)s[2]=p[4] p208 18:关于文件理解不正确的为:

A)C语言把文件看作是字节的序列,即由一个个字节的数据顺序组成; B)所谓文件一般指存储在外部介质上数据的集合;

C)系统自动地在内存区为每一个正在使用的文件开辟一个缓冲区; D)每个打开文件都和文件结构体变量相关联,程序通过该变量中访问该文件; 19:#include main() { int a=1,b=2,c=3,d=0; if(a= =1 &&b++= =2) if(b!=2 || c--!=3) printf(“%d,%d,%d\n”,a,b,c); else printf(“%d,%d,%d\n”,a,b,c); else printf(“%d,%d,%d\n”,a,b,c); } 程序运行后的输出结果是:

A)1,2,3 B)1,3,2

C)1,3,3 D)3,2,1 20:#include "stdio.h" main() { int a,b; for(a=1,b=1;a<=100;a++) { if (b>=20) break; if(b%3==1) {b+=3;continue;} } printf("%d\n",a); } 程序的运行结果是:

A) 7 B)8

C)9 D)10 21:int i=0,a[]={3,4,5,4,3}; do{ a[i]++; }while(a[++i]<5); for(i=0;i<5;i++) printf("%d ",a[i]); 上面程序段的运行结果是:

A) 4 5 6 5 4 B)3 4 5 4 3

C)4 5 5 5 4 D)4 5 5 4 3 22:#include P291、P293 main() { FILE *fp; char str[256]; fp = fopen("test.txt", "r+"); if(fp==NULL){ printf("File open error!"); return; } fscanf(fp,"%s",str); fclose(fp); } 以上程序运行后,屏幕显示File open error!,则可能的原因是:

A)当前工作目录下有test.txt文件,但test.txt文件太小 B)test.txt文件不能关闭

C)当前工作目录下没有test.txt文件 D)当前工作目录下有test.txt文件,但test.txt文件太大

第 二 题:C语言编程题(总题数:4 总分数:70)(以下试题如要求有运行结果,则必须将结果复制,如无具体运行结

果,则不需要复制)

1: 输出500至1000之间的所有素数之和.(15分) #include #include main() { int i,count=0; double sum=0.0; for(i=500;i<=1000;i++) { if(prime(i)==1) { sum+=i; count++; } } printf("500--1000间素数之和:%.2lf\n",sum);

} int prime(int val) { int re=0; int i; for(i=2;i<=sqrt(val);i++) if(val%i==0) break; if(i>sqrt(val)) re=1; else re=0; return re; } 2:求分数序列:2/1,3/2,5/3,8/5,13/8 „„的前20项的和值并输出 (15分) #include #include main() { int i,count=0; double sum=0.0; int a1,a2,b1,b2,a3,b3; a1=2; //第1项分子 a2=3; //第2项分子 b1=1; //第1项分母 b2=2; //第2项分母 sum = sum + a1*1.0/b1; printf("%d/%d + ",a1,b1); sum = sum + a2*1.0/b2; printf("%d/%d ",a2,b2); for(i=3;i<=20;i++) { a3=a1+a2; b3=b1+b2; printf(" + %d/%d",a3,b3); sum = sum + a3*1.0/b3; a1=a2; b1=b2; a2=a3; b2=b3; } printf(" = %.2lf\n",sum);

} 3:编写一个判断素数的函数。调用该函数,计算并输出区间[1000,2000]内所有素数的平均值,结果保留2位小数。(20分) #include #include main() { int i,count=0; double sum=0.0; for(i=1000;i<=2000;i++) { if(prime(i)==1) { sum+=i; count++; } } sum=sum/count; printf("1000--2000间素数之平均:%.2lf\n",sum);

} int prime(int val) { int re=0; int i; for(i=2;i<=sqrt(val);i++) if(val%i==0) break; if(i>sqrt(val)) re=1;