最新c语言程序设计教程课后题及模拟题参考答案.doc

上传人:1595****071 文档编号:34715175 上传时间:2022-08-18 格式:DOC 页数:145 大小:306.50KB
返回 下载 相关 举报
最新c语言程序设计教程课后题及模拟题参考答案.doc_第1页
第1页 / 共145页
最新c语言程序设计教程课后题及模拟题参考答案.doc_第2页
第2页 / 共145页
点击查看更多>>
资源描述

《最新c语言程序设计教程课后题及模拟题参考答案.doc》由会员分享,可在线阅读,更多相关《最新c语言程序设计教程课后题及模拟题参考答案.doc(145页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datec语言程序设计教程课后题及模拟题参考答案参考答案:习题11-1 填空题1.函数2.主函数main(),主函数main()3.主函数main()4.函数首部,函数体5., 6./*, */7.顺序结构,选择结构,循环结构8.c, .obj, .exe1-2 思考题1.结构化程序设计是指:为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。其基本

2、结构包括顺序结构、选择结构和循环结构三种。2.算法是对具体问题求解步骤的一种描述。计算机算法的表达工具通常采用以下几种方法:(1)用自然语言表示算(2)用流程图表示算法(3)用伪代码表示算法(4)用程序设计语言表示算法3.语言简洁、紧凑,使用方便、灵活; 支持结构化程序设计;运算符丰富;数据类型丰富;较强的编译预处理功能;C语言的可移植性好;C语言本身既有一般高级语言的优点,又有低级(汇编)语言的特点;语法限制不太严格,程序设计自由度大。1-3 编程题1. 试参照本章例题编写计算梯形面积的C语言程序,梯形的上底、下底和高分别用a,b,h表示,并用a=10,b=20,h=5测试所编写的程序。#i

3、nclude stdio.hmain() float a, b, h, s;a=10; b=20;h=5; s=(a+b)*h/2; printf(s=%fn , s ); 2. 编写程序显示如图1.11所示信息。图1.11 显示信息#include stdio.hmain() printf(*n);printf(* hello world *n);printf(*n); 习题22-1 单选题15 DBDCA 610 DCABA 1112 CA2-2 思考题12.00000021,0.539,2465100,d6(1)20 (2)0 (3)607. (1)10,6,4 (2)6,9,15 (3

4、)3,60,838. 55习题33-1 选择题1-5BDABC 6-10ADCAC 11-12BB3-2 填空题1.32.02613.0x104. 2, 1 互换a,b的值5.6.66.0038.77.5.0,4,c=38.i=10,j=209.(1) 65 (2) 65,A (3) 56.123400,123.456001 (4) 3.141600 (5) 8765.432 (6) 5.864000e+002 (7) 3.141600e+000 (8) 3.1416 (9) 8765 (10) 3.1416,8765.4310.a=2 b=5x=8.8 y=76.34c1=65 c2=973

5、-3 编程题1. 编写程序实现从键盘输入两个十进制整型数据10和8给变量x和y,并按下列格式输出。 x y 十进制数 108 八进制数1210 十六进制数a8#include stdio.hmain() int x, y ; scanf(%d%d , &x, &y); printf( x yn); printf(%4d%4dn, x, y ); printf(%4o%4on, x, y ); printf(%4x%4xn, x, y );2. 编写一个程序,输入一个大写英文字符(BY),输出它的前导字符、该字符本身及其后续字符。#include stdio.hmain() char c; sc

6、anf(“%c”, &c ); printf(“%c, %c, %cn”, c-1, c, c+1 ); 3. 编写一个程序,输入一个3位正整数,要求反向输出对应的整数,如输入123,则输出321。编写程序并给出相应的程序流程图。#include stdio.hmain() int a, a1, a2, a3; scanf(“%d”, &a ); a1=a%10 ; a=a/10; a2=a%10; a=a/10; a3=a%10; printf(“%d%d%dn”, a1, a2, a3); 4. 编写程序,读入3个double型数据,求它们的平均值,保留此平均值小数点后1位数,对小数点后第

