经典程序设计画图题目汇编

上传人:平*** 文档编号:10673751 上传时间:2017-10-10 格式:DOC 页数:84 大小:180.03KB
返回 下载 相关 举报
经典程序设计画图题目汇编_第1页
第1页 / 共84页
经典程序设计画图题目汇编_第2页
第2页 / 共84页
经典程序设计画图题目汇编_第3页
第3页 / 共84页
经典程序设计画图题目汇编_第4页
第4页 / 共84页
经典程序设计画图题目汇编_第5页
第5页 / 共84页
点击查看更多>>
资源描述

《经典程序设计画图题目汇编》由会员分享,可在线阅读,更多相关《经典程序设计画图题目汇编(84页珍藏版)》请在金锄头文库上搜索。

1、四、编写程序题及参考答案导读:虽然题目基本按照教材章节顺序排列的,但是把同类题目尽量排在一起,便于读者学习掌握编程方法和思路,提高自己的编程能力。【4.1】已知银行整存整取存款不同期限的月息利率分别为:0.315% 期限一年0.330% 期限二年月息利率 0.345% 期限三年0.375% 期限五年0.420% 期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。【4.2】输入年份 year 和月 month,求该月有多少天。判断是否为闰年,可用如下语言表达式:year%4=0 & year%100!=0 | year%400=0。若表达式成立(即表达式值为 1),则 y

2、ear 为闰年;否则,表达式不成立(即值为 0),year 为平年。【4.3】编写一个简单计算器程序,输入格式为:data1 op data2 。其中 data1 和 data2 是参加运算的两个数,op 为运算符,它的取值只能是+ 、 -、*、/。【4.4】输入 n 值,输出如图所示矩形。【4.5】输入 n 值,输出如图所示平行四边形。【4.6】输入 n 值,输出如图所示高为 n 的等腰三角形。【4.7】输入 n 值,输出如图所示高为 n 的等腰三角形。【4.8】输入 n 值,输出如图所示高和上底均为 n 的等腰梯形。【4.9】输入 n 值,输出如图所示高和上底均为 n 的等腰空心梯形。【4

3、.10】输入 n 值,输出如图所示边长为 n 的空心正六边型。【4.11】输入 n 值,输出如图所示图形。【4.12】输入 n 值,输出如图所示图形。【4.13】输入 n 值,输出如图所示图形。【4.14】输入 n 值,输出如图所示图形。【4.15】输入 n 值,输出如图所示图形。【4.16】输入 n 值,输出如图所示图形。 (例为 n=6 时)【4.17】编写程序,输出如图所示 sin(x) 函数 0 到 2 的图形。【4.18】编写程序,在屏幕上输出一个由*号围成的空心圆。【4.19】编写程序,在屏幕上绘制如图余弦曲线和直线。若屏幕的横向为 x 轴,纵向为 y 轴, 在屏幕上显示 0360

4、 度的cos(x)曲线与直线 x=f(y)=45*(y-1)+31 的迭加图形。其中 cos 图形用 *表示,f(y)用+表示,在两个图形的交点处则用 f(y)图形的符号。 【4.20】编写程序,输出如图所示高度为 n 的图形。【4.21】编写程序,输出如图所示高度为 n 的图形。【4.22】输入 n 值,输出如图所示图形。 【4.23】输入 n 值,输出如图所示的 nn(n1)请编写递归程序实现。【4.88】编写函数,采用递归方法实现将输入的字符串按反序输出。【4.89】编写函数,采用递归方法在屏幕上显示如下杨辉三角形:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5

