您的当前位置:首页正文

广工C语言试卷及答案

2022-12-29 来源:年旅网
一、单选题(每题2分,共60分) 1.以下描述正确的是 C A) C程序的执行是从main()函数开始,到本程序的最后一个函数结束 B) 编译程序对C源程序编译时不检查语法 C) C程序中没有输入输出语句 D) 在一个C程序中main()函数必须出现在所有函数之前 2.结构化程序设计不应该使用 B A) 自顶向下,逐步细化的方法 B) 灵活、简洁的goto结构 C) 模块化设计 D) 三种基本结构:顺序结构、选择结构、循环结构的编码方法 3.将C源程序进行 B 可得到目标文件。 A) 编辑 装 订 线 学 院: 专 业: 学 号: 姓 名: B) 编译 C) 连接 D) 运行 4. 在C语言中,变量所分配的内存空间大小 C A) 均为两个字节 B) 由用户自己定义 C) 由变量的类型决定 D) 是随意的 5. 以下不能定义为用户标识符是 D A) min B)_01 C)_int D) 3a 6. 以下选项中可作为C语言合法常量的是 D A) 3e2.0 B) 081 C) e3 D) 123L 7. 若有语句char c;,并要将字符a赋给变量c,则下列赋值表达式正确的是 B 。 A) c=a B) c=’a’ C) c=”a” D) c=’97’ 8. 有程序段: int a,b; scanf(“%d,%d”,&a,&b); 请为之选择运行时正确的输入方法_____ B___ A) 1 2↙ B) 1,2↙ C)1↙2↙ D)1;2↙ 9.若有语句int x=5; 则执行语句x+=x*=10;后,a的值是 A 。 A) 100 B) 55 C) 60 D) 105 10.下列语句合法的是 B 。 A) 4+a=b=0; B) a=++b; C) a=2=b=6; D) a=4++; 11.执行以下语句,输出结果是 C 。 int x=2; printf(“%d”, ((x=4*5, x*5), x+20)); A) 120 B) 100 C) 40 D) 20 12.C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为_ C__ A) 由实参传给形参,再由形参传回给实参 广东工业大学试卷用纸,共 7 页,第 1 页 B) 地址传递 C) 单向值传递 D) 由用户指定传递方式

13.以下选项中非法的表达式是 A 。 A) 7.5%2/2 B) x=y=0 C) (char)(66+1) D) ’c’+1 14.下列程序的输出结果是 D 。 void main() { float a=3.2; int b,c; b=1.2; c=(b+3.8)/5.0; printf(“%d\\n”, a*c); } A) 3 B) 3.2 C) 3.07 D) 0 15.C语言中用于结构化程序设计的三种基本结构是 A 。 A) 顺序结构、选择结构、循环结构 B) if, switch, break C) for, while, do-while D) if, for, continue 16. 执行以下程序,输出结果是 D 。 int x, y=3, z=2; x=(--y==z++)?--y:++z; printf(“x=%d y=%d z=%d”,x,y,z); A) x=4 y=2 z=4 B) x=3 y=2 z=3 C) x=4 y=1 z=4 D) x=1 y=1 z=3 17. 已有定义: char a[]=\"abc\以下叙述中正确的是 C A) 数组a和b的长度相同 B) a数组长度小于b数组长度 C) a数组长度大于b数组长度 D)上述说法都不对 18.执行以下程序,输出结果是 C 。 void main() { int x=3,y=4,z=2,i; i=xy; printf(“i=%d z=%d”, i,z); } A) i=0 z=10 B) i=1 z=10 C) i=0 z=2 D) i=1 z=2 19. 用数组名作为函数调用时的实参,实际上传送给形参的是 A A) 数组首地址 B) 数组的第一个元素值 C) 数组中全部元素的值 D) 数组元素的个数 20. 执行如下语句, 输出c的值是 C 。 int c=1, x=3; switch(x+1) { case 4: c++; case 6: c++; break; default: c++; } printf(“%d”, c); A) 1 B) 2 C) 3 D) 4 广东工业大学试卷用纸,共 7 页,第 2 页

