- 1-1 输入2个正整数lower和upper(lower≤upper≤100),请输出一张取值范围为[lower,upper]、且每次增加2华氏度的华氏-摄氏温度转换表。
温度转换的计算公式:C=5×(F−32)/9,其中:C表示摄氏温度,F表示华氏温度。
输入格式:
在一行中输入2个整数,分别表示lower和upper的值,中间用空格分开。
输出格式:
第一行输出:“fahr celsius”
接着每行输出一个华氏温度fahr(整型)与一个摄氏温度celsius(占据6个字符宽度,靠右对齐,保留1位小数)。
若输入的范围不合法,则输出"Invalid."。
输入样例1:
32 35
输出样例1:
fahr celsius
32 0.0
34 1.1
输入样例2:
40 30
输出样例2:
Invalid.
#include <stdio.h>
int main()
{
int lower,upper,fahr;
double celsius;
scanf("%d %d",&lower,&upper);//输入最小值和最大值
if(lower>0&&lower<=upper&&upper<=100)//取值范围
{
printf("fahr celsius\n");
for(fahr=lower;fahr<=upper;fahr+=2)
{
celsius = 5*(fahr-32)*1.0/9;
printf("%d%6.1lf\n",fahr,celsius);
}
}
else
{
printf("Invalid.");
}
return 0;
}
- 1-2 本题要求编写程序,计算序列 1 + 1/2 + 1/3 + … 的前N项之和。
输入格式:
输入在一行中给出一个正整数N。
输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后6位。题目保证计算结果不超过双精度范围。
输入样例:
6
输出样例:
sum = 2.450000
#include <stdio.h>
int main()
{
int N,i;
double S = 0;
scanf("%d",&N);
for(i=1;i<=N;++i)
{
S = S+1.0/i;
}
printf("sum = %.6lf",S);
return 0;
}
- 1-3 输入一个非负整数n,生成一张3的乘方表,输出30~3n的值。可调用幂函数计算3的乘方。
输入格式:
输入在一行中给出一个非负整数n。
输出格式:
按照幂的递增顺序输出n+1行,每行格式为“pow(3,i) = 3的i次幂的值”。题目保证输出数据不超过长整型整数的范围。
输入样例:
3
输出样例:
pow(3,0) = 1
pow(3,1) = 3
pow(3,2) = 9
pow(3,3) = 27
#include <stdio.h>
#include <math.h>
int main()
{
int n,i,result;
scanf("%d",&n);
for(i=0;i<=n;++i)
{
result = pow(3,i);
printf("pow(3,%d) = %d\n",i,result);
}
return 0;
}
- 1-4 本题要求编写程序,计算序列 1!+2!+3!+⋯ 的前N项之和。
输入格式:
输入在一行中给出一个不超过12的正整数N。
输出格式:
在一行中输出整数结果。
输入样例:
5
输出样例:
153
#include <stdio.h>
int main()
{
int N,i,j;
int sum = 0;//给sum赋初始值'0'
int pro = 1;//给pro赋初始值'1'
scanf("%d",&N);
for(i=1;i<=N;++i)
{
for(j=i;j>=1;--j)
{
pro = pro*j;
}
sum = sum + pro;
pro = 1;
}
printf("%d",sum);
return 0;
}
-
1-5 本题要求编写程序读入N个学生的百分制成绩,统计五分制成绩的分布。百分制成绩到五分制成绩的转换规则:
大于等于90分为A;
小于90且大于等于80为B;
小于80且大于等于70为C;
小于70且大于等于60为D;
小于60为E。
输入格式:
输入在第一行中给出一个正整数N(≤1000),即学生人数;第二行中给出N个学生的百分制成绩,其间以空格分隔。
输出格式:
在一行中输出A、B、C、D、E对应的五分制成绩的人数分布,数字间以空格分隔,行末不得有多余空格。
输入样例:
7
77 54 92 73 60 65 69
输出样例:
1 0 2 3 1
#include<stdio.h>
int main()
{
int N, score,i;
int A,B,C,D,E;
A = B = C = D = E = 0;
scanf("%d", &N);
for(i=1; i<=N; i++)
{
scanf("%d", &score);
if(score>=90)
A++;
else if(score>=80)
B++;
else if(score>=70)
C++;
else if(score>=60)
D++;
else
E++;
}
printf("%d %d %d %d %d",A,B,C,D,E);
return 0;
}
- 1-6 本题要求编写程序,找出给定一系列整数中的最小值。
输入格式:
输入在一行中首先给出一个正整数n,之后是n个整数,其间以空格分隔。
输出格式:
在一行中按照“min = 最小值”的格式输出n个整数中的最小值。
输入样例:
4 -2 -123 100 0
输出样例:
min = -123
#include<stdio.h>
int main()
{
int n,i,x,min;
scanf("%d",&n);
scanf("%d",&x);
min=x;
for(i=1; i<n; i++)
{
scanf("%d",&x);
if(min>x)
min=x;
}
printf("min = %d",min);
return 0;
}
- 1-7 本题要求统计给定整数M和N区间内素数的个数并对它们求和。
输入格式:
输入在一行中给出两个正整数M和N(1≤M≤N≤500)。
输出格式:
在一行中顺序输出M和N区间内素数的个数以及它们的和,数字间以空格分隔。
输入样例:
10 31
输出样例:
7 143
#include<stdio.h>
int main()
{
int M,N,i,j;
int count=0,sum=0;
scanf("%d %d",&M,&N);
if(M==1)
M++;
for(i=M;i<=N;i++)
{
j=2;
while(i%j!=0)
{
j++;
}
if(j==i)
{
count++;
sum+=i;
}
}
printf("%d %d",count,sum);
return 0;
}
-1-8 一只猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半加一个。到第N天早上想再吃时,见只剩下一个桃子了。问:第一天共摘了多少个桃子?
输入格式:
输入在一行中给出正整数N(1<N≤10)。
输出格式:
在一行中输出第一天共摘了多少个桃子。
输入样例:
3
输出样例:
10
#include<stdio.h>
int main()
{
int N,i,count=1;
scanf("%d",&N);
for(i=1;i<N;++i)
{
count = (count+1)*2;
}
printf("%d",count);
return 0;
}
- 1-9 给定两个整数A和B,输出从A到B的所有整数以及这些数的和。
输入格式:
输入在一行中给出2个整数A和B,其中−100≤A≤B≤100,其间以空格分隔。
输出格式:
首先顺序输出从A到B的所有整数,每5个数字占一行,每个数字占5个字符宽度,向右对齐。最后在一行中按Sum = X的格式输出全部数字的和X。
输入样例:
-3 8
输出样例:
-3 -2 -1 0 1
2 3 4 5 6
7 8
Sum = 30
#include<stdio.h>
int main()
{
int A,B,i,sum,count;
sum=count=0;
scanf("%d %d",&A,&B);
if(A>=-100 && A<=B && B<=100)
{
for(i=A; i<=B; ++i)
{
printf("%5d",i);
sum += i;
++count;
if(count%5==0)
{
printf("\n");
}
}
if(count%5!=0)
{
printf("\n");
}
printf("Sum = %d",sum);
}
return 0;
}
- 1-10 专家通过多组情侣研究数据发现,最佳的情侣身高差遵循着一个公式:(女方的身高)×1.09 =(男方的身高)。如果符合,你俩的身高差不管是牵手、拥抱、接吻,都是最和谐的差度。
下面就请你写个程序,为任意一位用户计算他/她的情侣的最佳身高。
输入格式:
输入第一行给出正整数N(≤10),为前来查询的用户数。随后N行,每行按照“性别 身高”的格式给出前来查询的用户的性别和身高,其中“性别”为“F”表示女性、“M”表示男性;“身高”为区间 [1.0, 3.0] 之间的实数。
输出格式:
对每一个查询,在一行中为该用户计算出其情侣的最佳身高,保留小数点后2位。
输入样例:
2
M 1.75
F 1.8
输出样例:
1.61
1.96
#include<stdio.h>
int main()
{
int N,i;
char sex;
double high;
scanf("%d",&N);
for(i=0;i<N;++i)
{
getchar();
scanf("%c %lf",&sex,&high);
if(sex=='M')
{
printf("%.2lf\n",high/1.09);
}
else if(sex=='F')
{
printf("%.2lf\n",high*1.09);
}
}
return 0;
}
- 1-11 对于给定的正整数N,求它的位数及其各位数字之和。
输入格式:
输入在一行中给出一个不超过109的正整数N。
输出格式:
在一行中输出N的位数及其各位数字之和,中间用一个空格隔开。
输入样例:
321
输出样例:
3 6
#include<stdio.h>
int main()
{
int N,count,sum;
count=sum=0;
scanf("%d",&N);
while(N!=0)
{
count = count+1;
sum = sum + N%10;
N = N/10;
}
printf("%d %d",count,sum);
return 0;
}
-
1-12 在中国数学史上,广泛流传着一个“韩信点兵”的故事:韩信是汉高祖刘邦手下的大将,他英勇善战,智谋超群,为汉朝建立了卓越的功劳。据说韩信的数学水平也非常高超,他在点兵的时候,为了知道有多少兵,同时又能保住军事机密,便让士兵排队报数:
按从1至5报数,记下最末一个士兵报的数为1;
再按从1至6报数,记下最末一个士兵报的数为5;
再按从1至7报数,记下最末一个士兵报的数为4;
最后按从1至11报数,最末一个士兵报的数为10;请编写程序计算韩信至少有多少兵。
输入格式:
本题无输入
输出格式:
输出韩信至少拥有的士兵人数。
#include<stdio.h>
int main()
{
int i;
for(i=1;;++i)
{
if(i%5!=1)
{
continue;
}
if(i%6!=5)
{
continue;
}
if(i%7!=4)
{
continue;
}
if(i%11!=10)
{
continue;
}
break;
}
printf("%d",i);
return 0;
}
- 1-13 一条蠕虫长1寸,在一口深为N寸的井的底部。已知蠕虫每1分钟可以向上爬U寸,但必须休息1分钟才能接着往上爬。在休息的过程中,蠕虫又下滑了D寸。就这样,上爬和下滑重复进行。请问,蠕虫需要多长时间才能爬出井?
这里要求不足1分钟按1分钟计,并且假定只要在某次上爬过程中蠕虫的头部到达了井的顶部,那么蠕虫就完成任务了。初始时,蠕虫是趴在井底的(即高度为0)。
输入格式:
输入在一行中顺序给出3个正整数N、U、D,其中D<U,N不超过100。
输出格式:
在一行中输出蠕虫爬出井的时间,以分钟为单位。
输入样例:
12 3 1
输出样例:
11
#include<stdio.h>
int main()
{
int N,U,D,time,length;
time=length=0;
scanf("%d %d %d",&N,&U,&D);
while(length<N)
{
time++;
length = length+U;
if(length>=N)
{
break;
}
length = length-D;
time++;
}
printf("%d",time);
return 0;
}
- 1-14 1元5角钱人民币兑换5分、2分和1分的硬币(每一种都要有)共100枚,会有很多种兑换方案。请编写程序给出各种兑换方案。
输入格式:
输入为一个正整数n,表示要求输出前n种可能的方案。方案的顺序,是按照5分硬币从少到多排列的。
输出格式:
显示前n种方案中5分、2分、1分硬币各多少枚。每行显示一种方案,数字之间空一格,最后一个数字后没有空格。
注意:如果全部方案不到n种,就顺序输出全部可能的方案。
输入样例:
5
输出样例:
1 46 53
2 42 56
3 38 59
4 34 62
5 30 65
#include<stdio.h>
int main()
{
int n,a,b,c,count=0;
scanf("%d",&n);
for(a=1;a<30;++a)
{
b = 50-4*a; //2分的个数
c = 150-a*5-2*b; //1分的个数
if(a+b+c==100&&b>0&&c>0)
{
count++;
printf("%d %d %d\n",a,b,c);
if(count>=n)
{
break;
}
}
}
return 0;
}
- 1-15 给定一个整数m(50<m<20000),找出小于m的最大的10个素数。
输入格式:
输入在一行中给出一个正整数m(50<m<20000)。
输出格式:
在一行中按递减顺序输出10个满足条件的素数,每个素数输出占6列。没有其它任何附加格式和字符。
输入样例:
229
输出样例:
227 223 211 199 197 193 191 181 179 173
#include<stdio.h>
int main()
{
int m,i,j,count=0;
scanf("%d",&m);
if(m>50 && m<20000)
{
for(i=m-1;;--i)
{
j=2;
while(i%j!=0)
{
j++;
}
if(j==i)
{
count=count+1;
printf("%6d",i);
if(count>9)
{
break;
}
}
}
}
return 0;
}