5、 1【4.90】编写函数,采用递归方法将任一整数转换为二进制形式。【4.91】设有字母 a、b、c ,请编程用递归的方法产生由这些字母组成的,且长度为 n 的所有可能的字符串。例如,输入 n=2,则输出:aaab acba bb bc ca cb cc【4.92】将一个数的数码倒过来所得到的新数,叫作原数的反序数,如果一个数等于它的反序数,则称它为对称数。编写程序,采用递归算法求不超过 1993 的最大的二进制的对称数。【4.93】从到 n(nmain( ) int year;float money,rate,total; /* money:本金 rate:月利率 total:本利合计*/pr

6、intf(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; /* 计算到期的本利合计 */pri

7、ntf( Total = %.2fn, total);【4.2】参考答案:#include main( ) int year, month, days;printf(Enter year and month:);scanf(%d%d, &year, &month);switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31; break; /* 处理大 月 */case 4: case 6: case 9: case 11: days=30; break; /* 处理小 月 */case 2:

8、 if(year%4=0&year%100!=0 | year%400=0)days=29; /* 处理闰年平月 */else days=28; /* 处理不是闰年平月 */break;default: printf(Input error!n); /* 月份错误 */days=0;if( days!=0 )printf(%d, %d is %d daysn, year, month, days);【4.3】参考答案:#include main ( ) float data1, data2; /* 定义两个操作数变量 */char op; /* 操作符 */printf(Enter your

9、expression:);scanf(%f%c%f, &data1, &op, &data2); /* 输入表达式 */switch(op) /* 根据操作符分别进行处理 */ case + : /* 处理加法 */printf(%.2f+%.2f=%.2fn, data1, data2, data1+data2); break;case - : /* 处理减法 */printf(%.2f-%.2f=%.2fn, data1, data2, data1-data2); break;case * : /* 处理乘法 */printf(%.2f*%.2f=%.2fn, data1, data2,

10、data1*data2); break;case / : /* 处理除法 */if( data2=0 ) /* 若除数为 0 */printf(Division by zero.n);elseprintf(%.2f/%.2f=%.2fn, data1, data2, data1/data2);break;default: /* 输入了其它运算符 */printf(Unknown operater.n);【4.4】分析:打印此图形用两重循环实现。图形要重复 n 行,故采用循环结构实现循环 n 次,循环体内部打印一行*号,把上述思路表示为:for(i=1;in-i+1 & (i=1|i=n) pr

11、intf(*);else printf( );printf(*n);【4.10】分析:此图形可以理解为两个空心梯形反向连接而成,因此可以利用上题的思路进行输出。参考答案:main( ) int i,j,n;printf(nPlease Enter n:);scanf(%d,&n);for(i=1;in-i+1 & i=1) printf(*);else printf( );printf(*n);for(i=1;ii+1 & i=n-1) printf(*);else printf( );printf(*n);【4.12】参考答案:main( ) int i,j,n;printf(nPlease

12、 Enter n:);scanf(%d,&n);for(i=1;in-i) printf(*);else printf( );printf(n);for(i=1;ii) printf(*);else printf( );printf(n);【4.16】参考答案:main( ) int i,j,n;printf(nPlease Enter n: );scanf(%d,&n);for(i=1;imain( ) double x;int y,i,yy;for(i=1;iy ? 40 : y; /* 下一行要打印的字符总数 */for (i=1;imain( ) double y;int x,m;fo

13、r(y=10;y=-10 ;y-) /* 圆的半径为 10 */ m = 2.5 * sqrt(100-y*y); /* 计算行 y 对应的列坐标 m */for(x=1;x#include main( ) double y;int x, m, n, yy;for( yy=0;yy=i 且 j=n-i+1 ;左区:ji 且 jn-i+1 。现在问题是,如果知道一行在不同区域开始第一个位置的数字,然后该区后续的数字就可利用前面分析的规律得到。对于右区开始各行第一个数字最易求出,为 4*(n-1)-i+1。后续一个和同行前一个数字之差是 4*n-1-(j-1)*2+1,其中方括号内是每边的数字个数

14、。对角线上的数字是分区点,对角线上相临数字仍然相差一圈数字个数,读者自行分析得到计算公式。右区开始的第一个数字可以从上区结束时的数字按规律求出。下述程序用变量 s 保存分区对角线上的数字。参考答案一:main() int i,j,k,n,s,m,t;printf(Please enter n:);scanf(%d,&n);for(i=1;i=n-i+1 & j=i & ji & jn-i+1) /* 右区 */t-=4*(n-2*(n-j+1)+1;if(j#define MIN(x,y) (xy) ? (y) : (x)fun ( int a11, int i, int j, int n)

15、int min, a22;if( i=j & i=(n+1)/2 & j=(n+1)/2) min = MIN(n-i+1,n-j+1);else if(i=(n+1)/2) min = MIN(i,n-j+1);else if(i=(n+1)/2 & j(n+1)/2 时, 输出数字为 max(n+1)/2-i+1,j-n/2;在左下区,即 i(n+1)/2、j(n+1)/2、j(n+1)/2 时,输出数字为 maxi-n/2,j-n/2。参考答案:#define max(x,y) (x)(y)?(x):(y)main( ) int i,j,n;printf(nPlease Enter n:);scanf(%d,&n);for(i=1;i=1; j-) printf(%2d,j);printf(n); 【4.26】分析:这类输出字符的图形和输出数字的图形考虑是近似的,因为字符的 ASCII 码就是一个整数。在字符码值的变化过程中,应该注意应该判断码值是否超出字符的范围,进行必要的处理,为了保持程序的简洁,本题没有考虑这个问题,在下题里对这个问题进行了处理。参考答案:main( ) char c=Z;int i,j,n;printf(

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 其它文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号