系 专业 级 班级 姓名 学号 | 装 订 线 | 厦门理工学院试卷 2011-2012学年 第1学期 | |||||
课程名称 | C语言程序设计 | 试卷 卷别 | A √ B □ | ||||
专业 2011级 班级 | 考试 方式 | 闭卷 □ 开卷 □ | |||||
本试卷共 大题( 页),满分100分,考试时间120分钟。 请在答题纸上作答,在试卷上作答无效。 | |||||||
一、选择题:(本题共15小题,每题2分,共30分) 1. 一个程序中必须有一个名为 的函数。 (A)include (B)define (C)main (D)math 2. 在下列对字符数组进行初始化中, 是正确的。 (A)char a1[]=”abcd”; (B)char a2[3]=”xyz”; (C)char a3[][]={’a’,’x’,’y’}; (D)char a4[2][3]={”xyz”,”mnp”}; 3. 已知:int a, b; 下列switch语句中, 是正确的。 (A)switch(a){ case a: a++;break; case b: b++;break;} (B)switch(a+b){ case 1: a+b;break; case 1: a-b;} (C)switch(a*a){ case 1,2:++a; case 3,4: ++b;} (D)switch(a/10+b){ case 5: a/5;break; default: a+b;} 4. 若p指向x,则 与x的表示是等价的。 (A)p (B)*p (C)&p (D)以上都不对 5. 假定p所指对象的值为25,p+1所指对象的值为42,则(*p)++的值为 。 (A)25 (B)26 (C)42 (D)43 | |||||||
6. for(int i=0;i<=0; i--;) 循环的次数是 。 (A)0 (B)1 (C)5 (D)无限 7. 假定a=20 , x=4.7 , r=’a’,表达式x=(a++ , r++)的值为 。 (A)20 (B)21 (C)97 (D)98 8. 字符串”a:\\\\xxk\\\数据”的长度为 。 (A)10 (B)11 (C)12 (D)13 9. 以下关于函数的叙述中正确的是 。 (A)在一个函数体中可以定义其它函数。 (B)在一个函数体中不可以调用其它函数。 (C)在函数的原型语句中可以只给出参数的类型,不给出参数的名字。 (D)函数返回值类型为void的函数体中,不能出现return语句。 10. 以下指针变量的定义和赋值语句正确的是 。 (A)int a,*p;p=a; (B)int a,*p=a; (C) int *p;float *q=p; (D)int a[10],*p=a,*q=p; 11. 设a为整数变量,不能正确表达数学关系: 3 (A) a==4 || a==5 (B) 3 (C) a>3&&a<6 (D)!(a<=3) &&!(a>=6) 12. 以下标识符的定义中,非法的是 。 (A)stu_name (B)X1 (C)MAX (D)float 13. 已知变量定义语句int a;float b=2.6;以下输入输出语句正确的是 。 (A)printf(”%d”,a); (B)printf(”%f”,&b); (C)scanf(”%d”,a); (D) scanf(”%f”,&a); 14. 设i, j, k均为整型变量,则执行下列语句后,k的值是 。 for(i=0,j=10;i<=j;i++,j--) k=i+j; (A) 0 (B) 5 (C) 10 (D) 20 15. 有以下程序,程序运行后的输出结果是 。 main() { int d,b,a=63; d = a %8 /3; b=d+'a'; printf("%c,%d\\n",b,d); } (A)b,1 (B)a,2 (C) c,2 (D) c,1 二、程序填空题:(本题共10小题,每空2分,共20分) 1、以下程序的功能是:比较两个数的大小,按照从大到小的顺序分别存储在a,b中存储,请填空。 #include main() { int a,b; 【1】; printf("请输入两个数:\\n"); scanf(“%d %d”,&a,&b); if(a { t=a; 【2】; b=t; } printf("a=%d,b=%d\\n",a,b); } 2、以下程序的功能是:计算,请填空。 #include double fun(double e) { int i; double s, x; s=0; i=【3】; x=1.0; while(x>e){ x=(2*i-1)/(【4】 ); s=s+x; 【5】; } return s; } main() { double e=1e-3; printf("\\nThe result is: %f\\n",fun(e)); } 3、以下程序的功能是:通过键盘输入10个小数,按照从大到小的顺序存储在a 数组中,请填空。 #include #define N 10 main() { float a[N], temp; int i, j; printf("Please input numbers:"); for (i=0; i |
scanf("%f", &a[i]); /*从键盘输入10个数*/
printf("\\n");
for(i=0; i<【6】; i++)
for(j=【7】; j { temp=a[i]; a[i]=a[j]; a[j]=temp; } /*交换数据*/ printf("The sorted numbers: "); for (i=0; i } 4、以下程序功能是:通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指的结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。例如:a所指变量中的学号、姓名、和三门课的成绩依次为:10001、“ZhangSan”、95、80、88,则修改后输出b中的数据应为:10002、“LiSi”、95、80、88。 #include #include struct student { long sno; char name[10]; float score[3]; }; void fun(struct student a) { struct student b; int i; b = a; b.sno = 10002; strcpy(【9】, "LiSi"); printf("\\nThe data after modified :\\n"); printf("\\nNo: %ld Name: %s\\nScores: ",b.sno, b.name); for (i=0; i<3; i++) printf("%6.2f ", b. 【10】); printf("\\n"); } main() { struct student s={10001,"ZhangSan", 95, 80, 88}; int i; printf("\\n\\nThe original data :\\n"); printf("\\nNo: %ld Name: %s\\nScores: ",s.sno, s.name); for (i=0; i<3; i++) printf("%6.2f ", s.score[i]); printf("\\n"); fun(s); 系 专业 级 班级 姓名 学号 1、若在程序运行时输入:12 10<回车>,请给出输出结果。 void main(void) { int a, b,result; scanf("%d%d",&a,&b); result=a>b?(a++):(--b); printf("%d\\n",result); } 3、请给出输出结果。 #include "stdio.h" void main() { int result=0; int countChar(char s[]); char a[]="C Program:21-Dec-2011"; result=countChar(a); printf("%d",result); } int countChar(char s[]) { int i,count=0; for(i=0;s[i]!='\\0';i++) if(s[i]>='0'&&s[i]<='9') count++; return count; } 5、请给出输出结果。 void increment( ) { static int x=0; x=x+10; printf("%d ",x); } void main() { int i; for(i=0;i<3;i++) increment( ); } 2、请给出输出结果。 void main() { int i=0,s=0; do{ if(i%2= =1) { i++; continue; } i++; s=s+i; }while(i<7); printf("%d\\n",s); } 4、请给出输出结果。 #include "stdio.h" #include "stdio.h" void main() { int k; char a[]="BankOfChina"; char *p=a; for(k=0;a[k]!='\\0';k++) if(*(p+k)>='A'&&*(p+k)<='Z') printf("%c",*(p+k)); } 1.有一个分段函数如下,写一段程序,输入x,输出y。 2. 请按给出的筛法法求1~1000之间的素数。 eratosthenes筛法: 1)利用长度为1000的数组num存放这1000个数;(要求数组定义后,再赋值) 2)挖掉第一个数1(令该数=0); 3)2没被挖掉,挖掉后面所有2的倍数; 4)3没被挖掉,挖掉后面所有3的倍数; 5)4被挖掉,不执行任何操作; 6)5没被挖掉,挖掉后面所有5的倍数; 7)····直到最后一个数; 8)剩下的非0数就是素数; 9)输出所有的素数。(要求每行输出5个素数) 一 选择题(本题共15小题,每题2分,共30分) 1. int t 2. a=b 3. 1 4. (2.0*i)* (2.0*i) 注明:一定要用一个2.0,否则扣1分 5. i++ 6. N-1 7. i+1
四、程序设计题:(本题共3小题,每题10分,共30分)} 线 订 装 考 生 信 息 栏 装 订 线 三、程序阅读题:(本题共5小题,每题4分,共20分)
高级语言程序设计A卷答案3. 输入一个正整数,将它逆序输出。要求:定义并调用函数reverse(number),它的功能是返回number的逆序数,再主调函数中输出逆序后结果。例如,reverse(12345)的返回值是54321。
二、程序填空题:(本题共10小题,每空2分,共20分)1 C 2 A 3 D 4 B 5 B 6 D 7 C 8 B 9 C 10 D 11 B 12 D 13 A 14 C 15 A