c语言课后答案-电子科技大学出版社_第1页
c语言课后答案-电子科技大学出版社_第2页
c语言课后答案-电子科技大学出版社_第3页
c语言课后答案-电子科技大学出版社_第4页
c语言课后答案-电子科技大学出版社_第5页
已阅读5页,还剩49页未读 继续免费阅读

下载本文档

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

文档简介

c语言程序设计教程答案 第一章 C语言概述 一、简答题1(1)语言简洁、紧凑,使用方便、灵活;(2)运算符丰富;(3)具有丰富的数据类型;(4)具有结构化的控制语句;(5)语法限制不太严格,程序设计自由度大;(6)C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接访问硬件;(7)生成目标代码质量高,程序执行效率高;(8)用C语言写的程序可移植性好,基本上不作修改就能用于各种型号的计算机和各种操作系统。2顺序结构,分支结构,循环结构3所谓算法就是为解决一个问题而采取的方法和步骤。算法的特性:有穷性、确定性、输入、输出、可行性。表示算法的方式:(1)用自然语言表示;(2)用流程图表示;(3)用NS流程图表示;(4)用伪代码表示;(5)用计算机语言表示。二、算法1瓶子A里盛有醋瓶子B里盛有酱油有一个空瓶C将A中的醋倒入C将B中的酱油倒入A将C中的醋倒入B2输入一个数放在a中max = a以下步骤重复9次:输入一个数放在a中如果amax,max=a打印max的值3如果aatemp = a a=cc=temp否则如果cbtemp=bb=cc=temp打印a,b,c的值4i=1sum=0以下程序循环100遍:sum=sum+ii=i+1打印sum的值5如果(n除以3的余数为0 并且 n除以5的余数为0)n能够同时被3和5整除否则n不能够同时被3和5整除6i=101以下语句循环50遍:j=2flag=1当j(i除以2的整数部分)时循环以下语句:如果i除以j的余数为零flag=0退出该循环如果flag=1打印i的值i=i+27如果m=10000&a=1000&a=100&a=10&a=0&a=9)printf(“这是个一位数”);else printf(“输入错误”);3.main()int a;int g,s,b;/个位、十位、百位printf(水仙花数有:n);for(a=100;i=999;a+)g=a%10;s=a/10%10;b=a/100;if (a=g*g*g+s*s*s+b*b*b)printf(%d ,a);printf(n);4、main()int i,n;printf(input n:);scanf(%d,&n);printf(n%d=,n);for(i=2;ia&cA&c0&c9)y+;else z+;printf(“英文字母个数:%dn”,w);printf(“空格个数:%dn”,x);printf(“数字个数:%dn”,y);printf(“其他字母个数:%dn”,z);6、main()float h=100,t=100;int j;for(j=1;j10;j+)t=t/2;h=h+t*2;printf(“共经过:%f 米n”,h);printf(“第十次反弹 %f 米n”,t/2);第五章 数 组一、单项选择题1. B 2. A 3. C 4. C 5. D 6. B 7.C 8.B 9.C 10. B二、写出下列程序的运行结果1S=3682*3S1=18S2=104!margorP5数字0的出现次数是:3数字1的出现次数是:2数字2的出现次数是:2数字3的出现次数是:2数字4的出现次数是:0数字5的出现次数是:1数字6的出现次数是:1数字7的出现次数是:1数字8的出现次数是:1数字9的出现次数是:1三、编程题1#include stdio.hmain()int a11;int i,j,t;printf(input 10 number:n);for (i=1;i11;i+)scanf(%d,&ai);printf(n);for (i=1;i=9;i+)for (j=1;j=10-i;j+)if (ajaj+1)t=aj;aj=aj+1;aj+1=t;printf(the sorted number is:n);for (i=1;i11;i+)printf(%4d,ai);2#include stdio.hmain()int a11,i,b;printf(imput 10 sorted number:n);for (i=0;i=0&aib;i-) ai+1=ai;ai+1=b;printf(sorted numbers:n); for (i=0;i11;i+)printf(%5d,ai); 3#include stdio.hmain()int a5,i,j,t;printf(input 5 integer:n);for (i=0;i5;i+) /*输入5个整数*/scanf(%d,&ai);for (i=0,j=4;ij;i+,j-) /*逆序存放*/t=ai;ai=aj;aj=t;for (i=0;i5;i+) /*逆序存放后重新输出*/printf(%5d,ai);4#include stdio.hmain()int i,j,a1010=1,1,1;for (i=2;i10;i+) /*给二维数组每个元素赋值*/ai0=1;for (j=1;j=i;j+)aij=ai-1j-1+ai-1j;for (i=0;i10;i+) /*输出二维数组*/for (j=0;j=i;j+)printf(%-5d,aij);printf(n);5#include stdio.hmain()int a34,i,j,max,row,col;printf(input 3*4 matrix:n);for (i=0;i3;i+) /*输入3*4矩阵*/for (j=0;j4;j+)scanf(%d,&aij);max=a00; row=0; col=0;for (i=0;i3;i+) /*寻找矩阵中的最大值及其行列号*/for (j=0;j4;j+)if (maxaij)max=aij; row=i, col=j;printf(n数组中最大的数是%d,其行号是%d,列号是%dn,max,row,col);6#define N 3#define M 4#include stdio.hmain()int aNM,i,j,k,max,row,col;printf(input %d*%d matrix: n,N,M);for (i=0;iN;i+) /*输入二维矩阵*/for (j=0;jM;j+)scanf(%d,&aij);for (i=0;iN;i+) /*求鞍点*/max=ai0; row=i; col=0;for(j=1;jM;j+) /*求矩阵中每一行的最大值及其所行列号*/if (maxaij)max=aij; col=j;for (k=0;kN;k+) /*判断每一行的最大值在其所在列是否最大*/if (akcolmax)break;if (k=N) /*得到鞍点*/printf(the point is %d,row=%d,col=%dn,max,row,col);break;if (i=N) /*没有鞍点*/printf(no pointn);7#include stdio.hmain()int num=0,word=0; /*word=0表示未出现单词,如出现单词就置word为1.num用来统计单词个数*/char c;printf(please input a string :n);while (c=getchar()!=n)if (c= )word=0;else if (word=0)word=1; num+;printf(There are %d words in the linen,num);8#include stdio.hmain()int i,j,uppn,lown,dign,span,othn; /*uppn,lown,dign,span,othn分别存放英文大写字母、小写字母、数字、空格和其他字符的个数*/char text380;uppn=lown=dign=span=othn=0;for(i=0;i3;i+)gets(texti);for(j=0;j=A&textij=a&textij=0&textij=9)dign+;else if(textij= )span+;else othn+;for(i=0;i3;i+)printf(%sn,texti);printf(uppn=%dn,uppn);printf(lown=%dn,lown);printf(dign=%dn,dign);printf(span=%dn,span);printf(othn=%dn,othn);9#include stdio.hmain()int i,j;char str120,str220;printf(input two strings:n);gets(str1);gets(str2);j=strlen(str1); /*求字符串1的长度*/for (i=0;str2i!=0;i+,j+) /*字符串合并*/str1j=str2i;str1j=0; /*加上字符串结束标志*/puts(str1);10#include stdio.hmain()int i,n;char str120,str220;printf(input two strings:(no more than 20 characters)n);gets(str1); gets(str2);n=strlen(str1)strlen(str2)?strlen(str1):strlen(str2); /*n中存放较短字符串的长度*/for (i=0;i0):n);scanf(%d,&n);if (prime(n)printf(%d is a sushun,n);else printf(%d is not a sushun,n);int prime(int n)int flag=1,i;for (i=2;i=n/2&flag=1;i+)if (n%i=0) flag=0;return(flag);2.#define N 3convert(int array33) int i,j,t;for (i=0;iN-1;i+)for (j=i+1;jN;j+)t=arrayij;arrayij=arrayji;arrayji=t;main()int i,j;int aNN;printf(input a:n);for (i=0;iN;i+)for (j=0;jN;j+)scanf(%d,&aij);printf(Array a:n);for (i=0;iN;i+)for (j=0;jN;j+)printf(%5d,aij);printf(n);convert(a);printf(a de zhuanzhi is:n);for (i=0;iN;i+)for (j=0;jN;j+)printf(%5d,aij);printf(n);3. #include #include main()char str100;printf(input a string:n) ;gets(str);inverse(str);printf(the reversed string is:%sn,str);inverse(char str)char t;int i,j;for (i=0,j=strlen(str)-1;ij;i+,j-)t=stri;stri=strj;strj=t;4. #include concat(char str1,char str2) int i=0,j;while (str1i!=0)i+;for (j=0;str2j!=0;i+,j+)str1i=str2j;str1i=0;main()char str1100,str2100;gets(str1);gets(str2);concat(str1,str2);puts(str1);5. main()char str80;printf(input a string (4 ge shu zi zi fu):n);scanf(%s,str);insert(str);printf(result is:n%sn,str);insert(char str)int i;for (i=strlen(str);i0;i-)str2*i=stri;str2*i-1= ;6. #include stdio.hint i,ndight,nwhite,nletter,nother;count(char str)ndight=nwhite=nletter=nother=0;for (i=0;stri!=0;i+)if (stri=0&stri=A&stri=a&stri=z)nletter+;else if (stri= )nwhite+;else nother+;main()char text80;printf(input a string:n);gets(text);count(text);printf(ndight=%d,nletter=%d,nwhite=%d,nother=%dn,ndight,nletter,nwhite,nother);7. #define N 10#include sort(char str)int i,j;char t;for (i=1;iN;i+)for (j=0;jstrj+1)t=strj;strj=strj+1 ;strj+1=t;main()char strN;int i ;printf(Input 10 ge zi fu:n);gets(str);sort(str);printf(The sorted result:n) ;for(i=0;iN;i+)printf(%c,stri);8.这题较复杂#include #include #define N 10void input_e(int num,char nameN8)int i;for (i=0;iN;i+) printf(input gong hao:);scanf(%d,&numi);printf(input name:);getchar();gets(namei);for (i=0;iN;i+)printf(%5d%10sn,numi,namei);void sort(int num,char nameN8) /*选择法排序*/int i,j,min,temp1;char temp28;for (i=0;iN-1;i+)min=i;for (j=i+1;jN;j+)if (numjnummin) min=j;temp1=numi;strcpy(temp2,namei);numi=nummin;strcpy(namei,namemin);nummin=temp1;strcpy(namemin,temp2);printf(the sorted result:n);for (i=0;iN;i+)printf(%5d%10sn,numi,namei);void search(int n,int num,char nameN8) /*折半查找法*/int top,bott,mid,find;find=0;top=0;bott=N-1;if (nnumN-1)find=-1;while (find=0)&(top=bott)mid=(bott+top)/2;if (n=nummid)find=1; printf(%d name is:%sn,n,namemid);else if (nnummid)bott=mid-1;else top=mid+1;if (find=-1)|(find=0)printf(%d is not found.n,n);main()int numN,number,c,flag;char nameN8;input_e(num,name);sort(num,name);for (flag=1;flag;)printf(please input chazhao de gonghao:); /*输入查找的工号*/scanf(%d,&number);search(number,num,name);printf(continue Y/N?); /*是否继续查找*/getchar();c=getchar();if (c=N|c=n)flag=0;9. #include stdio.h#define MAX 10main()char strMAX;char c;int i;i=0;printf(input number(16 jinzhi): ); /*输入一个十六进制的数*/while(c=getchar()!=n&i=0&si=a&si=A&siy ? x : y);return(tz?t:z);#define MAX(x,y) (x)(y)?(x):(y)main()int a,b,c;printf(input a,b,c:);scanf(%d,%d,%d,&a,&b,&c);printf(max=%dn,MAX(MAX(a,b),c);13. #include stdio.h#define CHANGE 1#define MAX 80main()char strMAX;int i;printf(input a string:n);gets(str);#if (CHANGE) for (i=0;stri!=0;i+)if (stri=a&stri=A&striZ)stri=stri+1;else if (stri=z|stri=Z)stri=stri-25;#endifprintf(%sn,str);第七章 指针一、选择题1)A 2)D 3)D 4)C 5)B 6)B 7)B 8)C 9)B 10)C 11)A 12)A 13)A 14)C 15)B 16)A 17)C 18)B 19)D 20)B二、阅读下面程序,写出程序运行结果1)abcdeedcba 2)1113151719 3)(TurboC中是11,97,11 ) (VisualC是9,9 7,11)4)3 6 5)6385三、编程题1、main( ) int a10,i,temp,*p=a;printf(Please input array a:n);for(i=0;i10;i+)scanf(%d,&ai);printf(array a:n);for(i=0;i10;i+)printf(%4d,ai);for(i=0;i5;i+) temp=pi;pi=p10-i-1;p10-i-1=temp;printf(n Now array a:n);for(i=0;i10;i+)printf(%4d,ai);2、main( ) int a33,*p,i,j;printf(please input matrix:n);for(i=0;i3;i+)for(j=0;j3;j+)scanf(%d,&aij);p=&a00;move(p);printf(n Now matrix:n);for(i=0;i3;i+) for(j=0;j3;j+)printf(%4d,aij);printf(n);move(int *q) int i,j,t;for(i=0;i3;i+)for(j=i;j3;j+) t=*(q+3*i+j);*(q+3*i+j)=*(q+3*j+i);*(q+3*j+i)=t;3、#include #include #include #include main( )int binary();void insert();char *temp,*ptr16=BASIC,DATA,PASCAL,SQL,USE;int i;ptr15=malloc(20);printf(n);printf(original string:n);for(i=0;i5;i+)printf(%sn,ptr1i);printf(input search string:n);temp=malloc(20);gets(temp);i=binary(ptr1,temp,5);printf(i=%dn,i);insert(ptr1,temp,5,i);printf(output strings:n);for(i=0;i6;i+)printf(%sn,ptr1i);int binary(char *ptr,char *str,int n)int hig,low,mid;low=0;hig=n-1;if(strcmp(str,ptr0)0) return(n);while(low=hig)mid=(low+hig)/2;if(strcmp(str,ptrmid)0)low=mid+1;else return(mid);return(low);void insert(char *ptr,char *str,int n,int i)int j;for(j=n;ji;j-)strcpy(ptrj,ptrj-1);strcpy(ptri,str);4、main( ) int i;char *p6,str620;for(i=0;i6;i+)pi=stri;printf(Input 6 strings:n);for(i=0;i6;i+)scanf(%s,pi);sort(p);printf(Now the strings:n);for(i=0;i6;i+)printf(%sn,pi);sort(char *q ) int i,j;char *t;for(i=0;i5;i+)for(j=0;j0) t=*(q+j);*(q+j)=*(q+j+1);*(q+j+1)=t;5、main( ) int m;char str120,str220,*p1,*p2;printf(please input two strings:n);scanf(%s,str1);scanf(%s,str2);p1=str1;p2=str2;m=stringcmp(p1,p2);printf(result is %d:n,m);stringcmp(char *p1,char *p2) int i=0;while(*(p1+i)=*(p2+i)if(*(p1+(i+)=0) return(0);return(*p1+i)-*(p2+i);6、main( ) char str130,str230,str3100;int i=0,j=0,k=0;printf(please input two strings:n);scanf(%s,str1);scanf(%s,str2);while(str1i!=0 & str2j!=0) str3k+=str1i+;str3k+=str2j+;while(str1i!=0)str3k+=str1i+;while(str2j!=0)str3k+=str2j+;str3k=0;printf(n%sn,str3);第八章 结构体一、选择题1、C 2、B 3、C 4、D 5、B 6、A 7、D 8、C 9、C 10、B二、填空题1、34 2、0 3、51 4、10,x 5、364041三、编程题1、 struct complexfloat x; /*实部*/float y; /*虚部*/main()struct complex c1=5,3,c2=2,6;float t1,t2;t1=c1.x*c2.x - c1.y*c2.y;t2=c1.x*2.y + c1.y*c2.x;printf(“The two complexs product is:”);printf(“%.2f%+.2f in”,t1,t2);2. struct studentchar name10; /*姓名*/int number; /*学号*/float x; /*成绩*/float y; /*成绩*/ main( )struct student s45;int i;void max();void average();void sort();for (i=0;i45;i+)scanf(“%s%d%f%d”,,&si.number,&si.x,&si.y);/*输入学生的姓名、学号、两门课程成绩*/max(s,45);average(s,45);sort(s,45);void max(struct student *a,int n)float temp;char na10;int i ,num;temp=a0.x+a0.y;for (i=1;in;i+)if(tempai.x+ai.y) /*求总分最高的学生姓名、学号*/temp=ai.x+ai.y;strcmp(na,);num=ai.number;printf(“%s,%d”,na,num);void average(struct student *b,int n)float aver1,aver2,s1,s2;int i ;s1=s2=0;for(i=0;i45;i+) /*求每门课程的总成绩*/s1+=bi.x;s2+=bi.y;aver1=s1/45;aver2=s2/45;for(i=0;i45;i+)if(bi.xaver1&bi.yaver2) /*输出两门课程都低于平均成绩的学生*/printf(“%s,%dn”,,bi.number);void sort(struct student *c,int n)float t;int i,j ;struct student temp;for (i=0;in-1;i+) /*改进的选择法排序可参考课本P89页*/k=i ;for(j=i+1;jn;j+)if(ck.xcj.x)k=j;if(k!=i)temp=ci;ci=ck;ck=temp;f

温馨提示

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

最新文档

评论

0/150

提交评论