C语言程序设计试题_练习题_第1页
C语言程序设计试题_练习题_第2页
C语言程序设计试题_练习题_第3页
C语言程序设计试题_练习题_第4页
C语言程序设计试题_练习题_第5页
已阅读5页,还剩184页未读 继续免费阅读

下载本文档

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

文档简介

1、班号姓名C语言 试 题题号一二三四五六七八九十总分附加题分数一、选择题:(20分,每题2分)1以下不正确的C语言标识符是( )。 A. ABC B. abc C. a_bc D. ab.c2C程序是由构成的。A. 主程序与子程序 B. 主函数与若干子函数C. 一个主函数与一个其它函数D. 主函数与子函数3以下说法中正确的是: 。A. 在C语言中,实参与其对应的形参各占独立的存储单元;B. 在C语言中,实参与其对应的形参共占同一个存储单元;C. 在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元;D. 在C语言中,形参是虚拟的,不占存储单元。4设n=3;则n+的结果是( )。A.

2、2 B. 3 C. 4 D. 55设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是( )。 A. 0 B. 1 C. 2 D. 36凡是函数中未指定存储类别的局部变量其隐含的存储类别是( )。 A. 自动(auto) B. 静态(static) C. 外部(extern) D. 寄存器(register)7在while(x)语句中的x与下面条件表达式等价的是: 。A. x= =0 B. x= =1 C. x!=1 D. x!=08若有以下说明和语句: struct worker int no;char *name; work, *p=&work; 则以下引用方法不正确的是(

3、)。 A. work.no B. (*p).no C. p-no D. work-no9以下对二维数组进行正确初始化的是( )。A. int a23=1,2,3,4,5,6; B. int a3=1,2,3,4,5,6; C. int a2=1,2,3,4,5,6;D. int a2=1,2,3,4; 10二维数组a有m列,则在aij之前的元素个数为: 。A) j*m+i B) i*m+j C) i*m+j-1 D) i*m+j+1二、给出下列程序的运行结果:(20分,前四题每题3分,后两题每题4分)1#includemain()int i=16,j,x=6;j=i+1;x*=i=j;prin

4、tf(“%d,%dn”,j,x); 运行结果是:2#include #include main() int a=1,b=4,c=2;float x=10.5,y=4.0,z;z=(a+b)/c+sqrt(double)y)*1.2/c+x;printf(“%fn”,z); 运行结果是:3#include main() int a,b,c,d;a=c=0;b=1;d=20;if(a) d=d-10;else if(!b) if(!c) d=25; else d=15;printf(“d=%dn”,d); 运行结果:4 main()int i=10;switch(i) case 9: i+=1;

5、case 10: i+=1; case 11: i+=1; default : i+=1; printf(“%d”,i);运行结果:5#includemain() int a=1,2,3,4,i,j,s=0; j=1; for(i=3;i=0;i-) s=s+ai*j; j=j*10; printf(s=%dn,s);运行结果:6func(int x) x=20; main()int x=10;func(x);printf(“%d”,x);运行结果:三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(20分,每空2分)1已知能被4整除而不能被100整除的或者能

6、被400整除的年份是润年,则判断某一年是否是润年的程序如下:main() int year,leap; scanf(“%d”,&year); if( ) leap=1; else leap=0; if( ) printf(“是润年”); else printf(“不是润年”);2将100至200间不能被3整除的数输出:main()int n;for(n=100;n=200;n+) if(n%3=0) ;printf(“%d ”,n); 3判断m是否是素数 #include main()int m,i,k;scanf(“%d”,&m); k=sqrt(m);for(i=2;i=k+1) prin

7、tf(“%d is a prime numbern”,m);else printf(“%d is not a prime numbern”,m);4给定一3*4的矩阵,求出其中值最大的元素的值,及所在的行列号。main() int i,j,row=0,colum=0,max; static int a34=1,2,3,49,8,7,610,-10,-4,4; ;for(i=0;i=2;i+) for(j=0;jmax) max=aij; ; ; printf(“max=%d,row=%d,colum=%dn”,max,row,colum);5 下面函数的功能是将两个字符串s和t连接起来。cha

