C语言练习题集(带答案解析)_第1页
C语言练习题集(带答案解析)_第2页
C语言练习题集(带答案解析)_第3页
C语言练习题集(带答案解析)_第4页
C语言练习题集(带答案解析)_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、单项选择题1. ( A )是构成C语言程序的基本单位。A、函数B 、过程 C 、子程序 D、子例程2. C语言程序从 C 开始执行。A)程序中第一条可执行语句B)程序中第一个函数C)程序中的main函数 D)包含文件中的第一个函数3、以下说法中正确的是( C )。A 、 C语言程序总是从第一个定义的函数开始执行B、 在C语言程序中,要调用的函数必须在main()函数中定义C、C语言程序总是从 main()函数开始执行D、C语言程序中的 main()函数必须放在程序的开始部分4. 下列关于C语言的说法错误的是( B )。A)C程序的工作过程是编辑、编译、连接、运行B)C语言不区分大小写。C)C程

2、序的三种基本结构是顺序、选择、循环D)C程序从main函数开始执行D.i nt t5. 下列正确的标识符是(C )。A. -a1B.ai C.a2_i6. 下列C语言用户标识符中合法的是( B )。A)3ax B)x C)case D)-e2 E)u nion7. 下列四组选项中,正确的C语言标识符是(C )。123A) %x B ) a+b C )a123 D )8、下列四组字符串中都可以用作A、print _3d db8 aBc BC、str_1 Cpp pow while D9. C语言中的简单数据类型包括(A 、整型、实型、逻辑型C、整型、字符型、逻辑型C语言程序中的标识符的是(A )

3、、Iam one_half start$it 3pai、Pxq My-book line# His.ageD )。B、整型、实型、逻辑型、字符型D、整型、实型、字符型10.在C语言程序中,表达式 5%2的结果是C_A)2.5B)2C)1D)311. 如果int a=3,b=4;则条件表达式ab? a:b的值是 AA) 3 B) 4 C) 0 D) 112. 若 int x=2,y=3,z=4 则表达式 xage D) (*p).age33. 设有如下定义:struck sk int a;float b;data;int *p;若要使P指向data中的a域,正确的赋值语句是A) p=&a;B)

4、p=data.a;C) p=&data.a;D)*p=data.a;34. 设有以下说明语句:typedef struct stu int a;float b; stutype;则下面叙述中错误的是(D )。A、struct是结构类型的关键字B struct stu是用户定义的结构类型C、a和b都是结构成员名D stutype是用户定义的结构体变量名35. 语句 int *p;说明了C _。A) p是指向一维数组的指针B) p是指向函数的指针,该函数返回一 int型数据C) p是指向int型数据的指针D) p是函数名,该函数返回一指向int型数据的指针36. 下列不正确的定义是(A )。A.

5、int *p=&i,i;B.i nt *p,i;C. int i,*p=&i;D.int i,*p;37. 若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是:(D )A) p=q B ) *p=*q C ) n=*q D ) p=n38. 有语句:int a10,;则_B_是对指针变量p的正确定义和初始化。A)int p=*a; B)int *p=a; C)int p=&a; D)int *p=&a;39. 若有说明语句“ int a5,*p=a;” ,则对数组元素的正确引用是 (C)。A.ap B.paC.*(p+2)D.p+2 40.有如下程序int a10=1,2,

6、3,4,5,6,7,8,9,10,*P=a;则数值为9的表达式是_BA) *P+9 B) *(P+8) C) *P+=9 D) P+841. 在C语言中,以_D_作为字符串结束标志A) n B) C)O D)0 42. 下列数据中属于“字符串常量”的是(A )。D. a则关于两个数组长度的正确描以上答案都不对A. “ a” B.ABC C. abc043. 已知 char x=hello, y=h,e,a,b,e;,述是B .A)相同 B)x 大于y C)x 小于y D)44. 下面各函数中能实现打开文件功能的是A_A) fope nB) fgetcC) fputcD) fclose45. 下

