编写C语言程序题及参考答案.docx
《编写C语言程序题及参考答案.docx》由会员分享,可在线阅读,更多相关《编写C语言程序题及参考答案.docx(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,5,6,7,8,9 第二类
3、+,-,*,/,%,= 第三类 其它字符当输入字符时先计数,然后停止接收输入,打印计数的结果。【4.10】编写程序计算下列序列的值:要求最后一项小于0.001时、或者当N=20时尚未达到精度要求,则停止计算。【4.11】从键盘输入十个整数,用插入法对输入的数据按照从小到大的顺序进行排序,将排序后的结果输出。【4.12】输入一个正整数,要求以相反的顺序输出该数。例如输入12345,输出位54321。【4.13】编写程序,读入一个整数;若为非负数,则计算到2之间的整数和;若为一个负数,则求到之间的整数和。分别利用for和while写出两个程序。【4.14】求解爱因斯坦数学题。有一条长阶梯,若每步跨
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个球,编写程序求出共有多少种不同的颜色搭配。【4.17】100匹马驮100担货,大马一匹驮担,中马一匹驮担,小马两匹驮担。试编写程序计算大、中、小
5、马的数目。【4.18】编写程序,输出用一元人民币兑换成1分、2分和5分硬币的不同兑换方法。【4.19】设N是一个四位数,它的9倍恰好是其反序数(例如:123的反序数是321),求N的值。【4.20】请验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和。【4.21】猜数游戏。由计算机想一个数请人猜,如果人猜对了,则结束游戏,否则计算机给出提示,告诉人所猜的数是太大还是太小,直到人猜对为止。计算机记录人猜的次数,以此可以反映出猜数者猜的水平。【4.22】求矩阵 A2*3 的转置矩阵 B3*2。设矩阵 A 为: 1 2 3 1 4 A = B = 2 5 4 5 6 3 6
6、 【4.23】输入55的数组,编写程序实现:(1)求出对角线上各元素的和;(2)求出对角线上行、列下标均为偶数的各元素的积;(3)找出对角线上其值最大的元素和它在数组中的位置。【4.24】编写程序,以字符形式输入一个十六进制数,将其变换为一个十进制整数后输出。【4.25】编写程序,输入一个十进制整数,将其变换为二进制后储存在一个字符数组中。【4.26】求这样一个三位数,该三位数等于其每位数字的阶乘之和。即:abc = a! + b! + c!【4.27】找出一个二维数组中的鞍点,即该位置上的元素是该行上的最大值,是该列上的最小值。二维数组也可能没有鞍点。【4.28】编写一个函数实现将字符串st
7、r1和字符串str2合并,合并后的字符串按其ASCII码值从小到大进行排序,相同的字符在新字符串中只出现一次。 【4.29】编写程序,读入一个以符号.结束的长度小于20字节的英文句子,检查其是否为回文(即正读和反读都是一样的,不考虑空格和标点符号)。例如: 读入句子:MADAM IM ADAM. 它是回文,所以输出:YES读入句子:ABCDBA). 它不是回文,所以输出:NO【4.30】编写程序,其中包括一个函数,此函数的功能是:对一个长度为N 的字符串从其第K个字符起,删去M个字符,组成长度为N-M的新字符串(其中N、M=80,K=N)。例如输入字符串We are poor students
8、.,利用此函数进行删除poor的处理,输出处理后的字符串是We are students.。【4.31】编写函数,通过指针将一个字符串反向。【4.32】编写一个函数insert(s1,s2,ch),实现在字符串s1中的指定字符ch位置处插入字符串s2。【4.33】编写成绩排序程序。按学生的序号输入学生的成绩,按照分数由高到低的顺序输出学生的名次、该名次的分数、相同名次的人数和学号;同名次的学号输出在同一行中,一行最多输出10个学号。【4.34】编写程序,从键盘输入一行字符串,将其中的小写字母全部转换成大写字母,然后输出到一个磁盘文件test中保存。 【4.35】从键盘输入10个正整数,求出最大
9、数,最小数,以及他们的最大公约数。要求用数组实现。【编写程序题参考答案】【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) rate=0.00315; /* 根据年限确定利率 */else if(year=2) rate=0.00330;else if(year=3) rate=0.00345
10、;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(%d%d, &year, &month);switch (month) case 1: case 3: case
11、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!=0 )printf(%d, %d is
12、 %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
13、- : /* 处理减法 */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, data2, data1/data2);break;default: /* 输入了其它运算
14、符 */printf(Unknown operater.n);【4.4】分析:打印此图形用两重循环实现。图形要重复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(*);p
15、rintf(n);【4.5】分析:此图形和上题的区别在于在每一行先要打印空格,然后再打印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; /
17、* 使用长整型变量,以免超出整数的表示范围 */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.9】参考答案:#include main( ) int class1, class2, class3;char ch;class1=cla
18、ss2=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:class1+; break; /* 对分类计数 */case +: case -: case *: case /: case %: case =:class2+; break; /* 对分类计数 */default: class3+; break; /* 对分类计数 */while (ch!= ); /* 字符在C程序中要使用转义符
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 编写 语言 程序 参考答案
限制150内