8、r *conj(char *s, char *t) char *p=s; while(*s) ; while(*t) *s= ;s+;t+;*s=0; ; 四、编程(40分)1计算1-1/2+1/3-1/4+1/99-1/100+,直到最后一项的绝对值小于10-4为止。(13分)2输入一行字符,分别统计求出其中英文字母、空格、数字和其他字符的个数并输出结果。(13分)3任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果。(14分)班号姓名C语言 考试题题号一二三四五六七八九十总分附加题分数说明:请将答案写在答题纸的相应题号后面!一、填空题:(24分 每空1.5分)1已知:int *p,

9、a; 则语句 p=&a;中的运算符&的含义是( 1 )。2凡在函数体内没有明显存储类别说明的变量是( 2 )。3已知: struct int k; char c; float a;test; 则sizeof(test)的值是(3 )。 4程序填空: (1)下面的程序是main函数利用函数abcd来交换main中的两个变量的值。 # include main() float x=10,y=20; abcd( 4 ); printf(“%f,%f”,x,y); abcd(x,y) ( 5 ); float temp; temp=( 6 ); ( 7 ); ( 8 ); (2)下面的程序是使用冒泡法

10、对输入的10个数据从小到大排序。排好序的10个数分两行输出。 #include main() ( 9 ); int j,k; printf(“ input 10 numbers please n”); for(j=0;( 10 );j+) scanf(“%f”,&aj); printf(“n”); for(j=0;( 11 );j+) for(k=0;( 12 );k+) if( 13 ) x=ak; ( 14 ); ak+1=x; printf(“The sorted 10 numbers:n”); for(j=0;( 15 );j+) if( 16 ) printf(“n”); print

11、f(“%ft”,aj); printf(“n”); 二、单项选择题:(20分 每题2分)1C语言中基本数据类型包括( )。 A. 整型、实型、逻辑型 B. 整型、实型、字符型 C. 整型、字符型、逻辑型 D. 整型、实型、逻辑型、实型2已知 int i,a; 执行语句”i=(a=2*3,a*5),a+6;”后,变量a的值是( )。A. 6 B. 12 C. 30 D. 363C语言中规定函数的返回值的类型是由( )。A. return语句中的表达式类型所决定B. 调用该函数时的主调用函数类型所决定C. 调用该函数时系统临时决定D. 在定义该函数时所指定的函数类型所决定4不能进行+和-运算的数据

