浙江科技学院历届c语言试卷_第1页
浙江科技学院历届c语言试卷_第2页
浙江科技学院历届c语言试卷_第3页
浙江科技学院历届c语言试卷_第4页
浙江科技学院历届c语言试卷_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 专业班级 学号 姓名 装订线 浙江科技学院2010 - 2011 学年第 2 学期考试试卷 A 卷 考试科目 C语言程序设计 考试方式 闭 完成时限 2小时 拟题人 题库 审核人 批准人 2011年6月25日建工、生化、艺术、轻工、理学 学院 2010 年级 理工科专业题序一二三四五总分加分人复核人得分签名命题:说明:1. 应将全部答案写在答卷纸对应的题号处;否则作无效处理;2. 编程题应写明题号,若答卷纸不够,请写在背面,不要另添卷纸;3. 考试完成后,必须将试卷与答卷同时交回。得分一、判断题(本大题共12小题,每题小1分,共12分)1. 在定义数组时,数组的长度可以用整型常量或者整型变量

2、表示。2. 执行“int x=3,y=4; float z;z=x/y;”后,z的值为0.75。3. C语言中,关系表达式的值是1和0,分别表示“真”和“假”。4. else语句一定要与if语句配对使用,程序中else语句的个数一定小于或者等于if语句的个数。5. C语言是一种结构化程序设计语言,结构化程序由顺序、选择、循环三种基本结构组成。6. 函数中可以使用多个return语句,也可以没有return语句。如果使用多个return语句可以向主函数返回多个值。7. 使用”w”方式打开一个已经存在的文本文件,将在该文件原有数据的基础上添加新的数据。8. 定义语句“char s=“Hello”;

3、”和“char s=H, e, l, l, o;”定义的两个字符数组是等价的。9. 调用函数时,若实参是一个数组名,则向函数传送的是数组的首地址。10. 使用dowhile 语句实现循环时,不管条件真假,都将首先无条件的执行一次循环。11. 假定int类型变量占用两个字节,若有定义:int x10=0,2,4;,则数组x在内存中所占字节数是6。 12. 语句“c=*p+”的执行过程是p所指向的存储单元的值赋值给变量c,然后p变量自增。得分二、单选题(本大题共20小题,每题1分,共20分)1. 一个C程序总是从( )开始执行。A.书写顺序的第一个函数B.书写顺序的第一条执行语句C.主函数main

4、()D.不确定2. 程序设计一般包含以下4个步骤,其中首先应该完成的是( )。A.设计数据结构和算法B.建立数学模型C.编写程序D.调试运行程序3. 以下不能正确计算代数式值的C语言表达式是( )。A.1/3*sin(1/2)*sin(1/2)B.sin(0.5)*sin(0.5)/3C.pow(sin(0.5),2)/3D.1/3.0*pow(sin(1.0/2),2)4. 下列语句执行后,变量n的值是( )。for(i=1;i<=3;i+)n=1;n=n*i;A.1B.3C.4D.65. 对下列语句的描述正确的是( )。int i=1;doi+;while(i=10);A.执行后i的

5、值是1B.执行后i的值是2C.执行后i的值是10D.死循环6. 能正确表示逻辑关系“a10或a0”的C语言表达式是( )。A.a>=10 or a<=0B.a>=0|a<=10C.a>=10 &&a<=0D.a>=10|a<=07. 设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为( )。A.0B.1C.2D.语法错误8. 下列程序段不是死循环的是( )。 A.int i=100; while(1)

6、i=i%100+1; if(i>100)break; B.int k=0;do+k; while(k>=0);C.for( ; ;);D.int s=36;while(s) s;9. 已知int x=10, y=20, z=30;,以下语句执行后x、y、z的值是( )。if (x>y) z=x; x=y; y=z;A.x=10, y=20, z=30B.x=20, y=30, z=30C.x=20, y=30, z=10D.x=20, y=30, z=2010. 请阅读以下程序:#include <stdio.h>void main() float a,b; sc

