- 相关推荐
C语言经典例题及答案(精选7套)
引导语:C语言应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。以下是小编整理的C语言经典例题及答案,欢迎参考阅读!
C语言经典例题及答案 1
一、求一个任意边长的矩形面积。
#include
void main()
{int w,h,sum;
scanf("%d%d",&w,&h);
sum=w*h;
printf("area=%d",sum);
}
二、求一个任意半径的圆的面积及周长。
#define PI 3.14159
#include
void main()
{float r,area,c;
scanf("%f",&r);
area=PI*r*r;
c=2*PI*r;
printf("area=%fcircle=%f",area,c);
}??
三、已知:w=5, y=4, z=2, 求表达式:w*y/z的值,并输出。
##include
void main()
{ int w,y,z,r;
w=5;
y=4;
z=2;
r=w*y/z;
printf("%5d",r);
}
一、从键盘上输入三个数,求出其中的`最大值,并输出。
#include
void main()
{int a,b,c,max;
scanf("%d%d%d",&a,&b,&c);
max=a;
if(max
if(max printf("max=%d",max); }?? 二、求sin300+sin600+cos300+cos600之和。(注意:30*3.14159/180) #include #define PI 3.14159 #include void main() {float a,b,sum; a=30*PI/180; b=60*PI/180; sum=sin(a)+sin(b)+cos(a)+cos(60); printf("total=%f",sum); } 三、比较两个数的大小。如果x大于y,则输出:x>y,否则输出:x #include void main() {int x,y; scanf("%d,%d",&x,&y); if(x>y) printf("x>y"); else printf("x } 1: 第1题请编写函数fun,其功能使:将两个两位正整数a b合并形成一个整数放在c中。合并的方式使:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。 答案: void fun(int a,int b,long *c) {*c=(b/10)*1000+(a/10)*100+(b%10)*10+a%10;} 2: 第2题请编写一个函数fun,它的功能使:计算n门课程的平均分,计算结果作为函数值返回。 答案: float fun(float *a,int n) {float ave=0.0; int i; for(i=0;i ave+=a; ave/=n; return ave;} 3: 第3题假定输入的字符串中只包含字母和*号。请编写函数fun,它的.功能使:将字符串尾部的*号全部删除,前面和中间的*号不删除。 答案: void fun(char *a) {int i=0; char *p,*q; p=q=a; while(*p) p++; p--; while(*p==‘*’) p--; while(q<=p) {a=*q; i++; q++;} a=‘’;} 4: 第4题请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c中,合并的方式是:将a数的十位和个位数依次放在c的个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。 答案: void fun(int a,int b,long *c) {c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10;} 5: 第5题 n名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。 答案: double fun(strec *h) {double aver=0.0; while(h!=null) {aver+=h->s; hy=h->next;} aver/=n; return aver;} 6: 第6题请编写函数fun,计算并输出给定10个数的方差。 答案: double fun(double x[10]) {int i,j; double s=0.0,s1=0.0; for(i=0;i<10;i++) s1+=x; s1/=10; for(j=0;j<10;j++) s+=(x[j]-s1)*(x[j]-s1); s/=10; s=pow(s,0.5); return s;} 7: 第7题请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c 中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的个位和百位上。 答案: void fun(int a,int b,long *c) {*c=(a/10)*1000+(a%10)*10+(b%10)*100+b/10;} c语言试题 一 选择题(7分,每小题0.5分) 1.C语言源程序的基本单位是( )。 A 过程 B 函数 C 子程序 D 标识符 2.下列程序的输出结果是( )。 main( ) { int a=7,b=5; printf("%d ",b=b/a); } A 5 B 1 C 0 D不确定值 3.假设变量a,b均为整型,表达式(a=5,b=2,a>b?a++:b++,a+b)的值是( )。 A 7 B 8 C 9 D 2 4.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。 a=125.534; a=(int)125.521%4; a=5<<2; A 125,31,1 B 125,1,20 C 125,31,20 D 125.534,2,20 5.设有如下程序段,下面描述中正确的是 ( )。 int k=10; while(k=0) k=k-1; A 循环执行一次 B循环是无限循环 C循环体语句一次也不执行 D循环体语句执行一次 6.以下程序的输出结果为( )。 int i; void prt( ) { for(i=5;i<8;i++) printf("%c",*); printf(" "); } main( ) { for(i=5;i<=8;i++) prt( ); } A *** B *** *** *** *** C *** *** D * * * 7.在C语言程序中,以下说法正确的是( )。 A函数的定义可以嵌套,但函数的调用不可以嵌套 B函数的定义不可以嵌套,但函数的调用可以嵌套 C函数的定义和函数的调用都不可以嵌套 D函数的定义和函数的调用都可以嵌套 8.以下函数调用语句中含有( )个实参。 func((e1,e2),(e3,e4,e5)); A 2 B 3 C 5 D 语法错误 9.以下程序的输出结果为( )。 #define ADD(x) x*x main( ) { int a=4,b=6,c=7,d=ADD(a+b)*c; printf("d=%d",d); } A d=70 B d=80 C d=140 D d=700 10.已知职工记录描述如下,在Turbo C中,系统为变量w分配( )字节的空间。 struct worker { int no; char name[20]; char sex; union { int day; int month; int year;}birth; } w; A 29 B 20 C 25 D 6 11.设有以下定义,值为5的枚举常量是( )。 enum week{sun,mon=4,tue,wed,thu,fri,sat} w; A tue B sat C fri D thu 12.下面选项中正确的赋值语句是(设 char a[5],*p=a;)( )。 A p="abcd"; B a="abcd"; C *p="abcd"; D *a="abcd"; 13.设有以下程序段,则值为6的表达式是( )。 struct st { int n; struct st *next;}; static struct st a[3]={5,&a[1],7,&a[2],9,0 },*p; p=&a[0]; A p++->n B ++p->n C p->n++ D (*p).n++ 14.C语言中的文件类型只有( )。 A 索引文件和文本文件两种 B 文本文件一种 C 二进制文件一种 D ASCII码文件和二进制文件两种 二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分) 1.在Turbo C中,整型数据在内存中占2个字节。( ) 2.int i=20;switch(i/10){case 2:printf("A");case 1:printf("B");}的输出结果为A。( ) 3.break语句用在循环体中,可结束本层循环,continue语句用在循环体中,可结束本次循环。( ) 4.函数的递归调用不过是一个函数直接或间接地调用它自身。( ) 5.函数strlen("ASDFG ")的值是7。( ) 6.通过return语句,函数可以带回一个或一个以上的返回值。( ) 7.结构体类型只有一种。 ( ) 8.char *p="girl";的含义是定义字符型指针变量p,p的值是字符串"girl"。( ) 9.若有定义:char *p(char a[10]);则p是函数名。( ) 10.用fopen("file","r+");打开的文件"file"可以进行修改。 ( ) 三 写出下列程序的运行结果(10分,每小题2分) 1.float average (float array[10]) { int i; float aver,sum=array[0]; for (i=1;i<10;i++) sum=sum+array[i]; aver=sum/10; return(aver); } main( ) { float score[10]={89,67.5,78,91,56,82.5,65,70,79,88},aver; int i; aver=average (score); printf (“average score is %5.2f ”,aver); } 2.main( ) { char a[5]={‘A’,‘B’,‘C’,‘D’,‘E’},*p=a,**pa; printf(“%2c”,*p); printf(“ ”); printf(“%2c ”,**(pa=&p)); } 3.main( ) { int a,b,s=0; for(a=1,b=1;a<=100;a++) { if(b>=20) break; if(b%3==1) { b+=3; continue; } b-=5; } printf(“a=%d b=%d ”,a,b); } 4.main() { printf(“main( ) :%d ”,fact(5)); fact(-5); } fact(int value) { int f; if(value<0) { printf(“Arg error "); return(-1); } else if(value==1||value==0) f=1; else f=value*fact(value-1)+1; printf(“This called value=%d ”,f); return f; } 5.main( ) { int a=012,b=0x12,k=12; char c=‘102’,d=‘ ’; printf(“a=%d b=%d k=%d ”,a,b,k); printf(“c=%c,d=%c%o ”,c,d,a); a=‘A’; c=49; printf(“a=%d c=%c ”,a,c); } 四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分) 1.有一个3*4矩阵,求其中的最大元素。 max_value( (1) ) { int i,j,max; max=array[0][0]; for(i=0;i<3;i++) for(j=0;j<4;j++) if(array[i][j]>max) max=array[i][j]; (2) ; } main( ) { int a[3][4], i,j; for(i=0;i<3;i++) for(j=0;j<4;j++) (3) ; printf(“max value is %d ”,max_value(a)); } 2.输入x、y两个整数,按先大后小的顺序输出x、y。 #include “stdio.h” main( ) { int x,y, *px,*py, (4) ; scanf(“%d%d”,&x,&y); (5) ; (6) ; if(x { p=px; px=py; py=p; } printf(“x=%d,y=%d ”,x,y); printf(“MAX=%d,MIN=%d ”,*px,*py); } 3.用选择排序法对任意10个整数按照由小到大排序。 main() { int a[11],i,j,k,t; printf("Please input 10 numbers: "); for(i=1;i<11;i++) scanf("%d",&a[i]); printf(" "); for(i=1;i<=9;i++) { (7) ; for(j=i+1; (8) ;j++) if(a[j]>a[k]) k=j; if(k!=i) { t=a[k]; a[k]=a[i]; a[i]=t;} } printf("The sorted numbers: "); for(i=1;i<11;i++) printf("%d ",a[i]); } 答案 一 选择题(7分,每小题0.5分) 1. B 2. C 3. B 4. B 5. C 6. A 7. B 8. A 9. A 10. C 11. A 12. A 13. B 14. D 二 判断对错,对的划“√”,错的划“×”(5分,每小题0.5分) 1.× 2.× 3.√ 4.√ 5.× 6.× 7.× 8.× 9.√ 10.√ 三 写出下列程序的运行结果(10分,每小题2分) 1. 2. 3. 4. 5. 四 阅读下列程序,在 处填入适当内容,使程序完整(8分,每个空1分) 1.(1)int array[3][4](int array[][4]) (2)return(max) (3)scanf(“%d”,&a[i][j]) 2.(4)*p (5)px=&x(py=&y) (6)py=&y(px=&x) 3.(7) (8) 2003C语言试题3 一 选择题(24分,每小题2分) 1.已知函数fread的调用形式为fread(buffer,size,count,fp),其中buffer代表的是( )。 A 存放读入数据项的存储区 B 存放读入数据的地址或指向此地址的指针 C 一个指向所读文件的文件指针 D 一个整形变量,代表要读入的数据项总数 2.以下程序的输出结果为( )。 main( ) { int i=010,j=10; printf("%d,%d ",i++,j--); } A 11,9 B 9,10 C 8,10 D 9,9 3.设a为int型变量,执行下列赋值语句后,a的取值分别是( )。a=125.534;a=20.0/3;a=(int)125.521%4;a=5<<2; A 125,6,31,1 B 125,6,1,20 C 125,6.666666,31,20 D 125.534,6.666666,2,20 4.设i和k都是int类型,则for循环语句( )。 for(i=0,k=-1;k=1;i++,k++) printf("****"); A 循环结束的条件不合法 B 循环体一次也不执行 C 循环体只执行一次 D 是无限循环 5.以下程序的输出结果为( )。 main( ) { char c; int i; for(i=65;i<68;i++) { c=i+32; switch(c) { case a:case b:case c:printf("%c,",c);break; default:printf("end");} } } A a,b,c,end B a,a,a,end C a,a,a, D a,b,c, 6.函数调用语句:fseek(fp,-10L,2);的含义是( )。 A 将文件位置指针从文件末尾处向文件头的方向移动10个字节 B 将文件位置指针从当前位置向文件头的方向移动10个字节 C 将文件位置指针从当前位置向文件末尾方向移动10个字节 D 将文件位置指针移到距离文件头10个字节处 7.以下程序的输出结果为( )。 main( ) { char s1[40]="country",s2[20]="side"; int i=0,j=0; while(s1[i]!=) i++; while(s2[j]!=) s1[i++]=s2[j++]; s1[i]=0; printf("%s ",s1); } A side B country C sidetry D countryside 8.下列说法不正确的是( )。 A 主函数main中定义的变量在整个文件或程序中有效 B 不同函数中,可以使用相同名字的变量 C 形式参数是局部变量 D 在一个函数内部,可以在复合语句中定义变量,这些变量只在本复合语句中有效 9.在下列程序段中,枚举变量 c1的值是( )。 enum color { red,yellow,blue=4,green,white}c1; c1=yellow; c1=white; A 1 B 3 C 5 D 6 10.设有说明 int (*ptr)();其中标识符ptr是( )。 A 是一个指向整形变量的指针 B 是一个指针,它指向一个函数值是int的函数 C 是一个函数名 D定义不合法 11.定义由n个指向整形数据的指针组成的数组p,其正确的方式为( )。 A int p; B int (*p)[n]; C int *p[n]; D int (*p)( ); 12.具有相同类型的指针类型变量p与数组a,不能进行的.操作是( )。 A p=a; B *p=a[0]; C p=&a[0]; D p=&a; 二 判断对错,对的划“√”,错的划“×”(20分,每小题2分) 1.参加位运算的数据可以是任何类型的数据。( ) 2.若有定义和语句:int a;char c;float f;scanf("%d,%c,%f",&a,&c,&f);若通过键盘输入:10,A,12.5,则a=10,c=‘A’,f=12.5。( ) 3.C语言把文件看作是一个字符(字节)的序列。( ) 4.若有宏定义:#define S(a,b) t=a;a=b;b=t由于变量t没定义,所以此宏定义是错误的。( ) 5.在Turbo C中,下面的定义和语句是合法的:file *fp;fp=fopen("a.txt","r");( ) 6.若有定义:char s[ ]="china";则Turbo C系统为数组s开辟6个字节的内存单元。( ) 7.若有定义和语句:int a[3][3]={{3,5},{8,9},{12,35}},i,sum=0;for(i=0;i<3;i++) sum+=a[i][2-i];则sum=21。( ) 8.若有定义和语句:struct student { int num; char name[10]; float score;} s[5]={{1,"lili",98.5},{9,"xiaohua",66}},*p=s;printf("%d",*p++);输出结果是1。( ) 9.在程序中定义了一个结构体类型后,可以多次用它来定义具有该类型的变量。( ) 10.在Turbo C中,此定义和语句是合法的:enum aa{ a=5,b,c}bb;bb=(enum aa)5;( ) 三 写出下列程序的运行结果(36分,每小题6分) 1.main( ) { int i=29,j=6,k=2,s; s=i+i/j%k-9; printf(“s=%d ”,s); } 2.main( ) { int x=31,y=2,s=0; do { s-=x*y; x+=2; y-=3;} while( x%3==0); printf(“x=%d y=%d s=%d ”,x,y,s); } 3.main( ) { int a[6]={10,20,30,40,50,60},i; invert(a,0,5); for(i=0;i<6;i++) printf(“%d,”,a[i]); printf(“ ”); } invert(int s[ ],int i,int j) { int t; if(i { invert(s,i+1j-1); t=s[i];s[i]=s[j];s[j]=t; } } 4.#include main() { char str[ ]=“The C program”,c; int i; for(i=2;(c=str[i])!=‘’;i++) { switch(c) { case ‘g’: ++i; break; case ‘o’: continue; default: printf(“%c”,c); continue; } printf(“*”); } printf(“ ”); } 5.struct w { char low; char high; }; union u { struct w byte; short word; }uw; main( ) { int result; uw.word=0x1234; printf(“word value:%04x ”,uw.word); printf(“high byte:%02x ”,uw.byte.high); printf(“low byte:%02x ”,uw.byte.low); uw.byte.low=0x74; printf(“word value:%04x ”,uw.word); result=uw.word+0x2a34; printf(“the result:%04x ”,result); } 6.main() { char *s2=“I love China!”,**s1=&s2; char *s3,c,*s4=“w”; s3=&c; *s3=‘H’; s2=s2+2; printf(“%s %c %s %c ”,s2,*s3,s4,**s1); } 四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分) 1. 百马百担问题:有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,问大、中、小马各多少匹? main( ) { int hb,hm,hl,n=0; for(hb=0;hb<=100;hb+= (1) ) for(hm=0;hm<=100-hb;hm+= (2) ) { hl=100-hb- (3) ; if(hb/3+hm/2+2* (3) ==100) { n++; printf("hb=%d,hm=%d,hl=%d ",hb/3,hm/2,2*hl); } } printf("n=%d ",n); } 2.用“起泡法”对输入的10个字符排序后按从小到大的次序输出。 #define N 10 char str[N]; main() { int i,flag; for(flag=1;flag==1;) { scanf("%s",str); flag=0; printf(" "); } sort(___(4)___); for(i=0;i printf("%c",str[i]); printf(" "); } sort(char str[N]) { int i,j; char t; for(j=1;j for(i=0;(i if(str[i]>str[i+1]) { t=str[i]; ____(5)____; ____(6)____; } } 3.以下程序是一个函数,功能是求二阶矩阵(m行n列矩阵)的所有靠外侧的各元素值之和。(本程序中二阶矩阵用一维数组来表示。) 例如,矩阵为: 3 0 0 3 2 5 7 3 1 0 4 2 则所有靠外侧的各元素值之和为3+0+0+3+2+3+1+0+4+2=18。 add(int m,int n,int arr[]) { int i,j,sum=0; for(i=0;i for(j=0;j sum=sum+ (7) ; for(j=0;j for(i=1; (8) ;i++) sum=sum+arr[i*n+j]; return(sum); } 4.用指针作函数参数,编程序求一维数组中的最大和最小的元素值。 #define N 10 main() { void maxmin(int arr[],int *pt1,int *pt2,int n); int array[N]={10,7,19,29,4,0,7,35,-16,21},*p1,*p2,a,b; p1=&a; p2=&b; maxmin(array,p1,p2,N); printf("max=%d,min=%d",a,b); } void maxmin(int arr[],int *pt1,int *pt2,int n) { int i; *pt1=*pt2=arr[0]; for(i=1;i { if(arr[i]>*pt1) (9) ; if(arr[i]<*pt2) (10) ; } } 答案 一 选择题(24分,每小题2分) 1.( B ) 2.( C ) 3.( B ) 4.( D ) 5.( D ) 6.( A ) 7.( D ) 8.( A ) 9.( D ) 10.( B ) 11.( C ) 12.( D ) 二 判断对错,对的划“√”,错的划“×”(20分,每小题2分) 1.( × ) 2.( √ ) 3.( √ ) 4.( × ) 5.( × ) 6.( √ ) 7.( √ ) 8.( × ) 9.( √ ) 10.( √ ) 三 写出下列程序的运行结果(36分,每小题6分) 1. s=20 2.x=35 y=-4 s=-29 3.60,50,40,30,20,10, 4.e C pr*am 5.word value:1234 6.love China! H w l high byte:12 low byte:34 word value:1274 the result:3ca8 四 阅读下列程序,在 处填入适当内容,使程序完整(20分,每个空2分) 1.(1) 3 (2) 2 (3)hm hl 2.(4) str (5) str[i]=str[i+1] (6) str[i+1]=t 3.(7) arr[i*n+j](或者arr[i*10+j]) (8) i 4.(9) *ptr1=arr[i] (10) *ptr2=arr[i] 1.下列叙述中正确的是()。 A.所有数据结构必须有根结点 B.所有数据结构必须有终端结点(即叶子结点) C.只有一个根结点,且只有一个叶子结点的数据结构一定是线性结构 D.没有根结点或没有叶子结点的数据结构一定是非线性结构 【答案】D 【解析】D项正确,线性结构的特点是:①集合中必存在“第一个元素"且惟一②集合中必存在“最后一个元素”且惟一;③除最后一个元素外,其他数据元素均有惟一的“后继”,④除第一个元素外,其他数据元素均有惟一的“前驱”。所以没有根结点或没有叶子结点的数据结构一定是非线性结构。AB两项错误,不是所有数据结构都必须有根结点和叶子结点;C项错误,数据结构中若有中间结点不满足只有一个前件或者后件的条件,就不是线性结构。答案选择D选项。 2.以下叙述中错误的是()。 A. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 B. C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件 C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 D. C语言源程序经编译后生成后缀为.obj的目标程序 【答案】A 【解析】A项错误,注释语句不会被翻译成二进制的机器指令。C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的'可执行文件。答案选择A选项。 3. C语言主要是借助以下()功能来实现程序模块化的。 A.定义函数 B.定义常量和外部变量 C.三种基本结构语句 D.丰富的数据类型 【答案】A 【解析】C程序的模块化主要通过函数来实现。C语言允许对函数单独进行编译,从而可以实现模块化。答案选择A选项。 4.有以下程序段: char ch; int k; ch='a'; k=12; print("%c,%d,",h,ch,k); printf("k=%d",k); 已知字符a的ASCII码十进制值为97,则执行上述程序段后输出的结果是()。 A.因变量类型与格式描述符的类型不匹配输出无定值 B.输出项与格式描述符个数不符,输出为零值或不定值 C.a,97,12k=12 D. a,97,k=12 【答案】D 【解析】字符变量的值是该字符的ASCII码值,可以参与整型变量所允许的任何运算。"ch='a",%c表示以字符格式输出ch的值,所以输出为a;%d表示以十进制代码的形式输出ch的值,为97;k没有对应的输出格式,不输出。在第二个语句中,首先输出"k=",然后以十进制代码输出k的值,为12。答案选择D选项。 5.下列叙述中正确的是()。 A.栈是“先进先出”的线性表 B.队列是“先进后出"的线性表 C.循环队列是非线性结构 D.有序线性表既可以采用顺序存储结构,也可以采用链式存储结构 【答案】D 【解析】有序的线性表既可采用顺序存储结构,也可以采用链式存储结构。A项错误,栈是“先进后出"的线性表B项错误,队列是“先进先出"的线性表;C项错误,循环队列是线性结构的,有序的线性表既可采用顺序存储结构,也可采用链式存储结构。 6.某二叉树的中序序列为DCBAEFG,后序序列为DCBGFEA,则该二叉树的深度(根结点在第1层)为()。 A. 5 B. 40 C.3 D. 2 【答案】B 【解析】二叉树的后序序列为DCBGFEA,则A为根结点。中序序列为DCBAEFG,则DCB为左子树结点,EFG为右子树结点。同理B为C父结点,C为D父结点。根据分析,可画出左子树,同理E为F父结点,F为G父结点。根据分析,可画出右子树,故二叉树深度为4层。答案选择B选项。 7.设有定义:struct{intn;floatx;}s[2],m[2]={{10,2.8},{0,0.0}};,则以下赋值语句中正确的是()。 A. s[0]=m[1]; B. s=m; C.s.n=m.n; D. s[2].x=m[2].x; 【答案】A 【解析】定义了结构体类型数组s,长度为2,结构体类型数组m,长度为2,并对数组m进行了初始化。同类型的结构体可以直接用变量名实现赋值,A项正确;数组名为数组首地址,地址常量之间不可以相互赋值,B项错误;数组名为地址常量不是结构体变量,不能引用成员,C项错误;s[2]与m[2]数组越界,D项错误。答案选择A选项。 8.关于C语言标识符,以下叙述错误的是()。 A.标识符可全部由数字组成 B.标识符可全部由下划线组成 C.标识符可全部由小写字母组成 D.标识符可全部由大写字母组成 【答案】A 【解析】C语言标识符只能由字母、数字、下划线构成,且只能以字母、下划线开头,故答案选择A选项。 9.以下程序段中的变量已定义为int类型,则 sum=pAd=5; pAd=sum++,++pAd,pAd++; printf("%d",pAd); 程序段的输出结果是()。 A. 6 B. 4 C. 5 D. 7 【答案】D 【解析】自增和自减运算符的两种用法:前置运算,运算符放在变量之前,规则是先使变量的值增(或减)1,然后以变化后表达式的值参与其他运算;后置运算,运算符放在变量之后,规则是变量先参与其他运算,然后再使变量的值增(或减)1。执行pAd=sum++,sum++是后置自增,执行完后,pAd=5,sum=6。++pAd和pAd++语句中没有其他运算,即效果相同,pAd分别加1,两句执行完后,pAd7。答案选择D选项。 10.设循环队列为Q(1:m),其初始状态为front=rear=m。经过一系列入队与退队运算后,front=20,rear=15。现要在该循环队列中寻找最小值的元素,最坏情况下需要比较的次数为()。 A. 5 B. 6 C.m-5 D. m-6 【答案】D 【解析】循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用队首指针指向队首元素的前一个位置,因此,从队首指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,队列初始状态为front=rear=m,当front=20,rear=15时,队列中有m-20+15=m-5个元素,最坏情况下需要比较次数为m-6次。答案选择D选项。 1.C语言编译程序的功能是()。 A.执行一个C语言编写的源程序 B.把C源程序翻译成ASCII码 C.把C源程序翻译成机器代码 D.把C源程序与系统提供的库函数组合成一个二进制执行文件 【答案】C 【解析】编译程序的功能是将“高级语言”翻译为“机器语言”。每条C语言语句,经过编译最终都将转换成二进制的机器指令。答案选择C选项。 2.计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是()。 A. C语言程序仅可以编译执行 B. C语言程序仅可以解释执行 C. C语言程序既可以编译执行,又可以解释执行; D.以上说法都不对 【答案】A 【解析】编译执行是指程序执行前需要一个专门的编译过程把程序编译成机器语言的文件,再次运行时不需要重新翻译,执行效率高;解释执行是指每个语句都是执行的时候才翻译,执行效率低。用C语言编写的程序必须经过编译器编译后,转换为二进制的机器指令来运行。答案选择A选项。 3.以下叙述中错误的是()。 A. C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令 B. C程序经过编译、链接步骤之后才能形成一个真正可执行的二进制机器指令文件 C.用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中 D. C语言源程序经编译后生成后缀为的目标程序 【答案】A 【解析】A项错误,注释语句不会被翻译成二进制的机器指令。C源程序经过C编译程序编译之后生成后缀为的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把文件与各种库函数连接起来生成一个后缀为的可执行文件。答案选择A选项。 4.以下叙述中错误的是() A.C语言的可执行程序是由一系列机器指令构成的 B.用C语言编写的源程序不能直接在计算机上运行 C.通过编译得到的二进制目标程序需要连接才可以运行 D.在没有安装C语言集成开发环境的机器上不能运行C源程序生成的exe文件 【答案】D 【解析】A项正确,C语言的可执行程序是由一系列机器指令组成的;BC项正确,用C语言编写的源程序必须经过编译,生成二进制目标代码,再经过连接才能运行;D项错误,C语言经过编译链接后的二进制目标代码可以脱离C语言集成开发环境独立运行。答案选择D选项。 5.以下叙述正确的是()。 A. C编译程序把文件后缀为.c的源程序文件编译成文件后缀为的二进制文件 B. C编译程序把文件后缀为.c的源程序文件编译成文件后缀为的可执行文件 C. C编译程序把文件后缀为的二进制文件编译成文件后缀为的可执行文件 D.链接程序把文件后缀为.c的'源程序文件链接成文件后缀为的可执行文件 【答案】A 【解析】C编译程序把文件后缀为C的源程序文件编译成文件后缀为的二进制文件,链接将一个或多个目标文件与程序用到的库文件连接起来,形成一个可以在操作系统直接运行的执行程序,故排除B、C、D项,答案选择A选项。 6.以下叙述中正确的是(A.在C语言程序中,main函数必须放在其他函数的最前面 B.每个后缀为.c的C语言源程序都可以单独进行编译 C.在C语言程序中,只有main函数才可以单独进行编译 D.每个后缀为.c的C语言源程序都应该包含一个main函数 【答案】B 【解析】main函数可以在程序的任何位置。每一个可执行的C程序都必须有一个且只能有一个主函数。后缀名为.c的C语言源程序都可以单独进行编译。main函数只是让执行程序的系统知道该从哪里开始执行程序(从主函数处执行),其他有关这个程序的子函数是通过函数调用来实现其功能(不需main函数)。答案选择B选项。 7.以下叙述中错误的是()。 A. C语言编写的函数源程序,其文件名后缀可以是.c B. C语言编写的函数都可以作为一个独立的源程序文件 C. C语言编写的每个函数都可以进行独立的编译并执行; D.一个C语言程序只能有一个主函数 【答案】C 【解析】C源程序经过C编译程序编译之后生成一个后缀为的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把此文件与C语言提供的各种库函数连接起来生成一个后缀为的可执行文件。只有含有main函数的经过编译链接才能执行。答案选择C选项。 8.以下叙述中错误的是(A.一个C程序可以包含多个不同名的函数 B.一个C程序只能有一个主函数 C. C程序在书写时,有严格的缩进要求,否则不能编译通过 D. C程序的主函数必须用main作为函数名 【答案】C 【解析】一个C程序有且只有一个主函数main。一个C程序可以包含多个不同名字的子函数。C程序在书写时没有严格的缩进要求。答案选择C选项。 9.以下叙述中正确的是()。 A. C语言规定必须用main作为主函数名,程序将从此开始执行 B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行 C. C语言程序将从源程序中第一个函数开始执行; D. main的各种大小写拼写形式都可以作为主函数名,如:MAIN,Main等 【答案】A 【解析】用户不能指定某函数为主函数,C语言规定,程序从main函数开始执行,从main函数退出,C语言函数名区别大小写。答案选择A选项。 10.下列叙述中错误的是()。 A. C程序可以由一个或多个函数组成 B. C程序可以由多个程序文件组成 C.一个C语言程序只能实现一种算法 D.一个C函数可以单独作为一个C程序文件存在 【答案】C 【解析】一个C程序可以有一个或多个程序文件,也可以有一个或多个函数,所以一个C语言程序可以实现多种算法,答案选择C选项。 1.若有以下数组说明,则i=10;a[a[i]]元素数值是(C )。 int a[12]={1,4,7,10,2,5,8,11,3,6,9,12}; A、10 B、9 C、6 D、5 先算a[a[i]]内层的a[i],由于i=10,因此a[i]即a[10]. a[10]对应下面数组中的元素为9.因此a[a[i]]即为a[9] a[9]对应下面数组中的元素为6.因此a[9]即为6 2.若有说明:int a[][3]={{1,2,3},{4,5},{6,7}};则数组a的第一维的大小为: ( B ) A、2 B、3 C、4 D、无确定值 5 7 D、3 6 9 二维数组的一维大小,即指二维数组的行数,在本题中,按行对二维数组赋值,因此内层有几个大括号,数组就有几行 3.对二维数组的.正确定义是(C ) 详见教材P149~152,二维数组的定义、初始化 类型符数组名[常量表达式][常量表达式] 二维数组可以看做是矩阵 类型符是指数组中数组元素的类型;数组名要符合标识符命名规则;第一个常量表达式是指数组的行数;第二个常量表达式是指数组的列数;常量表达式的值只能是整数,不可以是变量,而且从1开始计数。 一维数组初始化时可以省略数组长度 二维数组初始化时可以省略行数,但不能省略列数 选项A,B,都省略了列数 选项D,不符合二维数组定义的一般形式,行、列常量表达式应该放在不同的[]中 A、int a[ ][ ]={1,2,3,4,5,6}; B、int a[2] []={1,2,3,4,5,6}; C、int a[ ] [3]={1,2,3,4,5,6}; D、int a[2,3]={1,2,3,4,5,6}; 4.已知int a[3][4];则对数组元素引用正确的是__C___ A、a[2][4] B、a[1,3] C、a[2][0] (1)算法的时间复杂度是指_______。 A)执行算法程序所需要的时间 B)算法程序的长度 C)算法执行过程中所需要的基本运算次数 D)算法程序中的指令条数 答案:C 评析:所谓算法的时间复杂度,是指执行算法所需要的计算工作量。 (2)下列叙述中正确的是________。 A)线性表是线性结构B)栈与队列是非线性结构 C)线性链表是非线性结构D)二叉树是线性结构 答案:A 评析:一般将数据结构分为两大类型:线性结构与非线性结构。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。 (3)下面关于完全二叉树的叙述中,错误的是_________。 A)除了最后一层外,每一层上的结点数均达到最大值 B)可能缺少若干个左右叶子结点 C)完全二叉树一般不是满二叉树 D)具有结点的完全二叉树的深度为[log2n]+1 答案:B 评析:满二叉树指除最后一层外每一层上所有结点都有两个子结点的二叉树。完全二叉树指除最后一层外,每一层上的结点数均达到最大值,在最后一层上只缺少右边的若干子结点(叶子结点)的二叉树。 C语言笔试题答案篇 (1)结构化程序设计主要强调的是_________。 A)程序的规模B)程序的易读性 C)程序的执行效率D)程序的可移植性 答案:B 评析:结构化程序设计主要强调的是结构化程序清晰易读,可理解性好,程序员能够进行逐步求精、程序证明和测试,以保证程序的正确性。 (2)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是________。 A)概要设计B)详细设计C)可行性分析D)需求分析 答案:D 评析:需求分析是对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件规格说明书及初步的用户手册,提交评审。 (3)数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是_________。 A)控制流B)加工C)数据存储D)源和潭 答案:A 评析:数据流图从数据传递和加工的角度,来刻画数据流从输入到输出的移动变换过程。数据流图中的主要图形元素有:加工(转换)、数据流、存储文件(数据源)、源和潭。 (4)软件需求分析一般应确定的是用户对软件的__________。 A)功能需求B)非功能需求C)性能需求D)功能需求和非功能需求 答案:D 评析:软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,是用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。 C语言笔试题答案篇 (1)下述关于数据库系统的叙述中正确的是________。 A)数据库系统减少了数据冗余 B)数据库系统避免了一切冗余 C)数据库系统中数据的一致性是指数据类型的一致 D)数据库系统比文件系统能管理更多的数据 答案:A 评析:由数据的共享自身又可极大地减少数据冗余性,不仅减少了不必要的存储空间,更为重要的是可以避免数据的不一致性。所谓数据的一致性是指在系统中同一数据的不同出现应保持相同的值。 (2)关系表中的每一横行称为一个________。 A)元组B)字段C)属性D)码 答案:A 评析:在关系数据库中,关系模型采用二维表来表示,简称“表”。二维表是由表框架及表元组组成。在表框架中,按行可以存放数据,每行数据称为元组。 (3)数据库设计包括两个方面的设计内容,它们是________。 A)概念设计和逻辑设计B)模式设计和内模式设计 C)内模式设计和物理设计D)结构特性设计和行为特性设计 答案:A 评析:数据库设计可分为概念设计与逻辑设计。概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。逻辑设计的主要工作是将ER图转换为指定的RDBMS中的关系模型。 (4)请读程序: #include main { int a;float b,c; scanf(“%2d%3P%4f’,&a,&b,&C); printf(” a=%d,b=%ec。%f ”,a,b,C); } 若运行时从键盘上输入9876543210l,则上面程序的输出结果是________。 A)a=98,b=765,c=432 1 B)a=1 0,b=432,c=8765 C)a=98,b=765.000000,c=432 1.000000 D)a=98,b=765.0,c=432 1.0 答案:C 评析:scanf把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。 (5)一个良好的算法由下面的基本结构组成,但不包括__________。 A)顺序结构B)选择结构C)循环结构D)跳转结构 答案:D 评析:1966年,Bohra和Jacopini提出了以下三种基本结构,用这三种基本结构作为表示一个良好算法的基本单元:1、顺序结构;2、选择结构;3、循环结构。 (6)请选出以下程序的`输出结果________。 #include sub(x,y,z) int x,y,星符号z: {星符号z变化,所以此次函数被调用后,a的值为y-x=-5,同理可知,在sub(7,a,&b)后,b的值发生变化,其值为-5-7=-12,在sub(a,b,&C)后,c的值发生变化,其值为-12-(-5)=-7。 (7)下面程序在屏幕上的输出是________。 main { printf(”ab c”); } A)ab c B)a c C)abc D)ab c 答案:B 评析:c语言中允许使用一种特殊形式的字符常量,、就是以一个“”开头的字符序列,这样的字符称为“转义字符”。常用的转义字符有: ,换行;,水平制表;,退格;,回车。 (8)若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是_______。 A)pb=&x; B)pb=x; C)星符号pb=星符号、/)还包括自增自减运算符(++、–),在c语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为i++ ++ +i,显然该表达式不合c语言语法。 (10)若要用下面的程序片段使指针变量p指向一个存储整型变量的动态存储单元 int星符号int) D)(int星符号) 答案:D 评析:不论p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的格式为(数据类型+)。 (11)下面程序输出的结果是__________。 main { int i=5,J=9,x; x=(I==j?i:(j=7)); printf(” %d,%d”,I,J); } A)5,7 B)5,5 C)语法错误D)7,5 答案:A 评析:条件表达式的一般形式为:表达式I?表达式2:表达式3;先求解表达式1,若为真则求解表达式2;若表达式l的值为假,则求解表达式3。本题中先判断i==j,不等,执行j=7;然后执行x=7。故本题为A。 【C语言经典例题及答案】相关文章: C语言入门例题讲解07-10 C语言习题及答案02-26 C语言试题及答案07-26 C语言笔试题及答案05-13 C语言模拟试题及答案06-17 C语言模拟试题及答案03-26 C语言练习题及答案03-11 C语言测试题及答案07-03 C语言测试试题及答案08-02 C语言经典例题及答案 2
C语言经典例题及答案 3
C语言经典例题及答案 4
C语言经典例题及答案 5
C语言经典例题及答案 6
C语言经典例题及答案 7