12、类型是( )。 A. 指针 B. double C. int D. long5为了判断两个字符串s1和s2是否相等,应当使用( )。 A. if(s1=s2) B. if(s1=s2) C. if(strcpy(s1,s2) D if (strcmp(s1,s2)6若有以下说明和语句: struct stu int no;char *name; student, *p=&student; 则以下引用方法不正确的是( )。 A. student.no B. (*p).no C. p-no D. student-no7以下不是死循环的语句为( )。E. for(; ; x+=k); F. whil

13、e(1)x+; G. for(k=10; ;k-)sum+=k;H. for(;(c=getchar()!=n;)printf(“%c”,c); 8以下错误的描述是( )。A. 不同的函数中可以使用相同的变量名B. 形式参数是局部变量 C. 一个函数内部定义的变量只能在本函数范围内有效 D. 在一个函数内部的复合语句中定义的变量可以在 本函数范围内有效9若用数组名作为函数调用时实参,则实际上传递给形参的是( )。 A数组首地址 B. 数组的第一个元素值C数组中全部元素的值 D. 数组元素的个数10已知 int a,*p=&a; 则为了得到变量a的值,下列错误的表达式是()。 A *&p B*p

14、 C p0 D*&a三、判断下列问题描述及语句正确与否,正确的打“”。(16分 每题2分)1C的关键字都是小写的。2一个复合语句是作为一个语句处理的且在逻辑上相互关联的一组语句。3# define PI=3.14159 4局部变量在进入代码块时生成,退出代码块时消失。5int a=; 6函数可以嵌套定义,也可嵌套调用。 7 switch与if不同,switch只能测试是否相等,而if中还能测试关系和逻辑表达式。 8break和 continue语句都可用于选择结构和循环结构中。四、读程序,写出运行结果:(20分 每题5分)1main() int a=5,b=4,x,y; x=a+*a+*a+;

15、 printf(“a=%d,x=%dn”,a,x); y=-b*-b*-b;printf(“b=%d,y=%dn”,b,y);2#include main() struct s1 char c4,*s;s1=“abc”,”def”;struct s2 char *cp;struct s1 ss1;s2=“ghi”,”jkl”,”mno”; printf(“%c%cn”,s1.c0,*s1.s);printf(“%s%sn”,s1.c,s1.s);printf(“%s%sn”,s2.cp,s2.ss1.s);printf(“%s%sn”,+s2.cp,+s2.ss1.s);3#include f

16、unc(int b) int j;for(j=0;j4;j+) bj=j; main() int a4,k;func(a);for(k=0;k4;k+)printf(“%dn”,ak); 6 void fun() static int a=5; a+; printf(“a=%dn”,a); main()int m;for(m=0;m=1;m+)fun();五、编程(20分) 1有一个3 4的矩阵,找出最大值及该值所在位置。(10分)2写一个函数,计算x的n次方。(10分) 班号姓名C语言程序设计 试题 题号一二三四五六七八九十总分分数 注意:请将答案写在答题纸上,否则无效!一、判断题:(12分

17、 每题2分)1、C语言规定:在一个源程序中,main函数的位置必须在最开始。2、假设所有变量均为整型,则表达式(a=2,b=5,b+,a+b)的值是8。3、凡是函数中未指定存储类别的局部变量,其隐含的存储类别为静态存储。4、C语言中规定函数的返回值的类型是由return语句中的表达式类型所决定。5、在C语言中对文件操作必须先关闭当前文件,然后再打开一个新文件。6、C语言程序的基本单位是语句。 二、选择题:(20分 每题2分)1、假设已定义char a10和char *p=a, 下面的赋值语句中,正确的是: A) a10=”Turbo C”; B) a=”Turbo C”;C) *p=”Turb

18、o C”; D) p=”Turbo C”;2、下面关于运算符优先顺序的描述中正确的是: A)关系运算符 算术运算符 赋值运算符 逻辑与运算符B)逻辑 运算符 关系运算符 算术运算符 赋值运算符C)赋值运算符 逻辑与运算符 关系运算符 算术运算符D)算术运算符 关系运算符 赋值运算符 逻辑与运算符3、以下正确的描述是。A)continue语句的作用是结束整个循环的执行B)只能在循环体内和switch语句体内使用break语句C)在循环体内使用break语句或continue语句的作用相同D)从多层循环嵌套中退出时, 只能使用goto语句 4、用8位无符号二进制数能表示的最大十进制数为A) 127

19、 B) 128 C) 255 D)256 5、下列叙述中正确的是: A) C语言中既有逻辑类型也有集合类型 B) C语言中没有逻辑类型但有集合类型C)C语言中有逻辑类型但没有集合类型D) C语言中既没有逻辑类型也没有集合类型 (第1页 共8页)6、以下对C语言函数的有关描述中,正确的是:A)调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参B)函数既可以嵌套定义又可以递归调用 C)函数必须有返回值,否则不能使用函数D) 程序中有调用关系的所有函数必须放在同一个源程序文件中 7、在C语言中,不正确的int类型的常数是: A) 32768 B)0 C) 037 D) 0xaf8、以下叙述

20、中不正确的是: A)在不同的函数中可以使用相同名字的变量 B)函数中的形式参数是局部变量 C)在一个函数内定义的变量只在本函数范围内有效 D)在一个函数内的复合语句中定义的变量在本函数范围内有效9、以下说法中正确的是: A)#define和printf都是C语句 B)#define是C语句,而printf不是 C)printf是C语句,但#define不是 D)#define和printf都不是C语句10、若有以下定义和语句:double r=99,*p=&r; *p=r;则以下正确的叙述是: A)以下两处的*p含义相同,都说明给指针变量p赋值 B)在“double r=99,*p=&r;”中