7、列语句中,把变量 fp说明为一个文件型指针的是(A )。A) FILE *fp; B) FILE fp;filel, 并且FILE *fp ,下面fopen函数正确的调C) file *fp; D) file fp;46 以读写方式打开一个已有的文本文件用方式是(B )。A. fp=fope n(B. fp=fope n(C. fp=fope n(D. fp=fope n( filel ”,“r ”) filel ”,“r+”)“ filel ”,“ rb ”)filel ”,“w”)读程序基本输入输出及流程控制1.#i nclude main () int a=1,b=3,c=5;if (c

8、=a+b)prin tf(yesn);elseprin tf( non ”);运行结果为:no2.#i nclude main () int a=12, b= -34, c=56, min=0;mi n=a;if(mi nb)mi n=b;if(mi nc)min=c;printf(min=%d, min);运行结果为:min=-343.#i nclude main () int x=2,y= -1,z=5;if(xy)if(yo)z=0;elsez=z+1;printf(%dn”z);运行结果为:54.#i nclude main () float a,b,c,t;a=3;b=7;c=1;i

9、f(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;prin tf(%5.2f,%5.2f,%5.2f,a,b,c); 运行结果为:1.00, 2.00, 7.005.#i nclude mai n () float c=3.0 , d=4.0;if ( cd ) c=5.0;elseif ( c=d ) c=6.0;else c=7.0;printf (%.1fn ”c );运行结果为:7.06.#i nclude main () int m;scan f(%d, & m);if (m = 0) if (m%2 = 0)prin tf(%

10、d is a positive evenn, m);elseprin tf(%d is a positive oddn, m);else if (m % 2 = 0) prin tf(%d is a negative evenn, m);elseprin tf(%d is a n egative oddn, m);若键入9 则运行结果为:-9 is a negative odd7.#i nclude main () int num=0 ;while(num=2) num+ ; printf(%dn,num); 运行结果为:123&#i nclude mai n() int sum=10 ,n=

11、1;while( n3) sum=su m-n; n+; printf(%d,%d, n, sum);运行结果为:3,79.#i nclude main () int nu m,c;scan f(%d, &n um);do c=num%10; printf(%d,c); while(num/=10)0); prin tf(n ”);从键盘输入23,则运行结果为:3210#in clude main () int s=0,a=5 ,n;scan f(%d,&n);do s+=1; a=a-2; while(a!=n); printf(%d, %dn,s,a);若输入的值1,运行结果为:2,111

12、.#i nclude stdio.hmain ()char c;c=getchar();while(c!=?) putchar(c); c=getchar(); 如果从键盘输入 abcde ? fgh (回车)运行结果为:abcde12.#i nclude main () char c;while(c=getchar()!= if(A=c&c= Z) putchar(c);else if( a =c&c= z) ) putchar(c-32); 当输入为ab*AB%cd#CD时,运行结果为:ABABCDCD13.#i nclude main () int x, y =0;for(x=1;x=1

13、0)break;y=y+x;printf( %d %d ”y,x);运行结果为:10 514.#in cludemai n() char ch;ch=getchar();switch(ch) case printf(%c”,A);caseB: printf(%c”,); break;default: printf(%sn”,other ”); 当从键盘输入字母A时,运行结果为:AB15.#i nclude mai n() int a=1,b=0;scanf(%c”,&a);switch(a) case 1: b=1; break ;case 2: b=2; break ;default : b

14、=10; prin tf(%d , b) ;若键盘输入5,运行结果为:1016.#i nclude mai n()_ char grade=C;switch(grade) caseA:printf(90-100n );caseB:printf(80-90n ”);case C:printf(70-80n );case D:printf(60-70n ); break;case E:printf(60n );default : printf(error!n);运行结果为:70-8060-7017.#in clude main () int y=9;for(;y0;y-)if(y%3=0) pri

15、ntf(%d”,- -y);con ti nue;运行结果为:85218.#i nclude main () int i,sum=0; i=1;do sum=sum+i; i+; while(i=10); printf( %d,sum);运行结果为:5519.#i nclude #defi ne N 4main () int i;int x1=1,x2=2;prin tf(n);for(i=1;i=N;i+) prin tf(%4d%4d,x1,x2); if(i%2=0)prin tf(n ”);x1=x1+x2;x2=x2+x1;运行结果为:1 2 3 58 13 21 3420#i nc

