资源描述
(word完整版)宁波大学OJ系统C语言题目答案与解析精讲
1000 整数输入输出练习
Description
从键盘输入任意两个整数,再向屏幕输出这两个数据。
Input
输入两个整数。
Output
输出这两个整数。以空格间隔.
Sample Input
7 —9
Sample Output
7 —9
HINT
本题的样例代码如下:
#include<stdio.h〉
int main()
{
int a,b;
scanf(”%d%d",&a,&b);
printf("%d %d\n”,a,b);
return 0;
}
1001 字符输入输出练习1
Description
从键盘任意输入一个字符,再输出这个字符。
Input
任意输入一个字符。
Output
输出该字符。
Sample Input
#
Sample Output
#
#include〈stdio。h>
int main()
{
char a;
scanf("%c",&a);
printf(”%c\n”,a);
return 0;
}
1002 单组A+B
Description
从键盘输入任意两个整数a和b,计算并输出a+b的值。
Input
从键盘输入两个整数a和b。
Output
输出这两个数的和
Sample Input
1 2
Sample Output
3
#include<stdio.h〉
int main()
{
int a,b,c;
scanf("%d%d",&a,&b);
c=a+b;
printf("%d\n”,c);
return 0;
}
1003 多组A+B(1)
Description
分别计算多组a+b的值。
Input
输入包含多组测试数据。每行包含一组整数a,b.当输入为0 0 时,测试结束,此时的结果不输出.
Output
对于每一对整数a,b,输出它们的和,并且每行输出一个结果.
Sample Input
1 5
10 20
0 0
#include<stdio。h>
int main()
{
int a,b,y;
scanf(”%d%d”,&a,&b);
while(a!=0||b!=0)
{
y=a+b;
printf(”%d\n",y);
scanf(”%d%d",&a,&b);
}
return 0;
}
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〈stdio.h>
int main()
{
int a,b,y,i=1,N;
scanf("%d",&N);
while(i〈=N)
{
scanf("%d%d”,&a,&b);
y=a+b;
printf("%d\n”,y);
i++;
}
return 0;
}
1005 计算平均分(1)
Description
输入一个学生的3门课成绩a,b,c,求出该学生的平均分.
Input
输入三个成绩a,b,c.
Output
输出平均值,要求保留1位小数。
Sample Input
60 70 80
Sample Output
70.0
#include<stdio.h>
int main()
{
double a,b,c,d;
scanf(”%lf%lf%lf”,&a,&b,&c);
d=(a+b+c)/3。0;
printf(”%.1f\n",d);
return 0;
}
06 计算月收入
Description
某小型外贸公司员工月收入的计算方法为:月基本工资加当月提成.从键盘输入某员工某月的基本工资和该月的提成,计算并输出该员工的月收入。
Input
输入两个数分别代表月基本工资和月提成。
Output
计算并输出月收入(保留2位小数).
Sample Input
3100 1200
Sample Output
4300.00
#include〈stdio.h>
int main()
{
double a,b,c;
scanf(”%lf%lf",&a,&b);
c=a+b;
printf("%。2f\n",c);
return 0;
}
1007 温度转换
Description
2011夏季,热浪席卷了全球的大部分地方。网上报道美国局部地区的温度达到了100华氏度,而我们国内的温度多在38摄氏度左右。那么38摄氏度和100华氏度到底哪个更热一些呢?请你帮忙编一个程序来解决这一问题。从键盘输入一个华氏温度,求出其对应的摄氏温度。计算公式如下:
c=5*(f-32)/9
c表示摄氏温度,f表示华氏温度。
Input
输入一个华氏温度值。
Output
输出对应的摄氏温度值,结果要求保留2位小数.
Sample Input
100
Sample Output
37。78
#include<stdio。h>
int main()
{
double c,f;
scanf("%lf”,&f);
c=5*(f—32)/9;
printf("%.2f\n”,c);
return 0;
}
1008 求圆周长和圆面积
Description
从键盘输入一个圆的半径r,计算并输出圆周长和圆面积。
Input
输入一个圆半径r。
Output
按序输出圆周长和圆面积,结果保留两位小数。
Sample Input
41
Sample Output
257.48 5278.34
HINT
圆周率使用3.14
#include<stdio。h〉
#define PI 3。14
int main()
{
double r,c,s;
scanf(”%lf",&r);
c=2*PI*r;
s=PI*r*r;
printf("%.2f %。2f\n",c,s);
return 0;
}
1009 求圆柱体表面积
Description
输入圆柱体的底面半径r和高h,计算圆柱体的表面积并输出到屏幕上,保留2位小数。
Input
输入圆柱体的底面半径r和高h。
Output
计算圆柱体的表面积并输出到屏幕上,保留2位小数.
Sample Input
42.1 71.6
Sample Output
30060。92
HINT
圆周率使用3。14
#include<stdio。h〉
#define PI 3.14
int main()
{
double r,h,s;
scanf("%lf%lf”,&r,&h);
s=2*PI*r*r+2*PI*r*h;
printf("%。2f\n",s);
return 0;
}
1010 计算球体的体积
Description
编写程序计算球体的体积。参考公式v=(4/3)*PI*r*r*r,其中PI表示圆周率。球体的半径r的值由键盘输入,保留2位小数。
Input
输入球体半径r。
Output
计算球体体积并输出到屏幕上,保留2位小数.
Sample Input
96。2
Sample Output
3727293.58
HINT
圆周率使用3.14
#include<stdio.h〉
#define PI 3。14
int main()
{
double r,v;
scanf(”%lf",&r);
v=(4/3。0)*PI*r*r*r;
printf(”%。2f\n”,v);
return 0;
}
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
Sample Output
6.00
#include〈stdio.h〉
#include<math.h>
int main()
{
double a,b,c,p,s;
scanf(”%lf%lf%lf”,&a,&b,&c);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p—b)*(p-c));
printf(”%.2f\n”,s);
return 0;
}
1012 判断三角形
Description
输入三角形的3条边a,b,c,如果能构成一个三角形,则输出面积,否则输出Error。
Input
输入三个数a,b,c(浮点类型).
Output
如果这三条边能构成一个三角形就计算并输出这个三角形的面积,保留2位小数。如果不能构成三角形就输出Error。
Sample Input
3 1 4
Sample Output
Error
#include<stdio.h〉
#include〈math.h〉
int main()
{
double a,b,c,p,s;
scanf("%lf%lf%lf”,&a,&b,&c);
if(a+b〉c&&fabs(a-b)<c)
{
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("%。2f\n”,s);
}
else
printf("Error\n");
return 0;
}
1013 两点的距离
Description
从键盘输入数据表示平面上任意两点。计算并输出这两点之间的距离。保留2位小数。
Input
依次输入x1,y1和x2,y2分别表示平面上的两点.
Output
输出这两点间的距离.保留2位小数.
Sample Input
3。1 4.2 5.0 6.0
Sample Output
2。62
#include〈stdio.h>
#include〈math。h〉
int main()
{
double x1,x2,y1,y2,l;
scanf(”%lf%lf%lf%lf”,&x1,&y1,&x2,&y2);
l=sqrt((x2—x1)*(x2-x1)+(y2—y1)*(y2—y1));
printf("%.2f\n”,l);
return 0;
}
1014 数值类型转换
Description
输入一个双精度数,输出它的整型值。
Input
输入一个双精度数
Output
输出该数的浮点数形式(保留2位小数)和它对应的整型形式。两数之间以空格间隔。
Sample Input
1。22
Sample Output
1。22 1
#include〈stdio.h>
#include<math。h〉
int main()
{
double a;
int b;
scanf("%lf",&a);
b=a;
printf(”%.2f %d\n”,a,b);
return 0;
}
1015 两数交换
Description
从键盘输入两个整数x,y,然后交换它们的顺序并输出。
Input
输入两个整数x,y(以空格间隔).
Output
首先输出x,y的初始值,然后换行输出交换后的两数。同一行内的数据以空格间隔。
Sample Input
12 23
Sample Output
12 23
23 12
#include<stdio。h〉
#include〈math。h>
int main()
{
int a,b,t;
scanf("%d%d”,&a,&b);
printf("%d %d\n",a,b);
t=a;
a=b;
b=t;
printf(”%d %d\n",a,b);
return 0;
}
1016 两数相除
Description
输入两个浮点数x,y,计算x除以y的值。
Input
输入两个浮点数x,y.
Output
输出运算结果的值,要求保留两位小数。
Sample Input
2 3
Sample Output
0。67
#include<stdio。h〉
#include〈math。h>
int main()
{
double x,y,t;
scanf(”%lf%lf”,&x,&y);
t=x/y;
printf(”%.2f\n”,t);
return 0;
}
1017 商和余数
Description
输入两个整数x,y,计算x除以y的商和余数。
Input
输入两个整数x,y。
Output
输出商和余数。以空格间隔.
Sample Input
65 14
Sample Output
4 9
#include<stdio。h>
#include<math.h〉
int main()
{
int x,y,a,b;
scanf("%d%d”,&x,&y);
a=x/y;
b=x%y;
printf(”%d %d\n",a,b);
return 0;
}
1018 植树问题
Description
某学校植树节开展植树活动,已知树苗有m株,参加植树的同学有n人(且m〉n),请问每位同学平均可以植树几株?还有几株剩余?
Input
输入两个整数m和n,分别表示树苗的数量和学生的人数(m〉n)。
Output
输出每位同学平均植树的数量及剩余的树苗数量。
Sample Input
163 32
Sample Output
5 3
#include<stdio.h〉
#include〈math。h>
int main()
{
int m,n,a,b;
scanf("%d%d”,&m,&n);
a=m/n;
b=m%n;
printf("%d %d\n",a,b);
return 0;
}
1019 美元和人民币
Description
美元越来越贬值了,手上留有太多的美元似乎不是件好事。赶紧算算你的那些美元还值多少人民币吧.假设美元与人民币的汇率是1美元兑换6.5573元人民币,编写程序输入美元的金额,输出能兑换的人民币金额。
Input
输入美元的金额。
Output
输出能兑换的人民币的数值。输出保留2位小数。
Sample Input
100
Sample Output
655。73
#include<stdio.h〉
#include〈math.h〉
int main()
{
double x,y;
scanf(”%lf”,&x);
y=x*6.5573;
printf(”%。2f\n",y);
return 0;
}
1020 计算字符的ASCII码
Description
编写程序,从键盘输入一个字符,输出它的ASCII码值。
Input
输入一个字符.
Output
输出字符对应的十进制ASCII码值。
Sample Input
A
Sample Output
65
#include<stdio。h〉
#include〈math。h〉
int main()
{
char x;
scanf(”%c",&x);
printf(”%d\n",x);
return 0;
}
1021 单个字母的小写变大写
Description
从键盘输入一个小写字母,将其转换成大写字母并输出。。
Input
输入一个小写字母.(假设输入的一定是小写字母)
Output
输出其大写形式.
Sample Input
a
Sample Output
A
#include〈stdio.h>
#include〈math。h>
int main()
{
char x,y;
scanf(”%c”,&x);
y=x-32;
printf("%c\n”,y);
return 0;
}
1022 简单译码
Description
从键盘输入两个字母,对它们进行译码.如需要将"Hi”译成密码,规则是:用原字母后的第3个字母来代替,如H后面第3个字母是K,i后面第3个字母是l,因此“Hi”应译为“Kl”。
Input
从键盘输入两个字母,分别存放到变量ch1,ch2中.
Output
按上述规则进行译码后输出,输出字母间不加间隔。
Sample Input
Hi
Sample Output
Kl
#include<stdio。h〉
int main()
{
char a,b;
scanf(”%c%c",&a,&b);
a=a+3;
b=b+3;
printf("%c%c\n",a,b);
return 0;
}
1023 字符加减运算
Description
编写一个程序,求两个字符之间的加减运算。
Input
连续输入三个字符,其中第一个输入运算符号(+或者—),后两个输入字符。如+ab表示计算字符a与字符b相加的结果。
Output
输出两字符ASCII码值相加减的结果。
Sample Input
—ab
Sample Output
—1
#include〈stdio.h〉
int main()
{
int a,b,c;
c=getchar();
a=getchar();
b=getchar();
if(c==’-’)
{
printf("%d\n”,a-b);
}
else if(c=='+’)
{
printf(”%d\n",a+b);
}
return 0;
}
1024 求多项式值(1)
Description
求y=2*x^2+x+8的值。其中,x为浮点数,从键盘输入,经过计算后,将y的值输出到屏幕上,保留1位小数。
Input
输入浮点数x的值.
Output
计算并输出y的值,保留1位小数。
Sample Input
1
Sample Output
11。0
#include<stdio.h〉
#include<math.h>
int main()
{
double x,y;
scanf("%lf”,&x);
y=2*pow(x,2)+x+8;
printf("%.1f\n”,y);
return 0;
}
1025 求多项式值(2)
Description
编程根据输入的x的值,结合数学函数计算多项式y=3*x^4-2*x^3—x^2+10的结果,结果保留1位小数。
Input
输入浮点数x的值。
Output
计算并输出多项式的结果,保留1位小数。
Sample Input
1
Sample Output
10。0
HINT
建议用double
#include<stdio。h〉
#include<math.h〉
int main()
{
double x,y;
scanf(”%lf",&x);
y=3*pow(x,4)—2*pow(x,3)-pow(x,2)+10;
printf("%。1f\n”,y);
return 0;
}
1026 居民电费
Description
某地居民用电是这样计算的,正常使用部分每度0。538元,阶梯部分每度0。03元。某用户家9月份正常部分用电量为x度,阶梯部分y度,请编程计算该用户9月份应该缴纳的电费。从键盘输入x和y,输出应缴纳电费,保留2位小数。
Input
输入x和y的值。
Output
输出应缴纳的电费,保留2位小数。
Sample Input
10 10
Sample Output
5.68
#include〈stdio。h〉
#include<math。h>
int main()
{
double x,y,m;
scanf(”%lf%lf”,&x,&y);
m=x*0.538+y*0.03;
printf(”%。2f\n",m);
return 0;
}
1027 存款利息(1)
Description
输入存款金额money、存期year和年利率rate,根据公式计算存款到期时的利息interest(税前)。公式如下: interest=money(1+rate)^year—money
Input
输入存款金额money、存期year和年利率rate。
Output
输出到期时的利息,保留2位小数。
Sample Input
1000 3 0.0415
Sample Output
129。74
HINT
建议用double
#include 〈stdio.h>
#include 〈math。h〉
int main()
{
double money,year,rate,interest;
scanf(”%lf%lf%lf”,&money,&year,&rate);
interest=money*pow(1+rate,year)—money;
printf("%。2f\n”,interest);
return 0;
}
1028存款利息(2)
Description
输入人民币存款年利率I和存款总额S,计算满一年后本息合计并输出。
Input
输入年利率和存款总数。
Output
计算满一年后本息合计,保留两位小数。
Sample Input
0.03 100000
Sample Output
103000.00
#include〈stdio。h〉
#include〈math.h〉
int main()
{
double I,S;
scanf(”%lf%lf",&I,&S);
S=S*(1+I);
printf(”%.2f\n”,S);
return 0;
}
1029 三位数的数位分离
Description
从键盘输入一个任意的3位整数,分别求出其个位、十位和百位上的数字。
Input
输入任意的一个三位整数
Output
依次输出个位、十位、百位上的数字。以空格间隔。
Sample Input
367
Sample Output
7 6 3
#include<stdio.h>
#include〈math.h〉
int main()
{
int a,b,c,d;
scanf("%d”,&a);
b=a%10;
c=(a/10)%10;
d=a/100;
printf("%d %d %d\n”,b,c,d);
return 0;
}
1030 棋盘上的麦粒
Description
舍罕是古印度的国王,据说他十分好玩。宰相依达尔为了讨好国王,发明了现今的国际象棋献给国王.国王非常喜欢,决定嘉奖宰相,许诺满足宰相提出的任何要求。宰相指着棋盘要求:“陛下,请您按棋盘的格子赏赐我一点小麦吧,第一个小格赏我1粒麦子,第二个小格赏我2粒,第三个小格赏4粒,以后每一小格都比前一个小格赏的麦子增加一倍,只要把棋盘上全部64个小格按这样的方法得到的麦子都赏赐给我,我就心满意足了"。国王听了宰相这个“小小"的要求,马上同意了。
结果在给宰相麦子时,国王发现他要付出的比自己想象的要多得多,于是进行了计算,结果令他大惊失色。问题是:舍罕王的计算结果是多少粒麦子。
Input
输入一个整数n代表棋盘的格子,该数字大于1且小于等于64。如输入2,则表示有2个格子,第一个格子放1粒,第二个格子放2粒,则2个格子一共需要3粒麦子.
Output
输出n个格子需要的麦粒数。
Sample Input
64
Sample Output
18446744073709551615
HINT
如果麦粒数sum如下定义:
unsigned __int64 sum;
则计算完成后其输出形式为:
printf(”%I64u\n”, sum);
#include〈stdio。h>
#include<math.h〉
int main()
{
int i,m,a;
unsigned __int64 s=0;
scanf("%d”,&m);
for(i=0;i<m;i++)
{
a=pow(2,i);
s+=a;
}
printf("%I64u\n”,s);
return 0;
}
1031 数据逆序显示
Description
输入一个任意长度的正整数,将该数逆序输出。如,输入正数237,则逆序显示的结果为732。如输入230,则逆序显示的结果为32。
Input
输入一个正整数
Output
该数的逆序显示结果(数字最前面的0不显示,如340反转后。要求输出为43,而不是043)
Sample Input
123
Sample Output
321
#include<stdio.h>
#include〈math.h〉
int main()
{
int a,b;
scanf(”%d”,&a);
if(a%10==0)
a=a/10;
while(a>0)
{
b=a%10;
printf("%d”,b);
a=a/10;
}
printf(”\n”);
return 0;
}
1032 各位数字求和
Description
编写一个程序,输入一个正整数,然后计算组成该数的各位数字的和。如,输入正数237,其各位的数字分别为2,3,7,加起来的和应该为2+3+7=12.
Input
输入一个正整数。
Output
输出各位数字的和
Sample Input
1234
Sample Output
10
#include〈stdio.h>
#include〈math。h>
int main()
{
int a,b,c=0;
scanf(”%d”,&a);
if(a%10==0)
a=a/10;
while(a〉0)
{
b=a%10;
c+=b;
a=a/10;
}
printf(”%d\n",c);
return 0;
}
1033 计算最高位数字
Description
输入一个任意长度的正整数,求出其最高位数字。如,输入237,则最高位数字为2。
Input
输入一个正整数。
Output
输出最高位数字
Sample Input
4756
Sample Output
4
#include<stdio。h〉
#include<math。h〉
int main()
{
int a;
scanf("%d”,&a);
if(a%10==0)
a=a/10;
while(!(a〉=0&&a<=9))
{
a=a/10;
}
printf(”%d\n",a);
return 0;
}
1034 任意长度整数的位数
Description
输入一个任意长度的正整数,求出它是几位数。
Input
输入一个任意长度的正整数.
Output
输出位数
Sample Input
0
Sample Output
1
#include<stdio.h>
#include〈math.h>
int main()
{
int a,i=1;
scanf(”%d",&a);
while(!(a〉=0&&a<=9))
{
a=a/10;
i+=1;
}
printf(”%d\n”,i);
return 0;
}
1035 求整数的绝对值
Description
输入一个整数,输出它的绝对值
Input
输入一个整数n
Output
输出该数的绝对值
Sample Input
-2
Sample Output
2
#include〈stdio。h>
#include<math。h〉
int main()
{
int n,a;
scanf(”%d",&n);
a=fabs(n);
printf("%d\n”,a);
return 0;
}
1036 符号属性判断
Description
从键盘输入任意数x,根据其符号属性,输出对应的y值。
y=—1 (x〈0)
y=0 (x=0)
y=1 (x〉0)
Input
输入x.
Output
输出y的值
Sample Input
10
Sample Output
1
HINT
x取浮点类型
#include<stdio.h>
#include<math。h>
int main()
{
double x;
int y;
scanf("%lf”,&x);
if(x〈0)
y=-1;
else if(x==0)
y=0;
else
y=1;
printf(”%d\n",y);
return 0;
}
1037 正数负数
Description
输入一个整数,判断该数是正数还是负数。
Input
输入整数n.
Output
如果该数是正数就输出“positive",负数就输出“negative”(输出不含双引号)。
Sample Input
8
Sample Output
positive
#include<stdio.h〉
#include<math.h〉
int main()
{
int n;
scanf(”%d",&n);
if(n>0)
printf(”positive\n”);
else if(n<0)
printf(”negative\n”);
return 0;
}
1038 奇数偶数
Description
输入一个整数,判断该数是奇数还是偶数。
Input
输入整数n。
Output
如果该数是奇数就输出“odd”,偶数就输出“even”(输出不含双引号)。
Sample Input
8
Sample Output
even
#include<stdio.h>
#include〈math。h>
int main()
{
int n;
scanf(”%d",&n);
if(n%2==0)
printf(”even\n");
else if(n%2==1)
printf("odd\n");
return 0;
}
1039 奇数和与偶数和(1)
Description
输入正整数n,计算1~n中的奇数和以及偶数和并输出。
Input
输入一个正整数n。
Output
依次输出奇数和以及偶数和,各占一行。
Sample Input
100
Sample Output
2500
2550
#include<stdio。h〉
#include〈math。h〉
int main()
{
int n,a=0,b=0,i=1;
scanf("%d”,&n);
while(i〈=n)
{
if(i%2==1)
a+=i;
else
b+=i;
i++;
}
printf("%d\n%d\n",a,b);
return 0;
}
1040 奇数和与偶数和(2)
Description
输入正整数n,然后依次输入n个正整数,计算其中的奇数和与偶数和并输出.
Input
先输入一个正整数n,然后依次输入n个正整数.
Output
依次输出其中的奇数和以及偶数和,各占一行。
Sample Input
5 1 8 9 6 4
Sample Output
10
18
#include<stdio。h〉
#include〈math。h>
int main()
{
int n,m,a=0,b=0,i=1;
scanf(”%d”,&n);
while(i<=n)
{
scanf(”%d
展开阅读全文