河南理工大学 历年C语言试卷

上传人:二*** 文档编号:57233410 上传时间:2022-02-23 格式:DOCX 页数:36 大小:107.28KB
收藏 版权申诉 举报 下载
河南理工大学 历年C语言试卷_第1页
第1页 / 共36页
河南理工大学 历年C语言试卷_第2页
第2页 / 共36页
河南理工大学 历年C语言试卷_第3页
第3页 / 共36页
资源描述:

《河南理工大学 历年C语言试卷》由会员分享,可在线阅读,更多相关《河南理工大学 历年C语言试卷(36页珍藏版)》请在装配图网上搜索。

1、河南理工大学 20042005 学年第 2 学期c语言程序设计 试卷(A卷)考试方式:闭卷 本试卷考试分数占学生总评成绩的 70 %总 分题号一二三四核分人题分 专业班级: 姓名: 学号: 密封线一、单项选择题(每题2分,共50分) 在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的下划线“ ”上。1以下叙述正确的是 A)C程序中,main函数必须位于程序的最前面B)C程序的每一行只能写一条语句C)C语言本身没有输入输出语句D)对C程序进行编译的过程中,可以发现注释中的拼写错误2以下选项中均是合法的用户标识符是 A)A B) _123 C)3Dmax D) A

2、.datP_0 temp p-pointer la0do INT _print int3在C语言中,字符型(char)数据在内存中存放的形式为 A)BCD码 B)原码 C)补码 D)ASCII码 4已知char a;int b;float c;double d;执行语句c=a+b+c+d;后,变量c 的数据类型是 A)int B)char C)float D)double5已知int i,a;执行语句i=(a=2*3,a*5),a+6;后,变量i的值是 A)36 B)30 C)12 D)66若int x=3;且有下面的程序片断,则输出结果是 A)1 B)3 0 C)1 -2 D)死循环do p

3、rintf(%d ,x-=2); while(!(-x);7字符串22a,0n的长度是 A)8 B)7 C)6 D)58若w=1,x=2,y=3,z=4;则条件表达式wx?w:yz?y:z的结果是 A)4 B)3 C)2 D)19当执行下面程序时,如果输入ABC,则输出的结果是 #include main() char ss10= 12345; gets(ss); strcat(ss,6789); printf(%sn,ss);A)ABC6789 B)ABC67 C)12345ABC6 D)ABC45678910设有说明语句int a=1,b=0;则执行以下语句后,输出结果是 A)*0* B)

4、*0*2* C)*0*1*2* D)有语法错误switch(a) case 1: switch(b) case 0: printf(*0*); break; case 1: printf(*1*); break; case 2: printf(*2*); break; 11以下不是死循环的语句是 A)for(;x+=i); B)while(1)x+;C)for(i=10;i-) D)for(;(c=getchar())!=n;)sum+=i; printf(%c,c); 12下列程序的输出结果是 A)13;1 B)14;4 C)11;1 D)10;0main() int a=10, b=0;

5、if(a=12) a=a+1; b=b+1;else a=a+4;b=b+4; printf(%d,%dn,a,b); 13下面关于字符串的说明中,错误的是 A)char str7=FORTRAN; B)char str=FORTRAN;C)char *str=FORTRAN;D)char str=F,O,R,T,R,A,N14已知:int a10;则对a数组元素的正确引用是 A)a10 B)a3.5 C)a(5) D)a10-1015.在C语言中 A)不能使用do-while语句构成的循环 B)do-while语句构成的循环必须用break语句才能退出C)do-while语句构成的循环,当w

6、hile语句中的表达式值为非零时结束循环D)do-while语句构成的循环,当while语句中的表达式值为零时结束循环16下列程序的输出结果是 A)13 B)15 C)11 D)12 #define FUDGE(y) 1.2+y#define PR(a) printf(%d,(int)(a)main() int x=2;PR(FUDGE(5)*x);17C语言中的函数 A)可以嵌套定义 B)不可以嵌套调用 C)可以嵌套调用,但不能递归调用 D)嵌套调用和递归调用均可18若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|10的是 A) abs(x-y)-10& x-y10C) (x-

7、y)10D) (x-y)*(x-y)data.a D)p.data.a23.已知函数原型为:struct tree *func(int x1,int *x2,struct tree x3,struct tree *x4)其中 tree 为已定义过的结构,且有下列变量定义:struct tree pt,*p; int i;请选择正确的函数调用语句 A) &pt=func(10,&i,pt,p) B) p=func(i+,&i,pt,&pt);C) p=func(i+1,&(i+2),*p,p); D) func(i+1,&i,p,p);24.下列程序的输出结果是 A)AB B)BA C)AA D

