c语言课后习题代码

上传人:仙*** 文档编号:99480564 上传时间:2022-06-01 格式:DOC 页数:38 大小:93.50KB
收藏 版权申诉 举报 下载
c语言课后习题代码_第1页
第1页 / 共38页
c语言课后习题代码_第2页
第2页 / 共38页
c语言课后习题代码_第3页
第3页 / 共38页
资源描述:

《c语言课后习题代码》由会员分享,可在线阅读,更多相关《c语言课后习题代码(38页珍藏版)》请在装配图网上搜索。

1、-第四章1. 编程实现:输入一个字母,假设为小写,则把它变成大写输出。代码如下:*includemain()char c;printf(Please input a character:);scanf(%c,&c);if(c=a&c=z)printf(The result is :%cn,c-32);2. 由键盘输入3个数a、b、c,编程输出其中最小的数。代码如下:*includemain()inta,b,c,t;printf(Please input three numbers:);scanf(%d%d%d,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;

2、c=t;printf(The minimum is :%dn,a);3. 由键盘输入三个数a、b、c,用条件运算符求出最大值和最小值。代码如下:*includemain()inta,b,c,min,ma*;printf(Please input three numbers:);scanf(%d%d%d,&a,&b,&c);ma*=min=a;/初始化最大值与最小值为a/求出最大值ma*=ma*b ma*:b;ma*=ma*c ma*:c;/求出最小值min=minb b:min;min=minc c:min;printf(The ma*imum is :%d,the minimum is :%

3、dn,ma*,min);4. 编写程序,实现功能:从键盘上输入1,2,3,4,分别显示e*cellent ,good,pass,fail。代码如下:*includemain()int a;printf(Please input a number:);scanf(%d,&a);switch(a)case 1:printf(E*cellentn);break;case 2:printf(Goodn);break;case 3:printf(Passn);break;case 4:printf(Failn);break;default :printf(You input a wrong number

4、!n);5. 试编程判断输入的正整数是否既是5又是7的整数倍。假设是,则输出yes;则输出no。代码如下:*includemain()int a;printf(Please input a number:);scanf(%d,&a);if(a%5=0&a%7=0)printf(Yesn);elseprintf(Non);6. 编写程序,要求:输入一个正整数,判断其能否被3、5整除,并输出一下信息之一。(1) 能被3、5整除。(2) 能被3整除。(3) 能被5整除。(4) 不能被3、5整除。代码如下:*includemain()int a;printf(Input a number:);scan

5、f(%d,&a);if(a%3=0)if(a%5=0)printf(能被3、5整除n);elseprintf(能被3整除n);elseif(a%5=0) printf(能被5整除n);elseprintf(不能被3、5整除n);7. 对于给定的一百分制成绩,要求输出相应的五分制成绩,即90分及以上为A,8089分为B,7079分为C,6069分为D,60分以下为E。代码如下:*includemain()float a;printf(Please input score:);scanf(%f,&a);if(a60) printf(The class is :En);elseif(a70) pri

6、ntf(The class is :Dn);elseif(a80) printf(The class is : Cn);elseif(a90) printf(The class is : Bn);elseif(a=100) printf(The class is : An);elseprintf(Error!n);第五章1. 编一个程序,求1100所有偶数和。代码如下:*includemain()inti, sum=0;/考虑到时空效率,此处可用short,节省空间,sum记录偶数/和,变量参加累加,必须赋初值for(i=1;i=100;i+)if(i%2=0) sum+=i;printf(T

7、he sum is :%dn,sum);2. 编一个程序,求s=1!+2!+3!+10!的值。代码如下:*includemain()inti,j,sum=0,t;for(i=1;i=10;i+)for(j=1,t=1;j=i;j+)t*=j;sum+=t;printf(s=1!+2!+3!+-+10!=%dn,sum);3. 计算1-3+5-7+9+-99+101。代码如下:*includemain()int i,s=1,sum=0;for(i=1;i=101;i+=2)sum+=s*i;s*=-1;printf(1-3+5-7+9-99+101 = %dn,sum);4. 编程求1000以包

8、括1000能被5同时又能被11整除的数的和。代码如下:*includemain()int i,sum=0;for(i=1;i=1000;i+)if(i%5=0&i%11=0)sum+=i;printf(%dn,sum);5. 编程打印出所有的水仙花数。所谓水仙花数是指一个三位数,其中各位数字的立方和等于该数本身。例如:153=1*1*1+5*5*5+3*3*3。代码如下:*includemain()int a,b,c,i;for(i=100;i1000;i+)a=i%10;b=(i/10)%10;c=i/100;if(i=a*a*a+b*b*b+c*c*c)printf(%d ,i);prin

9、tf(n);6. 有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13求出这个数列的前20项和。代码如下:*includemain()int i;float a=2,b=1,t,sum=0;/a为分子,b为分母for(i=0;i20;i+)sum+=a/b;t=a;a+=b;b=t;printf(The sum is :%fn,sum);7. 有一个球从10m高度落下并反弹,且每次反弹的高度为下落高度的一半。问第4次落地时共经过多少米.第4次反弹的高度是多少代码如下:*includemain()float h1=10,sum=0;int i;for(i=0;i4;i+)if(i=

10、0) sum+=h1;else sum+=2*h1;h1/=2;printf(第4次落地时共经过:%.3f 米,第4次反弹的高度为:%.3f 米n,sum,h1);第六章1. 求二维数组中全部元素的和。假定二维数组为a23=1,2,3,4,5,6代码如下:*includemain()int a23=1,2,3,4,5,6,i,j,sum=0;for(i=0;i2;i+)for(j=0;j3;j+)sum+=aij;printf(The sum is :%dn,sum);2. 有三个字符串,要求按照字母的顺序输出。假定为:America,China,India;代码如下:*includemain

11、()char a=China,b=America,c=India, t=0;int i,j;if (strcmp(a,b)0)strcpy(t,a);strcpy(a,b);strcpy(b,t);if (strcmp(a,c)0)strcpy(t,a);strcpy(a,c);strcpy(c,t);if (strcmp(b,c)0)strcpy(t,b);strcpy(b,c);strcpy(c,t);puts(a);puts(b);puts(c);3. 求一个3*4矩阵的所有靠外侧的元素值之和。矩阵如下:123456789101112代码如下:*includemain()int a43,

12、i,j,m=1,sum=0;for(i=0;i4;i+)for(j=0;j3;j+,m+)aij=m;for(i=0;i4;i+)for(j=0;j3;j+)if(i=0|i=3)sum+=aij;elseif(j=0|j=2)sum+=aij;printf(The sum is: %dn,sum);4. 将一个数组中的值按逆序重新存放,例如原来的顺序为:8,6,5,4,1。要求改为:1,4,5,6,8。代码如下:*includeint main()int a = 8, 6, 5, 4, 1 , i, j, t;for (i = 0;i=2; i+)t = ai;ai = a4 - i;a4

13、- i = t;for (i = 0; i 5; i+)printf(%d , ai);printf(n);5. 已有一个排序好的数组,输入一个数,要求按原来的顺序将它插入数组中。假定排序好的数组为:a=1 ,8,11,14,16,17,21代码如下:*includeint main()int a = 1, 8, 11, 14, 16, 17, 21 , i, j, t, b8;printf(Please input a number:);scanf(%d, &t);for (i = 0; i t)j = i;break;for (i = 0; i 8; i+)if (ij) bi = ai;

14、elseif (i = j) bi = t;else bi = ai - 1;for (i = 0; i 8; i+)printf(%d , bi);printf(n);6. 求一维数组各元素的平均值。假定数组为:a=1,2,3,4,5,6代码如下:*includemain()int a6,i,sum=0;for(i=0;i6;i+)ai=i+1;for(i=0;i6;i+)sum+=ai;printf(The sum is :%dn,sum);7. 编写一个程序,将两个字符串连接起来,不要用strcat函数。代码如下:*includeint main()char a = China , b

15、= stronger!;char csizeof(a)+sizeof(b);int i, j;for (i = 0; ai != 0; i+)ci = ai;for (j = 0; bj != 0; j+)ci + j = bj;ci + j = 0;printf(连接后的字符串为:%sn, c);第七章1. 编写一个函数,使输入的一个字符串反序存放,在主函数中输入和输出字符串。代码如下:*include*includevoid sort(char);int main()char a101;printf(请输入一个字符串100个字符以:);scanf(%s, a);sort(a);printf

16、(%sn, a);/参看函数原型声明,参数为字符数组,为传址调用,故对形参的操作会改变实参void sort(charstr)char t;int i, j = strlen(str);/j获取串长for (i = 0; i = (j-1) / 2; i+)/实现倒序交换t = stri;stri = strj-i-1;strj-i-1 = t;strj = 0;/在字符串末尾加上完毕符2. 已有变量定义和函数调用语句int *=57;isprime*;函数isprime用来判断一个整数*是否为素数,假设是素数,函数返回1,否则返回0。请编写isprime函数。函数代码如下:int ispri

17、me(inta)int i, s = 1;for (i = 2; i a; i+)if (a%i = 0)s = 0;break;return s;3. 已有变量定义和函数调用语句int a=1,b=5;c=fun(a,b),fun函数的作用是计算两个数之差的绝对值,并将差值返回调用函数,请编写fun函数。函数代码如下:int fun(inta, intb)int s;if (a b)s = b - a;else s = a - b;return s;4. 编写一个函数,由实参传来一个字符串,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出统计结果。代码如下:*in

18、cludevoid fun(charstr)int i,num,ch,sp,other;num = ch = sp = other = 0;for (i = 0; stri != 0; i+)if (stri = a&stri = A&stri = 0&stri = 9)num+;elseif (stri = )sp+;else other+;printf(字母个数:%d,数字个数:%d,空格个数:%d,其他字符:%dn, ch, num, sp, other);int main()char a11;gets(a);fun(a);5. 输入一个只含数字字符的字符串,编写一函数,要求输出这个字符

19、串,但每个数字字符之间空一个空格,例如,输入:123456,应输出:1 2 3 4 5 6。代码如下:*includevoid print(charstr)int i;for (i = 0; stri != 0; i+)if (stri+1=0)printf(%c, stri);else printf(%c , stri);printf(n);int main()char a11=123456;print(a);6. 编写函数,把一个字符串连接到另一个字符串的后面,形成一个新的字符串。代码如下:*include*includevoid contact(chara, charb)int i, j

20、;char c20;for (i = 0; ai != 0; i+)ci = ai;for (j = 0; bj != 0; j+)cj + i = bj;ci + j = 0;printf(%sn, c);int main()char a = China , b = stronger!;contact(a, b);7. 用递归法求1+2+3+4+n。代码如下:*includeint sum(inta)int s;if (a 0)s =a+sum(a-1);else s=0;return s;int main()int n;scanf(输入一个整数:%d, &n);printf(%dn, su

21、m(n);第八章1. 输入2个整数,求它们相除的余数,用带参的宏实现。代码如下:*include*definem(i,j) (i)%(j)int main()int i,j;printf(请输入两个整数:);scanf(%d%d, &i,&j);printf(%dn, m(i,j);2. 给年份定义一个宏,以判断该年份是否为闰年。代码如下:*include*defineFLAG(i) (i)%400=0|(i)%4=0&(i)%100=0)int main()int i,j;printf(请输入一个年份:);scanf(%d, &i);if (FLAG(i) printf(该年是闰年。n);e

22、lse printf(该年不是闰年。n);第九章1. 编写一个函数对输入的10个字符按由小到大排序,用指针作参数。*includechar* sort(char*);/形参为指针,传址调用,返回值类型可设为空int main()char a11,*b;int m;for (m = 0; m 10; m+)scanf(%c, &am);b=sort(a);for (m = 0; m 10; m+)printf(%c, bm);char* sort(char* ch)int i, j;char t;for (i = 0; i 10; i+)for (j = i; j chj)t = chi;chi

23、 = chj;chj = t;returnch;2. 用指向指针的方法对6个字符串排序输出。要求将排序单独编写成一个函数。数据在主函数中输入,最后在主函数中输出排序结果。代码如下:*include*includechar *sort(char*);int main()char *a6,str6101;int i;printf(请输入6个字符串(100字符以):);for (i = 0; i 6; i+)scanf(%s, stri);ai = stri;sort(a);for (i = 0; i 6; i+)printf(%sn, ai);char *sort(char *s)int i,j;

24、char *temp;for (i = 0; i 6; i+)for (j = i; j 0)temp = sj;sj = si;si = temp;return *s;3. 输入5行文字,每行不超过40个字符。统计各行大写字母、小写字母、空格、数字以及其他字符各有多少,用二维字符数组指针实现。代码如下:*includeint *kind(char*,int*);int main()char *str5, s541;int i;int result3;printf(请输入5行字符串(40字符以):);for (i = 0; i 5; i+)scanf(%s, si);stri = si;kin

25、d(str, result);printf(数字个数为:%d,小写字母个数为:%d,大写字母个数为:%d.n, result0, result1, result2);int *kind(char *s,int* result)int digit = 0, ch1 = 0, ch2 = 0, space = 0, i, j;for (i = 0; i = a&sij = A&sij = 0&sij = 9)digit+;else space+;result0 = digit;result1 = ch1;result2 = ch2;returnresult;4. 用指针编写求字符串长度的函数。函数

26、代码如下:int slength(char* s)int i, j = 0;for (i = 0; si != 0; i+)j+;return j;5. 编写函数,对传送过来的3个数选出最大数和最小数,并通过形参返回调用函数。函数代码如下:*includeint main()void pare(int, int, int, int&, int&);int a, b, c, ma*, min;scanf(%d%d%d, &a, &b, &c);ma* = min = a;pare(a, b, c, ma*, min);printf(最大值:%d,最小值:%d.n, ma*, min);void

27、pare(inta, intb, intc, int& *, int& y)* = * c (* b * : b) : c;y = y c (y b y : b) : c;6. 编写程序,将字符串中的第m个字符开场的全部字符复制成另一个字符串。要求在主函数中输入字符串及m的值并输出复制结果,在被调用函数中完成复制。代码如下:*includeint main()char* copy(char*, int);char s101;char* r;int m;printf(请输入字符串:);scanf(%s, &s);printf(请输入复制的起始位置:);scanf(%d, &m);r=copy(s

28、, m);printf(复制后的函数为:%s, r);char* copy(char* str, intsite)int i;char *p;p = &strsite - 1; return p; 第十章1. 定义一个构造体类型,成员包括职工号、性别、年龄、工资和地址。定义构造体指针和数组,数组含4个元素,用初始化方式赋值并输出。代码如下:*includeint main()structworkerchar number5;/职工号char name20;char se*;int age,pay;char address100;structworker *p,workers4 = 0001,

29、Zhousan, M, 23, 1300, Nanchang Jiang*i , 0002, Lisi, F, 25, 1300, Poyang Jiang*i province , 0003, Wangwu, F, 22, 1400, *inyu Jiang*i , 0004, Maliu, M, 21, 1100, Ganzhou Jiang*i ;int i;p = workers;printf(NumbertNametSe*tAgetPaytAdresstn);for (i = 0; i 4; i+)printf(%st%st%ct%dt%dt%sn, pi.number, pi.na

30、me, pi.se*, pi.age, pi.pay, pi.address);2. 存储一个班学生,然后输入一个学生的,查找该人是否为该班的学生。代码如下:*include*includeint main()structstudentchar name20;structstudent *p, stu5 = Zhou chang, Zhang long, Zhao qing, Hu wei, Liu jian ;char n20=Zhao qing;int i;p = stu;printf(请输入以查找:);gets(n);for (i = 0; i name, n) = 0)printf(是

31、该班级学生。n);break;elseif (i = 4)printf(不是该班级学生。n);3. 读入班级学生人数,每名学生*和4门功课成绩,计算全班每名学生4门功课的平均成绩。代码如下:*include*include*definelensizeof(structstudent)int main()typedefstructstudentchar name20;char number10;/*float score4;float aver;structstudent* ne*t;/使用链表,假设不使用链表,可使用动态数组stus;/置空指针stus* stu = NULL;stus* p

32、= NULL;stus* head = NULL;unsigned n, i, j;float sum = 0;printf(请输入学生人数:);scanf(%d, &n);head = (stus*)malloc(len);/假设未正常开辟存空间,报错if (head = NULL)printf(存缺乏!);return 0;head-ne*t = NULL;/下一节点置空p = head;for (i = 0; i number);printf(请输入该学生(19字符以):);scanf(%s, p-name);printf(请输入该学生四门功课成绩:);for (j = 0; j sco

33、rej);stu = p;stu-ne*t = (stus*)malloc(len);/开辟新空间给下一节点p = stu-ne*t;p-ne*t = NULL;/尾部始终置空for (i = 0, stu = head; i n; i+)for (j = 0; j scorej;stu-aver = sum / 4.0;sum = 0;stu = stu-ne*t;printf(这些学生信息如下:n);printf(*tttt平均分nn);for (i = 0, stu = head; i ne*t)printf(%stt%stt%.2fttn, stu-number, stu-name,

34、stu-aver);printf(n);free(head);/释放存空间4. 有4个学生,每个学生包括*、成绩。要求找出成绩最高者的*和。代码如下:*includeint main()typedefstructstudentchar number10;char name20;float grades;stus;float ma*;int i;stus s4;for (i = 0; i 4; i+)printf(请输入第%d个学生*(9字符以):, i + 1);scanf(%s, si.number);printf(请输入第%d个学生(19字符以):, i + 1);scanf(%s, si.name);printf(请输入第%d个学生成绩:, i + 1);scanf(%f, &si.grades);ma* = 0;for (i = 0; i 4; i+)if (ma* si.grades)ma* = si.grades;printf(拥有最高分的学生信息如下:n);printf(*tttt成绩n);for (i = 0; i 4; i+)if (ma* = si.grades)printf(%stt%stt%fn, si.number, si.name, si.grades);. z.

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!