21. 若有定义:int a[2][3]; 则对a数组的第i行j列元素的正确引用为A A) *(a[i]+j) B) *(a+i)+j C) *(a+i+j) D) a[i]+j 22.若有如下程序: void main() { int x=1,a=0; do { a++; }while(x,x--); } 则语句a++; 执行的次数是 C 。 A) 0 B) 1 C) 2 D) 无限次 23.以下程序中,while循环的循环次数是 D 。 void main() { int i=0; while(i<10) { if(i<1) continue; if(i==5) break; i++; } „„ } A) 1 B) 10 C) 6 D) 死循环,不能确定次数 24.下面能正确定义一维数组的选项是 B 。 A) int num[]; B) #define N 10 int num[N]; C) int num[0..10]; D) int N=10; int num[N]; 25.在C语言中,函数的隐含存储类别是 C 。 A) auto B) static C) extern D) 无存储类别 26.以下程序的输出结果是 C 。 void main() { char str[20]=”hell\\0o\”; printf(“%d %d\\n”, strlen(str),sizeof(str)); } A) 9 7 B) 7 20 C) 4 20 D) 20 20 27.下列选项中不正确的语句组是 A 。 A) char s[10]; s=“Beijing”; B) char s[ ]=“Beijing”; C) char *s =“Beijing”; D) char *s ; s=“Beijing”; 28.有如下程序, 执行后输出的结果是 C(形参不传给实参) 。 void f(int x, int y) { int t; if(xprintf(“%d,%d,%d\\n”,a,b,c); } A) 3,2,1 B) 1,2,3 C) 1,3,2 D) 2,3,1 29.执行如下程序段后,a的值为 C 。 int *p, a=1,b=2; p=&a; a=*p+b; A) 1 B) 2 C) 3 D) 4 30.下列关于C语言数据文件的叙述中正确的是 C 。 A) 文件由ASCII码字符序列组成,C语言只能读写文本文件 B) 文件由二进制数据序列组成,C语言只能读写二进制文件 C) 文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 D) 文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件 二、填空题(每空2分,共40分) 1.若输入字符串:abcde<回车>,则以下while循环体将执行 (1)0 次。 while((ch=getchar())==’d’) putchar(ch); 2.设有下列定义语句int x[3]={3,4,5}, *p1=x, **p2=&p1;则表达式**p2的值是 3 (2) ,表达式*(*p2+1)的值是 4 (3) 。 3.以下函数的功能是:求x的y次方,请填空。 double fun(double x, int y) { int i; double z; for(i=1, z=x; i 广东工业大学试卷用纸,共 7 页,第 4 页

void main() { FILE *fp; char str[100]; int i=0; if((fp=fopen(“text.txt”, “w” (7) ))==NULL) { printf(“can’t open this file.\\n”); exit(0); } printf(“input a string:\\n”); gets(str); while(str[i]) { if(str[i]>=’a’&&str[i]<=’z’) str[i]= str[i]-32 (8) ; fputc(str[i],fp); i++; } fclose(fp); } 7. 下面程序是对10个数排序(由小到大) #include void main() { int a[11]; int i,j,t; printf(″input 10 numbers :\\n″); for (i=1;i<=10;i++) scanf(\"%d\",&a[i]); printf(\"\\n\"); for(i=1;i<=9;i++) for(j=i+1;j<=10;j++) if ( a[i]>a[j] (9) ) {t=a[i]; a[i]=a[j] (10) ; a[j]=t; } printf(″the sorted numbers :\\n″); for(i=1;i<11;i++) printf(″%d ″,a[i]); printf(″\\n″); } 8. 有3个学生,各学3门课,计算总平均分数。 #include void average(float *p,int n) { float sum=0, aver ; float *p_end; p_end= p+n (11) ; for(;p<p_end;p++) 广东工业大学试卷用纸,共 7 页,第 5 页

sum=sum+(*p) (12) ; aver = sum / n; printf(″average=%5.2f\n″,aver);} void main( ) { float score[3][3]={{65,67,70},{80,87,90},{90,99,100}}; average(*score,9) (13) ; /*求9个分数的平均分*/ } 9.执行以下程序,输出结果是 4 (14) 。 void main() { int a=6,b=5,c=4,d=3; if(a>b>c) printf(“%d\\n”,d); else if ((c-1>=d)==1) printf(“%d\\n”, d+1); else printf(“%d\\n”,d+2); } 10.执行以下程序,输出结果是 24 (15) 。 void main() { int a[4][4]={{1,2,-3,-4},{0,-5,-6,7},{-8,9,0,-10},{-11,12,-13,0}}; int i,j,s=0; for(i=0;i<4;i++) for(j=0;j<4;j++) { if(a[i][j]<0) continue; if(a[i][j]==0) break; s+=a[i][j]; } printf(”%d\\n”,s); } 11.执行以下程序,输出结果是 125 (16) 。 void fun(int x) { if(x/2>0) fun(x/2); printf(“%d”, x); } void main() { fun(5); } 12.执行以下程序,输出结果是 357 (17) 。 void fun() { static int a=1; a+=2; printf(“%d”,a); } void main() { int c; for (c=1; c<4; c++) fun(); printf(“\\n”); } 13.执行以下程序,输出结果是 6 (18) 。 广东工业大学试卷用纸,共 7 页,第 6 页

void main() { int x[8]={1,2,3,4,5,6,0,0}, *s; s=x+3; printf(“%d\\n”, s[2]); } 14.执行以下程序,输出结果是 2,1 (19) 。 void swap( int *pt1, int *pt2) { int p; p=*pt1; *pt1=*pt2; *pt2=p; } void main( ) { int a=1, b=2, *p1, *p2; p1=&a; p2=&b; if (*p1<*p2) swap(p1, p2); printf(“%d, %d\\n”, a,b); } 15.执行以下程序,输出结果是 4 (20) 。 void main() { int a[4][4]={ {10,2,3,4}, {1,6,7,8}, {19,10,11,12}, {1,14,15,16} }; int (*p)[4], i; p=a; printf(“%d”, *(p+2)-*(p+1)); } 广东工业大学试卷用纸,共 7 页,第 7 页

因篇幅问题不能全部显示,请点此查看更多更全内容