7、anf ("%f",&a); if(a<0.0) b=0.0; else if (a<5.0) && (a!=2.0) b=1.0/(a+2.0); else if (a<10.0) b=1.0/a; else b=10.0; printf("%fn",b);若运行时输入2.0<回车>,则上面程序的输出结果是( )。A.0.000000B.0.500000C.1.000000D.0.25000011. 有以下程序段:int n=0,p;doscanf("%d",&p);n+

8、;while(p!=12345 && n<3); 此处do-while循环的结束条件是( )。A.p的值不等于12345并且n的值小于3B.p的值等于12345并且n的值大于等于3C.p的值不等于12345或者n的值小于3D.p的值等于12345或者n的值大于等于312. 若有如下定义,则下面在scanf函数调用语句中对结构体成员的引用不正确的是( )。 struct pupil char name20; int age; int sex; pup5,*p;A.scanf("%d",p.age);B.scanf("%s",pup0.

9、name);C.scanf("%d",&pup0.age);D.scanf("%d",&(pup1.sex);13. 有如下数组定义语句“int a23=1,2,3,4,5,6;”,则*(a+1)+2的值是( )。A.2B.6C.元素2的地址D.元素6的地址14. 执行以下程序后,输出结果是( )。 main() int a10=1,2,3,4,5,6,7,8,9,0,*p; p=a; printf(“%d ”,*p); printf(“%dn”,*(p+8);A.1 0B.1 7C.1 8D.1 915. 有如下程序,执行后的输出结果是

10、( )。 #define M 3#define N M+1#define NN N*N/2main() printf(“%dn”,NN);A.3B.4C.6D.816. 设x,y,i,j均为整型变量,且x=10,y=3,则执行i=x; j=y;语句后,i和j的值是( )。 A.10,3B.9,3C.9,2D.10,217. 下面程序的输出结果为( )。void main() char *p; char s= "ABCD" for(p=s;p<s+4;p+) printf("%sn",p); A.ABCDBCDCDDB.ABCDC.DCBAD.ABC

11、DABCABA18. 表达式“strcmp("Windows98","Windows95")”的值为( )。A.0B.大于0C.小于0D.无法比较19. 返回值为void的函数,其含义是( )。A.调用函数之后,被调用的函数没有返回值B.调用函数之后,被调用的函数不返回C.调用函数之后,被调用的函数返回值为任意类型D.以上三种说法均不正确20. 求0到50的总和,不正确的程序段是( )。 A.int i,sum;sum=0; for(i=0;i<51;i+) sum+=i; B.int i,sum;for(i=0,sum=0;i<51;sum

12、+=i+);C.int i,sum;i=0;sum=0; for(i<51) sum+=i;i+;D.int i,sum=0;for(i=0; ;i+) if(i>50) break; sum+=i;得分三、程序填空题(本大题共4小题,每空2分,共24分)1. 以下程序的功能是计算:s=1+12+123+1234+12345。请填空。#include <stdio.h>void main()int t=0,s,i;_(1)_; for( i=1; i<=5; i+) t=i+_(2)_;s=s+t; printf("s=%dn",s);(1)A

13、.s=0B.s=1C.int n=0D.int n=1(2)A.nB.n*10C.t*10D.t2. 下面程序是从键盘输入学号,然后输出学号中百位数字是3的学号,输入0时结束循环。请选择填空。#include <stdio.h>void main() long int num; do scanf("%ld",&num); if(_(3)_ ) printf("num=%ldn",num); while (_(4)_ );(3)A.num%100/10=3B.num/100%10=3C.num%10/10=3D.num/10%10=3(

14、4)A.! numB.num=0C.numD.num=13. 函数fun实现把数字字符从源字符串中删除,其余字符保持原样。void fun( char s ) int i=0,j; while ( (5) )if ( (si>=0 &&si<=9) ) for ( j= i ; sj!=0; j+ ) (6) ;else i+; (5)A.si=0B.si<0C.si!=0D.si=0(6)A.sj-1=sjB.sj=sj-1C.sj+1=sjD.sj=sj+14. 输出50到70之间的所有素数,其中函数isprime(m)用于判断m是否为素数,若m为素数则返

15、回1,否则返回0。素数就是只能被1和自身整除的正整数。请填空。#include <stdio.h>#include <math.h>main()int i; int isprime(int m); for(i = 50; i <= 70; i+) if(_(7)_) printf("%d ", i);int isprime(int m) int i, k; k = (int)sqrt(double)m); for(i = 2; i <= k; i+) if(m % i = 0) _(8)_; _(9)_;(7)A.isprime (m)

16、!= 0B.isprime (i) != 0C.isprime (m) = 0D.isprime (i) = 0(8)A.return 0B.return 1C.return i <= kD.return(9)A.returnB.return 0C.return 1D.return i <= k5. 下列程序中f函数用于在链表中查找最高分。请填空。struct node/*结点定义*/int num;/*学号*/int score;/*成绩*/struct node *next;/*指针域*/;int f(struct node *head)int max;struct node

17、*p;p=_(10)_;max=p->score;while(_(11)_)if(max<p->score)max=p->score;_(12)_;return(max);(10)A.malloc(6)B.head->nextC.NULLD.head(11)A.p=NULLB.p!=NULLC.head=NULLD.head!=NULL(12)A.p=p->nextB.head=head->nextC.p= head->nextD.head= p->next得分四、程序阅读题(本大题共6小题,每小题4分,共24分)1. 运行以下程序后若从键

18、盘上输入:65 4<回车>,则输出结果为( )。#include <stdio.h>void main() int m,n; printf("Enter m,n: ");scanf("%d%d",&m,&n); while(m!=n) while(m>n) m-=n; while(m<n) n-=m; printf("m=%dn",m);A.m=3B.m=2C.m=0D.m=12. 下列程序运行时分别输入“ABCABC”和“ABBBA”,输出的结果分别是( )。 #include&l

19、t;stdio.h>#include<string.h>#define N 100void main()char sN;int n,i=0;scanf("%s",s);n=strlen(s);while(i<n/2&&si=sn-i-1)i+;if(i<n/2) printf("No");else printf("Yes");A.Yes和NoB.Yes和YesC.No和YesD.No和No3. 下列程序运行时输入“welcome 2 4”,输出的结果是( )。#include<std

20、io.h>#include<string.h>#define N 100void middel(char *s,int m,int n);void main()char sN;int m,n;scanf("%s%d%d",s,&m,&n);middel(s,m,n);printf("%s",s);void middel(char *s,int m,int n)char *p1,*p2;p1=s+m;p2=s+m+n;while(*p2!='0')*p1=*p2;p1+;p2+;*p1='0'

21、;A.wemeB.weeC.wmeD.wome4. 下列程序运行后的输出结果是( )。 #include <stdio.h>main( ) int y=18,i=0,j,a8; do ai=y%2; i+; y=y/2; while(y>0); for(j=i-1;j>=0;j-) printf("%d",aj); printf("n");A.0100B.1001C.10010D.以上答案都不是5. 下列程序运行后的输出结果是( )。#include <stdio.h>void f(int *x,int *y) int

22、 t;t=*x;*x=*y;*y=t;main() int a9=1,2,3,4,5,6,7,8,i,*p,*q;p=a;q=&a7;while(*p) f(p,q);p+;q-;for(i=0;i<8;i+)printf("%d,",ai); A.8,2,3,4,5,6,7,1,B.8,7,6,5,4,3,2,1,C.5,6,7,8,1,2,3,4,D.1,2,3,4,5,6,7,8,6. 下列程序运行后的输出结果是( )。 #include<stdio.h>int k = 1;void Fun();void main() int j;for(j

23、 = 0; j < 2; j+)Fun();printf("k=%d", k);void Fun() static int k = 1; printf("k=%d,", k);k+;A.k=1,k=2,k=1B.k=1,k=1,k=2C.k=1,k=1,k=1D.k=1,k=2,k=3得分五、程序设计题(本大题共2小题,每小题10分,共20分)1. 按下面要求编写程序:(1)定义函数cal_power(x, n)计算x的n次幂(即xn),函数返回值类型是double.(2)定义函数main(),输入浮点数x和正整数n,计算并输出下列算式的值。要求调