8、)BBvoid sub(char *a, char *b) char c; c=*a; *a=*b; *b=c;main() char a, b; a=A; b=B; sub(a,b); printf(%c%cn, a,b); 25. 在Turbo C集成环境中,若一个源程序输入后没有错误,则按Ctrl+F9后 A)将源程序存到当前目录B)依次产生.OBJ和.EXE文件,但不运行程序C)依次产生.EXE和.OBJ文件,并运行程序D)依次产生.OBJ和.EXE文件,并运行程序得分评卷人 二、程序填空题(每空2分,共20分)下面给出了若干个程序,请按照题意将下划线处缺少的部分补上,使其能正确运行。

9、26以下程序统计从终端输入的字符中每个大写字母的个数。用#号作为输入结束标志,请填空。main( ) int num26,i; char c;for(i=0; i=A& c=Z) numc-65+=1;/* A的ASCII是65*/for(i=0; i26; i+) /*输出大写字母和该字母的个数*/if(numi) printf(%c:%dn,i , numi);27将n个字符串按字母顺序(由小到大)排序。void sort(char *str,int n) char *t;int i,j,k;for(i=0; in-1; i+) ; for(j=i+1; j0) ; if(k!=i) t=

10、stri; stri=strk; strk=t; 28以下程序的功能是将字符串s中的数字字符放入d数组中,最后输出d中的字符串。例如,输入字符串:abc123edf456gh,执行程序后输出:123456。请填空。#includemain() chars80,d80;inti,j; gets(s); for(i=j=0; si!=0; i+) if( ) dj=si; j+; ; puts(d);29以下fun函数的功能是将一个字符串的内容颠倒过来,如:int str =12345,则调用该函数后,str数组中的内容变为:54321。请填空。#include string.hvoid fun(

11、int str )int i,j,k;for(i=0,j= ; ij; i+, ) k=stri; stri=strj; strj=k; 30以下是将两个字符串连接起来的程序,请填空。main() char s180,s240; int i=0,j=0;printf(“nInput string1:”); scanf(“%s”,s1);printf(“nInput string2:”); scanf(“%s”,s2); while(s1i!=0) ; while(s2j!=0) ; s1i=0;printf(“The new string is %sn”,s1);得分评卷人 三、修改下列程序的

12、错误(共5处,每处3分,共15分)请改正下列程序中的错误,使之能得出正确的结果。注意:不得增行或减行,也不得更改程序的结构。31给定程序中函数fun的功能 是:计算n!。 例如:给n输入5,则输出120000000。请改正程序中的错误,使它能得出正确的结果。#include /*found*/ double fun(int *n) double result=1.0; if( n=0 | n=1)return 1.0; while(n1)/*found*/ result*=-n; return result;main() int n; scanf(%d,&n);printf(nn%d!=%lf

13、nn,n,fun(n);32下述程序中函数calc的功能是对传送过来的两个实数求出和值与差值,并通过两个指针形参分别将这两个值传送回调用函数。 void calc(float x,float y,float *add,float *sub) *add=x+y;/*found*/sub=x-y; main() float x,y,add,sub; printf(Enter x,y:); /*found*/scanf(%f%f,x,y); /*found*/calc(&x,&y,add,sub); printf(x+y=%f,x-y=%fn,add,sub);得分评卷人 四、程序设计(共2题,第一

14、题5分,第二题10分,共15分)33输入三个整数,求其中的最大值并输出。(5分)34下面的程序是求数组中的最小元素,输出最小元素的下标及最小元素值。注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数findmin的花括号中填入你编写的若干语句。#include int findmin(int *s,int n)/* s表示数组的首地址,n是数组大小 */ main() int a10,i,k; for (i=0; i0;2下列符号串中,合法的C语言标识将是 A) _235 B) 235_ C) a.235 D) #1213设有int x=8,y,z;,则执行“y=z

15、=x+,x=y=z;”后,变量x的值是 A)0 B)1 C)8 D)94以下选项中均是合法的用户标识符是 A)A B) _123 C)3Dmax D) A.datP_0 temp p-pointer la0do INT _print int5设float a;,并且a已赋值,则能将a的值四舍五入保留两位小数的选项是 A)a=(a*100+0.5)/100; B)a=(int)(a*100+0.5)/100.0;C)a=(int)(a*100+0.5)/100; D)a=(int)(a*100)/100+0.5;6在以下数组定义中,正确的是 A)int a3+3; B)int a3,3; C)i

