C语言程序设计答案.pdf_第1页
C语言程序设计答案.pdf_第2页
C语言程序设计答案.pdf_第3页
C语言程序设计答案.pdf_第4页
C语言程序设计答案.pdf_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

第一章课后答案第一章课后答案 1. 单项选择题: (1)B (2)A (3)C (4)B (5)C 2. #include int main() printf(“Work Hard!n“); return 0; 3. #include int main() printf(“*n *n *n *n*n“); return 0; 4. #include int main() int m,n; printf(“请输入树苗及人数:“); scanf(“%d%d“, printf(“%d %dn“,m/n,m%n); return 0; 第二章课后答案第二章课后答案 1. 单项选择题: (1)A (2)C (3)B (4)B (5)B (6)结果都为 6,无答案 (7)D (8)A (9)A (10)A (11)D (12)B (13)D (14)D (15)B (16)C (17)C (18)D (19)B A (20)D (21)A B (22)C (23)C (24)A (25)A (26)B (27)D 2. 填空题: (1)3.141593,3.1416,3.142 (2)3.500000,3.5 (3)31.415920,3.141592e+001 (4)127, 127, 177, 7f, 127 (5)127,127 ,177 ,7f ,127 (6)c=K (7)a=12,b=345 (8)c=A (9)n=64 (10)x= 1.23,y= 50.00 (11)y=6,x=6 (12)A,B,65,66 (13)6,8,6,7 (14) :1 :1 :1 :1 :0 :1 3. 编程题: (1)#include main() char ch; ch=getchar(); printf(“%dn“,ch); (2)#include main() char ch; ch=getchar(); printf(“%c %c %cn“,ch-1,ch,ch+1); (3)#include main() int x; scanf(“%d“, printf(“%o %x n“,x,x); (4)#include #define PI 3.1415926 main() double r,h,v; scanf(“%lf%lf“, v=PI*r*r*h/3; printf(“%.2fn“,v); 第三章课后答案第三章课后答案 1. 单项选择题: (1)D (2)C (3)B (4)B (5)D (6)A A (7)D C (8)A 2. 填空题: (1)x%2=0 (2)a%b=0 (3)a*a=b*b+c*c|b*b=a*a+c*c|c*c=a*a+b*b (4)a+bc switch(x%7) case 0: printf(“Sun“); break; case 1: printf(“Mon“); break; case 2: printf(“Tue“); break; case 3: printf(“Wed“); break; case 4: printf(“Thu“); break; case 5: printf(“Fri“); break; case 6: printf(“Sat“); (2)#include main() switch(123456%14) case 0: case 1: printf(“an“); break; case 2: case 13:printf(“bn“); break; case 3: case 12:printf(“cn“); break; case 4: case 11:printf(“dn“); break; case 5: case 10:printf(“en“); break; case 6: case 9:printf(“fn“); break; case 7:printf(“gn“); break; case 8:printf(“hn“); break; 第四章第四章 循环循环 任务实践和课后习题答案 习题答案习题答案 【任务实践任务实践】简单的计算器 用 switch 语句编程设计一个简单的计算器程序,要求根据用户从键盘输入的表达式: 操作数 1 运算符 op 操作数 2 计算表达式的值,指定的算术运算符为加(+) 、减(-) 、乘(*) 、除(/) 。 如果要求连续做多次算术运算,每次运算结束后,程序都给出提示: Do you want to continue(Y/N or y/n)? 用户输入 Y 或 y 时,程序继续进行其他算术运算;否则程序退出运行状态。编写程序实现。 参考答案如下: #include int main() int select; double a,b,result; char op; char flag=Y; while (flag=Y|flag=y) printf(“请输入的表达式:操作数 1 运算符 op 操作数 2n“); scanf(“%lf%c%lf“, switch(op) case +: result=a+b;break; case -: result=a-b;break; case *: result=a*b;break; case /: result=a/b;break; printf(“%.2fn“,result); flag=getchar();/用来接收多余的回车符 printf(“Do you want to continue(Y/N or y/n)?n“); flag=getchar(); return 0; 【课后习题】【课后习题】 1.选择题。 (1)C (2)D (3)D (4)A (5)C (6)AC (7)A (8)B 2.读程序,写结果。 (1)以下程序执行后的输出结果是 54321。 (2)以下程序执行后的输出结果是 8 。 (3)以下程序执行后的输出结果是 32 。 (4)以下程序的运行结果是 s=7 。 (5)以下程序的运行结果是 8 。 3.程序设计题。 (1) 输出所有的水仙花数, 所谓水仙花数是指一个三位数, 其各位数字立方和等于该数本身, 例如,153 是水仙花数,因为 153=13+53+33。参考答案如下: #include int main() int i,j,k,n; printf(“水仙花数是:“); for(n=100;n int main() int n,s=0,t=1; for(n=1;n20,则输出错误。 (3) 求 s(n)=a+aa+aaa+aaa 之值,其中 a 是一个数字。参考答案如下: #include int main() int i, n, a, item, sum; scanf(“%d%d“, item = 0; /item 初始化为 0 sum = 0; for(i=1; i100 为止。参考 答案为: #include int main() int t; for(t=7;t int main() int day,x1,x2; day=9; x2=1; while(day0) x1=(x2+1)*2; x2=x1; day-; printf(“桃子总数=%dn“,x1); return 0; (6)两个乒乓球队进行比赛,各出三人,甲队为 A、B、C 三人,乙队为 X、Y、Z 三人。有人 打听比赛对阵安排,A 说他不和 X 比,C 说他不和 X、Z 比,编写程序找出三对赛手名单。 参考答案为: #include int main() char i,j,k; /*i 是 a 的对手,j 是 b 的对手,k 是 c 的对手*/ for(i=x;i #include /使用随机函数 rand #include Int main() int magic; /*计算机“想“的数*/ int guess; /*人猜的数*/ int counter; /*记录人猜的次数*/ srand(time(NULL); magic = rand() % 100 + 1; counter = 0; do printf(“Please guess a magic number:“); scanf(“%d“, counter +; if (guess magic) printf(“Wrong!Too high!n“); else if (guess int common(int x, int y) /* 函数定义 */ if(x = y) return x; /* 递归出口 */ if(x y) return common(x / 2, y); return common(x, y / 2); int main() int m, n; scanf(“%d%d“, printf(“%dn“, common(m, n); return 0; 【课后习题答案】【课后习题答案】 1.选择题。 (1)B (2)D (3)A (4)B (5)B (6)CD (7)D (8)A (9)B(10)A (11)A (12)D (13)A (14)D (15)C (16)B 2. 填空题。 (1)运行以下程序,输入 100,其输出结果是。参考答案为: n=5050 n=100 (2)以下程序的运行结果是。参考答案为: a=10,b=3 (3)以下程序的运行结果是。参考答案为: fact=120 3. 编程题。 (1)编写一个程序,计算任意输入的整数的各位数字之和。参考答案为: #include #include int sumresult (int x) int k; int sum=0; while(x) k=x%10; x=x/10; sum=sum+k; return sum; int main() int x,sum; scanf(“%d“, sum=sumresult(x); printf(“%dn“,sum); return 0; (2) 编写一个程序, 验证哥德巴赫猜想: 任一个不小于 6 的偶数可以表示为两个素数之和, 例如:8=3+5,10=5+5,12=5+7,参考答案: #include #include int IsPrime (int m) int i, n; if ( m = 1 ) return 0; n = (int)sqrt (m); for( i = 2; i int func(int n) if (n=1) return 1; else return n*n+func(n-1); int main() int n; scanf(“%d“, printf(“%dn“,func(n); return 0; (4)编写一个程序,完成十进制整数到任意进制的转换。 /*采用辗转相除法将n转换成b进制的数放在字符数组s中, 将s数组逆转得到了转换结果。 程序如下:*/ #include void reverse(char s) int i,j,len; char *p=s,temp; for (len=0;*p!=0;p+,len+); for (i=0,j=len-1;i0) t=n%b; if (t=10) si+=t-10+A; else si+=t+0; n=n/b; if (sign %s(%d 进制)n“,n,str,base); return 0; (5)编写递归程序,实现将一个整数进行逆序输出。 #include #include void fun(int n); int main() fun(2356789); return 0; void fun(int n) if(n!=0) printf(“%d“,n%10); fun(n/10); (6) 编写一个程序, 从键盘输入一串字符,逆序输出。要求采用递归函数实现。参考答案: #include #include void rev(); int main() rev(); putchar(n); return 0; void rev() char c; c=getchar(); if (c!=n) rev(); putchar(c); 第六章课后答案第六章课后答案 1. 单项选择题单项选择题 (1)C (2)D (3)D (4)C (5)C (6)C (7)B (8)D 2. 请写出以下程序的运行结果:请写出以下程序的运行结果: (1)13579 (2)gfedcba (3)150 (4)136 (5)1237 (6)1 5 9 2 6 10 3 7 11 4 8 12 3. 程序设计程序设计 (1)#include int main() int a10; int i,j,t; for(i=0;i int main() int a10; int i,j,t,k; scanf(“%d“, for(i=0;i int cmpstring(char a,char b); int main() char a50,b50; printf(“请输入两个字符串:请输入两个字符串:n“); gets(a); gets(b); if(cmpstring(a,b)0) printf(“ab“); else if(cmpstring(a,b)=0) printf(“a=b“); else printf(“a int main() int a15=1,2,7,3,10,9,4,8,17,13,5,11,22,6,15; int i,j,k; for(i=0;i=j) k=i*(i+1)/2+j; else k=j*(j+1)/2+i; printf(“%3d“,ak); printf(“n“); return 0; (5)#include int main() int a34=1,2,3,4,5,6,7,8,9,10,11,12; int i,j,k,sum=0; for(i=0;i int main() int a34=11,22,33,44,15,26,17,8,9,30,10,23; int i,j,k,t; for(i=0;iaji) k=j; t=aki; aki=a0i; a0i=t; for(i=0;i int main() int a34=11,22,33,44,15,20,17,8,9,30,10,23; int i,j,k,col,max,flag=0,temp; for(i=0;i int main() int a10=11,22,33,44,15,20,17,30,10,23; int i,j,k; for(i=0;iaj+1/10) k=aj; aj=aj+1; aj+1=k; for(i=0;i #include int main() char str50=“hgfedcbwa“; int i,j,k,len; len=strlen(str); for(i=0;istrj+2) k=strj; strj=strj+2; strj+2=k; for(i=0;i int main() char str100=“A1B23CD45“; int i; char *p; for(i=0;stri!=0;i+) if(stri=0p-) *(p+1)=*p; stri=$; i+; puts(str); return 0; (2)#include #include int main() char str100=“asdasasdfgasdaszx67asdmklo“,substr10=“as“; int i,j,lenstr,lensubstr,count=0; /gets(str); /gets(substr); lenstr=strlen(str); lensubstr=strlen(substr); i=0; while(ilenstr-lensubstr) break; if(j=lensubstr) count+; printf(“%dn“,count); return 0; (3)下标法: #include int main() int a34=11,22,3,1,7,20,5,19,34,28,39,40 ; int i,j,sum=0; for(i=0;i int main() int a34=11,22,3,1,7,20,5,19,34,28,39,40 ; int i,j,sum=0; for(i=0;i #include #include #define min_int -2147483648 int maxk(int *p,int n,int k); int main() int n,*p,i,kvalue,k; scanf(“%d%d“, p=(int*)malloc(n*sizeof(int); for(i=0;imax) max=pj; index=j; pindex=min_int; return max; (5)#include #include void max_min(int *x,int n,int *pmax,int *pmin); int main() int n,*p,i,max,min; scanf(“%d“, p=(int*)malloc(n*sizeof(int); for(i=0;ixi) *pmin=xi; (6)#include #include void sort(int *x,int n); int main() int n,*p,i; scanf(“%d“, p=(int*)malloc(n*sizeof(int); for(i=0;i #include void sort(int *x,int n); int main() int *p,m,n,i,j; scanf(“%d%d“, p=(int*)malloc(m*sizeof(int*); for(i=0;i struct stu int year; int month; int day; date; int main() int i,sum; int leap13=0,31,28,31,30,31,30,31,31,30,31,30,31; scanf(“%d%d%d“, for(i=1,sum=date.day;i2) if(date.year%4=0|date.year%100=0 printf(“%dn“,sum); return 0; (2)#include #include struct stu int num; char name20; double score3; ; void print(stu *p,int n) int i; printf(“学号学号t 姓名姓名t 成绩成绩 1t 成绩成绩 2t 成绩成绩 3n“); for(i=0;i #include struct stu int num; char name20; double score3; ; int search(stu *p,int n,int stuNum) int i; for(i=0;i #include #include struct stu int num; char name20; double score3; ; void print(stu *p,int n) int i; printf(“学号学号t 姓名姓名t 成绩成绩 1t 成绩成绩 2t 成绩成绩 3n“); for(i=0;i0) s=pj; pj=pj+1; pj+1=s; int main() int n,i; stu *p; printf(“请输入学生人数:请输入学生人数:“); scanf(“%d“, p=(stu*)malloc(n*sizeof(stu); for(i=0;i #include struct node int data; struct node *next; ; node* creat(int n) int i; node * p,*h; h=(node*)malloc(sizeof(node); h-next=NULL; printf(“请输入链表中的数据:请输入链表中的数据:n“); for(i=0;idata); p-next=h-next; h-next=p; return h; void disp(node *h) node *p=h-next; while(p) printf(“%-5d“,p-data); p=p-next; printf(“n“); int main() int n; node *l; printf(“请输入数据个数:请输入数据个数:“); scanf(“%d“, l=creat(n); disp(l); return 0; (6)#include #include struct node int data; struct node *next; ; node* creat(int n) int i; node * p,*h; h=(node*)malloc(sizeof(node); h-next=NULL; printf(“请输入链表中的数据:请输入链表中的数据:n“); for(i=0;idata); p-next=h-next; h-next=p; return h; void disp(node *h) node *p=h-next; while(p) printf(“%-5d“,p-data); p=p-next; printf(“n“); void conv(node *h) node *p,*q; p=h-next; h-next=NULL; while(p) q=p-next; p-next=h-next; h-next=p; p=q; int main() int n; node *l; printf(“请输入数据个数:请输入数据个数:“); scanf(“%d“, l=creat(n); printf(“原链表:原链表:“); disp(l); printf(“逆置后:逆置后:“); conv(l); disp(l); return 0; (7)#include #include struct node int data; struct node *next; ; node* creat(int n) int i; static num=1; node * p,*h,*q; h=q=(node*)malloc(sizeof(node); printf(“请输请输入入%d 个递增数据建立链表个递增数据建立链表%d:n“,n,num+); for(i=0;idata); q-next=p; q=p; q-next=NULL; return h; void disp(node *h) node *p=h-next; while(p) printf(“%-5d“,p-data); p=p-next; node* merge(node *h1,node *h2) node *r,*p,*q,*t; r=h1; p=h1-next; q=h2-next; while(p r=p; p=p-next; else r-next=q; r=q; q=q-next; else t=q-next; free(q); q=t; r-next=p?p:q; free(h2); return h1; int main() int n; node *l,*l1,*l2; printf(“请输入第一个链表中数据的个数:请输入第一个链表中数据的个数:“); scanf(“%d“, l1=creat(n); printf(“请输入第二个链表中数据的个数:请输入第二个链表中数据的个数:“); scanf(“%d“, l2=creat(n); printf(“原链表:原链表:n“); printf(“l1=(“); disp(l1); printf(“)n“); printf(“l2=(“); disp(l2); printf(“)n“); l=merge(l1,l2); printf(“合并后:合并后:n“); printf(“l=(“); disp(l); printf(“)n“); return 0; 第九章第九章 预处理预处理 任务实践和课后习题答案 【任务实践】【任务实践】 用条件编译方法实现以下功能:从键盘输入一行电文,可以任意选择两种输出:一为原文输 出; 一为加密输出(将字母向后移动 3 位(如a编程d, .z编程c。 其他字符不变)。 用#define 命令来控制是否要译成密码。参考答案: #include #define CHANGE 1 int main() char str80; gets(str); int i=0; while(stri!=0) #if CHANGE if(stri=90|stri=122) stri=stri-25; else if(stri=65 c=ADD(SQR(a),SQR(b); printf(“%dn”,c); return 0; (3) 在“文件包含”预处理命令中,当#include 后面的文件名用“”括起来时,寻找被包含 文件的方式是( B ) A. 直接按系统设定的标准方式搜索目录 B. 先在源程序所在目录搜索,再按系统设定的标准方式搜索 C. 仅仅搜索源程序所在目录 D. 仅仅搜索当前目录 2.读程序写结果。 (1)分析下面程序运行结果。参考答案: input a number: 2 120 (2)分析下面程序运行结果。参考答案: 5 3.800000 8 9.700000 11 21.00000 (3)分析下面程序运行结果。参考答案: Input a number: 4 Sq=160 (4)分析下面程序运行结果。参考答案: input a number: 2 area of round is: 12.566360 3.定义一个参数的宏,使两个参数互换,并写出程序,输入两个数作为

温馨提示

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

评论

0/150

提交评论