7、2位数进行四舍五入,最后输出结果。#include stdio.hmain() double a, b, c, ave; scanf(“%lf%lf%lf”, &a, &b, &c ); ave=(a+b+c)/3 ; printf(“%8.2fn”, ave); 5. 编写程序,读入3个整数给变量a、b、c,然后交换它们的值,把a原来的值给b,把b原来的值给c,把c原来的值给a。#include stdio.hmain() int a, b, c, t; scanf(“%d%d%d”, &a, &b, &c ); t=a; a=c; c=b ; b=t ; printf(“a=%d, b=%

8、d, c=%dn”, a, b, c ); 习题44-1单选题15 AADAD 610 ACB BB 1112BA4-2填空题1. 12. (1) a0 | b0 (2) x0 & x=10 (3) a=1.5 & b=1.5 & c=1.5 (4)pa | pb | pb?a:b)c?max:c 5-46175,0,38. (1) (a=0) (2) (b=0)(3) (discc & a+cb & b+ca) s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c); printf(“%f”,area); 2输入整数x、y,若x2+y21000,则输出x2+y2

9、百位以上的数字,否则输出两数之和。#include stdio.hmain() int x,y; scanf(“%d,%d”,&x,&y); if (x*x+y*y1000) printf(“%dn”,(x*x+y*y)/100); else printf(“%dn”,x+y);3. 输入一个整数,判断它能否同时被3、5、7整除,并输出“yes”或“no”字样。#include stdio.hmain() int x, scanf(“%d”,&x); if(x%3=0 & x%5=0 & x%7=0) printf(“yesn”); else printf(“non”);4对任意输入的x,用下

10、式计算并输出y的值。#include stdio.h#include “math.h” main() float x,y; scanf(“%f”,&x); if(x-2) y=x*x-sin(x); else if (x=2) y=pow(2,x)+1; else y=sqrt(x*x+x+1); printf(“%fn”,y);5 编写程序输入一个5位整数,判断它是不是回文数。回文数是指一个数从右到左和从左到右的对应数码相同,如12321是回文数,个位与万位相同,十位与千位相同。#include stdio.hmain( )long ge,shi,qian,wan,x;scanf(%ld,&

11、x);wan=x/10000;qian=x%10000/1000;shi=x%100/10;ge=x%10;if (ge=wan&shi=qian)/*个位等于万位并且十位等于千位*/printf(this number is a huiwenn);elseprintf(this number is not a huiwenn);6. 编写程序用于计算某运输公司的运费。设每公里每吨货物的基本运费为p,货物重量为w,路程为s(单位为km),折扣为d,总费用计算公式为:f=p*w*s*(1-d)运费计算标准见表4.5。表4.5 某运输公司运费计算标准s250不 打 折250=s500折扣2500=

12、s1000折扣51000=s2000折扣82000=s3000折扣15#include stdio.hmain()float p,w,s,d,f; scanf(“%f,%,%f”,p,s,w); if (s3000) d=0.15 else if( s=2000) d=0.1; else if(s=1000) d=0.08; else if(s=500) d=0.05; else if(s=250) d=0.02; else d=0 f=p*w*s*(1-d); printf(“%f”,f);习题55-1单选题15 CDABA 610 ABDDB1114 DBCB5-2填空题1202333 3

13、(1) i10 (2) j%3!=04. (1) flag*(float)k/(k+1) (2) flag=-flag5(1) max=x (2) x!=-1 (3) scanf(%d, &x)5-3 编程题1. 用3种循环语句编写程序实现下列算式:(1)1+22+33+100100(2)e=,当最后一项的值小于10-6时为止。 (1) #include stdio.h main() int i; lont s=0; for(i=1;i1e-6)printf(“%f”,s);2. 编写程序求两个正整数的最大公约数。#include stdio.hmain()int m,n,t,a,b;scan

14、f(“%d,%d”,&m,&n);if (m0;y-)s*=x; printf(”%d,%d,%dn”,s%10,s/10%10,s/100%10);4. 百鸡问题。用100元钱买100只鸡,其中,公鸡每只5元,母鸡每只3元,小鸡每3只1元。编写程序输出各种买法。 #include stdio.hmain() int x,y,z; for( x=1; x20;x+)for( y=1;y=0 & (5*x+3*y+z/3)-1001e-5) printf(”x=%d,y=%d,z=%dn”,x,y,z);5. 编写程序分别打印如下图形:* * * * * * * * * * * * * (a)(

