资源描述
C语言例题
目录
1 输入两个整数,求第一个数除以第二个数所得到的余数
2输入圆的半径,求圆的周长与面积,输出计算结果,输出时要求按题目案例说明,取小数点后2位数字,其中∏=3.14。
3 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
4 输入一个华氏温度,要求输出摄氏温度。公式为C=(5/9)*(F-32),F为华氏温度,C为摄氏温度。输出取2位小数。
5 小学数学中,我们了解到在自然数中,2,4,8......之类的数为偶数,1,3,5......为奇数。
下面的任务是让计算机来完成,判断所输入的数据是否是奇数。
6 计算购货款,根据输入的购货金额,输出实际付款金额。购货折扣率如下:
购货金额<=500元 不打折
500元<购货金额<=1000元 打9折
1000元<购货金额 打8折
7 有一函数
x (x<1)
y= 2x-1 (1≤x<10)
3x-11 (x≥10)
编程实现输入x的值,输出y的值。
8 给出三个整数,请你设计一个程序,求出这三个数的和、乘积和平均数。
9 小瑜是个爱吃糖果的馋鬼,天天嚷着要爸爸买糖果,可是爸爸很忙,哪有时间啊,于是就让小瑜自己去了,糖果3角钱一块,爸爸给小瑜n元钱,请你告诉小瑜最多能买几块糖,还剩几角钱
10 以两个输入为一组,两个浮点数之间用空格分隔。
11 输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下:
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;
12 有一函数
x (x<1)
y= 2x-1 (1≤x<10)
3x-11 (x≥10)
编程实现输入x的值,输出y的值
13 从键盘接受任一字符,
如果是小写字母转换为大写输出;
如果是大写转换为小写输出;
如果是数字原样输出;
否则显示“error”。
14 输入年和月,判断该月有几天?
15 三角形具有稳定性,现在有三个木棍.要用来搭个三角形。现在从键盘接收三个浮点数,代表三条边,问能否组成三角形,并求其面积。
16 输入三个整数a,b,c。并进行两两相加,最后比较相加和的最大值。
17
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3 现在要求输出所有在m和n范围内的水仙花数。
18
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
19 求n个数的平均值
20 求n以内的所有素数。n(2<=n<=1000)
21 多项式的描述如下:
1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...
22 找出数组a中能被3整除的数,要求用数组完成。
23 输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。
24 将给定的一维数组进行逆置,即第一个元素与最后一个元素互换,第二个元素与倒数第二个互换,其余类推。
25 输入n(n<100)个数,找出其中最小的数,将它与第一个数交换后输出这些数
26 找出一个一维数组中的最大值,最小值,并交换其位置。
27 找出一个一维数组中的第一个负数。
28 数组排序
29 我们在键盘上输入的任意一个字符,在计算机中均是由数值保存的,且是固定的。我们称其为ASCII码值。
我们知道,字母a在计算机中存放的时候是按97存放的;字母A是65。但有些字母是我们不知道的。
下面的任务是要求输入任意个字符(不考虑回车符的转换),字符用回车分隔,输出它们的ASCII码,每个数值后带一个空格。每五个一行。
如果超过五个,换另一行。
30 输入多个三位整数,分别倒置后并输出。例如:输入356,输出653
31 制作一个简单的计算机程序,可实现的加减乘除运算('+','-','*','/')
32 大家都知道,手机号是一个11位长的数字串,同时,作为学生,还可以申请加入校园网,如果加入成功,你将另外拥有一个短号。假设所有的短号都是是 6+手机号的后5位,比如号码为13512345678的手机,对应的短号就是645678。 现在,如果给你一个11位长的手机号码,你能找出对应的短号吗
33 从键盘上输入数字星期,然后输出它的英文:
其对应关系是
1 Monday
2 Tuesday
3 Wednesday
4 Thursday
5 Friday
6 Saturday
7 Sunday
34 输入n(n<100)个数,找出其中最小的数,将它与第一个数交换后输出这些数
35 找出一个一维数组中的最大值,最小值,并交换其位置。
36 找出一个一维数组中的第一个负数。
37 数组排序
1 输入两个整数,求第一个数除以第二个数所得到的余数。
Input
输入数据有多组,每组占一行,每行中有两个数,用空格分隔。
Output
对于每组输入数据,输出一行
Sample Input
5 2
6 4
7 5
8 2
Sample Output
1
2
2
0
#include<stdio.h>
int main()
{
int x,y,z;
while(scanf("%d%d",&x,&y)!=EOF)
{
z=x%y;
printf("%d\n",z);
}
return 0;
}
2 输入圆的半径,求圆的周长与面积,输出计算结果,输出时要求按题目案例说明,取小数点后2位数字,其中∏=3.14。
Input
输入数据有多组,每组占一行,每行中有1个数
Output
对于每组输入数据,输出一行,需要有必要的提示
Sample Input
2
3.5
5
4.2
Sample Output
2.00,long:12.56,area:12.56
3.50,long:21.98,area:38.47
5.00,long:31.40,area:78.50
4.20,long:26.38,area:55.39
#include<stdio.h>
int main()
{
double r,l,s;
while(scanf("%lf",&r)!=EOF)
{
l=2*3.14*r;
s=3.14*r*r;
printf("%.2lf,long:%.2lf,area:%.2lf\n",r,l,s);
}
return 0;
}
3 输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。
Input
输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。
Output
对于每组输入数据,输出一行,结果保留两位小数。
Sample Input
0 0 0 1
0 1 1 0
Sample Output
1.00
1.41
#include<math.h>
int main()
{
double x1,y1,x2,y2,a;
while(scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2)!=EOF)
{
a=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
a=sqrt(a);
printf("%.2lf\n",a);
}
return 0;
}
4 输入一个华氏温度,要求输出摄氏温度。公式为C=(5/9)*(F-32),F为华氏温度,C为摄氏温度。输出取2位小数。 Input
输入数据有多组,每组占一行,由1个实数组成
Output
对于每组输入数据,输出一行,要求输出摄氏温度,结果保留两位小数。
Sample Input
78
132
Sample Output
25.56
55.56
#include<stdio.h>
int main()
{
double F,C;
while(scanf("%lf",&F)!=EOF)
{
C=1.0*5/9*(F-32);
printf("%.2lf\n",C);
}
return 0;
}
5 小学数学中,我们了解到在自然数中,2,4,8......之类的数为偶数,1,3,5......为奇数。
下面的任务是让计算机来完成,判断所输入的数据是否是奇数。
Input
输入整数N,代表下面有N组测试数据。
接下来的N行,每行为一个整数。
Output
输出N个整数的奇偶性,如果是奇数请输出"YES!",否则输出"NO!"。
每个结果占一行。
Sample Input
3
45
75643
5786
Sample Output
YES!
YES!
NO!
#include<stdio.h>
int main()
{
int a,N;
scanf("%d",&N);
while(N--)
{
scanf("%d",&a);
if(a%2==0)
printf("NO!\n",a);
else
printf("YES!\n",a);
}
return 0;
}
6 计算购货款,根据输入的购货金额,输出实际付款金额。购货折扣率如下:
购货金额<=500元 不打折
500元<购货金额<=1000元 打9折
1000元<购货金额 打8折
Input
输入数据有多组,每组占一行,每行的一个数。
Output
对于每组输入数据,输出一个数,保留一位小数,每组输出占一行。
Sample Input
450
879
2000
Sample Output
450.0
791.1
1600.0
#include<stdio.h>
int main()
{
float a,q;
while(scanf("%f",&a)!=EOF)
{
if(a<=500)
q=a;
else if(a<=1000)
q=0.9*a;
else
q=0.8*a;
printf ("%.1f\n",q);
}
return 0;
}
7 有一函数
x (x<1)
y= 2x-1 (1≤x<10)
3x-11 (x≥10)
编程实现输入x的值,输出y的值。
Input
输入数据有多组,每组占一行,由一个整数组成。
Output
对于每组输入数据,输出一行。
Sample Input
-5
8
17
Sample Output
-5
15
40
#include<stdio.h>
int main()
{
int x,y;
while(scanf("%d",&x)!=EOF)
{
if(x<1)
y=x;
else
if(x<=10)
y=2*x-1;
else
y=3*x-11;
printf("%d\n",y);
}
return 0;
}
8 给出三个整数,请你设计一个程序,求出这三个数的和、乘积和平均数。
Input
输入数据有多组,每组占一行,每行包含3个实验数,分别表示三个正整数a、b、c,数据之间用空格隔开。
Output
输出一行,包括三个的和、乘积、平均数。
数据之间用一个空格隔开,其中平均数保留小数后面两位。
Sample Input
1 2 3
Sample Output
6 6 2.00
#include<stdio.h>
int main()
{
int a,b,c;
double s,t,e;
while(scanf("%d%d%d",&a,&b,&c)!=EOF)
{
s=a+b+c;
t=a*b*c;
e=(a+b+c)/3.0;
printf("%.0lf %.0lf %.2lf\n",s,t,e);
}
return 0;
}
9 小瑜是个爱吃糖果的馋鬼,天天嚷着要爸爸买糖果,可是爸爸很忙,哪有时间啊,于是就让小瑜自己去了,糖果3角钱一块,爸爸给小瑜n元钱,请你告诉小瑜最多能买几块糖,还剩几角钱
Input
输入数据有多组,每组表示爸爸给小瑜的钱n元,n为整数。
Output
小瑜最多能买回的糖块数以及剩下的钱(单位为:角),用空格分隔。
Sample Input
2
Sample Output
6 2
#include<stdio.h>
int main()
{
int a,b,c;
while(scanf("%d",&a)!=EOF)
{
b=a*10/3;
c=a*10%3;
printf("%d %d\n",b,c);
}
return 0;
}
10 以两个输入为一组,两个浮点数之间用空格分隔。
Input
对每一组数据输出计算后的结果,一个输出占一行,保留3位小数。如果分母为0的话,就输出“devisor is zero !”。
Output
对每一组数据输出计算后的结果,一个输出占一行,保留3位小数。如果分母为0的话,就输出“devisor is zero !”。
Sample Input
1 2
1 0
3 4
Sample Output
0.500
devisor is zero !
0.750
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,s;
while(scanf("%lf%lf",&a,&b)!=EOF)
if(b==0)
printf("devisor is zero !\n");
else
{
s=a/b;
printf("%.3lf\n",s);
}
return 0;
}
11 输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下:
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;
Input
输入数据有多组,每组占一行,由一个整数组成。
Output
对于每组输入数据,输出一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。
Sample Input
56
67
100
123
Sample Output
E
D
A
Score is error!
#include<stdio.h>
int main()
{
int a;
while(scanf("%d",&a)!=EOF)
{
if(a>=0&&a<60)
printf("E\n");
if(a>=60&&a<70)
printf("D\n");
if(a>=70&&a<80)
printf("C\n");
if(a>=80&&a<90)
printf("B\n");
if(a>=90&&a<=100)
printf("A\n");
if(a<0||a>100)
printf("Score is error!\n");
}
return 0;
}
12 有一函数
x (x<1)
y= 2x-1 (1≤x<10)
3x-11 (x≥10)
编程实现输入x的值,输出y的值。
Input
输入数据有多组,每组占一行,由一个整数组成。
Output
对于每组输入数据,输出一行。
Sample Input
-5
8
17
Sample Output
-5
15
40
#include<stdio.h>
int main()
{
int a,y;
while(scanf("%d",&a)!=EOF)
{
if(a<1)
{
y=a;
printf("%d\n",y);
}
if(a>=1&a<10)
{
y=2*a-1;
printf("%d\n",y);
}
if(a>=10)
{
y=3*a-11;
printf("%d\n",y);
}
}
return 0;
}
13 从键盘接受任一字符,
如果是小写字母转换为大写输出;
如果是大写转换为小写输出;
如果是数字原样输出;
否则显示“error”。
Input
输入一行字符,以回车结束。
Output
每一行为针对输入的每一个字符输出其相应结果。
Sample Input
H5*a
Sample Output
h
5
error
A
#include<stdio.h>
int main()
{
char a;
while(scanf("%c",&a)!=EOF)
{
if(a=='\n')break;
if('0'<=a&&a<='9')
printf("%c\n",a);
else
if(a>='A'&&a<='Z')
printf("%c\n",a+32);
else
if('a'<=a&&a<='z')
printf("%c\n",a-32);
else
printf("error\n");
}
return 0;
}
14 输入年和月,判断该月有几天?
Input
输入数据有多组,每组占一行,表示年和月,格式为年\月。
Output
输出该月的天数。
Sample Input
2009\1
Sample Output
31
#include<stdio.h>
int main()
{
int a,b,c;
while(scanf("%d\\%d",&a,&b)!=EOF)
{
if(a%400!=0&&b==2&&a%100==0)
printf("28\n");
if(a%400==0&&b==2)
printf("29\n");
if(a%4==0&&b==2&&a%100!=0)
printf("29\n");
if(a%4!=0&&b==2&&a%100!=0)
printf("28\n");
if(b!=2)
{
if(b<=7&&b%2==0)
printf("30\n");
if(b<=7&&b%2!=0)
printf("31\n");
if(b>=8&&b<=12&&b%2==0)
printf("31\n");
if(b>=8&&b<=12&&b%2!=0)
printf("30\n");
}
}
return 0;
}
15 三角形具有稳定性,现在有三个木棍.要用来搭个三角形。现在从键盘接收三个浮点数,代表三条边,问能否组成三角形,并求其面积。
Input
多组测试数据。
一行输入三个数,数之间用空格分割。
输入0,0,0时表示结束。
Output
一行分两个域,分别是形状描述和面积显示(若不能形成三角形,则不用显示形状描述)。
判断它们是否可以形成一个三角形,若可以,显示“triangle:”,再计算出其面积并紧接着显示面积值,否则显示“fail to form a triangle.”。
Sample Input
3 4 5.0
1 2 9
6 7 8
0 0 0
Sample Output
triangle:6.000000
fail to form a triangle.
triangle:20.333163
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,p,s;
while(scanf("%lf%lf%lf",&a,&b,&c)&&a!=0&&b!=0&&c!=0)
{
if((a+b)>c&&(b+c)>a&&(a+c)>b)
{
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("triangle:%f\n",s);
}
else
printf("fail to form a triangle.\n");
}
return 0;
}
16 输入三个整数a,b,c。并进行两两相加,最后比较相加和的最大值。
Input
输入多组数据,每组输入数据包含三个整数,用空格分开。
Output
输出两两相加后的最大值。每组占一行
Sample Input
1 2 3
Sample Output
5
#include<stdio.h>
int main()
{
int a,b,c,t,e,f;
while(scanf("%d%d%d",&a,&b,&c)!=EOF)
{
t=a+b;
e=a+c;
f=b+c;
if(t>e&&t>f)
printf("%d\n",t);
if(e>t&&e>f)
printf("%d\n",e);
if(f>t&&f>e)
printf("%d\n",f);
}
return 0;
}
17
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的:“水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3
现在要求输出所有在m和n范围内的水仙花数。
Input
输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。
Output
对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,每个数据后面均有空
格;
如果给定的范围内不存在水仙花数,则输出no;
每个测试实例的输出占一行。
Sample Input
100 120
300 380
Sample Output
no
370 371
#include<stdio.h>
int main()
{
int a,b,c,d,e,f,t;
while(scanf("%d%d",&a,&b)!=EOF)
{
f=0;
for(t=a;t<=b;t++)
{
c=t/100;
d=t/10-c*10;
e=t-(c*100)-(d*10);
if(t==c*c*c+d*d*d+e*e*e)
{
printf("%d ",t);
f=1;
}
}
if(f==0)
printf("no\n");
else
printf("\n");
}
return 0;
}
18
青年歌手大奖赛中,评委会给参赛选手打分。选手得分规则为去掉一个最高分和一个最低分,然后计算平均得分,请编程输出某选手的得分。
Input
输入数据有多组,每组占一行,每行的第一个整数是n(2<n<100),表示评委的人数,然后是n个评委的打分,均为整数。
Output
对于每组输入数据,输出选手的得分,结果保留2位小数,每组输出占一行。
Sample Input
3 99 98 97
4 100 99 98 97
Sample Output
98.00
98.50
#include<stdio.h>
int main()
{
int n,a[101],i,max,min,sum;
double ave;
while(scanf("%d",&n)!=EOF)
{
sum=0;
for(i=0;i<n;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
max=0;min=a[0];
for(i=0;i<n;i++)
{
if(a[i]>max)
max=a[i];
if(a[i]<min)
min=a[i];
}
ave=(sum-max-min)*1.0/(n-2);
printf("%.2lf\n",ave);
}
return 0;
}
19 求n个数的平均值。
Input
输入数据有多组,每组占一行,每行的第一个数是n,表示要求n个数的平均值,后面的n个数是具体的数值。
Output
对于每组输入数据,输出平均值,结果保留2位小数,每组输出占一行。
Sample Input
3 99 98 97
4 100 99 98 97
Sample Output
98.00
98.50
#include<stdio.h>
int main()
{
int a,b=0,i,n;
double s;
while(~scanf("%d",&a))
{
for(i=1;i<=a;i++)
{
scanf("%d",&n);
b=b+n;
}
s=1.0*b/a;
printf("%.2lf\n",s);
b=0;
}
return 0;
}
20 求n以内的所有素数。n(2<=n<=1000)
Input
输入数据有多组,每组占一行,每行的一个数,表示n。
Output
对于每组输入数据,输出2~n所有的素数,每个数后面带一个空格,每组输出占一行。
Sample Input
10
20
Sample Output
2 3 5 7
2 3 5 7 11 13 17 19
#include <stdio.h>
#include<math.h>
int main()
{
int n,i,j,s;
while(scanf("%d",&n)!=EOF)
{
for(i=2;i<=n;i++)
{
s=1;
for(j=2;j<=sqrt(i);j++)
if(i%j==0)
{
s=0;
break;
}
if(s)
printf("%d ",i);
} printf("\n");
}
return 0;
}
21 多项式的描述如下:
1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 + ...
Input
输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个整数(不妨设为n,n<1000),求该多项式的前n项的和。
Output
对于每个测试实例n,要求输出多项式前n项的和。每个测试实例的输出占一行,结果保留2位小数。
Sample Input
2
1 2
Sample Output
1.00
0.50
#include<stdio.h>
int main()
{
int m,n,i,j;
double s;
while(scanf("%d",&m)!=EOF)
{
for(i=1;i<=m;i++)
{
s=0;
scanf("%d",&n);
for(j=1;j<=n;j++)
{
if(j%2==0)
s=s-(double)1/j;
else
s=s+(double)1/j;
}
printf("%.2lf\n",s);
}
}
return 0;
}
22 找出数组a中能被3整除的数,要求用数组完成。
Input
输入整数N,代表N组数据。接下来的N行中,每行的第一个整数M代表这一行共有M个测试数据(M<100),接下来是这M个数据的数值。
Output
输出每一组数据中能被3整除的数值,及其所在数组中的位置。注意,按生活中的习惯,下标从1算起。如果该测试数据中不含有被3整除的数值,则输出“not found!”每一组数据对应一行输出。
Sample Input
3
3 9 34 12
4 1 2 4 5
2 6 5
Sample Output
a[1]=9 a[3]=12
not found!
a[1]=6
#include<stdio.h>
int main()
{
int a[100],n,i,m,j,f;
scanf("%d",&n);
while(n--)
{
j=0;f=0;
scanf("%d",&m);
i=1;
while(i<=m)
{
scanf("%d",&a[i]);
j=a[i];
if(j%3==0)
{ printf("a[%d]=%d ",i,j);
f=1;
}
i++;
}
if(f==0)
printf("not found!\n");
else
printf("\n");
}
return 0;
}
23 输入n(n<=100)个整数,按照绝对值从大到小排序后输出。题目保证对于每一个测试实例,所有的数的绝对值都不相等。
Input
输入数据有多组,每组占一行,每行的第一个数字为n,接着是n个整数,n=0表示输入数据的结束,不做处理。
Output
对于每个测试实例,输出排序后的结果,每个数后带一个空格。每个测试实例占一行。
Sample Input
3 3 -4 2
4 0 1 2 -3
0
Sample Output
-4 3 2
-3 2 1 0
Hints
绝对值用数学函数abs,例如变量a的绝对值:abs(a)
#include<stdio.h>
#include<math.h>
int main()
{
int n,a[100],i,j,temp,h;
while(scanf("%d",&n)&&n)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(i=n-1;i>0;i--)
for(j=0;j<i;j++)
{
if(abs(a[j+1])>abs(a[j]))
{
temp=a[j];
a[j]=a[j+1];
a[j+1]= temp;
}
}
for(i=0;i<n;i++)
printf("%d ",a[i]);
printf("\n");
}
return 0;
}
24 将给定的一维数组进行逆置,即第一个元素与最后一个元素互换,第二个元素与倒数第二个互换,其余类推。
Input
输入数据有多组测试实例,每个测试实例的一行,其中第一个数表示一维数组的长度n(n<100),后面的整数表示具体的元素值。
Output
对于每组输入数据,输出占一行。
Sample Input
5 1 2 3 4 5
6 6 5 4 3 2 1
Sample Output
5 4 3 2 1
1 2 3 4 5 6
#include<stdio.h>
int main()
{
int a[100],n,i,j,t;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
for(j=1,i=0;j<=n/2;i++,j++)
{
t=a[i];
a[i]=a[n-1-i];
a[n-1-i]=t;
}
for(i=0;i<n;i++)
{
if(i!=n-1)
printf("%d ",a[i]);
else
printf("%d \n",a[i]);
}
}
return 0;
}
25 输入n(n<100)个数,找出其中最小的数,将它与第一个数交换后输出这些数
Input
输入数据有多组,每组占一行,每行的开始是一个整数n,表示这个测试实例的数值的个数,跟着就是n个整数。n=0表示输入的结束,不做处理。
Output
对于每组输入数据,输出交换后的数列,每组输出占一行。
Sample Input
4 2 1 3 4
5 5 4 3 2 1
展开阅读全文