第一篇:宁波大学OJ系统C语言题目及答案精讲
C++资料复习
1000 整数输入输出练习
Description 从键盘输入任意两个整数,再向屏幕输出这两个数据。
Input 输入两个整数。
Output 输出这两个整数。以空格间隔。
Sample Input 7-9 Sample Output 7-9 HINT 本题的样例代码如下: #include
C++资料复习
1001 字符输入输出练习1
Description 从键盘任意输入一个字符,再输出这个字符。
Input 任意输入一个字符。
Output 输出该字符。
Sample Input # Sample Output #
#include
C++资料复习
1002 单组A+B
Description 从键盘输入任意两个整数a和b,计算并输出a+b的值。
Input 从键盘输入两个整数a和b。
Output 输出这两个数的和
Sample Input 1 2 Sample Output 3
#include
C++资料复习
1003 多组A+B(1)
Description 分别计算多组a+b的值。
Input 输入包含多组测试数据。每行包含一组整数a,b。当输入为0 0 时,测试结束,此时的结果不输出。
Output 对于每一对整数a,b,输出它们的和,并且每行输出一个结果。
Sample Input 1 5 10 20 0 0
#include
y=a+b;
printf(“%dn”,y);
scanf(“%d%d”,&a,&b);} return 0;}
C++资料复习
1004 多组A+B(2)
Description 分别计算多组a+b的值。
Input 第一行包含一个整数N,表示有N组数据。接下来的N行,每行输入一组a,b数据。
Output 对于每一对整数a,b,输出它们的和,并且每行输出一个结果。
Sample Input 2 1 5 10 20 Sample Output 6 30
#include
scanf(“%d%d”,&a,&b);
y=a+b;
printf(“%dn”,y);i++;} return 0;}
C++资料复习
1005 计算平均分(1)
Description 输入一个学生的3门课成绩a,b,c,求出该学生的平均分。
Input 输入三个成绩a,b,c。
Output 输出平均值,要求保留1位小数。
Sample Input 60 70 80 Sample Output 70.0
#include
06 计算月收入
Description 某小型外贸公司员工月收入的计算方法为:月基本工资加当月提成。从键盘输入某员工某月的基本工资和该月的提成,计算并输出该员工的月收入。
Input 输入两个数分别代表月基本工资和月提成。
C++资料复习
Output 计算并输出月收入(保留2位小数)。
Sample Input 3100 1200 Sample Output 4300.00
#include
1007 温度转换
Description 2011夏季,热浪席卷了全球的大部分地方。网上报道美国局部地区的温度达到了100华氏度,而我们国内的温度多在38摄氏度左右。那么38摄氏度和100华氏度到底哪个更热一些呢?请你帮忙编一个程序来解决这一问题。从键盘输入一个华氏温度,求出其对应的摄氏温度。计算公式如下: c=5*(f-32)/9 c表示摄氏温度,f表示华氏温度。
Input 输入一个华氏温度值。
Output 输出对应的摄氏温度值,结果要求保留2位小数。
Sample Input
C++资料复习
Sample Output 37.78
#include
1008 求圆周长和圆面积
Description 从键盘输入一个圆的半径r,计算并输出圆周长和圆面积。
Input 输入一个圆半径r。
Output 按序输出圆周长和圆面积,结果保留两位小数。
Sample Input 41 Sample Output 257.48 5278.34
C++资料复习
HINT 圆周率使用3.14
#include
1009 求圆柱体表面积
Description 输入圆柱体的底面半径r和高h,计算圆柱体的表面积并输出到屏幕上,保留2位小数。
Input 输入圆柱体的底面半径r和高h。
Output 计算圆柱体的表面积并输出到屏幕上,保留2位小数。
Sample Input 42.1 71.6 Sample Output
C++资料复习
30060.92 HINT 圆周率使用3.14
#include
1010 计算球体的体积
Description 编写程序计算球体的体积。参考公式v=(4/3)*PI*r*r*r,其中PI表示圆周率。球体的半径r的值由键盘输入,保留2位小数。
Input 输入球体半径r。
Output 计算球体体积并输出到屏幕上,保留2位小数。
Sample Input 96.2 Sample Output
C++资料复习
3727293.58 HINT 圆周率使用3.14
#include
1011 三角形面积
Description 从键盘上输入三角形的3条边的边长a,b,c(假定3条边长可以构成三角形),求三角形面积并输出到屏幕上。
可利用海伦公式求解:s=sqrt(p*(p-a)*(p-b)*(p-c));其中p=(a+b+c)/2;Input 输入三条边的边长(假设3条边长可以构成三角形)。
Output 输出三角形面积。保留2位小数。
Sample Input 3 4 5
C++资料复习
Sample Output 6.00
#include
1012 判断三角形
Description 输入三角形的3条边a,b,c,如果能构成一个三角形,则输出面积,否则输出Error。
Input 输入三个数a,b,c(浮点类型)。
Output 如果这三条边能构成一个三角形就计算并输出这个三角形的面积,保留2位小数。如果不能构成三角形就输出Error。
Sample Input 3 1 4
C++资料复习
Sample Output Error
#include p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));printf(“%.2fn”,s);} else printf(“Errorn”); return 0;} 1013 两点的距离 Description 从键盘输入数据表示平面上任意两点。计算并输出这两点之间的距离。保留2位小数。 Input 依次输入x1,y1和x2,y2分别表示平面上的两点。 Output 输出这两点间的距离。保留2位小数。 Sample Input C++资料复习 3.1 4.2 5.0 6.0 Sample Output 2.62 #include 1014 数值类型转换 Description 输入一个双精度数,输出它的整型值。 Input 输入一个双精度数 Output 输出该数的浮点数形式(保留2位小数)和它对应的整型形式。两数之间以空格间隔。 Sample Input C++资料复习 1.22 Sample Output 1.22 1 #include 1015 两数交换 Description 从键盘输入两个整数x,y,然后交换它们的顺序并输出。 Input 输入两个整数x,y(以空格间隔)。 Output 首先输出x,y的初始值,然后换行输出交换后的两数。同一行内的数据以空格间隔。 Sample Input 12 23 C++资料复习 Sample Output 12 23 23 12 #include 1016 两数相除 Description 输入两个浮点数x,y,计算x除以y的值。 Input 输入两个浮点数x,y。 Output 输出运算结果的值,要求保留两位小数。 Sample Input 2 3 C++资料复习 Sample Output 0.67 #include 1017 商和余数 Description 输入两个整数x,y,计算x除以y的商和余数。 Input 输入两个整数x,y。 Output 输出商和余数。以空格间隔。 Sample Input 65 14 C++资料复习 Sample Output 4 9 #include 1018 植树问题 Description 某学校植树节开展植树活动,已知树苗有m株,参加植树的同学有n人(且m>n),请问每位同学平均可以植树几株?还有几株剩余? Input 输入两个整数m和n,分别表示树苗的数量和学生的人数(m>n)。 Output 输出每位同学平均植树的数量及剩余的树苗数量。 Sample Input C++资料复习 163 32 Sample Output 5 3 #include 1019 美元和人民币 Description 美元越来越贬值了,手上留有太多的美元似乎不是件好事。赶紧算算你的那些美元还值多少人民币吧。假设美元与人民币的汇率是1美元兑换6.5573元人民币,编写程序输入美元的金额,输出能兑换的人民币金额。 Input 输入美元的金额。 Output 输出能兑换的人民币的数值。输出保留2位小数。 C++资料复习 Sample Input 100 Sample Output 655.73 #include 1020 计算字符的ASCII码 Description 编写程序,从键盘输入一个字符,输出它的ASCII码值。 Input 输入一个字符。 Output 输出字符对应的十进制ASCII码值。 Sample Input C++资料复习 A Sample Output 65 #include 1021 单个字母的小写变大写 Description 从键盘输入一个小写字母,将其转换成大写字母并输出。 Input 输入一个小写字母。(假设输入的一定是小写字母) Output 输出其大写形式。 Sample Input C++资料复习 a Sample Output A #include 1022 简单译码 Description 从键盘输入两个字母,对它们进行译码。如需要将”Hi”译成密码,规则是:用原字母后的第3个字母来代替,如H后面第3个字母是K,i后面第3个字母是l,因此“Hi”应译为“Kl”。 Input 从键盘输入两个字母,分别存放到变量ch1,ch2中。 Output 按上述规则进行译码后输出,输出字母间不加间隔。 C++资料复习 Sample Input Hi Sample Output Kl #include 1023 字符加减运算 Description 编写一个程序,求两个字符之间的加减运算。 Input 连续输入三个字符,其中第一个输入运算符号(+或者-),后两个输入字符。如+ab表示计算字符a与字符b相加的结果。 Output 输出两字符ASCII码值相加减的结果。 C++资料复习 Sample Input-ab Sample Output-1 #include 1024 求多项式值(1) Description 求y=2*x^2+x+8的值。其中,x为浮点数,从键盘输入,经过计算后,将y的值输出到屏幕上,保留1位小数。 Input 输入浮点数x的值。 Output C++资料复习 计算并输出y的值,保留1位小数。 Sample Input 1 Sample Output 11.0 #include 1025 求多项式值(2) Description 编程根据输入的x的值,结合数学函数计算多项式y=3*x^4-2*x^3-x^2+10的结果,结果保留1位小数。 Input 输入浮点数x的值。 Output C++资料复习 计算并输出多项式的结果,保留1位小数。 Sample Input 1 Sample Output 10.0 HINT 建议用double #include 1026 居民电费 Description 某地居民用电是这样计算的,正常使用部分每度0.538元,阶梯部分每度0.03元。某用户家9月份正常部分用电量为x度,阶梯部分y度,请编程计算该用户9月份应该缴纳的电费。从键盘输入x和y,输出应缴纳电费,保留2位小数。 Input 输入x和y的值。 C++资料复习 Output 输出应缴纳的电费,保留2位小数。 Sample Input 10 10 Sample Output 5.68 #include 1027 存款利息(1) Description 输入存款金额money、存期year和年利率rate,根据公式计算存款到期时的利息interest(税前)。公式如下: interest=money(1+rate)^year-money Input 输入存款金额money、存期year和年利率rate。 C++资料复习 Output 输出到期时的利息,保留2位小数。 Sample Input 1000 3 0.0415 Sample Output 129.74 HINT 建议用double #include 1028存款利息(2) Description 输入人民币存款年利率I和存款总额S,计算满一年后本息合计并输出。 Input 输入年利率和存款总数。 C++资料复习 Output 计算满一年后本息合计,保留两位小数。 Sample Input 0.03 100000 Sample Output 103000.00 #include 1029 三位数的数位分离 Description 从键盘输入一个任意的3位整数,分别求出其个位、十位和百位上的数字。 Input 输入任意的一个三位整数 C++资料复习 Output 依次输出个位、十位、百位上的数字。以空格间隔。 Sample Input 367 Sample Output 7 6 3 #include 1030 棋盘上的麦粒 Description 舍罕是古印度的国王,据说他十分好玩。宰相依达尔为了讨好国王,发明了现今的国际象棋献给国王。国王非常喜欢,决定嘉奖宰相,许诺满足宰相提出的任何要求。宰相指着棋盘要求:“陛下,请您按棋盘的格子赏赐我一点小麦吧,第一个小格赏我1粒麦子,第二个小格赏我2粒,第三个小格赏4粒,以后每一小格都比前一个小 C++资料复习 格赏的麦子增加一倍,只要把棋盘上全部64个小格按这样的方法得到的麦子都赏赐给我,我就心满意足了”。国王听了宰相这个“小小”的要求,马上同意了。 结果在给宰相麦子时,国王发现他要付出的比自己想象的要多得多,于是进行了计算,结果令他大惊失色。问题是:舍罕王的计算结果是多少粒麦子。 Input 输入一个整数n代表棋盘的格子,该数字大于1且小于等于64。如输入2,则表示有2个格子,第一个格子放1粒,第二个格子放2粒,则2个格子一共需要3粒麦子。 Output 输出n个格子需要的麦粒数。 Sample Input 64 Sample Output ***709551615 HINT 如果麦粒数sum如下定义: unsigned __int64 sum; 则计算完成后其输出形式为: printf(“%I64un”, sum); #include C++资料复习 } { a=pow(2,i);s+=a;} printf(“%I64un”,s);return 0; 1031 数据逆序显示 Description 输入一个任意长度的正整数,将该数逆序输出。如,输入正数237,则逆序显示的结果为732。如输入230,则逆序显示的结果为32。 Input C++资料复习 输入一个正整数 Output 该数的逆序显示结果(数字最前面的0不显示,如340反转后。要求输出为43,而不是043) Sample Input 123 Sample Output 321 #include b=a%10; printf(“%d”,b); a=a/10;} printf(“n”);return 0;} 1032 各位数字求和 Description 编写一个程序,输入一个正整数,然后计算组成该数的各位数字的和。如,输入正数237,其各位的数字分别为2,3,7,加起来的和应该为2+3+7=12。 Input C++资料复习 输入一个正整数。 Output 输出各位数字的和 Sample Input 1234 Sample Output 10 #include b=a%10; c+=b; a=a/10;} printf(“%dn”,c);return 0;} 1033 计算最高位数字 Description 输入一个任意长度的正整数,求出其最高位数字。如,输入237,则最高位数字为2。 Input C++资料复习 输入一个正整数。 Output 输出最高位数字 Sample Input 4756 Sample Output 4 #include a=a/10;} printf(“%dn”,a);return 0;} 1034 任意长度整数的位数 Description 输入一个任意长度的正整数,求出它是几位数。 Input 输入一个任意长度的正整数。 C++资料复习 Output 输出位数 Sample Input 0 Sample Output 1 #include a=a/10; i+=1;} printf(“%dn”,i);return 0;} 1035 求整数的绝对值 Description 输入一个整数,输出它的绝对值 Input 输入一个整数n C++资料复习 Output 输出该数的绝对值 Sample Input-2 Sample Output 2 #include 1036 符号属性判断 Description 从键盘输入任意数x,根据其符号属性,输出对应的y值。 y=-1(x<0)y=0(x=0)y=1(x>0) C++资料复习 Input 输入x。 Output 输出y的值 Sample Input 10 Sample Output 1 HINT x取浮点类型 #include 1037 正数负数 Description 输入一个整数,判断该数是正数还是负数。 Input 输入整数n。 C++资料复习 Output 如果该数是正数就输出“positive”,负数就输出“negative”(输出不含双引号)。 Sample Input 8 Sample Output positive #include 1038 奇数偶数 Description 输入一个整数,判断该数是奇数还是偶数。 Input 输入整数n。 C++资料复习 Output 如果该数是奇数就输出“odd”,偶数就输出“even”(输出不含双引号)。 Sample Input 8 Sample Output even #include 1039 奇数和与偶数和(1) Description 输入正整数n,计算1~n中的奇数和以及偶数和并输出。 Input 输入一个正整数n。 C++资料复习 Output 依次输出奇数和以及偶数和,各占一行。 Sample Input 100 Sample Output 2500 2550 #include if(i%2==1) a+=i; else b+=i; i++;} printf(“%dn%dn”,a,b);return 0;} 1040 奇数和与偶数和(2) Description 输入正整数n,然后依次输入n个正整数,计算其中的奇数和与偶数和并输出。 Input C++资料复习 先输入一个正整数n,然后依次输入n个正整数。 Output 依次输出其中的奇数和以及偶数和,各占一行。 Sample Input 5 1 8 9 6 4 Sample Output 10 18 #include scanf(“%d”,&m); if(m%2==1) a+=m; else b+=m; i++;} printf(“%dn%dn”,a,b);return 0;} 1041 分段函数(1) Description 有一函数: y=x(x<1) C++资料复习 y=3x-1(1<=x<10)y=4x-2(x>=10) 编写程序,输入x,输出y的值。 Input 输入一个任意整数x。 Output 输出函数y的值。 Sample Input 3 Sample Output 8 #include 1042 分段函数(2) Description 输入整数x,计算并输出下面分段函数的值(保留两位小数)。 C++资料复习 y=x^2-2(x>=0)y=sqrt(5-x)(x<0)Input 输入一个整数x。 Output 输出函数的值。保留2位小数。 Sample Input 3 Sample Output 7.00 #include 1043 分段函数(3) Description 输入浮点数x,计算并输出下面分段函数y的值(保留两位小数)。 C++资料复习 y=(x+1)^2+2x+1/x(x<0)y=sqrt(x)(x>=0)Input 输入一个浮点数。 Output 输出函数的值。保留2位小数。 Sample Input 10 Sample Output 3.16 #include Description 第几象限1044 C++资料复习 从键盘输入2个整数x、y值表示一个坐标点,判断该坐标点处于第几象限,并输出相应的结果。假设坐标点不会处于x轴和y轴上。 Input 输入x,y值表示一个坐标点。坐标点不会处于x轴和y轴上。 Output 输出对应的象限,用数字1,2,3,4分别对应四个象限。 Sample Input 1 1 Sample Output 1 #include printf(“1n”);else if(x<0&&y>0) printf(“2n”);else if(x<0&&y<0) printf(“3n”);else printf(“4n”);return 0;} 1045 圆内圆外 Description C++资料复习 有一个半径为10的圆,圆心坐标为(0,0),从键盘输入任意点的坐标(a,b),判断该点在圆内,在圆外,还是恰巧在圆周上。 Input 输入a,b(a,b均为整数)值表示一个坐标点。 Output 输出对应的信息。in表示在圆内,out表示在圆外,on表示在圆周上。 Sample Input 1 1 Sample Output in #include 1046 判断英文字母 Description C++资料复习 编写一个程序,判断输入的一个字符是否是英文字母。 Input 任意输入一个字符。 Output 输出该字符是否属于英文字母的信息(大小写都可以),属于则输出YES,不属于则输出NO。 Sample Input 2 Sample Output NO #include 1047 单个字母大小写互换 Description C++资料复习 从键盘输入一个英文字母,要求编写一个程序,实现字母的大小写转换。如果输入的是小写字母,则输出其大写形式。如果输入的是大写字母,则输出其小写形式。若是其他字符则原样输出。如输入A,则输出a;若输入#,则依然输出#。 Input 任意输入一个英文字母。 Output 输出对应字符的大(小)写字符,(如A对应于a)。 Sample Input b Sample Output B #include y=x+32;printf(“%cn”,y);} else if(x>='a'&&x<='z'){ y=x-32; printf(“%cn”,y);} else { y=x; printf(“%cn”,y);} return 0;} 1048 ASCII码对应的英文字母 Description C++资料复习 从键盘输入一个代表ASCII码值的数字(<127),若该数字对应的字符是英文字母,则输出其字母的形式,否则输出数字本身。 Input 输入一个数字(小于127)。 Output 输出该ASCII值对应的英文字母。 Sample Input 98 Sample Output b #include 1049 单个字符判断 Description 第1题 歌手大赛问题 题目:青年歌手参加歌曲大奖赛,有10个评委进行打分,试编程求这位选手的平均得分。3种方法:分别要求使用到排序,数组,函数,指针。分析:这道题的核心程序是排序,将评委打的10个分数利用数组按增序(或降序)排列,计算数组中除了第一个和最后一个分数以外的数以外的数的平均分 答案: #include 2. 12.抓交通肇事犯 一辆卡车违反交通规则,撞人后逃跑。现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。甲说:牌照的前两位数字是相同的;乙说:牌照的后两位数字是相同的,但与前两位不同;丙是数学家,他说:四位的车号刚好是一个整数的平方。请根据以上线索求出车号。*问题分析与算法设计 按照题目的要求造出一个前两位数相同、后两位数相同且相互间又不同的整数,然后判断该整数是否是另一个整数的平方。*程序与程序注释 #include 3. 14.怎样存钱利最大 假设银行整存整取存款不同期限的月息利率分别为: 0.63% 期限=1年 0.66% 期限=2年 0.69% 期限=3年 0.75% 期限=5年 0.84% 期限=8年 利息=本金*月息利率*12*存款年限。现在某人手中有2000元钱,请通过计算选择一种存钱方案,使得钱存入银行20年后得到的利息最多(假定银行对超过存款期限的那一部分时间不付利息)。*问题分析与算法 为了得到最多的利息,存入银行的钱应在到期时马上取出来,然后立刻将原来的本金和利息加起来再作为新的本金存入银行,这样不断地滚动直到满20年为止,由于存款的利率不同,所以不同的存款方法(年限)存20年得到的利息是不一样的。分析题意,设2000元存20年,其中1年存i1次,2年存i2次,3年存i3次,5年存i5次,8年存i8次,则到期时存款人应得到的本利合计为: 2000*(1+rate1)i1*(1+rate2)i2*(1+rate3)i3*(1+rate5)i5*(1+rate8)i8 其中rateN为对应存款年限的利率。根据题意还可得到以下限制条件: 0<=i8<=2 0<=i5<=(20-8*i8)/5 0<=i3<=(20-8*i8-5*i5)/3 0<=i2<=(20-8*i8-5*i5-3*i3)/2 0<=i1=20-8*i8-5*i5-3*i3-2*i2 可以用穷举法穷举所有的i8、i5、i3、i2和i1的组合,代入求本利的公式计算出最大值,就是最佳存款方案。*程序与程序注释 #include 4. 51.谁是窃贼 公安人员审问四名窃贼嫌疑犯。已知,这四人当中仅有一名是窃贼,还知道这四人中每人要么是诚实的,要么总是说谎的。在回答公安人员的问题中: 甲说:“乙没有偷,是丁偷的。” 乙说:“我没有偷,是丙便的。” 丙说:“甲没有偷,是乙偷的。” 丁说:“我没有偷。” 请根据这四人的答话判断谁是盗窃者。*问题分析与算法设计 假设A、B、C、D分别代表四个人,变量的值为1代表该人是窃贱。由题目已知:四人中仅有一名是窃贱,且这四个人中的每个人要么说真话,要么说假话,而由于甲、乙、丙三人都说了两句话:“X没偷,X偷了”,故不论该人是否说谎,他提到的两人中必有一人是小偷。故在列条件表达式时,可以不关心谁说谎,谁说实话。这样,可以列出下列条件表达式: 甲说:”乙没有偷,是丁偷的。” B+D=1 乙说:“我没有偷,是丙偷有。” B+C=1 丙说:“甲没有偷,是乙偷的。” A+B=1 丁说:“我没有偷。” A+B+C+D=1 其中丁只说了一句话,无法判定其真假,表达式反映了四人中仅有一名是窃贱的条件。*程序与程序注释 #include 69.魔术师的猜牌术(1)魔术师利用一副牌中的13张黑桃,预先将它们排好后迭在一起,牌面朝下。对观众说:我不看牌,只数数就可以猜到每张牌是什么,我大声数数,你们听,不信?你们就看。魔术师将最上面的那张牌数为1,把它翻过来正好是黑桃A,将黑桃A放在桌子上,然后按顺序从上到下数手上的余牌,第二次数1、2,将第一张牌放在这迭牌的下面,将第二张牌翻过来,正好是黑桃2,也将它放在桌子上,第三次数1、2、3,将前面两张依次放在这迭牌的下面,再翻第三张牌正好是黑桃3。这样依次进行将13张牌全翻出来,准确无误。问魔术师手中的牌原始顺序是怎样安排的? *问题分析与算法设计 题目已经将魔术师出牌的过程描述清楚,我们可以利用倒推的方法,很容易地推出原来牌的顺序。人工倒推的方法是:在桌子上放13空盒子排成一圈,从1开始顺序编号,将黑桃A放入1号盒子中,从下一个空盒子开始对空的盒子计数,当数到第二个空盒子时,将黑桃2放入空盒子中,然后再从下一个空盒子开始对空盒子计数,顺序放入3、4、5...,直到放入全部3张牌。注意在计数时要跳过非空的盒子,只对空盒子计数。最后牌在盒子中的顺序,就是魔术师手中原来牌的顺序。这种人工的方法是行之有效的,计算机可以模拟求解。*程序与程序注释 #include 75.10个小孩分糖果 十个小孩围成一圈分糖果,老师分给第一个小孩10块,第二个小孩2块,第三个小孩8块,第四个小孩22块,第五个小孩16块,第六个小孩4块,第七个小孩10块,第八个小孩6块,第九个小孩14块,第十个小孩20块。然后所有的小孩同时将手中的糖分一半给右边的小孩;糖块数为奇数的人可向老师要一块。问经过这样几次后大家手中的糖的块数一样多?每人各有多少块糖? *问题分析与算法设计 题目描述的分糖过程是一个机械的重复过程,编程算法完全可以按照描述的过程进行模拟。*程序与程序注释 #include 求两个数之和。在两种情况下完成: ①数据在程序内部定义变量时赋初值,或者通过赋值语句赋值。②数据通过scanf()函数输入。静态输入: #include #include 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆柱表面积、圆柱体积。要求用scanf 输入数据,输出计算结果。#include l=%6.2fn”,l);printf(“圆的面积为 s=%6.2fn”,s);printf(“圆柱的表面积为 sq=%6.2fn”,sq);printf(“圆柱的体积为 vz=%6.2fn”,vz);} 输入a、b、c三个整数,求出其中最大者,并连同三个源数据一起输出。#include if(x>z) max=x; else max=z;} else { if(y>z) max=y; else max=z;} return(max);} void main(){ int max(int x,int y,int z); int a,b,c,w; printf(“请您输入三个整数:”); scanf(“%d,%d,%d”,&a,&b,&c); printf(“您输入的三个数是:%d,%d,%dn”,a,b,c); w=max(a,b,c); printf(“这三个数中最大的是:%dn”,w);} 给出一个百分制成绩,要求输出成绩等级A、B、C、D、E。90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。要求输入一个成绩并打印出对应的等级制成绩。要求用switch语句完成。#include printf(“您输入了一个错误的成绩!请重新输入n”); scanf(“%d”,&grade);} c=grade/10;switch(c){ case 10: case 9: grade='A';break;case 8: grade='B';break;case 7: grade='C';break;case 6: grade='D';break;default: grade='E';} printf(“您输入的成绩的等级为:%Cn”,grade);} 计算当n为何值时,不等式sum=1 + 1/2 + 1/3 +… + 1/n >limit成立,输出n对应的sum(limit从键盘输入,要求用while、或do...while 语句,limit=10)。#include n++; sum=sum+1/n;} printf(“此时sum的值是:%fn”,sum);printf(“此时n的值为%fn”,n);} 计算M=11+ 22+ 33+…+ NN,直到N等于15为止,输出N和对应的M。(要求用for语句做) #include M=M+(n+10*n);} for(n=10;n<=15;n++){ M=M+(n+100*n);} n--;printf(“当n是%d时,M的值为%fn”,n,M);} 100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马一匹驮0.5担,计算大、中、小马数目并输出。#include for(small=0;small<100;small+=2) for(mid=0;mid<50;mid++) { if(3*big+2*mid+small/2==100&&big+mid+small==100) { printf(“big:%dt,mid:%dt,small:%dn”,big,mid,small); sum++; } } printf(“一共有%d种组合方式n”,sum);} 求 sum=1!+2!+3!+...+10!,并输出结果。#include t=t*n; s=s+t;} printf(“1!+2!+3!+...+10!的和是:%en”,s);} 注意该程序的结果为:1!+2!+3!+...+10!的和是:4.037913e+006 是以科学计数法表示的结果,因为int的定义范围只能以此表示,如果用long int来输出,则可以得到正常表示的结果 #include t=t*n; s=s+t;} printf(“1!+2!+3!+...+10!的和是:%ldn”,s);} 1!+2!+3!+...+10!的和是:4037913 设数列为1,3,5,7,9,11,13,15,17,19,动态输入在数组array中,然后顺序打印输出该数列,再逆序打印输出该数列。#include scanf(“%d”,&array[i]);printf(“您输入的10个整数的顺序排列是:n”);for(i=0;i printf(“%-4d”,array[i]);printf(“n”);printf(“您输入的10个整数的逆序排列是:n”);for(i=N-1;i>=0;i--) printf(“%-4d”,array[i]);printf(“n”);} 将3x3阶二维数组的关于主对角线对称的元素互换。二维数组的第1至3行元素分别为1、2、3、4、5、6、7、8、9。用矩阵形式分别输出互换前、后的数组元素值。#include for(j=0;j<3;j++) printf(“%5d”,array[i][j]); printf(“n”);} for(i=1;i<3;i++) for(j=0;j { t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } printf(“After Exchanged:n”); for(i=0;i<3;i++) { for(j=0;j<3;j++) printf(“%5d”,array[i][j]); printf(“n”); } } 定义两个字符数组s1、s2,并用赋初值的方法把两个字符串“Computer”和“Language” 分别存放到s1、s2中,要求不用库函数strcat(),把s2连接到s1的尾部,然后以%s格式输出连接后的字符串s1。#include char s1[80],s2[40]; int i=0,j=0; printf(”input string1:“); scanf(”%s“,&s1); printf(”input string2:“); scanf(”%s“,&s2); while(s1[i]!=' ') i++; s1[i]=' '; i++; while(s2[j]!=' ') s1[i++]=s2[j++]; s1[i] = ' '; printf(”The new string is:%sn“,s1);} 用赋初值的方法把字符串”C is a general purpose, procedural, imperative computer programming language developed in 1972 by Dennis Ritchie at the Bell Telephone Laboratories for use with the Unix operating system.“存放到字符数组s中,编程统计其中的大写字母、小写字母、数字、空格、逗号的个数。#include char s[512] = ”C is a general purpose, procedural, imperative “ ”computer programming language developed in 1972 by Dennis“ ”Ritchie at the Bell Telephone Laboratories for use with “ ”the Unix operating system.“;int upper=0,lower=0,digit=0,space=0,comma=0;int i=0;while(s[i]) { if(s[i]>='A'&&s[i]<='Z')upper++; if(s[i]>='a'&&s[i]<='z')lower++; if(s[i]>='0'&&s[i]<='9')digit++; if(s[i]==' ')space++; if(s[i]==',')comma++; i++; } printf(”这串字符串有大写字母%d个,小写字母%d个,数字%d个,空格%d个,逗号%d个n“,upper,lower,digit,space,comma);} 试从主函数输入10个数据到数组中,编写对偶数项求和的子函数,它将计算结果返回给主函数,由主函数输出。#include int i,s;s=0; for(i=1;i s=s+a[i]; return(s);} void main(){ int a[10];int i,s;printf(”请您在数组内输入10个数:“);for(i=0;i<10;i++) scanf(”%d“,&a[i]);s=oqh(a,10);printf(”这个数组的偶数项的和是:%dn“,s);} 注意:oqh并无其他含义,是本人定义的一个函数名,偶数项求和的缩写。编写一个判断素数的程序,其中主函数用于完成输入一个整数并给出判断结果,单独编写一个函数用于判断其参数是否为素数,其返回值为1表示为素数,为0表示为非素数。#include if(n%i==0) { m=0; break; } if(i>t) m=1; else continue;} return(m);} void main(){ int n;int i;printf(”请输入你要判断的数:n“);scanf(”%d“,&n);while(n<=1){ printf(”您输入了一个错误的数据,请重新输入:n“); scanf(”%d“,&n);} if(prime(n)) printf(”您输入的是一个素数n“);else printf(”您输入的不是一个素数n“); } 输入三个整数,按由小到大的顺序输出。(要求使用指针来排序输出)#include t=*a; *a=*b; *b=t;} if(*a>*c){ t=*a; *a=*c; *c=t;} if(*b>*c){ t=*b; *b=*c; *c=t;} } void main(){ int a,b,c;printf(”请您输入三个整数:“);scanf(”%d %d %d“,&a,&b,&c);sort(&a,&b,&c);printf(”它们由小到大的排列顺序是:%d %d %dn“,a,b,c);} 或者是 #include void swap(int *p1,int *p2); int a,b,c; int *p1,*p2,*p3; printf(”请您输入三个整数:“); scanf(”%d %d %d“,&a,&b,&c); p1=&a; p2=&b; p3=&c; if(a>b)swap(p1,p2); if(a>c)swap(p1,p3); if(b>c)swap(p2,p3); printf(”它们由小到大的排列顺序是:%d %d %dn“,a,b,c);} void swap(int *p1,int *p2){ int p; p=*p1; *p1=*p2; *p2=p;} 输入十个整数,放在数组list中,然后用指针法从后向前输出该数组中的整数。#include int list[10],i,*p=list; printf(”请您输入10个整数:n“); for(i=0;i<10;i++) scanf(”%d“,&list[i]); printf(”这10个整数的逆序序列是:n“); for(i=9;i>=0;i--) printf(”%-4d“,*(p+i));} 如果输入的数字个数不定的情况,下面的代码可行 #include scanf(”%d“,&list[i]);p=&list[0];sort(p,n);printf(”这%d个整数的逆序序列是:n“,n);for(i=0;i printf(”%-4d“,list[i]);printf(”n“);} void sort(char *p,int m){ int i;char t,*p1,*p2;for(i=0;i p1=p+i; p2=p+(m-1-i); t=*p1; *p1=*p2; *p2=t;} } 编写一个函数,它能对一个字符串(“I am a student”)测出长度,要求函数的形参是一个指针变量,函数返回值是字符串的长度。#include n++; p++;} //*p=' ';//n++;return(n);} 若要统计结果包含结束符,则启用*p=' ';n++;两条语句 编一个函数cstrcmp实现两个字符串的比较,具体为: int cstrcmp(char *p1, char *p2)p1,p2分别指向字符串s1,s2;若s1=s2则函数返回0;若s1>s2,则函数返回1;若s1 return 0;} if(strcmp(p1,p2)>0){ return 1;} if(strcmp(p1,p2)<0){ return-1;} } void main(){ char *a;char *b;input();printf(”这两个字符串比较的结果是:%dn“,cstrcmp(a,b));} 如果要求返回的是不相同字母的ASCII码值: #include if(*(p1+i++)==' ')return(0); return(*(p1+i)-*(p2+i));} 有5个学生,每个学生的数据包括学号、姓名、3门课的成绩,用赋初值的方法输入5个学生的数据到结构体数组中,输出每个学生3门课的平均成绩。#include { char num[6]; char name[8];int score[3];float avr;}stu[5]={{”101“,”Zhou“,93,89,87},{”102“,”Yang“,85,80,78},{”103“,”Chen“, 77,70,83},{”104“,”Qian“,70,67,60},{”105“,”Li“,72,70,69}};void main(){ int i,j,sum;for(i=0;i<5;i++) { sum=0; for(j=0;j<3;j++) sum+=stu[i].score[j]; stu[i].avr=sum/3.0;} printf(”number name score1 score2 score3 averagen“);for(i=0;i<5;i++){ printf(”%3s%10s“,stu[i].num,stu[i].name); for(j=0;j<3;j++) printf(”%7d“,stu[i].score[j]); printf(”%10.2fn“,stu[i].avr);} } 如果按平均成绩由高到低排序后,输出每个学生的成绩 #include { char num[6]; char name[8]; int score[3];float avr; }stu[5]={{”101“,”Zhou“,93,89,87},{”102“,”Yang“,85,80,78},{”103“,”Chen“, 77,70,83},{”104“,”Qian“,70,67,60},{”105“,”Li“,72,70,69}},temp;void main(){ int i,j,sum; for(i=0;i<5;i++){ sum=0; for(j=0;j<3;j++) sum+=stu[i].score[j]; stu[i].avr=sum/3.0;} for(i=0;i<4;i++) for(j=i;j<4;j++) if(stu[j].avr { temp=stu[j]; stu[j]=stu[j+1]; stu[j+1]=temp; } printf(”number name score1 score2 score3 averagen“); for(i=0;i<5;i++) { printf(”%3s%10s“,stu[i].num,stu[i].name); for(j=0;j<3;j++) printf(”%7d“,stu[i].score[j]); printf(”%10.2fn",stu[i].avr); } } C语言课程设计参考题目 一、矩阵运算 矩阵的加法、减法、转置、数乘矩阵、交换矩阵行或列、两个矩阵作乘法、求矩阵的秩、求可逆矩阵的逆矩阵、特殊矩阵(如对称矩阵、反对称矩阵、三角形矩阵)的运算。 二、级数和数列运算 求无穷级数的和(①从第一项累加到给定的项数时为止,②当一般项的值变化到满足某一条件时为止,③当累加的级数的和满足某一条件时为止。对于正项级数和交错级数,都能计算。);求无穷级数的某一项的值(①按给定项数求值;②按给定满足的条件求值)。 求数列的前n项之和(①等差数列前n项之和;②等比数列前n项之和);计算并显示数列各项的值(①截止到第n项为止;②截止到满足给定的条件为止);求等差中项和等比中项。 三、统计与计算 求N个整数的和、平均值、最大公约数、最小公倍数、方差、标准差等。求N个数中的最大值、最小值、出现次数最多的值、出现次数最少的值。 对一组整数进行分类统计(自行设定分类统计标准。例如,对于一组在0到100之间的数,可以这样分类统计:小于或等于100且大于等于90的有多少,小于90且大于等于80的有多少,小于80且大于等于70的有多少,小于70且大于等于60的有多少,小于60的有多少)。给定N个数,计算并显示这N个数的各种排列和组合。 判断某整数是否是素数,求某范围内的所有素数。将某整数分解成若干素数乘积的形式。 四、排序和查找运算 将给定的N个数排序(①升序;②降序,分别用选择法和冒泡法)。 将给定的N个单词排序(①升序;②降序,分别用选择法和冒泡法)。将给定的N个英文句子排序(①升序;②降序,分别用选择法和冒泡法)。 运用顺序查找法,在一组数中查找给定的数。运用两分查找法,在一组数中查找给定的数。在一组数中查找到给定的数之后,用另一个数将其替换或删除。在一组有序数中,插入某个数,使插入后仍是一组有序数。 将一组数以中间对称的形式交换位置,然后输出。 五、求方程近似根和积分运算 求一元二次方程的根。用牛顿法求某个一元高次方程的近似根。用二分法求某个一元高次方程的近似根。用弦截法求某个一元高次方程的近似根。 求线性方程组的解。 用矩形法求某个函数定级分。用梯形法求某个函数定级分。 六、对英文单词和句子运算 分别统计一个英文句子中大写字母、小写字母、数字、空格的个数。求某个字母在一个英文句子中出现的位置。统计一个英文句子中所包含单词的个数。统计一个英文句子中最长的单词所含字母个数。统计某个单词在一个英文句子中出现的次数。将一个单词从英文句子中删除,显示删除单词后的英文句子。将一个单词插入到英文句子的指定位置,显示插入单词后的英文句子。用一个单词替换英文句子中的另一个单词。比较两个英文句子的不同点,输出不同点的位置。 七、画图案 画各种三角形图案。画各种菱形图案。画各种平行四边形图案。画各种梯形图案。画各种正多边形图案。(以上图案包括空心的或实心的两种。要采用两种方法画一种图案:①用二维数组;②只用循环不用二维数组。不能全用二维数组画!) 用以上几种基本图案组合成一个新图案。 八、商品信息管理系统 每件商品信息包括编号、商品名、类型、生产厂家、生产日期、单价、库存量等项内容,本系统可以实现如下功能:往系统里添加新商品的各项信息;修改现有商品的各项信息;查找并显示满足某条件的商品的信息;按某个给定的条件将商品排序并显示排序结果;统计满足某条件的商品的库存量;计算某种商品的总价值(单价乘库存量),以及某几种商品的总价值。 九、优秀歌手比赛评分系统 比赛共有M个歌手参赛,共有N个评委为歌手打分。每次评分,由N个评委每人给歌手一个分数,然后去掉一个最高分,去掉一个最低分,求出其余N-2个分数的平均分,作为歌手的得分。本系统可以实现如下功能:按评委给分顺序显示某个参赛歌手的得分;显示某个参赛歌手所得的最高分和最低分;求出每个参赛歌手的得分;按参赛歌手的得分从高到低排序并显示排序结果;显示某个评委打出的M个分数;计算某个评委打分的平均值;查找满足给定得分范围的歌手。 十、工资管理系统 某单位有N个,职工工资信息包括基本工资、岗位津贴、地方津贴、奖金、扣公积金、扣税、实发工资等项内容,将N个职工的这些内容存入本系统。可以利用本系统实现如下功能:往系统里添加新的职工工资信息内容;根据给定的条件修改现有的职工工资内容;删除某个职工工资内容;根据给定的条件查找并显示某个职工工资内容;显示符合某个条件的所有职工工资内容;统计某项工资内容的总和;计算某个职工的实发工资(基本工资+岗位津贴+地方津贴+奖金-扣公积金-扣税);计算符合某个条件的所有职工的实发工资总和。 十一、学生成绩管理系统 该班共有N个学生,共开M门课,将已经结束的每门课的成绩存入本系统,将学生的学号和姓名存入本系统。可以利用本系统实现如下功能:往系统里添加新的课程成绩;根据给定的条件修改现有的课程成绩;删除某个学生的学号、姓名和各门课的成绩;根据给定的学生的学号和姓名,查找并显示该学生各门课的成绩;计算所有学生某门课的平均分;计算某个学生各门课的平均分;按每个学生得总分从高到低排序并显示排序结果。 十二、职工档案管理系统 某单位有N个职工,每个职工有编号、姓名、性别、出生日期、毕业学校、电话号码、职务等项内容,将N个职工的这些内容存入本系统。可以利用本系统实现如下功能:往系统里添加新的职工档案内容;根据给定的条件修改现有的职工档案内容;删除某个职工档案内容;根据给定的条件查找并显示某个职工档案内容;显示符合某个条件的所有职工档案内容;统计满足某个条件的职工人数;按某个给定的条件将职工排序并显示排序结果。 十三、图书信息管理系统 每本图书信息包括编号、书名、作者、出版社、出版日期、单价、册数等项内容,本系统可以实现如下功能:往系统里添加新图书的各项信息;修改现有图书的各项信息;查找并显示满足某条件的图书的信息;按某个给定的条件将图书排序;统计满足某条件的图书的册数;计算某种图书的总价值(单价乘册数),以及某几种图书的总价值。 十四、运动会分数统计系统 共有M个运动代表队,每个代表队参加N项比赛。每项比赛的第1名得10分、第2名得8分、第3名得5分,其它名次不得分。输入每项比赛的代表队排名。本系统可以实现如下功能:统计各代表队所得的总分;将各代表队按总分值从高到低排序,然后显示输出;查找某个代表队参加某项比赛的成绩并显示;查找某个代表队的总分和各项比赛的得分并显示;查找某项比赛取得某个名次得代表队名称。 6-13 #include int i=0,j=0; printf(“input string1:”); scanf(“%s”,s1); printf(“input string2:”); scanf(“%s”,s2); while(s1[i]!=' ') i++; while(s2[j]!=' ') s1[i++]=s2[j++]; s1[i]=' '; printf(“nThe new string is:%sn”,s1); return 0;} 6-14 #include char s1[100],s2[100]; printf(“input string1:”); gets(s1); printf(“ninput string2:”); gets(s2); i=0; while((s1[i]==s2[i])&&(s1[i]!=' '))i++; if(s1[i]==' ' && s2[i]==' ') resu=0; else resu=s1[i]-s2[i]; printf(“nresult:%d.n”,resu); return 0;} 6-15 #include int i; printf(“input s2:”); scanf(“%s”,s2); for(i=0;i<=strlen(s2);i++) s1[i]=s2[i]; printf(“s1:%sn”,s1); return 0;} 第7章用函数实现模块化程序设计170 7.1为什么要用函数170 7.2怎样定义函数172 7.2.1为什么要定义函数172 7.2.2定义函数的方法173 7.3调用函数174 7.3.1函数调用的形式174 7.3.2函数调用时的数据传递175 7.3.3函数调用的过程177 7.3.4函数的返回值178 7.4对被调用函数的声明和函数原型179 7.5函数的嵌套调用182 7.6函数的递归调用184 7.7数组作为函数参数192 7.7.1数组元素作函数实参193 7.7.2数组名作函数参数194 7.7.3多维数组名作函数参数197 7.8局部变量和全局变量199 7.8.1局部变量199 7.8.2全局变量200 7.9变量的存储方式和生存期204 7.9.1动态存储方式与静态存储方式204 7.9.2局部变量的存储类别205 7.9.3全局变量的存储类别208 7.9.4存储类别小结212 7.10关于变量的声明和定义214 7.11内部函数和外部函数215 7.11.1内部函数215 7.11.2外部函数215习题218 7-1-1 #include int lcd(int,int,int); int u,v,h,l; scanf(“%d,%d”,&u,&v); h=hcf(u,v); printf(“H.C.F=%dn”,h); l=lcd(u,v,h); printf(“L.C.D=%dn”,l); return 0;} int hcf(int u,int v){int t,r;if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v; v=r;} return(v);} int lcd(int u,int v,int h) { return(u*v/h); } 7-1-2 #include void lcd(int,int); int u,v; scanf(“%d,%d”,&u,&v); hcf(u,v); lcd(u,v); printf(“H.C.F=%dn”,Hcf); printf(“L.C.D=%dn”,Lcd); return 0;} void hcf(int u,int v){int t,r;if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) {u=v; v=r; } Hcf=v;} void lcd(int u,int v) { Lcd=u*v/Hcf; } 7-2 #include { greater_than_zero(a,b); printf(“x1=%fttx2=%fn”,x1,x2); } else if(disc==0) {equal_to_zero(a,b); printf(“x1=%fttx2=%fn”,x1,x2); } else {smaller_than_zero(a,b); printf(“x1=%f+%fitx2=%f-%fin”,p,q,p,q); } return 0;} void greater_than_zero(float a,float b){x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a);} void equal_to_zero(float a,float b){ x1=x2=(-b)/(2*a);} void smaller_than_zero(float a,float b){ p=-b/(2*a); q=sqrt(-disc)/(2*a);} 7-3 #include int n; printf(“input an integer:”); scanf(“%d”,&n); if(prime(n)) printf(“%d is a prime.n”,n); else printf(“%d is not a prime.n”,n); return 0;} int prime(int n) {int flag=1,i; for(i=2;i if(n%i==0) flag=0; return(flag); } 7-4 #include for(j=0;j scanf(“%d”,&array[i][j]);printf(“noriginal array :n”);for(i=0;i {for(j=0;j printf(“%5d”,array[i][j]); printf(“n”); } convert(array);printf(“convert array:n”);for(i=0;i {for(j=0;j printf(“%5d”,array[i][j]); printf(“n”); } return 0;} void convert(int array[][3]){int i,j,t;for(i=0;i for(j=i+1;j {t=array[i][j]; array[i][j]=array[j][i]; array[j][i]=t; } } #include void inverse(char str[]){char t; int i,j; for(i=0,j=strlen(str);i<(strlen(str)/2);i++,j--) {t=str[i]; str[i]=str[j-1]; str[j-1]=t; } } 7-6 #include void concatenate(char string1[],char string2[],char string[]){int i,j;for(i=0;string1[i]!=' ';i++) string[i]=string1[i];for(j=0;string2[j]!=' ';j++) string[i+j]=string2[j];string[i+j]=' ';} 7-7 #include void cpy(char s[],char c[]){ int i,j; for(i=0,j=0;s[i]!=' ';i++) if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'|| s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U') {c[j]=s[i]; j++; } c[j]=' ';} 7-8 #include void insert(char str[]){int i;for(i=strlen(str);i>0;i--) {str[2*i]=str[i]; str[2*i-1]=' '; } printf(“output:n%sn”,str);} 7-9 #include printf(“nletter:%dndigit:%dnspace:%dnothers:%dn”,letter,digit,space,others);return 0;} void count(char str[]){int i;for(i=0;str[i]!=' ';i++)if((str[i]>='a'&& str[i]<='z')||(str[i]>='A' && str[i]<='Z')) letter++;else if(str[i]>='0' && str [i]<='9') digit++;else if(str[i]==32) space++;else others++;} 7-10 #include printf(“%c”,line[i]);printf(“n”);return 0;} int alphabetic(char c){if((c>='a' && c<='z')||(c>='A'&&c<='z')) return(1);else return(0);} int longest(char string[]){int len=0,i,length=0,flag=1,place=0,point;for(i=0;i<=strlen(string);i++) if(alphabetic(string[i])) if(flag) {point=i; flag=0; } else len++; else {flag=1; if(len>=length) {length=len;place=point;len=0;} } return(place);} 7-11 #include {printf(“input string:n”); scanf(“%s”,&str); if(strlen(str)>N) printf(“string too long,input again!”); else flag=0; } sort(str);printf(“string sorted:n”);for(i=0;i printf(“%c”,str[i]);printf(“n”);return 0;} void sort(char str[]){int i,j;char t;for(j=1;j for(i=0;(i第二篇:C语言大赛题目精选(带答案)
第三篇:C语言实验题目
第四篇:C语言课程设计参考题目
第五篇:c语言答案