c语言课后答案_电子科技大学出版社_第1页
c语言课后答案_电子科技大学出版社_第2页
c语言课后答案_电子科技大学出版社_第3页
免费预览已结束,剩余49页可下载查看

下载本文档

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

文档简介

1、c语言程序设计教 程答案第一章C语言概述一、简答题1. (1)语言简洁、紧凑,使用方便、灵活; (2)运算符丰富;(3)具有丰富的数据类型;(4)具有结构化的控制 语句;(5)语法限制不太严格,程序设计自由度大;(6) C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接访问硬件;(7)生成目标代码质量高,程序执行效率高;(8)用C语言写的程序可移 植性好,基本上不作修改就能用于各种型号的计算机和各种操作系统。2. 顺序结构,分支结构,循环结构3 .所谓算法就是为解决一个问题而米取的方法和步骤。 算法的特性:有穷性、确定性、输入、输出、可行性。表示算法的方式

2、:(1)用自然语言表示;(2)用流程图 表示;(3)用N S流程图表示;(4)用伪代码表示;(5) 用计算机语言表示。二、算法1. 瓶子A里盛有醋 瓶子B里盛有酱油 有一个空瓶C将A中的醋倒入C 将B中的酱油倒入A 将C中的醋倒入B2. 输入一个数放在a中 max = a以下步骤重复9次: 输入一个数放在a中 女口果 a>max, max=a 打印max的值3. 如果 a<b temp=aa=b b=temp 女口果c>atemp = aa=cc=temp否则如果 c>btemp=bb=cc=temp打印a,b,c的值4. i=1sum=0以下程序循环100遍:sum=

3、sum+ii=i+1打印sum的值5. 如果(n除以3的余数为0并且 n除以5的余数 为0)n能够同时被3和5整除否则n不能够同时被3和5整除6. i=101以下语句循环50遍:j=2flag=1当j< (i除以2的整数部分)时循环以下语句:如果i除以j的余数为零flag=0退出该循环如果 flag=1打印i的值i=i+27. 如果m<ntemp=mm=nn=tempi=n做以下循环,直到 m,n能够被i整除: 如果m能够被i整除并且n能够被i整除 i即是m和n的最大公约数跳出循环否则i=i-1打印i的值8. data=b*b 4*a*c如果data> 0否则如果data=0

4、x1=x2= b/2否则无实数解二、编程题1. main ()printf( “ #n ” ; printf( “How do you do ?n”);printf( “ #n ” ); 2. main ()8.Cint a,b,c;scanf( printf(第二章“d%d%”,&a,&b,&c);“ sum=%cT ,a+b+c);数据类型与表达式一、单项选择题1. B 2. C 3. A 4. A 5. D 6. B 7.A9. D二、写出下列程序的运行结果1.aabb cc abcAN2.ab97982. 9,11,9,104.a=2,b=3,c=25.s仁2.

5、500000s2=3三、编程题main()char c1='c',c2='h',c3='i',c4='n',c5='a'c1=c1+4;c2=c2+4;c3=c3+4;c4=c4+4;c5=c5+4;printf("%c%c%c%c%cn",c1,c2,c3,c4,c5);第三章 顺序程序设计选择题1)B2)D3)D4)A5)A6)B7)B8)A9)D10)C11)D12)A填空题1)b2)2613)2521374)abc5)5.0,4,c=36)3编程题#definej PI 3.141592