16、nt a; D)int a3;7设有int a=1,b=1;,执行printf(%d,%d,(a+,-b),b-1);的输出结果是 A)1,-1 B)1,0 C)0,-1 D)0,08以下程序的输出结果是 A)0,0,6B)1,0,7C)1,1,7D)0,1,7 main( ) int i=0,j=0,k=6; if (+i0) | (+j0) k+; printf(%d, %d , %d n,i,j,k); 9有以下程序:int fff(int a)int b=0;static int c=3;b=b+1;c=c+1;return(a+b+c);main()int a=2,i;for(i=0

17、;i3;i+) printf(%d ,fff(a);执行后输出结果是 A)7 9 11 B)7 8 9 C)7 7 7 D)7 9 1010字符串mx43np102q的长度是 A)7 B)9 C)15 D)1611计算平方数时不可能引起二义性的宏定义是 A)#define SOR(x) x*x B)#define SQR(x) (x)*(x)C)#define SQR(x) (x*x) D)# define SQR(x) (x)*(x)12执行下述程序的输出结果是 #include main() static int i,j; for (j=9;ij;i+) for (i=9;i=j-1) p

18、rintf(%dn,j);A)11 B)10 C)9 D)101113函数调用时,下列说法中不正确的是 A)在传递数值时,形式参数不予分配内存B)实际参数和形式参数可以同名C)主调函数和被调用函数可以不在同一个文件中D)函数间传送数据可以使用外部全局变量14函数原型是void fun(int *a,int *b),且int x10,y;,则下列调用中正确的是 A)fun(*x,&y); B)fun(&x,*y); C)fun(x,y); D)fun(x,&y);15已知指针变量p、q分别指向图中所示结点,则下列语句组中,可将p所指向的结点指向q所指向的结点的语句是 数据类型:struct ty

19、p int data; struct typ *next; ;A)p-next=q;B)p-next=q.next; C)p=q; D) p=q-data;16设有inta=2,4,6,8,10,*p=a;,则值为8的表达式是 A)*p3 B)*p4 C)*(p4) D)*(a3)17若有int a43=1,2,3,4,5,6,7,8,9,10,11,12,(*p)3; p=a;则*(*(p+1)+2)的值是 A) 5 B) 6 C) 7 D) 有语法错误18执行下面程序段后,c的二进制值为 int a=3,b=6; char c; c=(ab)=10000); if(i100)break;

20、25. 设有char string120=ABCDE,string210=xyz;,则执行printf(%d,strlen(strcat(string1,string2);后的输出结果是 A)9 B)8 C)5 D)3得分评卷人 二、程序填空题(每空2分,共20分)下面给出了若干个程序,请按照题意将下划线处缺少的部分补上,使其能正确运行。26下面函数的功能是返回形参p所指向的、长度为n的整型数组中最小值所在的下标(下标从0开始计算)。int fun(int *p,int n) int i,j=0; for(i=0;in;i+) if(pipj) _return(_);27将数组中的n个数据按逆

21、序存放。void reverse(int a,int n) int i,j,t; i=0; j= ; while(i1.0) printf(s=%10.5lfn,sum(1.0,x,&s); ) else printf(data error!n); double sum(double t,double p, ) t=t/p; if(t=0.00001) sum(t,p,a); *a+= ; return(*a); 29以下程序是将字符串a复制为字符串b,请将程序补充完整。main()char a=I am a boy.,b20,*p1,*p2;p1=a;p2=b;while( )*p2=*p1

22、;p1+,p2+; ;printf(string a is:%sn,a);printf(string b is:%sn,b);30将n个字符串按字母顺序(由小到大)排序。void sort(char *str,int n) char *t;int i,j,k;for(i=0; in-1; i+) ; for(j=i+1; j0) ; if(k!=i) t=stri; stristrk; strk=t; 得分评卷人 三、修改下列程序的错误(共5处,每处3分,共15分)请改正下列程序中的错误,使之能得出正确的结果。注意:不得增行或减行,也不得更改程序的结构。31给定程序中功能是:从键盘上输入2个整

23、数,按从小到大的顺序输出这2个数。/*found*/fun(int x, int y) int temp; temp=*x;*x=*y; * y=temp;main() int a,b; /*found*/ scanf(%d,%d,&a,&b); if(ab) /*found*/ fun(a, b) printf(n%d,%dn,a,b);32一个三位数,其各位数字的立方和等于该数本身,此数称为“水仙花数”,下列程序为打印出所有水仙花数的程序。main() int i,j,k,m;for(i=1; i=9; i+)/* found */for(j=0; j9; j+)for(k=0; k=9;

24、 k+) /* found */m=100*k+10*j+i;if(m=i*i*i+j*j*j+k*k*k) printf(%d ,m); 得分评卷人 四、程序设计(共2题,第一题5分,第二题10分,共15分)33用多分支语句实现下列功能:从键盘上输入a op b(其中a,b为数值,op仅为字符+、 -、*、 / ),计算表达式a op b并输出结果。例如输入3+5回车,则输出8(5分)。34主函数输入50个学生的学号、姓名、3门课程的成绩存入一个结构型的数组,编写函数统计每个学生的总分,在主函数中输出学生的学号、姓名、总分(10分)。struct student int num;char n