16、lude mai n() int x, y;for(x=30, y=0; x=10, y10; x-, y+)x/=2, y+=2;printf(X=%d,y=%dn ” ,x,y);运行结果为:x=0,y=1221.#in elude #defi ne N 4 mai n() int i,j;for(i=1;i=N;i+) for(j=1;ji;j+) printf( ”); prin tf(*);prin tf(n);运行结果为:数组1.#i nclude main () int i, a10;for(i=9;i=0;i-) ai=10-i;printf(%d%d%虫2,a 5 ,a8);

17、运行结果为:8522.#i nclude main () int i,a 6;for (i=0; i=0 ; i-)prin tf(%3d,ai);运行结果为:5 4 3 2 1 03.#i nclude mai n() int i,k,a10,p3;k=5;for(i=0 ; i10 ; i+)ai=i ;for(i=0; i3 ; i+)pi=ai*(i+1)for(i=0; i3 ; i+)k+=pi*2;prin tf(%dn,k)运行结果为:214.#i nclude int m33=1,2,3;int n33=1,2 ,3;mai n() printf(%d,”,m10+n00);

18、printf(%dn”,m01+n10);运行结果为:3,05.#i nclude main () int i;int x33=1,2,3,4,5,6,7,8,9;for (i=1; i3; i+)prin tf(%d ,xi3-i);运行结果为:6 86.#i nclude mai n() int n33, i, j;for(i=0 ; i3 ; i+ )for(j=0 ; j3 ; j+ )n ij=i+j;printf( %d ”, nij) printf(“n ”;运行结果为:0 1 21 2 32 3 47.#in elude main ()char diam on d5=,int

19、i,j;for(i=0;i5;i+)for(j=0;j5;j+)printf(printf(%C ,diamo ndij);n ”);注:“ 代表一个空格。运行结果为:8.#in elude mai n() int i, f10;f0=f1=1;for(i=2;i10;i+)fi=fi-2+fi-1;for(i=0;i10;i+) if(i%4=0)printf( n ”;printf(%d ”,fi);运行结果为:1 1 2 35 8 13 2134 559.#i nclude Stdio.h ”func(int b) int j;for(j=0;j4;j+)bj=j;mai n() int

20、 a4, i;fun c(a);for(i=0; i4; i+) printf(%2(”,ai);运行结果为:0 1 2 310.#i nclude main ()float fun( float x);float ave,a3=4.5, 2, 4;ave=fun ( a);printf( ave=%7.2f ” ,ave);float fun (float x)int j;float aver=1 ;for (j=0;j3;j+)aver=xj*aver;return(aver);运行结果为:ave= 36.0011.#i nclude main ()int a23=1,2,3,4,5,6;

21、int b32,i,j;for(i=0;i=1;i+)for(j=0;j=2;j+) bji=aij; for(i=0;i=2;i+)for(j=0;j=1;j+) prin tf(%5d,bij);运行结果为:14253612.#i nclude f(int b,int n)int i,r;r=1;for (i=0;i=n ;i+)r=r*bi;return (r);main ()int x,a=1,2,3,4,5,6,7,8,9;x=f(a,3);printf(%dn”x);运行结果为:2413.#i ncludestdio.hmai n()int j,k;static int x44,y

22、44;for(j=0;j4;j+)for(k=j;k4;k+)xjk=j+k;for(j=0;j4;j+) for(k=j;k4;k+) ykj=xjk;for(j=0;j4;j+)for(k=0;k4;k+)prin tf(%d,yjk);运行结果为:0,0,0,0,120,0,2,3,4,0,3,4,5,6函数1.#i nclude int Sub( int a, i nt b)return (a- b);main ()int x, y, result = 0;sca nf(%d,%d, &x,&y );result = Sub(x,y );prin tf(result = %dn ”,r

23、esult);当从键盘输入:6,3运行结果为:result =32.#i nclude int min( int x, int y ) int m ;if ( x y ) m = x;elsem = y ;return(m) ;mai n() int a=3,b=5,abm in ;abmin = min (a,b);printf( min is %d ”, abmin);运行结果为:min is 53.#in cludefun c(i nt x) x=10;printf( %d, ”x);mai n() int x=20;fun c(x);printf(%c” x);运行结果为:10, 20