21、,把r的地址赋值给了p所指的存储单元 C)语句“*p=r;”把变量r的地址值赋给指针变量p D)语句“*p=r;”取变量r的值放回r中三、填空题:(24分 每空2分)1、下面程序的功能是:输入一行字符,统计其中有多少个单词,单词之间用空格分开。请填空完成。# include main()char str81; int I,( 【1】 ); char c;gats(str);for(I=0;( 【2】 )!=0;I+) if(c= )word=0; else if( 【3】 ) word=1; ( 【4】 )printf(“There are %d word in line. n”,num);2

22、、下面程序的功能是:用选择排序法对数组中10个数据按由小到大排序。请填空完成。void sort(int a,int n)( 【5】 )for(I=0;In-1;I+) ( 【6】 ) for(j=I+1;jn;j+) if(ajak)k=j; if( ( 【7】 ))t=ak;ak=aI;aI=t; main()int b10,I;printf(“enter the arrayn”);for(I=0;I10;I+) scanf(“%d”.&bI);( 【8】 )printf(“the sorted array: n”);for(I=0;I10;I+) printf(“%d “,bI);pri

23、ntf(“n”);3、判断m是否是素数 #include main()int m,i,k;scanf(“%d”,&m); ( 【9】 )for(i=2;i=k+1) printf(“%d is a prime numbern”,m);else printf(“%d is not a prime numbern”,m);4、假设当年产值为100,工业产值的增长率分别为6%、8%、10%、12%时, 求工业产值分别经过多少年可实现翻番。请填空完成。main()int y4,i; float s4=100,100,100,100,c4=.06,.08,.10,.12; clrscr(); for(i

24、=0;i8;y=+I) printf(“%d %d”,x-,y);2、main() int m=37,n=13;while(m!=n) while(mn) m=m-n; while(nm) n-=m; printf(“m=%dn”,m); 3、main() int x=9;for(;x0;x-) if(x%3=0) printf(“%d”,-x); continue; 4、 main() int a=7,b=2; float x=2.5,y=4.7,z; z=x+a%3*(int)(x+y)%2/4; printf(“%fn”,z); z= (a+b)/2+(int)x%(int)y; pri

