




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言课后习题答案第一章 习题答案 一、选择题 15:BDCDA 610:DABBB 1112:CC 二、填空题 1、main() 2、函数首部 ,函数体 3、函数 4、编辑、编译、连接、运行 5、.cpp、.obj、 .exe 6、; 或 分号 三、编程题 #include /* 包含标准库的信息 */ void main() /* 定义名为main 的函数,它不接受参数值 */ /* main函数的语句都被括在花括号中 */ printf(hello, worldn); /* main 函数调用库函数printf 以显示字符序列,其中n代表换行符 */ 第二章 习题答案 一、选择题 15:CBABB 610:CDCDD 1115:CADBC 1620:BDAAD 二、填空题 1、整型,实型,字符型,枚举类型 2、1 3、9 4、12353514 5、2,1 6、2,2 7、10 20 0 8、a=14 9、2,3,1 10、double 第三章 习题答案 一、选择题 15:CBBBC 610:DDDBB 二、填空题 1、控制语句,表达式语句, 复合语句 2、 ; 3、 4、1 5、a 6、c:dec=120,oct=170,hex=78,ASCII=x 7、32767,32767 8、10,A,10 9、3 3 10、 (1) 123.456001 (2) 123.456 (3) 123.4560 (4) 8765.456700 (5) 8765.457 (6) 8765.4567 (7) 8765.4567 三、编程题 1、参考答案: #include void main() int a,b,c; long int u,n; float x,y,z; char c1,c2; a=3;b=4;c=5; x=1.2;y=2.4;z=-3.6; u=51274;n=128765; c1=a;c2=b; printf(n); printf(a=%2d b=%2d c=%2dn,a,b,c); printf(x=%8.6f,y=%8.6f,z=%9.6fn,x,y,z); printf(x+y=%5.2f y+z=%5.2f z+x=%5.2fn,x+y,y+z,z+x); printf(u=%6ld n=%9ldn,u,n); printf(c1=%c or %d(ASCII)n,c1,c1); printf(c2=%c or %d(ASCII)n,c2,c2); 2、参考答案: #include void main() float a, b, c, t; printf(please input a,b,c:n); scanf (%f, %f, %f, &a, &b, &c); t=(a+b+c)/3; printf (average of %6.2f、%6.2f and %6.2f is %6.2fn,a,b,c,t); 3、参考答案: #include main() int R, d; float s; printf(请输入圆的半径); scanf(%d,&R); d=2*R; c=2*3.14159*R; printf(d=%d,c=%fn,d,c); 4、参考答案: #include void main() int h, f, x, y; /* x为鸡的数量,y为兔的数量 */ printf(请输入鸡兔的总头数h,总脚数 f:); scanf(%d%d, &h, &f); x=(4*h-f)/2; y=(f-2*h)/2; printf(笼中有鸡%d 只,有兔%d只。n, x, y); 第四章 习题答案 一、选择题 CDDDD CDBBC 二、填空题 1、&, | , !, ! , | | 2、(y%2 0) 3、1 4、(a+bc&a+cb&b+ca) 5、2 3 3 6、7 三、编程题 1、参考答案: #include void main() int x; scanf( %d,&x); if (x%5 0 & x%7 0) printf(yesn); else printf(non); 2、参考答案: #include void main( ) int a, b, c, max ; printf (请输入三个整数:%d%d%dn); scanf( %d%d%d, &a, &b, &c ); if ( a=b ) if ( a=c ) max=a; else max=c; else if ( b=c ) max=b; else max=c; printf (n 最大数为:%dn,max ); 3、参考答案: #include void main ( ) float x , y ; printf( 请输入x 的值: ); scanf( %f, &x ) ; if (x1) y=1; else if (x10) y=2*x-1; else y=3*x-11; printf(y = %.2fn, y ); 4、参考答案: #include void main( ) int year; float money,rate,total; /* money:本金 rate:月利率 total:本利合计 */ printf(Input money and year =?); scanf(%f%d, &money, &year); /* 输入本金和存款年限 */ if(year 1) rate=0.00315; /* 根据年限确定利率 */ else if(year 2) rate=0.00330; else if(year 3) rate=0.00345; else if(year 5) rate=0.00375; else if(year 8) rate=0.00420; else rate=0.0; total=money + money * rate * 12 * year; /* 计算到期的本利合计 */ printf( Total = %.2fn, total); 第五章 习题答案 一、选择题 15: ACCBA 610:ACDCB 二、填空题 1、(1) i=9 或 i10 (2) j%3!=0 2、7 3、(1) ch=ch+1、(2) printf(n) 三、编程题 1、参考答案: #include void main( ) int i=2; long p=1; do p=p*i; i=i+2; while (i10); printf(2*4*6*8=%ldn,p); 2、参考答案: #include void main( ) int n=0; char c; c=getchar(); while(c!=n ) if(c=a&c=A&c=Z) n+; c=getchar(); printf(%dn,n); 3、参考答案: #include void main() int a,max; scanf(%d,&a); max=a; while(a!=0) scanf(%d,&a); if(maxa) max=a; printf(%d,max); 4、参考答案: #include void main() int day = 0, buy = 2; float sum = 0.0, ave; do sum += 0.8 * buy; day+; buy *= 2; while (buy = 100); ave = sum / day; printf(“%f”, ave); 5、参考答案: #include void main() int f1,f2,f5,count=0; for(f5=0; f5=20; f5+) for(f2=0; f2 5: %4d 2: %4d 1: %4dn,+count,f5,f2,f1); printf(共有%d 种换法,count); 6、参考答案: #include void main() int i,j,n; printf(nPlease Enter n:); scanf(%d,&n); for(i=1;i=n;i+) for(j=1;j=n-i;j+) printf( ); for(j=1;j=2*i-1;j+) printf(*); printf(n); 7、参考答案: #include void main() int i, j; float g, sum, ave; for (i=1; i=6; i+) sum = 0; for (j=1; j=5; j+) scanf(“%f”, &g); sum += g; ave = sum / 5; printf(“No.%d ave=%5.2fn”, i, ave); 8、参考答案: #include void main() int n,t,number=20; float a=2,b=1,s=0; for(n=1;n=number;n+) s=s+a/b; t=a; a=a+b; b=t; printf(s=%9.6fn,s); 第六章 习题答案 一、选择题 15:CBABD 610:CDBCD 二、填空题 1、库函数(或系统函数) ,自定义函数 2、无参函数, 有参函数 3、传值方式 4、实参, 形参 5、1 3 6、max is 2 7、15 8、1,2,3 三、编程题 1、参考答案: #include int is_prime( int a) int i,p=1; for( i=2;ia-1; i+) if (a%i 0) p=0; break; return (p); void main() int i=11; if (is_prime(i) printf(1); else printf(0); 2、参考答案: #include int gongyue(int num1,int num2) int temp,a,b; if(num1 =i 三、编程题 1、参考答案: #include void main() int i,a20,s,count; s=count=0; for ( i=0; i20; i+) scanf(%d, &ai); for ( i=0; i20; i+) if (ai0) continue ; s+=ai; count+; printf(s=%dt count=%dn,s,count); 2、参考答案: #include void main() int a34,i,j,max; for (i=0;i3; i+) for (j=0; j4; j+) scanf(%d,&aij); max=a00; for (i=0;i3;i+) for (j=0;jmax) max=aij; printf(max=%dn,max); 3、参考答案: #include void main() int a11=3,4,7,9,10,13,14,15,18,20; int i,j,n; scanf (%d,&n); i=0; while (i10) if (ni; j-) aj=aj-1; ai=n; break; i+; if (i=10) a10=n; for (i=0;i*s 5. *(+p) 三、编程题 1. 编程实现从键盘输入一个字符串, 将其字符顺序颠倒后重新存放, 并输出这个字符串。 #include #include void Inverse(char *pStr)? main() char str80? printf(Input a string:n)? gets(str)? /*输入字符串*/ Inverse(str)? /*将存于 str 数组中的字符串逆序存放*/ printf(The inversed string is:n)? puts(str)? /*输出字符串*/ /*函数功能: 实现字符串逆序存放 函数参数: 字符指针变量,所指向的存储单元存放源字符串,逆序后的字符串也存放于此 返回值: 无*/ void Inverse(char *pStr) int len? char temp? char *pStart? /*指针变量 pStart 指向字符串的第一个字符*/ char *pEnd? /*指针变量 pEnd指向字符串的最后一个字符*/ len = strlen(pStr)? /*求出字符串长度*/ for (pStart=pStr,pEnd=pStr+len?1? pStartpEnd? pStart+,pEnd?) temp = *pStart? *pStart = *pEnd? *pEnd = temp? 2.从键盘任意输入 10 个整数,用函数编程实现计算最大值和最小值,并返回它们所在数组 中的位置。 #include int FindMax(int num, int n, int *pMaxPos)? int FindMin(int num, int n, int *pMinPos)? main() int num10, maxValue, maxPos, minValue, minPos, i? printf(Input 10 numbers:n )? for (i=0? i10? i+) scanf(%d, &numi)? /* 输入 10 个数*/ maxValue = FindMax(num, 10, &maxPos)? /* 找最大值及其所在下标位置 */ minValue = FindMin(num, 10, &minPos)? /* 找最小值及其所在下标位置 */ printf(Max=%d, Position=%d, Min=%d, Position=%dn, maxValue, maxPos, minValue, minPos)? /*函数功能:求 n个数中的最大值及其所在下标位置 函数入口参数:整型数组 num,存储 n个整数,整型变量 n,表示数组元素个数 函数出口参数:整型指针变量 pMaxPos,指向的地址单元存储最大值在数组中的下标位置 函数返回值: 最大值*/ int FindMax(int num, int n, int *pMaxPos) int i, max? max = num0? /*假设 num0为最大*/ *pMaxPos = 0? /*假设最大值在数组中的下标位置为 0 */ for (i = 1? i max) max = numi? *pMaxPos = i? return max ? /*函数功能: 求 n个数中的最小值及其所在下标位置 函数入口参数: 整型数组 num,存储 n个整数,整型变量 n,表示数组元素个数 函数出口参数: 整型指针变量 pMinPos,指向的地址单元存储最小值在数组中的下标位置 函数返回值: 最小值*/ int FindMin(int num, int n, int *pMinPos) int i, min? min = num0? /*假设 num0为最小*/ *pMinPos = 0? /*假设最小值在数组中的下标位置为 0 */ for (i = 1?i 10?i+) if (numi min) min = numi? *pMinPos = i? return min ? 3. 将 5 个字符串从小到大排序后输出。 #include void main(void) int i? char *pcolor5= red, blue, yellow, green, purple ? void fsort(char *color , int n)? fsort( pcolor, 5 )? for(i = 0? i 5? i+) printf(%s , pcolori)? void fsort(char *color , int n) int k, j? char *temp? for(k = 1? k n? k+) for(j = 0? j 0) temp = colorj? colorj = colorj+1? colorj+1 temp? 4. 编写一个能对任意mn阶矩阵进行转置运算的函数 Transpose()。 #include #define ROW 3 #define COL 4 void Transpose(int (*a)COL, int (*at)ROW, int row, int col)? void InputMatrix(int (*s)COL, int row, int col)? void PrintMatrix(int (*s)ROW, int row, int col)? main() int sROWCOL? /*s 代表原矩阵*/ int stCOLROW? /*st 代表转置后的矩阵*/ printf(Please enter matrix:n)? InputMatrix(s, ROW, COL)? /*输入原矩阵,s 指向矩阵 s的第 0行,是行指针*/ Transpose(s, st, ROW, COL)?/*对矩阵 s 进行转置,结果存放于 st 中*/ printf(The transposed matrix is:n)? PrintMatrix(st, COL, ROW)? /*输出转置矩阵,*st 指向 st 的第 0 行,是行指针*/ /* 函数功能:对任意row行 col 列的矩阵转置 函数入口参数:指向一维整型数组的指针变量a,指向单元存放转置前的矩阵元素 整型变量 row,矩阵的行数即二维整型数组的行数 整型变量 col,矩阵的列数即二维整型数组的列数 函数出口参数:指向一维整型数组的指针变量at,指向单元存放转置后的矩阵元素 函数返回值: 无*/ void Transpose(int (*a)COL, int (*at)ROW, int row, int col) int i, j? for (i=0? irow? i+) for (j=0? jcol? j+) *(*(at+j)+i) = *(*(a+i)+j)? void InputMatrix(int (*s)COL, int row, int col) /*输入矩阵元素*/ int i, j? for (i=0? irow? i+) for (j=0? jcol? j+) scanf(%d, *(s+i)+j)? /*这里*(s+i)+j 等价于&sij*/ void PrintMatrix(int (*s)ROW, int row, int col) /*输入矩阵元素*/ int i, j? for (i=0? irow? i+) for (j=0? jcol? j+) printf(%dt, *(*(s+i)+j)? /*这里*(*(s+i)+j)等价于 sij*/ printf( n)? 第九章 习题答案 一、选择题 1?5 B D D A C 6?10 B C A D C 二、填空题 1. struct DATA d=2006,10,1? 2. sizeof(struct node) 3. personi.sex 4. 13431 5. (1)struct node* (2)*s (3)p 三、编程题 1. 定义一个能正常反映教师情况的结构体 teacher,包含教师姓名、性别、年龄、所在部门和 薪水; 定义一个能存放两人数据的结构体数组 tea, 并用如下数据初始化: “Mary “, W,40, Computer , 1234 ,“Andy“, M,55, English , 1834;要求:分别用结构体数组 tea 和指针 p输出各位教师的信息,写出完整定义、初始化、输出过程。 #include struct teacher char name8? char sex? int age? char department20? float salary? ? struct teacher tea2= Mary , W,40, Computer , 1234 , Andy , M,55, English , 1834 ? main() int i? struct teacher *p? for( i=0?i2?i+) printf(%s,t%c,t%d,t%s,t%f, ,teai.sex,teai.age,teai.department,teai.salary)? for(p=tea?pname, p?sex, p?age, p?department, p?salary)? 2. 定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题。 #include struct int year? int month? int day? date? main() int days? printf(“Input year,month,day:”)? scanf(“%d,%D,%d”,&date.year,&date.month,&date.day)? switch(date.month) case 1: days=date.day? break? case 2: days=date.day+31? break? case 3: days=date.day+59? break? case 4: days=date.day+90? break? case 5: days=date.day+120? break? case 6: days date.day+31? break? case 7: days=date.day+181? break? case 8: days=date.day+212? break? case 9: days date.day+243? break? case 10: days date.day+273? break? case11: days=date.day+304? break? case 12: days date.day+334? break? if(date.year%4 0&date.year%100!=0|date.year%400 0)&date.month 3) days+=1? printf(“n%d/%d is the %dth day in%d.”,date.month,date.day,days,date.year)? 3.构建简单的手机通讯录,手机通讯录包括信息 (姓名、年龄、联系电话),要求实现新建、 查询功能。假设通信录最多容纳 50 名联系人信息。 #include #include /*手机通讯录结构定义*/ struct friends_list char name10? /* 姓名 */ int age? /* 年龄 */ char telephone13? /* 联系电话 */ ? int Count = 0? /* 定义全局变量 Count,记录当前联系人总数 */ void new_friend(struct friends_list friends )? void search_friend(struct friends_list friends , char *name)? int main(void) int choice? char name10? struct friends_list friends50? /* 包含 50 个人的通讯录 */ do printf(手机通讯录功能选项:1:新建 2:查询 0:退出n)? printf(请选择功能:)? scanf(%d, &choice)? switch(choice) case 1: new_friend(friends)? break? case 2: printf(请输入要查找的联系人名:)? scanf(%s, name)? search_friend(friends, name)? break? case 0: break? while(choice != 0)? printf(谢谢使用通讯录功能!n)? return 0? /*新建联系人*/ void new_friend(struct friends_list friends ) struct friends_list f? if(Count 50) printf(通讯录已满!n)? return? printf(请输入新联系人的姓名:)? scanf(%s, )? printf(请输入新联系人的年龄:)? scanf(%d, &f.age)? printf(请输入新联系人的联系电话:)? scanf(%s, f.telephone)? friendsCount = f? Count+? /*查询联系人*/ void search_friend(struct friends_list friends , char *name) int i, flag = 0? if(Count 0) printf(通讯录是空的!n)? return? for(i = 0? i Count? i+) if(strcmp(name,) 0) /* 找到联系人*/ flag=1? break? if(flag) printf(姓名: %st, fr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 售前保密协议书范本
- 环保型产业园区厂房租赁及配套设施使用协议
- 草原生态旅游项目经营权转让合同
- 财务会计人员职业健康与安全劳动合同范本
- 虚拟股转股协议书范本
- 直销团长协议书范本
- 退房款协议书范本
- 沙滩浴场场地租赁及经营管理协议
- 展览馆产品陈列设计与实施协议
- 2024年拆迁安置房购房协议书范文(五篇)
- DB31/T 1096-2018医院日间手术管理规范
- DB32-T 5119-2025 锂离子电池工厂生产安全技术规范
- 中医诊所挂证医生合同6篇
- GB/T 14486-2008塑料模塑件尺寸公差
- 禾川x3系列伺服说明书
- 细胞生物学(全套1047张课件)
- 鱼丸生产加工项目可行性研究报告
- 架空乘人装置专项设计(一采区运输下山)
- 六年级下册“快乐读书吧”练习题试题及答案
- ★教导型组织-行动管理模式(三)
- 朗文英语2B英语复习资料
评论
0/150
提交评论