c语言课后习题代码(17页).doc

上传人:1595****071 文档编号:37156965 上传时间:2022-08-30 格式:DOC 页数:17 大小:205KB
返回 下载 相关 举报
c语言课后习题代码(17页).doc_第1页
第1页 / 共17页
c语言课后习题代码(17页).doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《c语言课后习题代码(17页).doc》由会员分享,可在线阅读,更多相关《c语言课后习题代码(17页).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、-c语言课后习题代码-第 17 页第四章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

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

3、s :%d,the minimum is :%dn,max,min);4. 编写程序,实现功能:从键盘上输入1,2,3,4,分别显示excellent ,good,pass,fail。代码如下:#includemain()int a;printf(Please input a number:);scanf(%d,&a);switch(a)case 1:printf(Excellentn);break;case 2:printf(Goodn);break;case 3:printf(Passn);break;case 4:printf(Failn);break;default :printf(Y

4、ou input a wrong number!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

5、(Input a number:);scanf(%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 i

6、s :En);elseif(a70) printf(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(

7、i%2=0) sum+=i;printf(The 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 =

8、 %dn,sum);4. 编程求1000以内(包括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

9、*b*b+c*c*c)printf(%d ,i);printf(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,s

10、um=0;int i;for(i=0;i4;i+)if(i=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

11、,China,India;代码如下:#includemain()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矩阵的所有靠外侧的元素值之和。矩阵如下:123456789101

12、112代码如下:#includemain()int a43,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;else if(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

13、;i=2; i+)t = ai;ai = a4 - i;a4 - 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 (

14、i = 0; i 8; i+)if (ij) bi = ai;else if (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函数。代码如下:#incl

15、udeint main()char a = China , b = 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个

16、字符以内):);scanf(%s, a);sort(a);printf(%sn, a);/参看函数原型声明,参数为字符数组,为传址调用,故对形参的操作会改变实参void sort(char str)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 x=57;isprime(x);”函数isprime()用来判断一个整数x是否为素数,若是素数,

17、函数返回1,否则返回0。请编写isprime()函数。函数代码如下:int isprime(int a)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(int a, int b)int s;if (a b)s = b - a;else s = a - b;return s;4. 编写一个函数,由实参传来一个字符串

18、,统计此字符串中字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出统计结果。代码如下:#includevoid fun(char str)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+;else if (stri = )sp+;else other+;printf(字母个数:%d,数字个数:%d,空格个数:%d,其他字符:%dn, ch, num, sp, other);int main()ch

19、ar a11;gets(a);fun(a);5. 输入一个只含数字字符的字符串,编写一函数,要求输出这个字符串,但每个数字字符之间空一个空格,例如,输入:“123456”,应输出:“1 2 3 4 5 6”。代码如下:#includevoid print(char str)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. 编写函数,把一个字符串连接到另一个字符串的后面,形成一个新的

20、字符串。代码如下:#include#includevoid contact(char a, char b)int i, j;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(int a)int s;if (a 0)s =a+sum(a-1);else s=

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

22、 i,j;printf(请输入一个年份:);scanf(%d, &i);if (FLAG(i) printf(该年是闰年。n);else 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)i

23、nt i, j;char t;for (i = 0; i 10; i+)for (j = i; j chj)t = chi;chi = chj;chj = t;return ch;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

24、(a);for (i = 0; i 6; i+)printf(%sn, ai);char *sort(char *s)int i,j;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;print

25、f(请输入5行字符串(40字符以内):);for (i = 0; i 5; i+)scanf(%s, si);stri = si;kind(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 =

26、 digit;result1 = ch1;result2 = ch2;return result;4. 用指针编写求字符串长度的函数。函数代码如下:int slength(char* s)int i, j = 0;for (i = 0; si != 0; i+)j+;return j;5. 编写函数,对传送过来的3个数选出最大数和最小数,并通过形参返回调用函数。函数代码如下:#includeint main()void compare(int, int, int, int&, int&);int a, b, c, max, min;scanf(%d%d%d, &a, &b, &c);max =

27、 min = a;compare(a, b, c, max, min);printf(最大值:%d,最小值:%d.n, max, min);void compare(int a, int b, int c, int& x, int& y)x = x c ? (x b ? x : b) : c;y = y c ? (y b ? y : b) : c;6. 编写程序,将字符串中的第m个字符开始的全部字符复制成另一个字符串。要求在主函数中输入字符串及m的值并输出复制结果,在被调用函数中完成复制。代码如下:#includeint main()char* copy(char*, int);char s1

28、01;char* r;int m;printf(请输入字符串:);scanf(%s, &s);printf(请输入复制的起始位置:);scanf(%d, &m);r=copy(s, m);printf(复制后的函数为:%s, r);char* copy(char* str, int site)int i;char *p;p = &strsite - 1; return p; 第十章1. 定义一个结构体类型,成员包括职工号、姓名、性别、年龄、工资和地址。定义结构体指针和数组,数组含4个元素,用初始化方式赋值并输出。代码如下:#includeint main()struct workerchar

29、number5;/职工号char name20;char sex;int age,pay;char address100;struct worker *p,workers4 = 0001, Zhousan, M, 23, 1300, Nanchang Jiangxi , 0002, Lisi, F, 25, 1300, Poyang Jiangxi province , 0003, Wangwu, F, 22, 1400, Xinyu Jiangxi , 0004, Maliu, M, 21, 1100, Ganzhou Jiangxi int i;p = workers;printf(Num

30、bertNametSextAgetPaytAdresstn);for (i = 0; i 4; i+)printf(%st%st%ct%dt%dt%sn, pi.number, pi.name, pi.sex, pi.age, pi.pay, pi.address);2. 存储一个班学生姓名,然后输入一个学生的姓名,查找该人是否为该班的学生。代码如下:#include#includeint main()struct studentchar name20;struct student *p, stu5 = Zhou chang, Zhang long, Zhao qing, Hu wei, Li

31、u jian ;char n20=Zhao qing;int i;p = stu;printf(请输入姓名以查找:);gets(n);for (i = 0; i name, n) = 0)printf(是该班级学生。n);break;else if (i = 4)printf(不是该班级学生。n);3. 读入班级学生人数,每名学生学号和4门功课成绩,计算全班每名学生4门功课的平均成绩。代码如下:#include#include#define len sizeof(struct student)int main()typedef struct studentchar name20;char nu

32、mber10;/学号float score4;float aver;struct student* next;/使用链表,若不使用链表,可使用动态数组stus;/置空指针stus* stu = NULL;stus* p = 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-next = NULL;/下一节点置空

33、p = head;for (i = 0; i number);printf(请输入该学生姓名(19字符以内):);scanf(%s, p-name);printf(请输入该学生四门功课成绩:);for (j = 0; j scorej);stu = p;stu-next = (stus*)malloc(len);/开辟新空间给下一节点p = stu-next;p-next = NULL;/尾部始终置空for (i = 0, stu = head; i n; i+)for (j = 0; j scorej;stu-aver = sum / 4.0;sum = 0;stu = stu-next;p

34、rintf(这些学生信息如下:n);printf(学号tt姓名tt平均分nn);for (i = 0, stu = head; i next)printf(%stt%stt%.2fttn, stu-number, stu-name, stu-aver);printf(n);free(head);/释放内存空间4. 有4个学生,每个学生包括学号、姓名、成绩。要求找出成绩最高者的学号和姓名。代码如下:#includeint main()typedef struct studentchar number10;char name20;float grades;stus;float max;int i;

35、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);max = 0;for (i = 0; i 4; i+)if (max si.grades)max = si.grades;printf(拥有最高分的学生信息如下:n);printf(学号tt姓名tt成绩n);for (i = 0; i 4; i+)if (max = si.grades)printf(%stt%stt%fn, si.number, si.name, si.grades);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