24、用函数cal_power(x, n)计算x的n次幂。2. 下面程序的功能是:在6至1000内找出所有的合数,并按从小到大的顺序将每个合数按"%6d"格式写入到D盘根目录下新建的文件“design.dat”中。说明:某数等于其诸因子之和则称该数为合数,如6=1+2+3,28=1+2+4+7+14 则6、28就是合数。 专业班级 学号 姓名 装订线 浙江科技学院2010 - 2011 学年第 2 学期考试试卷 A 卷 考试科目 C语言程序设计 考试方式 闭 完成时限 2小时 拟题人 题库 审核人 批准人 2011年6月25日建工、生化、艺术、轻工、理学 学院 2010 年级 理

25、工科专业题序一二三四五总分加分人复核人得分签名得分一、判断题(本大题共12小题,每题小1分,共12分)请在各小题正确选项的对应位置上填“”,A表示正确,B表示错误。123456789101112AB得分二、单选题(本大题共20小题,每题1分,共20分)请在各小题正确选项的对应位置上填“”。12345678910ABCD11121314151617181920ABCD得分三、程序填空题(本大题共5小题,每空2分,共24分)请在各小题正确选项的对应位置上填“”。123456789101112ABCD得分四、程序阅读题(本大题共6小题,每小题4分,共24分)请在各小题正确选项的对应位置上填“”。12

