自学考试《C语言程序设计》习题及答案汇总.pdf
《自学考试《C语言程序设计》习题及答案汇总.pdf》由会员分享,可在线阅读,更多相关《自学考试《C语言程序设计》习题及答案汇总.pdf(142页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、自学考试C语言程序设计习题及答案汇总编写程序题及参考答案导读:虽然题目基本按照教材章节顺序排列的,但是把同类题目尽量排在一起,便于读者学习掌握编程方法和思路,提高自己的编程能力。【4.1 已知银行整存整取存款不同期限的月息利率分别为:0.3 1 5%期限一年0.3 3 0%期限二年月息利率=0.3 4 5%期限三年0.3 7 5%期限五年0.4 2 0%期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。【4.2】输入年份year和月m o n t h,求该月有多少天。判断是 否 为 闰 年,可 用 如 下C语 言 表 达 式:year%4=0&year _ x0 0 1
2、 0 _ 0!=0|year 0-0o若表达式成立(即表达式值为1),则year为闰年;否则,表达式不成立(即值为0),year为平年。4.3 编写一个简单计算器程序,输入格式为:d at al o pd at a2。其 中d at al和d at a2是参加运算的两个数,o p为运算符,它的取值只能是+、-、*、/o【4.4】输入n值,输出如图所示矩形。s e s c s e s s:图 4.1 于6 时的矩形*【心】输入B值.翰出如图所示平行四边探*图 4,2*6 时的平行四边形【46】输入n值.验出如图所示高为n的黜三角峰.*图 4.3 n=6时的等硬三角形【47】输入n值.吟 出iIS
3、所示起为n的等眼三角落.*聿*图 4.4 n=6时 的 倒 辆 三 角 形U 8域入n值.物出i10所示音和上厩均为n的等嵌悌珞*图 4.5 归5时的等腰梯形14 9输入!1值.给出如图所示起和上周均为n的 黜 空 心 梯 澳*图 4.6 n=5时的空心等膜梯形 4.1参考答案:t t i n cl ud em ai n()i n t year;f l o at m o n ey,r at e,t o t al;/*m o n ey:本金 r at e:月利率t o t al:本利合计*/p r i n t f(I n p ut m o n ey an d year =?);s can f (
4、%f%d ,&m o n ey,&year);/*输入本金和存款年限*/i f (year 1)r at e=0.0 0 3 1 5;/*根据年限确定利率*/el s e i f(year=2)r at e=0.0 0 3 3 0;el s e i f(year=3)r at e=0.0 0 3 4 5;el s e i f(year=5)r at e=0.0 0 3 7 5;el s e i f(year=8)r at e=0.0 0 4 2 0;el s e r at e=0.0;t o t al=m o n ey+m o n ey*r at e*1 2 *year;/*计算至期的本利合计
5、*/p r i n t f(T o t al =%.2 f n ,t o t al);)4.2 参考答案:i n cl ud em ai n()i n t year,m o n t h,d ays;p r i n t f(En t er year an d m o n t h:);s can f(%d%d ,&year,&m o n t h);s wi t ch (m o n t h)cas e 1:cas e 3:cas e 5:cas e 7:cas e 8:cas e 1 0:cas e1 2:d ays=3 1;b r eak;/*处理 大 月*/cas e 4:cas e 6:cas
6、 e 9:cas e 1 1:d ays=3 0;b r eak;/*处理 小 月*/cas e 2:i f(year%4=0&year%1 0 0!=0|year%4 0 0=0)d ays=2 9;/*处理闰年平月*/el s e d ays=2 8;/*处理不是闰年平月*/b r eak;d ef aul t:p r i n t f (nI n p ut er r o r!nn);/*月份错误*/d ays=0;)i f(d ays!=0 )p r i n t f(%d,%d i s%d d ays n ,year,m o n t h,d ays);)【4.3】参考答案:#i n cl
7、ud em ai n ()f l o at d at al,d at a2;/*定义两个操作数变量*/ch ar o p;/*操作符*/p r i n t f(En t er yo ur exp r es s i o n:w);s can f (1%f%c%fn,&d at al,&o p,&d at a2);/*输入表达式s wi t ch (o p)/*根据操作符分别进行处理*/cas e +:/处理加法*/p r i n t f(n%.2 f+%.2 f=%.2 f n ,d at al,d at a2,d at al+d at a2);b r eak;cas e:/*处理减法*/p r
8、 i n t f(n%.2 f-%.2 f=%.2 f nn,d at al,d at a2,d at al-d at a2);b r eak;cas e:/*处理乘法*/p r i n t f (吗.2 f*%.2 f=%.2 f n d at al,d at a2,d at al*d at a2);b r eak;cas e /:/*处理除法*/i f (d at a2=0 )/*若除数为 0 */p r i n t f(Di vi s i o n b y zer o.n );el s ep r i n t f (吗.2 f/%.2 f=%.2 f n ,d at al,d at a2,d
9、 at al/d at a2);b r eak;d ef aul t:/*输入了其它运算符*/p r i n t f(U n k n o wn o p er at er.n );)【4.4】分析:打印此图形用两重循环实现。图形要重复n 行,故采用循环结构实现循环n 次,循环体内部打印一行*号,把上述思路表示为:f o r(i=l;i =n;i+)打 印 一 行 号;每行有n个*号,再采用循环结构实现n次循环,循环内部用格式输出语句打印一个号,即:f o r(j=l;j =n;j+)p r i n t f(*);按照上述思路,实现打印矩形。参考答案:m a i n ()i n t i,j,n;p
10、 r i n t f(n Pl e a se En t e r n:n);sc a n f(%d ,&n);f o r (i=l;i =n;i+)f o r(j=l;j =n;j+)p r i n t f(*);p r i n t f(n nn);)4.5)分析:此图形和上题的区别在于在每一行先要打印空格,然后再打印n个号,在上题第一层循环体内打印号的循环前面增加一个循环打印空格。每行空格的个数是逐行减少的,由于第一层循环的控制变量i 是逐行增1,所以用一个固定值的数减去i 就可实现对空格个数的控制,在此题中固定值可使用变量n。参考答案:m a i n()i n t i,j,n;p r i n
11、 t f(n Pl e a se En t e r n:);sc a n f(n%dn,&n);f o r (i=l;i =n;i+)f o r(j=l;j =n-i;j+)p r i n t f(n );f o r(j=l;j =n;j+)p r i n t f();p r i n t f(X n );)【4.6】分析:此题和上题的区别在于每行的数量逐行减少,可以使用上题控制空格个数的思路来控制号的个数,请注意每行*的个数都是奇数。参考答案:m a i n()i n t i,j,n;p r i n t f(n n Pl e a se En t e r n:);sc a n f(%d ,&n)
12、;f o r (i=l;i =n;i+)f o r(j=l;j =n-i;j+)p r i n t f(n);f o r (j=l;j =2*i-l;j+)p r i n t f(*);p r i n t f(X n );)4.71 分析:此题图形是第3题图形的垂直反转,在编程上我们可以变换一个思路。对于图形中的第i 行(l W i W n),共需要输出2 n-i 个字符,其中前面的i-1 个字符为空格,后面的字 符 为 号。按照这一思路可以编写出如下程序。参考答案:m a i n()i n t i,j,n;p r i n t f(n Pl e a se En t e r n:);sc a n
13、 f(n%dn,&n);f o r(i=l;i =n;i+)/*重复输出图形的n行*/f o r(j=l;j =2*n-i;j+)/*重复输出图形一行中的每个字符*/i f(j =i-l)p r i n t f();/*输出前面的空格*/e l se p r i n t f(*);/*输出后面的*号*/p r i n t f(X n );)【4.8】分析:此题和第3 题的区别仅是每行的个数增加n-l 个。参考答案:m a i n()i n t i,j,n;p r i n t f(n n Pl e a se En t e r n:n);sc a n f(%d ,&n);f o r (i=l;i
14、=n;i+)f o r(j=l;j =n-i;j+)p r i n t f();f o r(j=l;j =2*i-l+(n-l);j+)p r i n t f(*);p r i n t f(nf f);)4.9 分析:对于空心图形,我们可以在上题的基础上,对于打印号的循环进行修改,仅在循环开始值(j=l)和循环结束值(j=2*(i-l)+n)时 打 印 号,其它位置都打印空格。另一种思路是将每行打印的空格和的两个循环合为一体考虑,在判断出需要打印的两个位置及第一行和最后一行相应位置外,其余位置都打印空格。参考答案:m a i n()i n t i,j,n;p r i n t f(n n Pl
15、e a se En t e r n:n);sc a n f(%d ,&n);f o r (i=l;i =n;i+)f o r(j=l;j n-i+l&(i=l|i=n)p r i n t f(*);e l se p r i n t f();p r i n t f(*n );)【4.1 0】分析:此图形可以理解为两个空心梯形反向连接而成,因此可以利用上题的思路进行输出。参考答案:m a i n()i n t i,j,n;p r i n t f(n n Pl e a se En t e r n:n);sc a n f(%d ,&n);f o r(i=l;i =n;i+)/*输出图形的上半部分(含中
16、心行)*/f o r(j=l;j =2*n-i-l ;j+)i f(j=i)p r i n t f();e l se p r i n t f (n 1);p r i n t f (n*n );)f o r(i=l;i n;i+)p=*=f o r(j=l;j =n+i;j+)i f(j=n-i)p r i n t f(*);e l se p r i n t f(n );p r i n t f(*n );)4.1 1 分析:此题与上题的区别在于打印号的位置不同,编程时要找出应打印号的位置和两个循环变量i、j以及行数n的关系。参考答案:m a i n()i n t i,j,n;p r i n t
17、f(n n Pl e a se En t e r n:n);sc a n f&n);f o r(i=l;i =n;i+)/输出图形的上半部分(含中心行)*/f o r(j=l;j n-i+l&i=l)p r i n t f(n*n);e l se p r i n t f (n 1);p r i n t f (*n );)f o r(i=l;i n;i+)p=*=f o r(j=l;j i+l&i=n-l)p r i n t f(n*n);e l se p r i n t f();p r i n t f(n*nn);)4.1 2 参考答案:m a i n()i n t i,j,n;p r i n
18、 t f(n n Pl e a se En t e r n:n);sc a n f(n%dn,&n);f o r (i=l;i =n;i+)f o r(j=l;j =n;j+)i f(j=n-i+l|i=l|i=n)p r i n t f(n*n);e l se p r i n t f();p r i n t f(X n );)4.1 3 参考答案:m a i n()i n t i,j,n;p r i n t f(n n Pl e a se En t e r n:);sc a n f(n%dn,&n);f o r(i=l;i =n;i+)/输出图形的上半部分(含中心行)*/f o r(j=l;
19、j =n-i;j+)i f(j=l I I j=n-i+l)p r i n t f(*);e l se p r i n t f (1 );p r i n t f (X n );)f o r(i=l;i for(j=l;j=i+l;j+)if(j=l I I j=i+D printf(n*n);else printf(n);printf(Xn);)4.14 参考答案:main()int i,j,n;printf(nPlease Enter n:1);scanf(%d,&n);for(i=l;i=n;i+)for(j=l;j=n;j+)if(j=l I I j=i I I j=n)printf(D
20、;else printf(n n);printf(Xn);)4.15 参考答案:main()int i,j,n;p r i n t f(n Pl e a se En t e r n:);sc a n f(n%dn,&n);f o r(i=l;i =n;i+)f o r(j=l;j n-i)p r i n t f(*);e l se p r i n t f();p r i n t f(X n );)f o r(i=l;i n;i+)f o r(j=l;j =2*n-i-l;j+)p r i n t f(*);e l se p r i n t f(n);p r i n t f(X n );)4.1
21、 6 参考答案:m a i n()i n t i,j,n;p r i n t f(n Pl e a se En t e r n:);sc a n f(%dw,&n);f o r (i=l;i =n;i+)f o r(j=l;j =n+i-2;j+)i f(j=n-i+l)p r i n t f(*);e l se p r i n t f(n n);p r i n t f(f f*n );)【4.1 7】分析:首先对图形进行设计,坐标的X轴和Y轴分别对应屏幕的列和行,一个正弦函数的周期为03 60 度,我们把一个步长定义为1 0 度,打印时每换一行等于函数的自变量增加 1 0 度;屏幕的列宽为8
22、0,函数值为0 对应屏幕的第4 0 歹 U,si n(x)的值在-11,变换成列数为以。为中心的-3 03 0,对应屏幕上第 1 070 列。设计程序时,控制换行的自变量i 乘以1 0 得到正弦函数的X值,调用库函数si n()求出函数值再乘以3 0 输出的列宽,因为我们以屏幕的第4 0 列为0点,故再加上4 0 得到应在屏幕上显示的点。参考答案:d e f i ne PAI 3.1 4 1 5 9 i nc l u d em ai n()d ou b l e x;i nt y,i,y y;f or (i=l;i 80;i+)/*打印图形的第一行/i f (i=4 0)p r i nt f (
23、);/*i 控制打印的列位置*/e l s ep r i nt f (n-n);p r i nt f(n);f or (x=1 0.0;x y?4 0:y;/*下一行要打印的字符总数*/f or (i=l;i =-1 0;y)/*圆的半径为 1 0*/m =2.5 *s q r t (1 00-y*y);/*计算行y 对应的列坐标m*/f or (x=l;x 3 0-m;x+)p r i nt f();/*输出圆左侧的空白*/p r i nt f (*n);/*输出圆的左侧*/f or (;x 3 0+m;x+)p r i nt f (n n);/*输出圆的空心部分*/p r i nt f (
24、*n);/*输出圆的右侧*/)4.1 9 参考答案:i nc l u d e#i nc l u d em ai n()d ou b l e y;i nt x,m,n,y y;f or (y y=0;y y =2 0;y y+)y =0.l*y y;m =ac os(l-y)*1 0;n=4 5 *(y-l)+3 1;f or (x=0;x =62;x+)i f(x=m&x=n)p r i nt f(+);e l s e i f (x=n)p r i nt f(+);e l s e i f(x=m|x=62-m)p r i nt f(*);e l s e p r i nt f(n);p r i
25、nt f(n nn);)【4.2 0】分析:编程的关键为两点,一是使用控制输出的行和列,这方面的内容在前面已经叙述,另一点是输出的数字和所在行、列关系。此题第一行输出的数字恰好是列数,从第二行起每行的数字均比上一行增n。参考答案:m ai n()i nt i,j,n;p r i nt f(n nPl e as e E nt e r n:);s c anf(%d,&n);f or (i=l;i =n;i+)f or(j=l;j =n;j+)p r i nt f(n%4 dn,(i-l)*n+j);p r i nt f(X n);)【4.2 1】分析:此题的关键是找到输出数字和行、列数的关系。审查
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C语言程序设计 自学考试 语言程序设计 习题 答案 汇总
限制150内