6、6main()floath, r, l, sv, sz ;printf(“请输入圆的半径r,圆柱高h:n ”);scanf(“ f,%f ”,&r, &h);l=2* PI I,s= PI *1r*r ;sv=3.0/4.0* PI *r*r*r ;sz= PI*r*r*h ;printf( “'圆周长为:l=%6.2f,圆面积为:s=%6.2fn ”,l, s);printf( “求体积为:sv=%6.2f,圆柱体积为:sz=%6.2fn SV, sz);2、 main()float c, f ;printf( “请输入一个华氏温度:n ”);scanf( “ f”

7、, &f);c=5.0/9.0*(f-32);printf( “摄氏温度为:%6.2fn ” , c);第四章 循环程序设计一、选择题1.D 2.D 3.D 4.C 5.D 6.A 7.B 8.B 9.A12.A 13.B 14.C15.C 16.A 17.A 18.B 19.D 20.D 21.A二、填空题1. 5858582. 03. 184. 89215.20,06.67.1,3,28. Year%400=0year%100!=0count+二、编程题1.main()long a;scanf( “ ld ” ,&a);if (a>=10000&&a&

8、lt;=99999)printf( “这是个五位数”); else if (a>=1000&&a<=9999) printf( “这是个四位数”);else if (a>=100&&a<=999) printf( “这是个三位数”);else if (a>=10&&a<=99) printf( “这是个二位数”);else if (a>=0&&a<=9)printf( “这是个一位数”);elseprintf( “输入错误”);3.main()int a;int g,s,b;个位、十

9、位、百位 printf(”水仙花数有:n");for(a=100;iv=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;i<=n ;i+)while(i!=n)if(n%i=0)printf("

10、%d*",i);n/=i;else break;printf("%dn",n);5、#include “ stdio.h ”main()char c;int w,x,y,z;w=x=y=z=0;while(c=getchar ()!= n')if(c> ' a' &&c<' z' )|(c>' A' &&c<' Z')w+;else if (c='')x+;else if (c>' O' &&

11、amp;c<' 9')y+;else z+;printf( “英文字母个数:%dn ” ,w);printf( “空格个数:dn ”,x);printf( “数字个数:%dn ” ,y);printf( “其他字母个数:%dn ” ,z);6、main()float h=1OO,t=1OO;int j;for(j=1;j<10;j+)t=t/2;h=h+t*2;printf( “共经过:%f 米n” ,h);printf( “第十次反弹%f 米n ” ,t/2);第五章 数 组一、单项选择题1. B 2. A3. C 4. C 5. D 6. B 7.C8.B9.

12、C10. B二、写出下列程序的运行结果1. S=3682.*3. S1=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.h"main()int a11;int i,j,t;printf(" inp ut 10 number:n");for (i=1;i<11;i+)scan

13、f("%d", &ai);printf("n");for (i=1;i<=9;i+)for (j=1;j<=1O-i;j+)if (aj<aj+1) t=aj;aj=aj+1;aj+1=t; printf("the sorted number is:n");for (i=1;i<11;i+) printf("%4d",ai);2. #include "stdio.h"main()int a11,i,b;printf("imput 10 sorted nu

14、mber:n");for (i=0;i<10;i+)scanf("%d", &ai);printf("input an integer:n");scanf("%d",&b);for (i=9;i>=0&&ai>b;i-) ai+1=ai;ai+1=b;printf("sorted numbers:n"); for (i=0;i<11;i+) printf("%5d",ai);3. #include "stdio.h&qu

15、ot;main()/*输入5个整数*/*逆序存放*/*逆序存放后重新输int a5,i,j,t; printf("input 5 integer:n");for (i=0;i<5;i+) scanf("%d", &ai);for (i=0,j=4;i<j;i+,j-) t=ai;ai=aj;aj=t; for (i=0;i<5;i+)出*/printf("%5d",ai);4. #include "stdio.h" main()int i,j,a1O1O=1,1,1;for (i=2;i&

16、lt;10;i+)组每个元素赋值*/ai0=1;for (j=1;j<=i;j+)aij=ai-1j-1+ai-1j;for (i=0;i<10;i+)数组*/for (j=0;j<=i;j+)printf("%-5d",aij);printf("n");5. #include "stdio.h"main()int a34,i,j,max,row,col;printf("input 3*4 matrix:n");for (i=0;i<3;i+)for (j=0;j<4;j+)scanf