24、4.#i nclude int m=4;int fun c(i nt x,i nt y) int m=1;return(x*y-m);main ()int a=2,b=3;prin tf(%dn,m);prin tf(%dn,fu nc(a,b)/m);运行结果为:415.#i nclude int fun (i nt a, int b) if(ab) return(a);else return(b);main () int x=15, y=8, r;r= fun (x,y);prin tf(r=%dn, r);运行结果为:r=156.#i nclude int fac(i nt n) int

25、 f=1,i;for(i=1;i=n ;i+)f=f * i;return(f);main () int j,s;scanf( %d,&j);s=fac(j);prin tf(%d!=%dn,j,s);3!=6如果从键盘输入 3,运行结果为:7.#i nclude un sig ned fun6(un sig ned num) un sig ned k=1;do k*=n um%10;num/=10;while( nu m); return k;main () un sig ned n=26;printf(%dn,fu n6(n);运行结果为:128.#i nclude int max(i n

26、t x, int y);main () int a,b,ca=7;b=8;c=max(a,b);prin tf(Max is %d,c);max(i nt x, int y) int 乙 z=xy? x : y;return(z);运行结果为:Max is 8指针1.# in elude mai n () int x = 10, 20, 30, 40, 50 ; int *p ;p=x;printf (%cf, *(p+2 );运行结果为:302.#i nclude mai n() char s=” abedefg ”;char *p;p=s;printf( ch=%c n ,*(p+5);运

27、行结果为:ch=f3.#in cludemai n () int a=1,2, 3, 4, 5int x, y, *p ;p=a;x=*(p+2);printf(%d: %d n, *p, x) ;运行结果为:1:34.#in cludemain () int arr =30,25,20,15,10,5, *p=arr; p+;printf( %dn ”*(p+3);运行结果为:105.#i nclude mai n() int a =1,2, 3, 4, 5, 6;int x, y, *p;p = & a0;x = *(p+2);y = *(p+4);printf( *p=%d, x=%d,

28、 y=%dn ”*p, x, y); 运行结果为:*p=1,x=3, y=56.#in cludemai n() static char a =” Program ”, *ptr;for(ptr=a, ptra+7; ptr+=2)putchar(*ptr);运行结果为:Prom7.#i nclude char s=” ABCD;main () char *p;for(p=s;ps+4;p+)printf( %c %sn ” ,*p,p);运行结果为:A ABCDB BCDC CDD D结构体1.#in cludestruct st int x;int y; a2=5, 7, 2, 9;mai

29、n ()prin tf(%dn,aO.y*a 1.x);运行结果是:142.#in cludemai n()struct stuint num;char a5;float score;m=1234, wang,89.5;printf(%d,%s,%f,m. num ,m.a,m.score);运行结果是:1234,wa ng,89.53.#in cludestruct cmplx int x;int y; cnum2=1,3, 2, 7;mai n()printf(%dn”,c nu mO.y * cn um1.x );运行结果是:64.#i nclude struct abc int a,

30、b, c; ;main () struct abc s2=1,2,3,4,5,6; int t;t=s0.a+s1.b;prin tf(%d n ”,t);运行结果是:6三、程序填空1输入一个字符,判断该字符是数字、字母、空格还是其他字符。mai n() char ch;ch=getchar();if( ch=a&ch= A&ch=0&ch0) i=i+1;else j=j+1;printf(i=%4d,j=%4dn ”,i,j);3.编程计算1+ 3+ 5+ 101的值#i nclude void mai n() int i, sum = 0;for (i = 1;i=101;i+)sum

31、= sum + i;prin tf(sum=%dn, sum); 4. 编程计算1 + 3+ 5+ 99的值main () int i, sum = 0;i=1;while (i100) sum = sum + i;i+; prin tf(sum=%dn, sum);5. 从键盘输入一个字符,判断它是否是英文字母。#i nclude void mai n()char c;printf(input a character:);c=getchar();if(c= A &c= a &c=z)printf(Yesn);else prin tf(No);6. 下面程序的功能是在a数组中查找与x值相同的元