25、ntf(“%f”,z); 5、main() int x=0,1,2,3,4,5,6,7,8,9;int s,I,*p;s=0;p=&x0;for(I=1;Ino D. student-no9以下对二维数组进行正确初始化的是( )。I. int a23=1,2,3,4,5,6; J. int a23=1,2,4,5; K. int a3=1,2,3,4,5,6;L. int a2=1,2,3,4; 10二维数组a有m行n列,则在aij之前的元素个数为( )。A. j*n+i B. i*n+j C. i*n+j-1 D. i*n+j+1四、写出下列程序的运行结果。(4分,每题1分)1#includ

26、evoid fun(int x) x=20; main()int x = 10;fun(x);printf(x = %dn, x);运行结果是:2#include void fun(int b4) int j;for(j=0; j4; j+) bj=j; main() int a4 = 1,2,3,4, k;fun(a);for(k=0; k4; k+)printf(%dn, ak); 运行结果是:3#include main()int i = 10;switch(i) case 9: i+=10; case 10: i+=10; case 11: i+=10;break; default :

27、 i+=10;printf(i = %dn, i);运行结果是:4.#includevoid fun() static int a=5; a+; printf(a=%dn, a); main()int m;for(m=0; m=1; m+)fun();运行结果是:五、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。(3分,每空1分)从键盘输入10个整型数据,放入数组a 中,求其最大值及其所在元素的下标位置,并输出。main()int a10, n, pos, max;for (n=0; n10; n+) scanf(%d, &an);max = ; pos =

28、;for (n=0; n max) max = an; pos = ;printf(max=%d, pos=%dn, max, pos);六、下面程序是有错误的程序,请找出其中的错误,并将正确的语句写在相应错误语句的右方空白处。(5分)#include #include int isprime(int m)main()int n, flag; printf(Input n:); scanf(%d, n); flag = isprime(n);if(flag) printf(Yes!n) else printf(No!n);/* 函数功能:判断m是否为素数 函数参数:整型变量m 返回值: 返回1

29、时,表示m是素数;返回0时,表示m不是素数*/int isprime(int *m)int i; for (i=2; i=sqrt(m); i+)if(m%i = 0) return 0;return 1; 七、在下面任意选择2道题编程(14分,每题7分)1 从键盘任意输入某班30个学生的成绩,将成绩按照由高到低顺序打印。2 自己定义一个函数,以实现和函数strlen相同的功能,即任意输入一个字符串,调用该函数可以计算输入字符串的实际长度,然后打印3 编程计算1! + 2! + 3! + 4! + . + 10!的值班号姓名C语言 考试题题号一二三四五六七八九十总分附加题分数说明:考试成绩分为

30、两部分:实验占10%,卷面笔试占90%,满分为100分。本试卷为卷面笔试部分,卷面满分为90分。一、填空题(10分,第1小题4分,其余每空1分)1设有下列登记表,请采用最佳方式定义一种数据类型来表示这些数据的集合。姓名name性别sex职业profession婚姻状况marital未婚年龄singleAge已婚married离婚日期divorcedDay配偶姓名子女人数年year月month日date婚姻状况标记marryFlag maritalmark其中,配偶姓名用spouseName表示,子女人数用children表示。2C语言中构造数据类型包括 、 、 。3C语言中用_表示逻辑值“假”

31、,用_表示逻辑值“真”。4char *p10;这条语句的含义是:_ _ _ _ 。二、判断下列问题描述正确与否,正确的打“”,错误的打“”。(4分 ,每题1分)1如果在程序中定义静态变量和全局变量时,未明确指明其初始值,那么它们可以在程序编译阶段自动被初始化为0值。( ) 2在C语言中,可以用typedef定义一种新的数据类型。( ) 3在C语言中,实参与其对应的形参各占独立的存储单元。( )4. 在C语言中,函数的定义可以嵌套。( )三、选择题:(10分,每题2分)1若用数组名作为函数调用时的实参,则实际上传递给形参的是( )。 A数组的首地址 B. 数组的第一个元素值C数组中全部元素的值

32、D. 数组元素的个数2判断两个字符串s1和s2相等,应当使用( )。A.if (s1 = s2) B. if (s1 = s2) C.if (!strcmp(s1,s2) D. if (strcmp(s1,s2)3在while(x)语句中的x与下面条件表达式等价的是: 。A. x!=0 B. x=1 C. x!=1 D. x=04二维数组a有m行n列,则在aij之前的元素个数为( )。A. j*n+i B. i*n+j C. i*n+j-1 D. i*n+j+15设有声明语句:int a=1,b=0;则执行以下语句后输出为: 。switch (a) case 1: switch (b) cas

33、e 0: printf(*0*);break; case 1: printf(*1*);break; case 2: printf(*2*);break;A)*0* B) *0*2* C)*0*1*2* D) 有语法错误四、写出下列程序的运行结果。(6分,每题2分)1#includevoid Fun(int *y) printf(*y = %dn, *y);*y = 20; printf(*y = %dn, *y);main()int x = 10;printf(x = %dn, x);Fun(&x);printf(x = %dn, x);运行结果是:2#include int Fun(int

34、 x) static int y = 0;y += x;return y; main() int x = 10, y = 0, k;for(k=0; k2; k+) y = Fun(x);printf(y = %dn, y); 运行结果是:3#includemain ( )char a = programming , b = language ;char *p1, *p2 ;int i;p1 = a; p2 = b;for (i=0; i7; i+)if (*(p1+i) = *(p2+i) printf(%c ,*(p1+i) ;printf(n);运行结果是:五、阅读程序,在标有下划线的空

35、白处填入适当的表达式或语句,使程序完整并符合题目要求。(10分,每空2分)1. 下面这个程序用于读入5个整数,当程序读入的数据为正整数时,则显示该数,否则,不显示。读入5个数据后,程序结束运行。#include main()int i, n;for (i=1; i=5; i+)printf(Please enter n:);scanf(%d, &n);if (n = 0) _;printf(n = %dn, n);printf(Program is over!n);2. 韩信点兵。韩信有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;按从1至7报数,最末一个士兵报的数为4;最后再按从1至11报数,最末一个士兵报的数为10。下面程序的主要功能是计算韩信至少有多少兵。#include main()int x = 1; int find = 0; for (x=1; _; x+

温馨提示

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

最新文档

评论

0/150

提交评论