26、3456ABCD得分五、程序设计题(本大题共2小题,每小题10分,共20分)(写不下请写反面,不要另加纸张)浙江科技学院2010 - 2011 学年第 2 学期考试试卷 A 卷 考试科目 C语言程序设计 考试方式 闭 完成时限 2小时 拟题人 题库 审核人 批准人 2011年6月25日建工、生化、艺术、轻工、理学 学院 2010 年级 理工科专业参考答案及评分标准一、判断题(本大题共12小题,每题小1分,共12分)。123456789101112AB二、单选题(本大题共20小题,每题1分,共20分)12345678910ABCD11121314151617181920ABCD三、程序填空题(本

27、大题共5小题,每空2分,共24分)123456789101112ABCD四、程序阅读题(本大题共6小题,每小题4分,共24分)123456ABCD五、程序设计题(本大题共2小题,每小题10分,共20分)1答:#include <stdio.h>double cal_power(double x,int n)/1分 double p = x; int i;/1分 for(i=1;i<n;i+) p=p*x;/2分 return p; /1分void main() double x, s=0; /1分 int i,n; scanf("%lf,%d",&

28、x,&n);/1分 for(i=1;i<=n;i+) s=s+1/cal_power(x,i);/2分 printf("%lf",s);/1分2答:#include <stdio.h>#include <stdlib.h>void main() FILE *p; int n,i,s;/1分if(p=fopen("design.dat","w")=NULL)/1分 printf("cannot open filen"); exit(0); for(n=6;n<=1000;n

29、+)/1分 s=0;/1分 for(i=1;i<n;i+)/1分if(n%i=0) s+=i;/2分if(n=s) fprintf(p,"%6d",n);/2分fclose(p);/1分 专业班级 学号 姓名 装订线 浙江科技学院2010 - 2011 学年第 2 学期考试试卷 B 卷 考试科目 C语言程序设计 考试方式 闭 完成时限 2小时 拟题人 题库 审核人 批准人 2011年6月25日建工、生化、艺术、轻工、理学 学院 2010 年级 理工科专业题序一二三四五总分加分人复核人得分签名命题:说明:4. 应将全部答案写在答卷纸对应的题号处;否则作无效处理;5. 编