32、素所在位置,请填空。#i nclude void mai n() int a10,i,x;printf(input 10 integers: ”);for(i=0;i10;i+)scanf( %cf,&ai);printf(input the number you want to find x:);scanf( %d: &x );for(i=0;i10;i+)if( x=ai)break;if(i10)printf(fhe pos of x is : %dn”);else printf(“an not find x ! n ”7程序读入20个整数,统计非负数个数,并计算非负数之和。#i ncl

33、ude mai n() int i, a20, s, count;s=co un t=0;for(i=0; i20 ; i+)sca nf(%(”& ai);for(i=0; i20; i+) if( ai0 ) continue ;s+=ai;coun t+;printf( s=%dt coun t=%dn ”s, count ”;8.输入一个正整数n (1n w 10),再输入n个整数,用选择法将它们从小到大排序后输出。#i nclude int main (void)int i, i ndex, k, n, temp;/定义1个数组a,它有10个整型元素*/printf(En ter n

34、:);printf(En ter %d in tegers: , n);for(i = 0; i n; i+)scanf(%d, &ai);for(k = 0; k n-1; k+) /*对 n 个数排序 */in dex = k;for( )if() in dex = i;输出n个数组元素的值*/prin tf(After sorted:);for(i = 0; i n; i+)/*return 0;四、程序改错一、下面每个程序的划线处有语法或逻辑错误,请找出并改正,使其得到符合题意的执 行结果。1 .求 123 4nmai n() long int sum;int n,i=1;scan f

35、(%d, n);printf(“n ”);while(i n) sum=sum*i;i+;prin tf(sum=%d,sum);sum应初始化即加入sum=1第四行改为:scanf( %cf,&n);第六行改为:while(i=n)第十行改为:prin tf(sum=%ld,sum);2 .求一个数组中最大值及其下标。mai n() int max,j,m;int a5;for(j=1;j=5;j+)scanf(%d,a);max=a0;for(j=1;jaj) max=aj;m=j;printf( 下标:%dn 最大值:d, j, max)第四行改为:for(j=0;j5;j+)第五行改为

36、:scanf( %d:&aj);第七行改为:for(j=0;j5;j+)第八行改为:if(maxaj)第十三行改为:printf( 下标:dn最大值:d”m,max)3 用一个函数求两个数之和。sum(x,y) float z;z=x+y;return;main () float a,b;int c;scan f(%f,%f, &a,&b);c=sum(a,b);printf(nSum is %f,sum);第一行改为:float sum(float x, float y );第四行改为:return(z);第八行:float c;第 一行:prin tf(nSum is %f,c);4.程序

37、读入20个整数,统计非负数个数,并计算非负数之和#i nclude stdio.h ”main ()int i, s , count ,n=20;int an;s=co un t=1;for( i=1, i20, i- -)seanf( %d, ail );for(i=0;i20;i+)if(ai0)break;s +=ai;coun t+;printf( s=%f coun t=%fn” s, coun t);printf(s=%d count=%dn ”s,count);答案:int a20 s=co un t=0;for(i=0;i20;i-) scanf( %d:&ai); con t

38、i nue;5.从键盘输入整数 x的值,并输出y的值.mai n() float x,y;scanf(%d, &x);y=3.5+x;printf(y=%d);正确的: int x; float y;printf(“=%f,y);6编程计算下面分段函数,输入x,输出yx 1 x 0y 2x 10 x 103x 11 x 10main () int x,y;printf(n In put x:n ”);sea nf(%d x);if(x=0|x=10)y=2x elsey=3x 1;printf(y=%d, &y);7.求100300间能被3整除的数的和。main () int n;long s

39、um;for(n=10 0,n=300,n+)if(n %3=0)sum=sum* n;printf(%ld ”sum);8.求表达式c . ab的值#in elude #in elude int fun (i nt x, int y);main () int a,b; float f; scanf(%d,%d,a,b);if(ab0)fun( a,b);prin tf(”The result is:%dn”,&f) else printf(error! ”;fun (x, y) float result;result = sqrt(a+b);return;9、通过函数调用,求两个数之差sub(x,y) float z;z=x-y;return;main () float a,b;int e;scanf( %f,%f”&a,&b);sub(a,b);printf( nSub is %f ”,sub);五、编程题1.输入2个整数,求两数的平方和并输出。#i nclude int main( void) in

温馨提示

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

评论

0/150

提交评论