c语言参考答案.doc_第1页
c语言参考答案.doc_第2页
c语言参考答案.doc_第3页
c语言参考答案.doc_第4页
c语言参考答案.doc_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

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

文档简介

习题11-1 填空题1.函数2.主函数main(),主函数main()3.主函数main()4.函数首部,函数体5., 6./*, */7.顺序结构,选择结构,循环结构8.c, .obj, .exe1-2 思考题1.结构化程序设计是指:为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。顺序结构,选择结构,循环结构2.算法是对具体问题求解步骤的一种描述。计算机算法的表达工具通常采用以下几种方法:(1)用自然语言表示算(2)用流程图表示算法(3)用伪代码表示算法(4)用程序设计语言表示算法3.语言简洁、紧凑,使用方便、灵活; 支持结构化程序设计;运算符丰富;数据类型丰富;较强的编译预处理功能;C语言的可移植性好;C语言本身既有一般高级语言的优点,又有低级(汇编)语言的特点;语法限制不太严格,程序设计自由度大。4. 略5. 略1-3 编程题1. main() float a=3, b=4, c=5, s, area; s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“area=%f ” , area ); 2. main() printf(“*”);printf(“* hello world *”);printf(“*”);习题22-1 单选题15 DBDCA 610 DCABA 1114 BCA A2-2 思考题12.0000021,0.539,2465100,d6(1)20 (2)0 (3)607. (1)10,6,4 (2)6,9,15 (3)3,60,838. 559.70习题33-1单选题1-5BBDAB 6-10DDBDC 11-15AADCA 16-20CBACC 21-25ABDBB3-2填空题1.32.02613.0x104.05. 2, 1 互换a,b的值,4,c=310.i=10,j=2011.(1) 65 (2) 65,A (3) 56.123400,123.456001 (4) 3.141600 (5) 8765.432 (6) 5.86400e+02 (7) 3.14160e+00 (8) 3.1416 (9) 8765 (10) 3.1416,8765.4312.a=2 b=5x=8.8 y=76.34c1=65 c2=973-3 编程题1. main() int x, y ; scanf(“%d%d” , &x, &y); printf(“x yn”); printf(“%4d%4dn”, x, y ); printf(“%4o%4on”, x, y ); printf(“%4x%4xn”, x, y );2. main() float a, b, h, s; scanf(“%f%f%f”, &a, &b, &h ); s=(a+b)*h/2 ; printf(“%8.1fn”, s); 3. main() char c; scanf(“%c”, &c ); printf(“%c, %c, %cn”, c-1, c, c+1 ); 4.main() int a, a1, a2, a3; scanf(“%d”, &a ); a1=a%10 ; a=a/10; a2=a%10; a=a/10; a3=a%10; printf(“%d%d%dn”, a1, a2, a3); 5.main() double a, b, c, ave; scanf(“%lf%lf%lf”, &a, &b, &c ); ave=(a+b+c)/3 ; printf(“%8.2fn”, ave); 6.main() int a, b, c, t; scanf(“%d%d%d”, &a, &b, &c ); t=a; a=c; c=b ; b=t ; printf(“a=%d, b=%d, c=%dn”, a, b, c ); 习题44-1单选题15 BADAC 610 DDACD 1115 BBBAB4-2填空题1.12.if(x0) y=1 else if (x=0) y=0 else y=-13.(1) a0 | b0 (2) x0 & x=10 (3) a=1.5 & b=1.5 & c=1.5 (4)pa | pb | pb?a:b)c?max:c 6-47185,0,3985 belongs to B10. (1) (a=0) (2) (b=0)(3) (discc & a+cb & b+ca) s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“%f”,area); 2main() int x,y; scanf(“%d,%d”,&x,&y); if (x*x+y*y1000) printf(“%dn”,(x*x+y*y)/100); else printf(“%dn”,x+y);3.main() int x, scanf(“%d”,&x); if(x%3=0 & x%5=0 & x%7=0) printf(“yesn”); else printf(“non”);4#include “math.h” main() float x,y; scanf(“%f”,&x); if(x-2) y=x*x-sin(x); else if (x3000) d=0.15 else if( s=2000) d=0.1; else if(s=1000) d=0.08; else if(s=500) d=0.05; else if(s=250) d=0.02; else d=0 f=p*w*s*(1-d); printf(“%f”,f);习题55-1单选题15 CDACB 610 DCAAB 1116 DBDBCB5-2填空题12 02k=5,s=43333 4How Are You52#18#6(1) i10 (2) j%3!=07.(1) flag*(float)k/(k+1) (2) flag=-flag8(1) s=0,t=1; (2) t=t*x/i*pow(-1,i+1); (3) printf(“%f”,s);9(1) max=x (2) x!=-1 (3) scanf(%d, &x)10. (1) n=1 (2) s5-3 编程题1. (1) main() int i; lont s=0; for(i=1;i=100;i+)s+=i*i; printf(“%ld”,s);(2)main() int i; lont p=1,s=0; for( i=1;i1e-6)printf(“%f”,s);(4)main() int i=1, flag=1,pi=0; dos+=flag*1.0/(2*i-1);i+;while(1.0/(2*i-1)1e-6);printf(”%f”,s);2.main()int m,n,t,a,b;scanf(“%d,%d”,&m,&n);if (m0;y-)s*=x; printf(”%d,%d,%dn”,s%10,s/10%10,s/100%10);4.main()int i=1, k=2, sum=0; do sum+=k; k=k*2; i+;while(sum=100);printf(”total=%fn”, 0.4*sum/(i-1);5. main() int x,y,z; for( x=1; x20;x+)for( y=1;y=0 & (5*x+3*y+z/3)-1001e-5) printf(”x=%d,y=%d,z=%dn”,x,y,z);6. main()int j,k; for( j=1;j=4;j+)for(k=1;k=4-j;k+;)printf(” ”);for(k=1;k=1;j-) for(k=1;k=4-j;k+;)printf(” ”); for(k=1;k=2*j-1;k+)printf(”*”);printf(”n”);7.分析:其实此问题的解法非常简单。从数学上来说,可以用穷举法。比如让x从2开始,判断表达式“(x%3=2 & x%5=3 & x%7=2)”是否成立,若不成立,让x自增1,直到某个x满足条件了,则这个x即为所求。程序如下: #include main() int x=2; while(!(x%3=2 & x%5=3 & x%7=2) x+; printf(x=%dn,x); 程序运行结果:x=238分析:定义一个字符变量c和一个整型变量n,c用于接受从键盘输入的非回车行字符,n用于统计从键盘输入的非回车符字符的个数,也就是说,以(c=getchar()!=n为循环条件,反复进行“n+;”的运算。程序代码如下:#include void main()int n=0;char c;printf(input a string:n);while(c=getchar()!=n) n+;printf(%d,n);9. 例如:153是一个“水仙花数”,因为153=1的三次方5的三次方3的三次方。程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。main()int i,j,k,n;printf(water flowernumber is:);for(n=100;n1000;n+)i=n/100;/*分解出百位*/j=n/10%10;/*分解出十位*/k=n%10;/*分解出个位*/if(i*100+j*10+k=i*i*i+j*j*j+k*k*k)printf(%-5d,n);printf(n);10.main()int x,y,z; for( x=1;x17;x+)for(y=1;y0 & 3*x+2*y+z=50)printf(man=%d, woman=%d,child=%dn”,x,y,z);习题66-1单选题1-5CBBAD 6-10DBAAC 11-15CCDDC 16-20BBABC6-2填空题1.1202.x3.3,2,2,3 4. /I5.8,/(i*i) 8.fun-in:30,20,10 fun-end:1015,35,1050 10,20,309.012345 10. 93636 6-3 编程题1. void zhuan( ) char ch; while(ch=getchar()!=n) if(ch=a & ch=z) ch=ch-32;putchar(ch); 2. float expp(int n) int k, fac=1; float sum=0; for(k=1; k=n; k+) fac*=k;sum+=1.0/fac ; return(sum); 3. int xy3( int x, int y) int k, num=1; for(k=1;k=y ; k+) num*=x ; num=num%1000 ; return num ;4.void factors( int n) int k; printf(“ %d its factors are: ” , n); for(k=1; kaj3(1) r+bk (2) *x8-3 编程题1#define N 10 main() int aN=1,2,3,4,5,6,7,8,9,0,osum=0, qsum=0, j; for(j=0;j10;j+)if( j%2) qsum+=aj;else osum+=aj; printf(“osum=%d,qsum=%dn”, osum,qsum);2. #define N 10 main() int aN=10,20,30,40,50,60,70,80,90, j, k, x; scanf(“%d”,&x); for(j=0;jN;j+) if (xj; k-)ak=ak-1; aj=x;for(j=0;jN;j+) printf(“%d”,aj); 3#define N 10 main() int aN=1,2,3,4,5,6,7,8,9,0. bN-1, j; for( j=0;jN-1;j+) bj=aj+1-aj; for( j=0;jN-1;j+) if(j%3=0)printf(“n”); printf(“%d”,bj);4. #define M 3main()int aMM=1,2,3,4,5,6,7,8,9,j,sum1=0,sum2=0; for( j=0;jM;j+)sum1+=ajj; sum2+=ajM-(j+1);printf(“%d,%dn”,sum1,sum2);5. #define M 3main()int aMM=1,2,3,2,4,5,3,5,6,j,k,flag=1; for( j=0;jM;j+)for(k=0;k=a & cj=z)? cj-32: cj;puts(c);7. #include “string.h”main() char c110,c210,j; gets(c1);gets(c2); for(j=0; (c1j=c2j) & c1j & c2j; j+);printf(“%dn”,c1j-c2j);8. #include ”string.h” #define M 3 #define N 80 main() char aMN,j,k,n5=0; for( j=0;jM;j+) gets(aj); for(j=0;j=A & ajk=a & ajk=0 & ajk=9) n3+; else if (ajk= ) n4+; elsen5+;for(j=0;jn2) swap(pointer1,pointer2);if(n1n3) swap(pointer1,pointer3);if(n2n3) swap(pointer2,pointer3);printf(the sorted numbers are:%d,%d,%dn,n1,n2,n3);swap(p1,p2)int *p1,*p2;int p;p=*p1;*p1=*p2;*p2=p;2. 编写函数,得到两个整数相除的商和余数。要求通过指针在函数间传递商和余数这两个数据。 main() int a,b,d;float c;void fun(int a,int b,float *c, int *d) scanf(“%d,%d“,&a,&b); fun(a,b,&c,&d);printf(“%f%d”,c,d);void fun(int a,int b,float *c, int *d) if (b) *c=(float)a/b; *d=a%b;3. 输入10个整数,将其中最小的数与第一个数对换,把最大的数与最后一个数对换。编写三个函数:输入10个数;进行处理;输出10个数。main()void input (int *); void output (int *); void chuli (int *); int a10; input(a); chuli(a); output(a);void input(int *a) int j; for(j=0;j10;j+) scanf(”%d”, a+j); void chuli(int *a)int j,minl=0,maxl=0; for(j=0;j10;j+) if(amaxl*(a+j) minl=j; j=a0; a0=aminl;aminl=j; j=a9;a9=amaxl;amaxl=j; void output(int *a)int j; for(j=0;j10;j+)printf(”%d”, *(a+i);4有n个整数,使前面各数顺序向后移m个位置,最后m个数变成最前面m个数,写一函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。main()int number20,n,m,i;printf(the total numbers is:);scanf(%d,&n);printf(back m:);scanf(%d,&m);for(i=0;in-1;i+)scanf(%d,&numberi);scanf(%d,&numbern-1);move(number,n,m);for(i=0;iarray;p-)*p=*(p-1);*array=array_end;m-;if(m0) move(array,n,m);5. 有n个小孩按顺序号排成一圈。从第1个小孩开始作1至3报数,凡是报数为3的小孩退出圈子,求出最后出圈子的那个小孩是原来第几号的那位。#define N 10 #define M 3main() int aN,j; void chuli(int *);for( j=0;jN;j+)scanf(“%d”,&aj);chuli(a);for( j=0;jN;j+)printf(“%4d”,aj);void chuli(int *a) int j,k,t; for(j=0;j=j;k-) ak+1=ak;aj=t;5#define nmax 50main()int i,k,m,n,numnmax,*p;printf(please input the total of numbers:);scanf(%d,&n);p=num;for(i=0;in;i+)*(p+i)=i+1;i=0;k=0;m=0;while(mn-1)if(*(p+i)!=0) k+;if(k=3) *(p+i)=0;k=0;m+;i+;if(i=n) i=0;while(*p=0) p+;printf(%d is leftn,*p);6按下列要求输入和输出下列数据阵列: 输入阵列如下: 1 2 3 4 5 6 7 8 9 10 11 12 输出阵列如下: 12 11 10 9 8 7 6 5 4 3 2 1# define M 3#define N 4main() int aMN=1,2,3,4,5,6,7,8,9,10,11,12,k,j,*p=a,t; for(k=0,j=M*N-1;kj;k+,j-) t=*(p+k); *(p+k)=*(p+j); *(p+j)=t;for (k=0;kM;k+)for(j=0;jn) printf(“error”);else copysubstr(c1,c2,m); puts(c1);puts(c2);void copysubstr(char *c1,char *c2,int m) int k; c1=c1+m; while(*(c1)*(c2+)=*(c1+);9. 请编写一个程序,运行时输出命令行参数的个数及参数名。main(int argc,char *argv) int k; printf(“argc=%d”,argc); for (k=1;kargc; k+) printf(“%s”,argvk);10. 用指针数组操作将输入的八个字符串按由小到大的顺序。#include “string.h”main()char *str18,ch820,k; void sort(char *);for(k=0;k8;k+)str1k=chk;gets(str1k);sort(str1);for(k=0;k8;k+)puts(str1k);void sort(char *str1) int k,j,t;char *c;for(k=0;k7;k+) t=k; for(j=k+1;j0) t=j; c=*(str1+t); *(str1+t)=*(str1+k); *(str1+k)=c; 习题1010-1单选题1-5CDBBC 6-10BBBBA 11-15DCCBD 16-20CBABC 21-22CB10-2填空题1.所有结构体成员所占存储空间的总和2.与占用存储空间最大的那个成员相等3. (1) 结构体(2) 3(3) sa.a(4) 7(5) psa=&sa4.805.struct node6.double *7.08.malloc(11)9.struct STRU10.struct STRU10-3 编程题1.struct student long num; char name20; char sex; float score;main() struct student s20, temp; int j,k, man=0, woman=0; float summan=0,sumwoman=0, aveman, avewoman; for(k=0; k20; k+) scanf(%ld %s %c%f,&sk.num,,&sk.sex,&sk.score);if(sk.sex=m) summan+=sk.score; man+;else sumwoman+=sk.score;woman+ ; aveman=summan/man; avewoman=sumwoman/woman; printf(%dt%ft%dt%fn,man,aveman,woman,avewoman); for(k=0; k19; k+) for(j=0;j20-k;j+)if(sj.scoresj+1.score) temp=sj;sj=sj+1;sj+1=temp;printf(the sorted numbers:n);for(k=0;knext!=NULL) p=p.next; else return(head); while(p-next!=NULL) q-next=r;r=q;q=p;p=p-next; /*指针移向下一个结点*/ q-next=r; p-next=q;head-next=NULL; head=p; return(head); 习题1111-1单选题1-4BADD11-2填空题1.3d3d3302.(1) 28(2) 20(3) 0(4) -93.(1) 251(2) 42(3) 209(4) 295(5) 848习题1212-1单选题1-5BCDCA6-8ADA12-2 填空题1.rewind(文件指针)2.d1.dat,rb3.stdin4.字符串常量 字符数组名5.文本文件二进制文件6.从fp所指向的文件中读6个4字节的数据,存储到起始地址为st的实型数组中(即st0st5中)。7.(1)w(2) stri-32(3) r8.fopen9.Hell10.(1) r(2) fgetc(fp)(3) time+实验篇实验1 顺序结构程序设计(1) 略(2) 略(3) 略(4)#include stdio.hmain() printf(n); printf(4+-+-+-+n); printf( | | | |n); printf(3+-+-+-+n); printf( | | | |n); printf(2+-+-+-+n); printf( | | | |n); printf(1+-+-+-+n); printf( 1 2 3 4n); (5)略实验2 选择结构程序设计(1) 略(2) 略(3)#include “stdio.h”main()unsigned int x;printf(Please input an unsigned data:); scanf(%d,&x); if (x%2=0) printf(the data %d is an even!,x); else printf(the data %d is an odd!,x);(4) #include stdio.hmain() float a,b;printf(Please input the data a and b:n); scanf(%f%f,&a,&b);if(a10.0) a=a-10.0; else a=a+10.0; if(ba) ; else b=a-b; printf(a=%f, b=%fn,a,b);(5)#include stdio.hmain() float x,y; printf(Please input the data x:n); scanf(%f,&x); if (x=0 & x10 & x!=2 & x!=3) y=x*x-5*x+6; else y=x*x-x-1; printf(x=%f, f(x)=%fn,x,y);(6)#include stdio.hmain() int t,a,b,c,d; printf(Please enter the data:a,b,c,d:

温馨提示

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

评论

0/150

提交评论