17、("%d", &aij);max=a00; row=0; col=0;/*给二维数/*输出二维/*输入3*4矩阵*/for (i=0;i<3;i+)/*寻找矩阵中的最大值及其行列号*/for (j=0;j<4;j+)if (max<aij)max=aij; row=i, col=j;printf("n 数组中最大的数是d,其行号是d,列号是 dn",max,row,col);5. #define N 3#define M 4#include "stdio.h"main()int aNM,i,j,k,max,r

18、ow,col;printf("input %d*%d matrix: n",N,M);for (i=0;i<N;i+)/*输入二维矩阵 */for (j=0;j<M;j+)scanf("%d", &aij);for (i=0;i<N;i+)/*求鞍点 */max=ai0; row=i; col=0;for(j=1;j<M;j+)/*求矩阵中每一行的最大值及其所行列号*/if (max<aij)max=aij; col=j;for (k=O;k<N;k+)/*判断每一行的最大值在其所在列是否最大*/if (akc

19、ol<max)break;if (k=N)/*得到鞍点*/printf("thepointis %d,row=%d,col=%dn",max,row,col);break;if (i=N)/*没有鞍点*/printf("no point'n");6. #include "stdio.h"main()int num=0,word=0;/*word=0 表示未出现单词,如出现单词就置word 为1. num用来统计单词个数*/char c;printf("please input a string :n"

20、);while (c=getchar()!='n')if (c='')word=0;else if (word=0)word=1;nu m+;printf("There are %d words in the linen",num);7. #include "stdio.h"main()int i,j,uppn,lown,dign,span,othn;小写/*uppn,lown,dign,span,othn 分别存放英文大写字母、 字母、数字、空格和其他字符的个数*/char text380;uppn=lown=dign=

21、span=othn=0;for(i=0;i<3;i+)gets(texti);for(j=0;j<80&&textij!='0'j+)if(textij>='A'&&textij<='Z')uppn+;else if(tex ti j>='a'&&textij<='z')lown+;else if(tex ti j>='0'&&textijv=9)dign+;else if(textij=

22、9;')span+;elseothn+;for(i=0;i<3;i+)printf("%sn",texti);printf("uppn=%dn",uppn);printf("lown=%dn",lown);printf("dign=%dn",dign);printf("span=%dn",span);printf("othn=%dn",othn);8. #include "stdio.h"main()int i,j;char str120,s

23、tr220;printf("input two strings:n");gets(str1);gets(str2);j=strlen(str1);/*求字符串 1的长度*/for (i=0;str2i!='0'i+,j+)/*字符串合并 */ str1j=str2i;str1j='O'/*加上字符串结束标志*/puts(strl);9. #include "stdio.h"main()int i,n;char str120,str220;printf("input two strings:(no more tha

24、n 20 characters)、"'); gets(str1); gets(str2);n=strlen(str1)<strlen(str2)?strlen(str1):strlen(str2); /*n 中存 放较短字符串的长度*/for (i=0;i<n&&str1i=str2i;i+);printf("%dn",str1i-str2i);第六章函数与编译预处理一、单项选择题1. C 2. B 3. B 4. B 5. A 6. B 7.A8.C9.D10. A二、写出下列程序的运行结果1. 92. 4,B8,B3. -4

25、.0000004. a=6,b=55. 48三、编程题1. main() int prime(int n);int n;printf("input n(n>0):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)

26、 flag=0;return(flag);2.#define N 3 convert(int array33) int i,j,t;for (i=0;i<N-1;i+)for (j=i+1;j<N;j+) t=arrayij; arrayij=arrayji; arrayji=t; main() int i,j;int aNN; printf("input a:n");for (i=0;i<N;i+)for (j=0;j<N;j+) scanf("%d", &aij); printf("Array a:n&quo

27、t;);for (i=0;i<N;i+) for (j=0;j<N;j+) printf("%5d",aij); printf("n");convert(a);printf("a de zhuanzhi is:n");for (i=0;i<N;i+)for (j=O;j<N;j+)printf("%5d",aij);printf("n");2. #include <stdio.h>#include <string.h>main()char str1

