编写C语言程序题及参考答案.pdf
《编写C语言程序题及参考答案.pdf》由会员分享,可在线阅读,更多相关《编写C语言程序题及参考答案.pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、编写 C 语言程序题及参考答案基本按照把同类题目尽量排在一起原则组织的,便于读者学习掌握编程方法和思路,提高编程能力。【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),则year 为闰年;否则,表达式不成立(即值为 0)
2、,year 为平年。【4.3】编写一个简单计算器程序,输入格式为:data1 op data2。其中 data1 和 data2 是参加运算的两个数,op 为运算符,它的取值只能是+、-、*、/。【4.4】输入 n 值,输出如图所示矩形。【4.5】输入 n 值,输出如图所示平行四边形。【4.6】输入 n 值,输出如图所示高为 n 的等腰三角形。【4.7】编写程序,输入三角型的三条边长,求其面积。注意:对于不合理的边长输入要输出数据错误的提示信息。【4.8】编写程序求出 555555 的约数中最大的三位数是多少。【4.9】从键盘输入任意的字符,按下列规则进行分类计数。第一类 0,1,2,3,4,
3、5,6,7,8,9 第二类+,-,*,/,%,=第三类 其它字符当输入字符时先计数,然后停止接收输入,打印计数的结果。【4.10】编写程序计算下列序列的值:要求最后一项小于 0.001 时、或者当 N=20 时尚未达到精度要求,则停止计算。【4.11】从键盘输入十个整数,用插入法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出。【4.12】输入一个正整数,要求以相反的顺序输出该数。例如输入 12345,输出位 54321。【4.13】编写程序,读入一个整数;若为非负数,则计算到 2之间的整数和;若为一个负数,则求到之间的整数和。分别利用 for 和 while 写出两个程序。【4.1
4、4】求解爱因斯坦数学题。有一条长阶梯,若每步跨 2 阶,则最后剩余 1 阶,若每步跨 3 阶,则最后剩2 阶,若每步跨 5 阶,则最后剩 4 阶,若每步跨 6 阶则最后剩 5 阶,若每步跨 7 阶,最后才正好一阶不剩。请问,这条阶梯共有多少阶?【4.15】一个自然数被 8 除余 1,所得的商被 8 除也余 1,再将第二次的商被 8 除后余 7,最后得到一个商为。又知这个自然数被 17 除余 4,所得的商被 17 除余 15,最后得到一个商是的 2 倍。编写程序求这个自然数。【4.16】若一个口袋中放有 12 个球,其中有 3 个红的,3 个白的和 6 个黑的,每次从中任取 8 个球,编写程序求
5、出共有多少种不同的颜色搭配。【4.17】100 匹马驮 100 担货,大马一匹驮担,中马一匹驮担,小马两匹驮担。试编写程序计算大、中、小马的数目。【4.18】编写程序,输出用一元人民币兑换成 1 分、2 分和 5 分硬币的不同兑换方法。【4.19】设 N 是一个四位数,它的 9 倍恰好是其反序数(例如:123 的反序数是 321),求 N 的值。【4.20】请验证 2000 以内的哥德巴赫猜想,对于任何大于 4 的偶数均可以分解为两个素数之和。【4.21】猜数游戏。由计算机想一个数请人猜,如果人猜对了,则结束游戏,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。计算机记录人猜
6、的次数,以此可以反映出猜数者猜的水平。【4.22】求矩阵 A2*3 的转置矩阵 B3*2。设矩阵 A 为:1 2 3 1 4 A=B=2 5 4 5 6 3 6【4.23】输入 55 的数组,编写程序实现:(1)求出对角线上各元素的和;(2)求出对角线上行、列下标均为偶数的各元素的积;(3)找出对角线上其值最大的元素和它在数组中的位置。【4.24】编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。【4.25】编写程序,输入一个十进制整数,将其变换为二进制后储存在一个字符数组中。【4.26】求这样一个三位数,该三位数等于其每位数字的阶乘之和。即:abc=a!+b!+c!【4
7、.27】找出一个二维数组中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。二维数组也可能没有鞍点。【4.28】编写一个函数实现将字符串 str1 和字符串 str2 合并,合并后的字符串按其 ASCII 码值从小到大进行排序,相同的字符在新字符串中只出现一次。【4.29】编写程序,读入一个以符号.结束的长度小于 20 字节的英文句子,检查其是否为回文(即正读和反读都是一样的,不考虑空格和标点符号)。例如:读入句子:MADAM IM ADAM.它是回文,所以输出:YES读入句子:ABCDBA).它不是回文,所以输出:NO【4.30】编写程序,其中包括一个函数,此函数的功能是:对一个长
8、度为 N 的字符串从其第 K 个字符起,删去 M 个字符,组成长度为 N-M 的新字符串(其中 N、M=80,K=N)。例如输入字符串We are poor students.,利用此函数进行删除poor的处理,输出处理后的字符串是We are students.。【4.31】编写函数,通过指针将一个字符串反向。【4.32】编写一个函数 insert(s1,s2,ch),实现在字符串 s1 中的指定字符 ch 位置处插入字符串s2。【4.33】编写成绩排序程序。按学生的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名次、该名次的分数、相同名次的人数和学号;同名次的学号输出在同一行中,一行
9、最多输出 10 个学号。【4.34】编写程序,从键盘输入一行字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存。【4.35】从键盘输入 10 个正整数,求出最大数,最小数,以及他们的最大公约数。要求用数组实现。【编写程序题参考答案】【4.1】参考答案:#include main()int year;float money,rate,total;/*money:本金 rate:月利率 total:本利合计*/printf(Input money and year=?);scanf(%f%d,&money,&year);/*输入本金和存款年限*/if(year=1)r
10、ate=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;/*计算到期的本利合计*/printf(Total=%.2fn,total);【4.2】参考答案:#include main()int year,month,days;printf(Enter year and month:);scanf
11、(%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: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
12、!=0)printf(%d,%d is%d daysn,year,month,days);【4.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,data1,data2,data1+data2);break;case-:/*处理减法*/print
13、f(%.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,data2,data1/data2);break;default:/*输入了其它运算符*/printf(Unknown operater.n);【4.4】分析:打印此图形用两重
14、循环实现。图形要重复 n 行,故采用循环结构实现循环 n 次,循环体内部打印一行*号,把上述思路表示为:for(i=1;i=n;i+)打印一行*号;每行有 n 个*号,再采用循环结构实现 n 次循环,循环内部用格式输出语句打印一个*号,即:for(j=1;j=n;j+)printf(*);按照上述思路,实现打印矩形。参考答案:main()int i,j,n;printf(nPlease Enter n:);scanf(%d,&n);for(i=1;i=n;i+)for(j=1;j=n;j+)printf(*);printf(n);【4.5】分析:此图形和上题的区别在于在每一行先要打印空格,然后
15、再打印 n 个*号,在上题第一层循环体内打印*号的循环前面增加一个循环打印空格。每行空格的个数是逐行减少的,由于第一层循环的控制变量 i 是逐行增 1,所以用一个固定值的数减去 i 就可实现对空格个数的控制,在此题中固定值可使用变量 n。参考答案:main()int i,j,n;printf(nPlease Enter n:);scanf(%d,&n);for(i=1;i=n;i+)for(j=1;j=n-i;j+)printf();for(j=1;j=n;j+)printf(*);printf(n);【4.6】分析:此题和上题的区别在于每行*的数量逐行减少,可以使用上题控制空格个数的思路来控
16、制*号的个数,请注意每行*的个数都是奇数。参考答案:main()int i,j,n;printf(nPlease Enter n:);scanf(%d,&n);for(i=1;i=n;i+)for(j=1;j=n-i;j+)printf();for(j=1;jb+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.8】参考答案:#include main()int j;long n;/*使用长整型变量,以免超出整数的表示范围*/printf(Please input number:)
17、;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.9】参考答案:#include main()int class1,class2,class3;char ch;class1=class2=class3=0;/*初始化分类计数器*/do ch=getch();switch(ch)case 0:case 1:
18、case 2:case 3:case 4:case 5:case 6:case 7:case 8:case 9: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.10】参考答案:main()int i;float s=1;for(i=1
19、;i0.001;i+)s=s+1.0/i/(i+1);printf(Result=%f i=%dn,s,i);【4.11】参考答案: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.13】参考答案: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-
20、;printf(Result1=%ld result2=%ldn,s1,s2);【4.14】分析:据题意,阶梯数满足下面一组同余式: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.15】参考答案:main()int i,n,a;for(i=0;i+)if(i%8=1)n=i/8;if(n%8=1)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编写 语言 程序 参考答案
限制150内