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

上传人:ji****72 文档编号:38074441 上传时间:2018-04-26 格式:DOC 页数:84 大小:179KB
返回 下载 相关 举报
经典程序设计画图题目汇编_第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 if( i=j else if(i=(n+1)/2) min = MIN(i,n-j+1);e

2、lse 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

3、 码就是一个整数。在字符码值的变化过程中,应该注意应该判断码值是否超出字符的范围,进行必要的处理,为了保持程序的简洁,本题没有考虑这个问题,在下题里对这个问题进行了处理。参考答案:main( ) char c=Z;int i,j,n;printf(“nPlease Enter n:“);scanf(“%d“,&n);for(i=1;iZ&cz);for(i=1;iZ?A:c):(cz?a:c);c-=2;c=c(y)?(x):(y)main( ) char c;int i,j,n;do printf(“nPlease Enter n,char:“);scanf(“%d,%c“,&n,&c);w

4、hile(cZ&cz);for(i=1;i(y)?(x):(y)main( ) char c;int i,j,n;do printf(“nPlease Enter n,char:“);scanf(“%d,%c“,&n,&c);while(cZ&cz);for(i=1;imain() int i, j;for(i=1;imain( ) int i,j;for(i=1;ib+c | ba+c | ca+b)flag=1;while(flag);s=(a+b+c)/2;printf(“S=%f“,s=sqrt(s-a)*(s-b)*(s-c); 【4.33】参考答案:#include main( )

5、 int j;long n; /* 使用长整型变量,以免超出整数的表示范围 */printf(“Please input number:“);scanf(“%ld“, &n);for(j=999;j=100;j-)/* 可能取值范围在 999 到 100 之间,j 从大到小 */if(n%j = 0 ) /* 若能够整除 j,则 j 是约数,输出结果 */ printf(“The max factor with 3 digits in %ld is: %d.n“,n,j);break; /* 控制退出循环 */【4.34】参考答案:#define E 0.000001main() float

6、x,y=1,s=0;printf(“Please enter x=“);scanf(“%f“,&x);while(1/yE) s=s+1/y;y=y*x;printf(“S=%fn“,s); 【4.35】参考答案:#include main( ) int class1, class2, class3;char ch;class1=class2=class3=0; /* 初始化分类计数器 */do ch=getch( );switch(ch) case 0: case 1: case 2: case 3: case 4:case 5: case 6: case 7: case 8: case 9

7、:class1+; break; /* 对分类计数 */case +: case -: case *: case /: case %: case =:class2+; break; /* 对分类计数 */default: class3+; break; /* 对分类计数 */while (ch!= ); /* 字符在 C 程序中要使用转义符 */printf(“class1=%d, class2=%d, class3=%dn“, class1, class2, class3);【4.36】分析:程序的关键是怎样判断一个单词。由单词的定义已知它是用空格、制表符或换行符分隔开的,两个字符之间没有空

8、格、制表符或换行符,则认为是一个单词中的两个字符。参考答案:#define EOF -1#define YES 1#define NO 0#include main( ) /* 对输入的行、字符和单词进行计数统计 */ int c, nl, nc, nw, inword; inword=NO; /* inword=NO 已处理的最后一个字符是空格、t 或n */* inword=YES 已处理的最后一个字符不是空格、t 或n */nl=nc=nw=0; /* 行、字符、字计数器置 0 */while(c=getchar()!= EOF) +nc; /* 进行字符计数 */if(c=n )+nl

9、; /* 进行行计数 */if(c=t|c=n|c= )inword=NO;/* 如果读入的字符是空格、t 或n,则置 inword 为 NO */else /* 读入的字符不是空格、t 或n */if(inword=NO) /* 如果前一个字符是空格、t 或n */ inword=YES; /* 则读入的字符为一个单词的第一个字符*/+nw; /*置 inword 为 YES,进行单词计数 */printf(“Lines=%dnWords=%dnChars=%dn“,nl,nw,nc); /* 输出结果 */【4.37】参考答案:#define E 0.000001#include “mat

10、h.h“main() int i,k=1;float x,y,t=1,s,r=1;printf(“Please enter x=“);scanf(“%f“,&x);for(s=x,y=x,i=2;fabs(r)E;i+) t=t*(i-1);y=y*x*x;k=k*(-1);r=k*y/t/(2*i-1);s=s+r;printf(“S=%fn“,s); 【4.38】参考答案:main() int i;float s=0;for(i=1;i0.001;i+)s=s+1.0/i/(i+1);printf(“Result=%f i=%dn“,s,i);【4.40】参考答案:#include mai

11、n() float x,eps,s,y=0,y0,t;int n,j;printf(“Enter x & eps:“);scanf(“%f%f“, &x, &eps);n=t=j=1;s=x;do y0=y;if(n%2=0) y=y-s/t;else y=y+s/t;s *= x*x; /* 求 x 的乘方 */t *= (j+1)*(j+2); /* 求 n! */j += 2;n+;while( fabs(y0-y) eps ); /* 控制误差 */printf(“sin(%f)=%fn“,x,sin(x); /* 输出标准 sin(x)的值 */printf(“%d,sin(%f)=

12、%fn“,n,x,y); /* 输出计算的近似值 */【4.41】参考答案:main( ) int i,j,num,a10;for(i=0;i=0&ajnum;j-)aj+1=aj;aj+1=num;for(i=0;i0) printf(“%d“,n%10);n=n/10; 【4.43】参考答案:main() int i,n;long s1=0,s2=0;printf(“Please enter N:“);scanf(“%d“,&n);if(n=0)for(i=n;i=2*n;i-)s1=s1+i;i=n;if(i=0)while(i=2*n)s2=s2+i-;printf(“Result1=

13、%ld result2=%ldn“,s1,s2);【4.44】分析:据题意,阶梯数满足下面一组同余式:x1 (mod2)x2 (mod3)x4 (mod5)x5 (mod6)x0 (mod7)参考答案:#include main() int i=1; /* i 为所设的阶梯数 */while( !(i%2=1)&(i%3=2)&(i%5=4)&(i%6=5)&(i%7=0) )+i; /* 满足一组同余式的判别 */printf(“Staris_number=%dn“, i );【4.45】参考答案:main( ) int i,n,a;for(i=0; ;i+) if(i%8=1) n=i/8

14、;if(n%8=1) n=n/8;if(n%8=7) a=n/8;if(i%17=4) n=i/17;if(n%17=15) n=n/17;if(2*a=n) printf(“result=%dn“,i);break;【4.46】分析:二分法的基本原理是,若函数有实根,则函数的曲线应当在根这一点上与轴有一个交点,在根附近的左右区间内,函数值的符号应当相反。利用这一原理,逐步缩小区间的范围,保持在区间的两个端点处的函数值符号相反,就可以逐步逼近函数的根。参考答案:#include “stdio.h“#include “math.h“main() float x0, x1, x2, fx0, fx

15、1, fx2;do printf(“Enter x1,x2:“);scanf(“%f,%f“, &x1, &x2);fx1=2*x1*x1*x1-4*x1*x1+3*x1-6; /* 求出 x1 点的函数值 fx1 */fx2=2*x2*x2*x2-4*x2*x2+3*x2-6; /* 求出 x2 点的函数值 fx2 */while (fx1*fx20); /* 保证在指定的范围内有根,即 fx 的符号相反 */do x0=(x1+x2)/2; /* 取 x1 和 x2 的中点 */fx0=2*x0*x0*x0-4*x0*x0+3*x0-6; /* 求出中点的函数值 fx0 */if(fx0*fx1)=1e-5); /* 判断 x0 点的函数与 x 轴的 距离 */printf(“x=%6.2fn“, x0);【4.47】分析:做圆的内接 4 边形,从圆心和 4 边形顶点连接形成 4 个三角形,可以求出每个三角形的面积(r2/2)现在我们知道三角形的面积和两个边长(均为半径 a=r、b=r) ,可以用公式:S=s(s-a)(s-b)(s-c)求出第三边 c。我们将内接 4 边形换为内接 8 边形,原来的三角形被一分为二,故

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

当前位置:首页 > 行业资料 > 其它行业文档

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