25、ame20;float score3;float sum; /* 总分 */;void total(struct student *p,int n)main() struct student stu50;int i;for(i=0; i50; i+) scanf(%d,&stui.num); gets(stui.name); scanf(%f,&stui.score0); scanf(%f,&stui.score1); scanf(%f,&stui.score2);total(stu,50);for(i=0; i50; i+) printf(%d %s %fn,stui.num,stui.na

26、me,stui.sum);焦作工学院 20042005 学年第 2 学期高级语言程序设计 试卷(A卷)标准答案及评分标准一、单项选择题(每题2分,共50分)1.C 2.B 3.D 4.C 5.B6.C 7.C 8.B 9.A 10.B 11.D 12.A 13.A/D 14.D 15.D 16.C 17.D 18.C 19.D 20. A 21.C 22.B 23.B 24.B 25.D二、程序填空题(每空2分,共20分)26c=getchar() /* 字母拼写错或缺少字母不扣分 */ +65或+A27k=i k=j28si=0 /* 数字未加单撇不扣分 */ di=0 或di=029str

27、len(str)-1 /* 没有减1扣1分 */j-30i+s1i+=s2j+ 或 s1i=s2j;i+;j+三、修改程序题(共有5处错误,每处3分,共15分)31double fun(int n)result*=n- 32*sub=x-yscanf(%f%f,&x,&y) /* 改对一个得1分,多改但未改错不扣分 */calc(x,y,&add,&sub) /* 改对一个得1分,得够3分为止 */四、程序设计题(共2题,第一题5分,第二题10分,共15分)注意:编程方法不唯一,以下为参考答案。另外,主要测试编程方法,语法错误在不影响阅读情况下可不扣分,如少写分号。33 方法一:main()

28、int a,b,c,d,max; scanf(%d,%d,%d,&a,&b,&c); /* 输入1分 */ d=ab?a:b; /* 比较占3分 */ max=dc?d:c; printf(%dn,max); /* 输出1分 */ 方法二:main()int a, b, c ;scanf(%d,%d,%d,&a,&b,&c);printf(%dn,ab?ac?a:c:bc?b:c); 方法三:使用if语句main() int a,b,c,d,max; scanf(%d,%d,%d,&a,&b,&c); max=a; if(bmax) max=b; if(cmax) max=c; printf(

29、%dn,max); 34方法一:int isprime(int n)int k,i;k=sqrt(n); /* 写成sqr不扣分 */for(i=2;ik)return 1; /* 返回值 2分 */elsereturn 0;方法二:int isprime(int n)int i;for(i=2;i=n)return 1; /* 写成in不扣分,主要测试编程方法 */elsereturn 0;焦作工学院 20042005 学年第 2 学期高级语言程序设计 试卷(B卷)标准答案及评分标准一、单项选择题(每题2分,共50分)1、C 2、A 3、B 4、B 5、B 6、A 7、D 8、B 9、B 1

30、0、A 11、D 12、C 13、A14、D15、A 16、D 17、B 18、D 19、A 20、D21、D 22、B 23、C 24、C 25、B二、程序填空题(每空2分,共20分)26、 j=i; j 27、n-1 j-28、double *a t29、*p1!=0 *p2=0 30、k=i k=j三、修改程序题(共有5处错误,每处3分,共15分)31、fun(int *x,int *y) if(ab) fun(&a,&b);32、j=9 m=100*i+10*j+k四、程序设计题(共2题,第一题5分,第二题10分,共15分)注意:编程方法不唯一,以下为参考答案。另外,主要测试编程方法,

