C语言程序设计练习题1及答案.doc_第1页
C语言程序设计练习题1及答案.doc_第2页
C语言程序设计练习题1及答案.doc_第3页
C语言程序设计练习题1及答案.doc_第4页
C语言程序设计练习题1及答案.doc_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

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

文档简介

C语言练习题(一)一 选择题1以下不正确的C语言标识符是( D )。AABC Babc Ca_bc Dab.c2以下正确的c语言标识符是( )。Ax Ba+b Ca123 Dtest!3一个c程序的执行是从( ).Amain( )函数开始,直到main( )函数结束B第一个函数开始,直到最后一个函数结束C.第一个语句开始,直到最后一个语句结束Dmain( )函数开始,直到最后一个函数结束4 一个C语言程序是由()。A)一个主程序和若干子程序组成B)函数组成C)若干过程组成D)若干子程序组成5 C语言程序的基本单位是( )。A过程 B函数 c子程序 D标识符6 编辑程序的功能是( )。A建立并修改程序 B将c源程序编译成目标程序C调试程序 D命令计算机执行指定的操作 7以下结果为整数的表达式(设有int i;char c;float f;)().Ai+f Bi*c Cc+f Di+c+f8以下不正确的语句(设有int p,q)是( )。AP*3; B.pq; C.p+3; Dpq;9 以下使i的运算结果为4的表达式是()。Aint i=0,j=0; (i3,(j+)+i);Bint i=1,j=0; ji(i=3)*2);C.int i=0,j=1; (j1)?(i1);(i3);Dint i1,j1; i+j+2;10设n10,i4、则赋值运算ni+1执行后,n的值是(). A0 B3 C2 D111逗号表达式(a3*5,a*4),a+15的值为( ),a的值为( )。 A15 B60 C30 D不确定 A60 B30 C15 D9012 如果a1,b2,c3,d4,则条件表达式ab?a:cd?c:d的值为(). A1 B2 C3 D413 若有代数式3ae/bc,则正确的C语言表达式是(C) A)a/b/c*e*3B)3*a*e/b/c C)3*a*e/b*cD)a*e/c/b*314在C语言中,要求运算数必须是整形的运算符是(D).A)/ B)+ C)!= D)%15 若以下变量均是整形,且num=sum=7;则计算表达式sum=num+,sum+,+num后sum的值为(A). A)7 B)8 C)9 D)1016在C语言中,int、char和short三种类型数据在内存中所占用的字节数(D)。A)由用户自己定义B)均为2个字节C)是任意的D)有所用的机器的机器字长决定17设变量a是整型,f是实型,i是双精度型,则表达式10+a+i*f值的数据类型为(C)。A)intB)floatC)doubleD)不确定18 设int n3;则+n的结果是( C ),n的结果是(C) A)2 B)3 C)4 D)519语句(1,2,3,4)的结果是( D )。 A)1 B)2 C)3 D)420有如下程序,若要求a1、a2、c1、c2的值分别为10、20、A、B,正确的数据输入是().main()int a1,a2;char c1,c2;scanf(%d%d,&a1,&a2);scanf(%c%c,&c1,&c2):A)1020ABB)10 20 ABC)10 20 ABCD)10 20AB21已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据是,正确的数据输入方式是(A)。(注:表示空格,表示回车)int a1,a2;char c1,c2;scanf(“%d%c%d%c”,&a1,&c1,&a2,&c2);A) 10A20B B) 10A20BC) 10 A20B D) 10A20B22阅读以下程序,当输入数据的形式为:25,13,10,正确的输出结果为(D)。main() int x,y,z;scanf(“%d%d%d”,&x,&y,&z);printf(“x+y+z=%dn”,x+y+z);A) x+y+z=48B) x+y+z=35C) x+z=35D) 不确定值23 设X,Y均为float变量,则以下不合法的赋值语句是(B)A)+x;B)y=(x%2)/10;C)x*=y+8;D)x=y=10;24 以下程序的执行结果是( )。#includemain()int sum,pad;sum=pad=5;pad=sum+;pad+;+pad;printf(%dn,pad);A) 7 B) 6 C)5 D)425有以下定义:int a; long b; double x,y;则以下选项中正确的表达式是(B) A)a%(int)(x-y)B)a=x!=y;C)(a*y)%bD)y=x+y=x26以下选项中能表示合法常量的是( D )A)整数:1,200B)实数:1.5E2.0C )字符斜杠:D)字符串:00727表达式a+=a-=a=9的值是(D)A)9B)-9C)18D)028有以下程序(B)include main()int a=1,b=2;while(amain()int y=10;while(y-);printf(”y=dn”,y);程序执行后的输出结果是A)y=0B)y= -1C)y=1D)while构成无限循环30有以下程序(C)includestdio .hmain()char s”rstuv;printf(”cn”,*s2);程序运行后的输出结果是A)tuvB)字符t的ASCII码值C)tD)出错31有以下程序(B)includestdio.hincludestring.hmain()char x”STRING”;x0=0;x10;x20;printf(”d dn”,sizeof(x),strlen(x);程序运行后的输出结果是A)6 1B)7 0C)6 3D)7 132有以下程序(D)includestdiohint f(int x);main()int n=1,m;m=f(f(f(n);printf(”%dn”,m);int f(int x)return x*2;程序运行后的输出结果是A)1B)2C)4D)833以下程序段完全正确的是(C)A)int *p; scanf(%d,p);B)int *p; scanf(“%d”,p);C)int k, *p=&k; scanf(%d,p);D)int k, *p:; *p= &k; scanf(“%d”,p);34下列定义数组的语句中,正确的是(B)A)int N=10;int xN; B)define N 10int xN;C)int x0.10; D)int x;35若要定义一个具有5个元素的整型数组,以下错误的定义语句是(D)A)int a5=0;B)int b=0,0,0,0,0;C)int c2+3;D)int i=5,di;36有以下程序includestdiohvoid f(int *p);main()int a51,2,3,4,5,*r=a;f(r);printf(”dn”;*r);void f(int *p)p=p+3;printf(”d,”,*p);程序运行后的输出结果是(D)A)1,4B)4,4C)3,1D)4,137有以下程序(函数fun只对下标为偶数的元素进行操作# includestdiohvoid fun(int*a;int n)int i、j、k、t;for (i=0;in-1;i+=2) k=i; for(j=i;jak)k=j; t=ai;ai=ak;akt;main()int aa10=1,2,3,4,5,6,7,i;fun(aa,7);for(i=0;iincludestring hmain()char a20=”ABCD0EFG0”,b”IJK”;strcat(a,b);printf(”sn”,a);程序运行后的输出结果是(B)A)ABCDEOFGOIJKB)ABCDIJKC)IJKD)EFGIJK41有以下程序includestdiohvoid fun(int x)if(x21)fun(x2);printf(”d”,x);main()fun(7);printf(”n”);程序运行后的输出结果是(D)A)1 3 7B)7 3 1C)7 3D)3 742有以下程序includestdiohint fun()static int x=1;x+=1;return x;main()int i;s=1;for(i=1;imain()int s,t,A=10;double B=6;ssizeof(A);t=sizeof(B);printf(“d,dn”,s,t);在VC6平台上编译运行,程序运行后的输出结果是(C)A)2,4 B)4,4 C)4,8 D)10,645若有以下语句typedef struct Sint g; char h;T;以下叙述中正确的是(B)A)可用S定义结构体变量B)可用T定义结构体变量C)S是struct类型的变量D)T是struct S类型的变量二、写出下列每个程序运行后的输出结果 1. #include void main() int i, s=0; for(i=1;i+) if(s50) break; if(i%2=0) s+=i; printf(i,s=%d, %dn,i,s); 2. #include void main() char ch=*; int i, n=5; while(1) for(i=0;in;i+) printf(%c,ch); printf(n); if(-n=0) break; 3. #include void main() int x=24,y=88; int i=2,p=1; do while(x%i=0 & y%i=0) p*=i; x/=i; y/=i; i+; while(x=i & y=i); printf(%dn,p*x*y); 4. #include void main() int a9=36,25,48,24,55,40,18,66,20; int i, b1, b2; a0=a1? (b1=a0, b2=a1):(b1=a1,b2=a0); for(i=2; i9; i+) if(aib1) b2=b1; b1=ai; else if(aib2) b2=ai; printf(%d %dn,b1,b2); 5. #include void main() int a=10, b=20; printf(%d %dn,a,b); int b=a+25; a*=4; printf(%d %dn,a,b); printf(%d %dn,a,b); 6. #include void SelectSort(int a, int n) int i,j,k,x; for(i=1;in;i+) /进行n-1次选择和交换 k=i-1; for(j=i;jn;j+) if(ajak) k=j; x=ai-1; ai-1=ak; ak=x; void main() int i; int a6=20,15,32,47,36,28; SelectSort(a,6); for(i=0; i6; i+) printf(%d ,ai); printf(n); 7. #include void LE(int* a, int* b) int x=*a; *a=*b; *b=x; void main() int x=15, y=26; printf(%d %dn,x,y); LE(&x,&y); printf(%d %dn,x,y); 8. #include #include struct Worker char name15; /姓名 int age; /年龄 float pay; /工资 ; int Equal(struct Worker* r1, struct Worker* r2) if(strcmp(r1-name, r2-name)=0) return 1; else return 0; void main() struct Worker a4=abc,25,420,defa,58,638, ghin,49,560,jklt,36,375; struct Worker x=defa; int i; for(i=0; i=4) printf(没有查找所需要的记录!n); else printf(%s %d %6.2fn,,ai.age,ai.pay); 9. # include void main() int a=0,b=2,c=3; switch(a) case 0: switch(b= =2) case 1: putchar(&);break; case 2: putchar(%);break; case 1: switch(c) case 1: putchar($); case 2: putchar(*);break; default: putchar(#); 10. # include void main() int m=1,n=2,t=3; +m; t+=+n; int n=10,t; t=n*2; m+=t; printf(%d,%d,%dn,m,n,t); printf(%d,%d,%dn,m,n,t);答案:1. i,s=15, 56 2. * * * * * 3. 264 4. 18 20 5. 10 20 40 35 40 20 6. 15 20 28 32 36 47 7. 15 26 26 15 8. defa 58 638.00 9. printf(输入%d个整数: ,n); scanf(%d,&x); if(n=1) return x; s=x; while(-n) scanf(%d,&x); s+=x; return s; 2. #include void WA(int a, int n) int i,k,j,x; for(i=0;in-1;i+) k=i; for(j=i+1;jak) k=j; x=ai; ai=ak; ak=x; 3. #include int* LJ(int a, int n) int i,k=0; for(i=1;iak) k=i; return &ak; 4. int Output(struct IntNode *f) int sum=0; if(!f) return -9999; /用返回特定值-9999表示空表 while(f) sum+=f-data; f=f-next; return sum; 假定struct IntNode的类型定义为: struct IntNode int data; /结点值域 struct IntNode* next; /结点指针域 ;答案:1. 求出从键盘上输入的n个整数之和并返回。2. 采用选择排序的方法对数组a中的n个整数按照从大到小的次序重新排列。3. 求出数组a中n个元素的最大值元素,返回该元素的地址4. 对于以表头指针为f的链表,求出并返回所有结点中data域的值之和。四 程序填空1. 下面程序的功能是:将一个数插入到一个有序数组(从小到大)中,使插入以后的数组仍然有序。采用的算法是:确定要插入数的位置,然后将比这个数大的数后移一个位置,在空出的位置上将该数插入。# include void main() int a11=1,3,6,7,9,12,14,18,19,20,x; int i,p; printf(Input a data:n); scanf(%d,&x); for(i=0,p=10;i10;i+) if(xai) ; break; for(i=9; ;i-) ai+1=ai; ; printf(The array:n); for(i=0;i11;i+) printf(%4d,ai); printf(n); 2. 以下程序能统计一个英文句子(以 . 号结束)中最长单词的长度。# include int count(char *p) int word=0,max=0; while(*p!=.) while(*p=a)|(*p=A) ; p+; if( ) max=word; ; p+; return max;void main() char str80; gets(str); printf(max=%dn,count(str); 3. 下面程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。主函数中输出和值。# include # define M 2# define N 4void SumColumMin(int aMN,int *sum) int i,j,k,s=0; for(i=0;iN;i+) k=0; for(j=0;jaji) k=j; s+= ; =s;void main() int xMN=3,2,5,1,4,1,8,3,s; SumColumMin( ); printf(%dn,s); 4. 以下程序采用直接选择法对数组a中的10个数进行降序排列,然后按每行5个数的格式输出。# include void main() int i,j,k,t,a10=1,4,3,5,7,9,2,0,6,8; for(j=0;j9;j+) k=j; for(i=j+1;i ) k=i; t=aj; *(a+j)= ; *(a+k)=t; for(i=0;i10;i+) printf( (i%5) ? %d : , *(a+i) ); printf(n);5. 以下程序的功能是计算下列级数之和s=1+x+x2/2!+x3/3!+xn/n!double sum(int x,int n) int i; double a,b,s; a=1.0;b=1.0;s=1.0; for(i=1;in;i+) ; ; s=s+a/b; return s;void main() int x,n;double s; scanf(%d,%d,&x,&n); ; printf(%fn,s); 6. 下面invert函数实现数组元素值的逆置,即a0,a9互换,a1,a8互换,以此类推。请填空。# include void main() void invert(int *s,int num); int a10=1,2,3,4,5,6,7,8,9,10,i,n=10; for(i=0;i10;i+) printf(%4d,ai); printf(n); invert(a,n-1); for(i=0;i10;i+) printf(%4d,ai); printf(n);void invert(int *s,int num) int *t,k; t=s+num; while( ) k=*s;*s=*t;*t=k; ; ; 7. 下面程序的功能是在数组中同时查找最大元素下标和最小元素下标,分别存放在main函数的变量max和min中,请填空。# include void fun(int *a,int n,int *max,int *min) int i; *max=*min=0; for(i=1;i*(a+*max) ; else if(*(a+i)*(a+min) ; return;void main() int a10=3,15,2,26,9,28,7,1,4,12; int max,min; ; printf(max=%d,min=%dn,max,min);程序输出为:max=5,min=7 8. 下面程序的功能是将已按升序排好序的两个字符串a和b中的字符按升序归并到字符串c中。即字符串c为:abcdefghijklmnpq# include # include void main() char a=acegikm; char b=bdfhjlnpq; char c80,*p; int i=0,j=0,k=0; while(ai!=0&bj!=0) if(aibj) ; else ; k+; ck=0; if( )p=b+j; else p=a+i; strcat(c,p); puts(c);9. 以下程序可把输入的十进制数以十六进制的形式输出。 # include void main() char b17=0123456789ABCDEF; int c64,d,i=0,base=16; long n; scanf(%ld,&n); do ci= ; i+; n=n/base; while(n!=0); for(i-; i=0; -i) d= ; printf(%c, ); printf(n); 10. 以下程序能统计并输出1至100之间所有能被3整除但不能被7整除的所有正整数。 # include # define M 100 void fun( int m, int *p, int *t) int i,num=0; for(i=1;i=m;i+) if( ) ; *t=num; void main() int aM,n,k; ; for(k=0;kn;k+) if( (k+1) % 5 = 0 ) printf(n); else printf(%3d,ak); printf(n); 11. 程序功能:有10个数按升序放在一个数组中,输入一个数,要求用折半查找该数是数组中的第几个元素,如果该数不在数组中,打印出“NO”。折半查找法:设数组长度为n,则将输入的数m与an/2比较,若man/2,则将an/2到an的数继续折半进行查找。# include main() int a10=12,32,45,62,71,76,80,85,90,95; int num,bott,top,mid; printf(Input a number:n); scanf(%d,&num); bott=0; top=9; while(bott=top) mid= ; if(num=amid) printf(%d is the %d numbern,num,mid+1); break; else if(numamid) ; else bott=mid+1; if( ) printf(Non);12. 下面程序是一个求数组元素之和的程序。主程序中定义并初始化了一个数组,然后计算该数组各元素之和,并输出结果。函数Sum计算数组元素之和。请完成下列程序。# include int TotalSum(int ,int );void main() int a5=2,3,6,8,10; int Total; Total= ; countAumof array: endl;int TotalSum(int array,int len) int sum=0; for(int i=0;ilen;i+) ; return sum;13. 以下程序是判断输入的字符串是否是“回文”(顺读和倒读都一样的字符串叫回文,如level),请填空。# include stdio.h# include string.hvoid main() char s81,*p1,*p2; int n; gets(s); n=strlen(s); p1=s; p2= ; while( ) if(*p1!=*p2) break; else p1+; ; if(p1p2) printf(Non); else printf(Yesn); 14. 下面程序功能是检查一个4阶矩阵是否对称(即对所有的i,j,都有numij=numji),请填空。# include void main() int num44; int i,j,flag=0; printf(Input array num:n); for(i=0;i4;i+) for(j=0;j4;j+) scanf(%d, ); for(i=0;i4;i+) for(j=0;j=p ap=x 2、 word+ maxword word=0 3、 aki *sum x,&s 4、 ak ak “n”5、 a=a*x b=b*i s=sum(x,n) 6、 stop12、 TotalSum(a,5) Total sum+=arrayi13、 s+n-1 *p1!= 0 p2- 14、 &numij numij!=numji flag=1五 编程题1输入三个整数x,y,z,请把这三个数由小到大输出。2给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。3. 一个5位数,判断它是不是回文数。即12321是

温馨提示

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

评论

0/150

提交评论