收藏 分享(赏)

高级语言程序设计 编写程序题+答案.doc

上传人:cjc2202537 文档编号:7008227 上传时间:2019-04-30 格式:DOC 页数:84 大小:244KB
下载 相关 举报
高级语言程序设计  编写程序题+答案.doc_第1页
第1页 / 共84页
高级语言程序设计  编写程序题+答案.doc_第2页
第2页 / 共84页
高级语言程序设计  编写程序题+答案.doc_第3页
第3页 / 共84页
高级语言程序设计  编写程序题+答案.doc_第4页
第4页 / 共84页
高级语言程序设计  编写程序题+答案.doc_第5页
第5页 / 共84页
点击查看更多>>
资源描述

1、1 已知银行整存整取存款不同期限的月息利率分别为:0.315% 期限一年0.330% 期限二年月息利率 0.345% 期限三年0.375% 期限五年0.420% 期限八年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。2 输入年份 year 和月 month,求该月有多少天。判断是否为闰年,可用如下语言表达式:year%4=0 & year%100!=0 | year%400=0。若表达式成立(即表达式值为 1),则 year 为闰年;否则,表达式不成立(即值为 0),year 为平年。3 编写一个简单计算器程序,输入格式为:data1 op data2 。其中 data1

2、和 data2 是参加运算的两个数,op为运算符,它的取值只能是+ 、-、*、/。4 输入 n 值,输出如图所示矩形。5 输入 n 值,输出如图所示平行四边形。6 输入 n 值,输出如图所示高为 n 的等腰三角形。7 输入 n 值,输出如图所示高为 n 的等腰三角形。8 输入 n 值,输出如图所示高和上底均为 n 的等腰梯形。9 输入 n 值,输出如图所示高和上底均为 n 的等腰空心梯形。10 输入 n 值,输出如图所示边长为 n 的空心正六边型。11 输入 n 值,输出如图所示图形。12 输入 n 值,输出如图所示图形。13 输入 n 值,输出如图所示图形。14 输入 n 值,输出如图所示图

3、形。15 输入 n 值,输出如图所示图形。16 输入 n 值,输出如图所示图形。 (例为 n=6 时)17 编写程序,输出如图所示 sin(x) 函数 0 到 2 的图形。18 编写程序,在屏幕上输出一个由*号围成的空心圆。19 编写程序,在屏幕上绘制如图余弦曲线和直线。若屏幕的横向为 x 轴,纵向为 y 轴, 在屏幕上显示 0360 度的 cos(x)曲线与直线 x=f(y)=45*(y-1)+31 的迭加图形。其中 cos 图形用“*“ 表示, f(y)用“+“ 表示,在两个图形的交点处则用 f(y)图形的符号。20 编写程序,输出如图所示高度为 n 的图形。21 编写程序,输出如图所示高

4、度为 n 的图形。22 输入 n 值,输出如图所示图形。23 输入 n 值,输出如图所示的 nn(n1)请编写递归程序实现。88 编写函数,采用递归方法实现将输入的字符串按反序输出。89 编写函数,采用递归方法在屏幕上显示如下杨辉三角形:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 1 90 编写函数,采用递归方法将任一整数转换为二进制形式。91 设有字母 a、b 、c ,请编程用递归的方法产生由这些字母组成的,且长度为 n 的所有可能的字符串。例如,输入 n=2,则输出:aa ab ac ba bb bc ca cb cc92 将一个数的数码倒过来所得到的新数,叫

5、作原数的反序数,如果一个数等于它的反序数,则称它为对称数。编写程序,采用递归算法求不超过 1993 的最大的二进制的对称数。93 从到 n(nmain( ) 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(

6、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);2 参考答案:#include main( ) int year, month, days;printf(“Enter year and month:“);scanf(“%d%d“, &year, &month);switch (month

7、) 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: if(year%4=0&year%100!=0 | year%400=0)days=29; /* 处理闰年平月 */else days=28; /* 处理不是闰年平月 */break;default: printf(“Input error!n“); /* 月份错误 */days=

8、0;if( days!=0 )printf(“%d, %d is %d daysn“, year, month, days);3 参考答案:#include main ( ) float data1, data2; /* 定义两个操作数变量 */char op; /* 操作符 */printf(“Enter your expression:“);scanf(“%f%c%f“, &data1, &op, &data2); /* 输入表达式 */switch(op) /* 根据操作符分别进行处理 */ case + : /* 处理加法 */printf(“%.2f+%.2f=%.2fn“, dat

9、a1, data2, data1+data2); break;case - : /* 处理减法 */printf(“%.2f-%.2f=%.2fn“, data1, data2, data1-data2); break;case * : /* 处理乘法 */printf(“%.2f*%.2f=%.2fn“, data1, data2, data1*data2); break;case / : /* 处理除法 */if( data2=0 ) /* 若除数为 0 */printf(“Division by zero.n“);elseprintf(“%.2f/%.2f=%.2fn“, data1,

10、data2, data1/data2);break;default: /* 输入了其它运算符 */printf(“Unknown operater.n“);4 分析:打印此图形用两重循环实现。图形要重复 n 行,故采用循环结构实现循环 n 次,循环体内部打印一行*号,把上述思路表示为:for(i=1;in-i+1 & (i=1|i=n) printf(“*“);else printf(“ “);printf(“*n“);10 分析:此图形可以理解为两个空心梯形反向连接而成,因此可以利用上题的思路进行输出。参考答案:main( ) int i,j,n;printf(“nPlease Enter

11、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“);12 参考答案:main( ) int i,j,n;printf(“nPlease Enter n:“);scanf(“%d“,&n);for(i=1;in-i) printf(“*“);else printf(“ “);printf(“n“);for(i=1;ii) printf(“*“);else

12、printf(“ “);printf(“n“);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;for(y=10;y=-10 ;y-) /* 圆的半径为 10 */ m = 2.5 * sqrt(100-y*y); /* 计算行 y 对应的列坐标 m */for(x=1;x#include

13、 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,其中方括号内是每边的数字个数。对角线上的数字是分区点,对角线上相临数字仍然相差一圈数字个数,读者自行分析得到计算公式。右区开始的第一个数字可以从上区结束时的数字按规律求出。下述程序用变量 s 保存分区对角线上的数字。参

14、考答案一: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(ji & jn-i+1) /* 左区 */ if(j=1) t=4*(n-1)-i+2;else t+=4*(n-2*j+1)+1;printf(“%4d“,t);printf(“n“); 方案二:根据本题图形的特点,我们可以构造一个递归算法。我们可以将边长为 N 的图形分为两部分:第一部分最外层的框架,第二部分为中间的边长为 N-2 的图形。对于边长为 N 的正方型,若其中每个元素的行号为 i(1iN) ,列号为 j(1jN) ,第 1 行第 1 列元素表示为a1,1( a11=1) ,则有:对于最外层的框架可以用以下数学模型描述:上边: a1,j=a1,1+j-1 (j1)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报