28、00;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=O,j=strlen(str)-1;ivj;i+,j-) t=stri;stri=strj;strj=t;3. #include <stdio.h> concat(char str1,char str2) int i=0,j;while (str1i!='O') i

29、+;for (j=0;str2j!='0'i+,j+) str1i=str2j;str1i='0'main()char str1100,str2100; gets(str1);gets(str2);concat(str1,str2); puts(str1);4. 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);

30、insert(char str)int i;for (i=strlen(str);i>0;i-)str2*i=stri;str2* i-1=''5. #include "stdio.h"int i,ndight,nwhite,nletter,nother;count(char str)ndight=nwhite=nletter=nother=0;iffor (i=O;stri!='O'i+) if (stri>='0'&&striv=9) ndight+;else(stri>='A&#

31、39;&&striv='Z')|(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",n dight,nletter,nwhite

32、,nother);6. #define N 10#include <stdio.h> sort(char str) int i,j;char t;for (i=1;i<N;i+)for (j=O;j<N-i;j+)if (strj>strj+1)t=strj;strj=strj+1 ;strj+1=t; main()char strN;int i ;printf("lnput 10 ge zi fu:n"); gets(str);sort(str);printf("The sorted result:n");for(i=0;

33、i<N;i+) printf("%c",stri);7. 这题较复杂#include <stdio.h>#include <string.h>#define N 10void input_e(int num,char nameN8) int i;for (i=0;i<N;i+) printf("input gong hao:"); scanf("%d",&numi);printf("input name:");getchar();gets(namei);for (i=0;

34、i<N;i+)printf("%5d%10sn",numi,namei);/*选择法排序*/void sort(int num,char nameN8)int i,j,min,temp1;char temp28;for (i=0;i<N-1;i+)min=i;for (j=i+1;j<N;j+)if (numj<nummin) min=j; temp1=numi;strcpy(temp2,namei); numi=nummin;strcpy(namei,namemin);nummin=temp1;strcpy(namemin,temp2);print

35、f("the sorted result:n");for (i=0;i<N;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 (nvnumO)|(n>numN-1)find=-1;while (find=0)&&(topv=bott)mid=(bott+top)/2;if (n=nummid)find=1; printf(&

36、quot;%d name is:%sn",n,namemid);else if (n<nummid)bott=mid-1;else top=mid+1;if (find=-1)|(find=O)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:"); 找的工号

37、*/scanf("%d",&number);search(number,num,name);printf("continue Y/N?");/* 是否继续查找 */getchar();c=getchar();if (c='N'|c='n')flag=0;8. #include "stdio.h"#define MAX 10main()char strMAX;char c;int i;i=0;/*输入一个十六进制printf("input number(16 jinzhi):"

38、);的数*/while(c=getchar()!='n'&&i<MAX) stri=c;i+;stri='O'printf("result is :%dn",htod(str);int htod(char s)int i,n;n=0;for(i=0;si!='0'i+)if (si>='0'&&siv=9) n=n*16+si-'O'if (si>='a'&&siv='f) n=n*16+si-'a

39、'+10;if (si>='A'&&si<='F')n=n*16+si-'A'+10;return(n);10. #define SWAP(a,b) t=a;a=b;b=t main()int a,b,t;printf("input a,b:");scanf("%d,%d", &a,&b);SWAP(a,b);printf("result:a=%d,b=%dn",a,b);11. #define SURPLUS(a,b)(a) %(b)

40、main()int a,b;printf("input a,b:");scanf("%d,%d", &a,&b);printf("result is: %dn",SURPLUS(a,b);12. main()int a,b,c;printf("input a,b,c:");scanf("%d,%d,%d", &a,&b,& c); printf("max=%dn",max(a,b,c);int max(int x,int y,int z

41、)int t;t=(x>y ? x : y);return(t>z?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 str

42、MAX;int i;printf("input a string:n");gets(str);#if (CHANGE) for (i=O;stri!='O'i+)if (stri>='a'&&striv'z'|stri>='A'&&striv'Z')stri=stri+1;else if (stri='z'|stri='Z')stri=stri-25;#endifprintf("%sn",str);第

43、七章 指针一、选择题1)A2)D3)D4)C5)B6)B7)B8)C9)B10)C11)A12)A13)A14)C15)B16)A17)C18)B19)D20)B、阅读下面程序,写出程序运行结果1 ) abcdeedcba2 )193)( TurboC 中是 11,97,11)(VisualC 是 9,97,11)4) 365) 6385三、编程题1、main() int a10,i,temp,*p=a;printf("Please input array a:n");for(i=0;i<10;i+)scanf("%d", &ai); pr