30、程题应写明题号,若答卷纸不够,请写在背面,不要另添卷纸;6. 考试完成后,必须将试卷与答卷同时交回。得分一、判断题(本大题共12小题,每题小1分,共12分)13. 设有定义:int a3=1,2,3;,则数组元素a12的值为3。14. 设“int x=5;”,则表达式x%2/4的结果为0.25。15. 并联电阻的计算公式对应的C语言表达式是R1*R2/R1+R2。16. 字符常量A与字符串常量“A”所占用的存储单元大小不同。17. 传值调用的形参只有在被调用时才被创建(分配存储单元)。18. 一个共用体类型的变量,在内存中占用的字节数,为其各成员数据类型所占内存的总和。19. break语句和

31、continue语句一样都只能用于循环语句。20. a是一维数组名,数组元素a1还可以写作“*(a+)”。21. 与语句“if(!x)y=1;”等价的语句是“if(x!=0)y=1;”。22. 可以通过表达式:max=x>y?x:y求x,y两个数中的大数。23. C语言的编译预处理就是对源程序进行初步的语法检查。24. 已知一个字符在内存中占1个字节,字符串“Program”在内存中占7个字节。得分二、单选题(本大题共20小题,每题1分,共20分)21. 以下说法中错误的是( )。A.一个C程序可以由一个或多个函数构成B.一个C程序必须有而且只能有一个main()函数C.在计算机上编辑C

32、程序时,每行只能写一条语句D.主函数是程序启动时唯一的入口22. N-S图与传统流程图相比较,其主要优点是( )。A.杜绝了程序的无条件转移B.具有顺序、选择和循环三种基本结构C.简单、直观D.有利于编写程序23. C语言中运算对象必须是整型的运算符是( )。A.%=B./C./D.<=24. 已知char c='A' int i=l, j;,执行语句j=!c&&i+;后,则i和j的值是( )。A.1,1B.1,0C.2,1D.2,025. 以下能正确定义一维数组的选项是( )。A.int a5=0,1,2,3,4,5;B.char a=0,1,2,3,4