31、语法错误在不影响阅读情况下可不扣分,如少写分号。33、main()int a,b;char s;printf(input a op b:);scanf(%d %c %d,&a,&s,&b);switch(s) case + : printf(%d,a+b);break; case - : printf(%d,a-b);break; case * : printf(%d,a*b);break; case / : printf(%d,a/b);break; default :break; 34、void total(struct student *p,int n) int i,j;for(i=0;

32、 isum=0.0; for(j=0;jsum +=p-scorej;河南理工大学 20052006 学年第 2 学期专业班级: 姓名: 学号: 密封线C语言程序设计 试卷(A卷)考试方式:闭卷 本试卷考试分数占学生总评成绩的 70 %总 分题号一二三四核分人题分复查人 得分评卷人 一、单项选择题(每题2分,共50分) 在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的下划线“ ”上。1根据C语言的特点以下选项中不正确的选项是 B A)习惯用小写字母,大小写字母有区别。B)C语言主要由语句构成,语句是C程序的基本单位。C)C语言本身没有输入输出语句。D)用C语

33、言写的程序可移植性好。 2C语言中运算对象必须是整型数据的运算符是 A A)% B)/ C)! D)&3若变量已正确定义并赋值,符合C语言语法的表达式正确的是 B A)a=a+7; B)a=7+b+c,a+ C)int(12.3%4) D)a=a+7=c+b 4下列可以正确表示字符型常量的是 B A)a B)t C)028 D)xy5已知int x=1,y=2,z;执行语句z=xy?+x:+y;后,z的值是 C A)1 B)2 C)3 D)46若变量已正确定义,要将a和b中的数据进行交换,下面选项中不正确的是 C A)a=a+b,b=a-b,a=a-b; B)t=a,a=b,b=t; C)a=

34、t;t=b;b=a; D)t=b;b=a;a=t;7已知int x=6;则执行x+=x-=x*x;语句后,x的值为 B A)36 B)-60 C)60 D)-248以下程序的输出结果是 C A)0 B)1 C)2 D)3main()int a=2,b=-1,c=2;if(ab) if(b0) c=0;else c+=1;printf(%dn,c); 9已知a,b,c的值均为1,且均为int类型变量,则执行+a|+b&+c; 语句后,a,b,c的值分别为 B A)2,2,1 B)2,1,1 C)2,2,2 D)2,1,210若变量已正确定义,以下语句的输出结果是 A A)%# B)*%$ C)%

35、 D)%$*x=0;y=2;z=3;switch(x) case 0:switch(y) case 1: printf(*);break; case 2: printf(%);break; case 1: switch(z) case 1: printf($); case 2: printf(*);break; default: printf(#); 11若有以下宏定义 #define N 2 #define Y(n) (N+1)*n)则执行语句z=2*(N+Y(5);后的结果为 B A)语句有错误 B)z=34 C)z=70 D)z值不确定12以下不是死循环的语句为 D A)for(;x+=

36、i); B)while(1)x+;C)for(i=10;i-)sum+=i D)for(;(c=getchar()!=n;)printf(%c,c);13以下程序段的输出结果是DA)9 B)1 C)11 D)10int k,j,s;for(k=2; k6;k+,k+) s=1;for(j=k;j6;j+) s+=j;printf(%dn,s);14已知:int a34;则对数组元素引用正确的是 C A) a24 B)a1,3 C)a1+10 D)a(2)(1)15.已知:char str=abn018;则执行语句:printf(%dn,strlen(str);的结果是 B A)3 B)7 C)

37、6 D)1216以下不能对二维数组a进行正确初始化的语句是 C A)int a23=0; B)int a3=1,20;C)int a23=1,2,3,4,5,6; D)int a3=1,2,3,4,5,6;17下面对C语言的描述中,正确的是 A A)在C语言中调用函数时,只能将实参的值传递给形参,形参的值不能传递给实参。 B)C语言函数既可以嵌套定义又可以递归调用。 C)函数必须有返回值,否则不能使用函数。D)C语言程序中有调用关系的所有函数都必须放在同一源程序文件中。18已知int *p();这里的p是 C A)指向int类型的指针变量。B)int 类型的指针数组。C)一个函数,该函数的返回

38、值是指向int类型的指针变量。D)一个指向函数的指针变量,该函数的返回值是int类型。19已知int a34,*p=a;p+=6;那么*p和 D 的值相同。A)*(a+6) B)*(&a0+6)C)*(a1+3) D)*(&a00+6)20已知函数定义如下:abcd(char *s1,char *s2) while(*s2+=*s1+);函数abcd的功能是 A A)串复制 B)求串长 C) 串比较 D)串反向21标准库函数fgets(s,n,f)的功能是 B A)从文件f中读取长度为n的字符串存入指针s所指的内存B) 从文件f中读取长度不超过n-1的字符串存入指针s所指的内存C) 从文件f中读取n个字符串存入指针s所指的内存D)从文件f中读取长度为n-1的字符串存入指针s所指的内存22. 以下程序的输出结果是 D A)100 B)16

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!