44、intf("array a:n");for(i=0;i<10;i+)printf("%4d",ai);for(i=0;i<5;i+) temp=pi;pi=p1O-i-1; p10-i-1=temp;printf("n Now array a:n");for(i=0;i<10;i+) printf("%4d",ai);2、main() int a33,*p,i,j;printf("please input matrix:n");for(i=0;i<3;i+)for(j=0

45、;j<3;j+)scanf("%d", &aij);P=&a00;move(p);printf("n Now matrix:n"); for(i=0;i<3;i+) for(j=0;j<3;j+) printf("%4d",aij); printf("n");move(int *q) int i,j,t;for(i=0;i<3;i+)for(j=i;j<3;j+) t=*(q+3*i+j);*(q+3*i+j)=*(q+3*j+i);*(q+3*j+i)=t;3、#in

46、clude <stdlib.h>#include <alloc.h>#include <string.h>#include <stdio.h>main()int binary();void insert();char*temp,*ptr1 6="BASIC","DATA","PASCAL","SQL","USE" int i;ptr15=malloc(20);printf("n");printf("original s

47、tring:n");for(i=0;i<5;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;i<6;i+)printf("%sn",ptr1i);int binary(

48、char *ptr,char *str,int n)int hig,low,mid;low=0;hig=n-1;if(strcmp(str,ptrO)<O) return(O); if(strcmp(str,ptrhig)>O) return(n);while(lowv=hig)mid=(low+hig)/2;if(strcmp(str,ptrmid)<O)hig=mid-1;else if(strcmp(str,ptrmid)>0)low=mid+1;else return(mid);return(low);void insert(char *ptr,char *st

49、r,int n,int i)int j;for(j=n;j>i;j-)strcpy(ptrj,ptrj-1);strcpy(ptri,str);4、main() int i;char *p 6,str620;for(i=0;i<6;i+)Pi=stri;printf("lnput 6 strings:n"); for(i=0;i<6;i+) scanf("%s",pi);sort(p);printf("Now the strings:n"); for(i=0;i<6;i+) printf("%sn&q

50、uot;,pi);sort(char *q) int i,j;char *t;for(i=0;i<5;i+) for(j=0;j<5-i;j+) if(strcmp(*(q+j),*(q+j+1)>0) 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;

51、p2=str2;m=stri ngcmp(p1,p2);printf("result is %d:n",m);stringcmp(char *p1,char *p2) int i=0;while(*(p1+i)=*(p2+i)if(*(p1+(i+)='O') return(O); return(*p1+i)-*(p2+i);6、main() char str130,str230,str3100;int i=O,j=O,k=O;printf("please input two strings:n");scanf("%s"

52、;,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、B3、CB6、A 7、D8、C5、9、C10、B二、填空题1、34514、 1

53、0, x三、编程题1、5、 364041struct complexfloatx;/* 实部 */floaty;/* 虚部 */main()struct complexc仁5,3,c2=2,6;float t1,t2;- + printf( “ The twmplexs product is:” );printf( “ .2f%+.n”i ,t1,t2);2.struct studentcharname10;/*姓名*/intnumber;/*学号*/floatx;/*成绩*/floaty;/*成绩*/main()struct student s45;int i;void max();void average。;void sort();for (i=0;i<45;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=a

温馨提示

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

评论

0/150

提交评论