15、b)(a) #include stdio.h main()int j,k ; for( j=1 ;j=4 ;j+)for(k=1;k=4-j;k+)printf( );printf(*) ; printf(n) ; (b) #include stdio.hmain()int j,k ; for( j=1 ;j=4 ;j+)for(k=1;k=4-j;k+)printf( );for(k=1 ;k=2*j-1 ;k+)printf(*) ; printf(n) ; 6. 请编写程序求100999之间所有的水仙花数。水仙花数的含义是指这样的一个3位数,其各位数字的立方和等于该数本身。例如,371=

16、33+73+13,所以371是一个水仙花数。程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。#include stdio.hmain()int i,j,k,n;printf(water flowernumber is:);for(n=100;n=a & ch=z) ch=ch-32;putchar(ch); 2. 编写一函数求e=float expp(int n) int k, fac=1; float sum=0; for(k=1; k=n; k+) fac*=k;sum+=1.0/fac ; return(sum); 3. 编写一函数求一个整数的任意次方的最后

17、3位数,即求xy的最后3位数。 int xy3( int x, int y) int k, num=1; for(k=1;kaj3 (1) r+bk (2) *x8-3 编程题1设数组a中的元素都为正整数,编程求其中偶数的个数和偶数的平均值。#include stdio.h#define N 10 main() int aN=1,2,3,4,5,6,7,8,9,0,osum=0, ocount=0, j; for(j=0;j10;j+)if(!( j%2) ocount+; osum+=aj; printf(“ocount =%d, osum =%dn”, ocount, osum);2. 有

18、一个已排好序的数组,输入一个数,要求按原来排序的规律将它插入数组中,插入后数组仍然有序,请编程实现。#include stdio.h#define N 10 main() int aN=10,20,30,40,50,60,70,80,90, j, k, x; scanf(“%d”,&x); for(j=0;jN;j+) if (xj; k-)ak=ak-1; aj=x;for(j=0;jN;j+) printf(“%d”,aj); 3编程求一个矩阵对角元素之和,其中矩阵元素值由数组初始化时给定。#include stdio.h#define M 3main()int aMM=1,2,3,4,5

19、,6,7,8,9,j,sum1=0,sum2=0; for( j=0;jM;j+)sum1+=ajj; sum2+=ajM-(j+1); printf(“%d,%dn”,sum1,sum2);4. 编一个程序检查二维数组是否对称(即对所有的i和j,都有aij=aji)。#include stdio.h#define M 3main()int aMM=1,2,3,2,4,5,3,5,6,j,k,flag=1; for( j=0;jM;j+)for(k=0;kM;k+) if (ajk!=akj) flag=0; break;if (flag) printf(“ok”);else printf(”

20、NO”);5编程比较两个字符串的大小(不用strcmp( )函数)。#include stdio.h#include “string.h”main() char c110,c210,j; gets(c1);gets(c2); for(j=0; (c1j=c2j) & c1j & c2j; j+);printf(“%dn”,c1j-c2j);6. 有一篇文章,共有行文字,每行有80个字符。要求分别统计出其中英文大写字母、小写字母、数字、空格及其他字符的个数。#include stdio.h#include ”string.h” #define M 3 #define N 80 main() ch

21、ar aMN,j,k,n5=0; for( j=0;jM;j+) gets(aj); for(j=0;j=A & ajk=a & ajk=0 & ajk=9) n3+; else if (ajk= ) n4+; elsen5+;for(j=0;jn2) swap(pointer1,pointer2);if(n1n3) swap(pointer1,pointer3);if(n2n3) swap(pointer2,pointer3);printf(the sorted numbers are:%d,%d,%dn,n1,n2,n3);swap(p1,p2)int *p1,*p2;int p;p=*p