33、,5;C.char a='A','B','C'D.int a5="0123"26. 若有以下说明语句(已知int占2个字节,long 占4个字节),则下面printf的输出结果是( )。 union uarea int x; long y; ;struct str char s20; union uarea z;main() printf(“%dn”,sizeof(struct str);A.24B.26C.20D.3027. 有以下程序:#include <stdio.h>void main() int a=15

34、,b=21,m=0; switch(a%3) case 0: m+;break; case 1: m+; switch(b%3) default:m+;break; case 0: m+;break; printf("%dn",m);程序运行后的输出结果是_( )。A.1B.2C.3D.428. 已知int i,a;,执行语句i=(a=2*3,a*5),a+6; 后,变量i的值是( )。A.6B.12C.30D.3629. 有如下数组定义语句“int a23=1,2,3,4,5,6;”,则*(*(a+1)+2)的值是( )。A.2B.6C.元素2的地址D.元素6的地址30.

35、 已知链表结点定义语句为“struct nodeint num; struct node *next;”, 在下图所示的链表中,head为头指针,如果要删除p1所指的结点,在执行语句“free(p1);”前,需要执行的语句是( )。head100110021003NULLp1A.p1=p1->next;B.head=p1;C.p1=head;D.head=p1->next;31. 如果要从C盘根目录下的文件“abc.txt”中读取数据,已知文件指针为fp,则打开该文件的语句是( )。A.fp=fopen(“c:abc.txt”, “r”);B.fp=fopen(“c:abc.txt

36、”, “w”);C.fp=fopen(“c:abc.txt”, “r”);D.fp=fopen(“c:abc.txt”, “w”);32. 已有定义:char a="xyz",b='x','y','z',以下叙述中正确的是 ( )。A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.上述说法都不对33. 以下对C语言函数的有关描述中,正确的是( )。A.调用函数时,实参个数与形参个数可以不同B.函数既可以嵌套定义又可以递归调用C.函数可以有返回值,也可以没有返回值D.C程序中有调用关系的所有函数

37、必须放在同一个源程序文件中34. 下列程序段的输出结果为( )。int *ptr; int arr=6,7,8,9,10; ptr=arr; *(ptr+2)+=2; printf("%d,%dn",*ptr,*(ptr+2); A.8,10B.6,8C.7,9D.6,1035. 下列程序的输出结果是( )。#include<stdio.h>void main () int y; double d=3.4,x; x=(y=d/2.0)/2; printf("%0.2lf,%d",x,y);A.0.00,1B.0.85,1.7C.0.50,1D

38、.以上都不对36. 当调用函数时,实参是一个数组名,则向函数传送的是( )。A.数组的长度B.数组的首地址C.数组每一个元素的地址D.数组每个元素中的值37. 以下程序运行后的输出结果是( )。main()char a7="a00a00" int i,j;i=sizeof(a); j=strlen(a);printf("%d %dn",i,j); A.2 2B.7 6C.7 2D.6 238. 执行以下程序后,输出结果是( )。 main() int y=11;while(-y) y-;printf(“%dn”,y-); A.-1B.1C.8D.039.

39、 下列程序段的输出结果是( )。char c,k;c='b' k=4;switch(c) case 'a': k=1;case 'b': k=2;case 'c': k=3;printf("%d ",k);A.1B.2C.3D.440. 已知有如下的宏定义:“#define S x+y”,则下列语句执行后的输出结果是( )。int x=10,y=20;printf(“%d”,S*S); A.900B.230C.420D.140得分三、程序填空题(本大题共4小题,每空2分,共24分)6. 输入1个正整数n,计算并

40、输出 s的前n项的和。请填空。S=1/2-2/3+3/4-4/5+(-1)n-1n/(n+1)#include<stdio.h>void main( ) int k, flag=1,n; float s=0; scanf(“%d”,&n); for (k=1;k<=n;k+) s=s+ _(1)_ ;_(2)_;printf(“sum=%fn”,s);(1)A.1.0*k/(k+1)B.flag*n/(n+1)C.-k/(k+1)D.1.0*k/(k+1)*flag(2)A.flag=-1B.s=-sC.flag=-flag D.k=-k7. 输入一个正整数,按照从高

41、位到低位的顺序输出各位数字, 请填空。运行示例:Enter an integer: 1902The digits are: 1 9 0 2 #include <stdio.h>void main( ) int digit, number, power, t; printf("Enter an integer:");scanf("%d", &number);number = number < 0 ? -number : number; power = 1; _(3)_ while( _(4)_ ) power *= 10; t /

42、= 10; printf("The digits are:"); while(_(5)_) digit = number / power; printf("%d " , digit); _(6)_ power /= 10; (3)A.t = 1;B.t = number;C.;D.number = 1;(4)A.t >= 10B.power >= 100C.t != 0D.number != 0(5)A.power = 0B.digit != 0C.number != 0D.power >= 1(6)A.number /= power;

43、B.number %= 10;C.number %= power;D.number /= 10;8. 输入一个整数,求它的各位数字之和及位数。例如,17的各位数字之和是8,位数是2。请填空。运行示例:Enter an integer:-153sum = 9, count = 3#include <stdio.h>main() int count = 0, data, sum = 0; printf("Enter an integer:"); scanf("%d", &data); if(data < 0) data = -dat

44、a; do sum = sum +_(7)_; _(8)_; count+; while(_(9)_); printf("sum = %d, count = %dn", sum, count);(7)A.data % 10B.data mod 10C.data /10D.data(8)A.data = data % 10B.data /10C.data = data /10D.data % 10(9)A.data % 10 != 0B.data != 0C.!dataD.data / 10 != 09. 本程序用于动态建立一个链表。链表中每个结点包括学号、成绩及指向下一结点

45、的指针,整个链表共10个结点。#include<stdio.h>#include<malloc.h>#define NULL 0struct student/*结点定义*/int num; /*学号*/float score; /*分数*/_(10)_; /*指针域*/;void main( ) struct student *head=NULL,*p1,*p2; int n=0; dop1=(struct student *)malloc(sizeof(struct student ); printf(“请输入学生的学号和成绩:n”); scanf(“%d,%f”,&p1->num,&p

温馨提示

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

评论

0/150

提交评论