22、1;*p1=*p2;*p2=p;2. 编写函数,得到两个整数相除的商和余数。要求通过指针在函数间传递商和余数这两个数据。 #include stdio.hmain() int a,b,d ;double c;void fun(int a,int b,float *c, int *d); scanf(%d,%d,&a,&b); fun(a,b,&c,&d);printf(%lf,%dn,c,d);void fun(int a,int b,double *c, int *d) if (b) *c=(double)a/b; *d=a%b;3. 输入10个整数,将其中最小的数与第一个数对换,把最大的数

23、与最后一个数对换。编写三个函数:输入10个数;进行处理;输出10个数。#include stdio.hmain()void input (int *); void output (int *); void chuli (int *); int a10; input(a); chuli(a); output(a);void input(int *a) int j; for(j=0;j10;j+) scanf(%d, a+j); void chuli(int *a)int j,minl=0,maxl=0; for(j=0;j10;j+) if(amaxl*(a+j) minl=j; j=a0; a

24、0=aminl;aminl=j; j=a9;a9=amaxl;amaxl=j; void output(int *a)int j; for(j=0;j10;j+)printf(%4d, *(a+j); printf(n);4按下列要求输入和输出下列数据阵列: 输入阵列如下: 1 2 3 4 5 6 7 8 9 10 11 12 输出阵列如下: 12 11 10 9 8 7 6 5 4 3 2 1# define M 3#define N 4main() int aMN=1,2,3,4,5,6,7,8,9,10,11,12,k,j,*p=a,t; for(k=0,j=M*N-1;kj;k+,j-

25、) t=*(p+k); *(p+k)=*(p+j); *(p+j)=t;for (k=0;kM;k+)for(j=0;jN;j+) printf(%4d ,akj);printf(“n”);5. 编写一个函数,求一个字符串的长度。在main( )函数中输入字符串,并输出其长度。#include stdio.hmain()int len,length(p);char *str20;printf(please input a string:n);scanf(%s,str);len=length(str);printf(the string has %d characters.n,len);int

26、length(p)char *p;int n=0;while(*p!=0) n+; p+;return n;6. 请编写一个程序,运行时输出命令行参数的个数及参数名。#include “stdio.h”main(int argc,char *argv) int k; printf(“argc=%d”,argc); for (k=1;kargc; k+) printf(“%s”,argvk);7。用指针数组操作将输入的5个字符串按由小到大的顺序。#include stdio.h#include string.hmain()char *str15,ch520,k; void sort(char *

27、);for(k=0;k5;k+)str1k=chk;gets(str1k);sort(str1);for(k=0;k5;k+)puts(str1k);void sort(char *str1) int k,j,t;char *c;for(k=0;k4;k+) t=k; for(j=k+1;j0) t=j; c=*(str1+t); *(str1+t)=*(str1+k) ; *(str1+k)=c ; 习题1010-1单选题1-5CDBBB 6-10BBBAD 11-15CCBDA 10-2填空题1.所有结构体成员所占存储空间的总和2.与占用存储空间最大的那个成员相等3. (1) 结构体(2)

28、 3(3) sa.a(4) 9(5) psa=&sa4.805.struct node6.010-3 编程题1. 定义一个包含20个学生基本情况(包括学号、姓名、性别、C语言成绩)的结构体数组,编程实现下列功能:(1)输入20个学生的学号、姓名、性别、C语言成绩;(2)分别统计男女生的人数,求出男、女生的平均成绩;(3)按照学生的C语言成绩从高到底进行排序。struct student long num; char name20; char sex; float score;main() struct student s20, temp; int j,k, man=0, woman=0; fl

29、oat summan=0,sumwoman=0, aveman, avewoman; for(k=0; k20; k+) scanf(%ld %s %c%f,&sk.num,sk.name,&sk.sex,&sk.score);if(sk.sex=m) summan+=sk.score; man+;else sumwoman+=sk.score;woman+ ; aveman=summan/man; avewoman=sumwoman/woman; printf(%dt%ft%dt%fn,man,aveman,woman,avewoman); for(k=0; k19; k+) for(j=0;j20-k;j+)if(sj.scoresj+1.score) temp=sj;sj=sj+1;sj+1=temp;printf(the sorted numbers:n);for(k=0;k10.0) a=a-10.0; else a=a+10.0;

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

当前位置:首页 > 教育专区 > 成人自考

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com