20021程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
输入 x,计算并输出下列分段函数 f(x) 的值(保留1位小数)。
当 x 不等于0时,y = f(x) = 1/x,当 x 等于0时,y =
f(x) = 0。
输入输出示例:括号内是说明
输入
2 (repeat=2)
10 (x=10)
0 (x=0)
输出
f(10.00) = 0.1
f(0.00) = 0.0
#include
int main(void)
{
int repeat,
ri;
double x,
y;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%lf", &x);
if(x!=0) y=1/x;
else y=0;
printf("f(%.2f) = %.1f\n", x,
y);
}
}
20022程序填空,不要改变与输入输出有关的语句。
输入华氏温度,输出对应的摄氏温度。计算公式:c =
5*(f-32)/9,式中:c表示摄氏温度,f表示华氏温度。
输入输出示例:括号内为说明
输入
150 (fahr=150)
输出
celsius = 65
#include
int main(void)
{
int celsius,
fahr;
scanf(“%d”,&fahr);
celsius=5.0*(fahr-32)/9;
printf("celsius = %d\n",
celsius);
}
20023程序填空,不要改变与输入输出有关的语句。
输入存款金额 money、存期 year 和年利率
rate,根据下列公式计算存款到期时的利息 interest(税前),输出时保留2位小数。
interest = money(1+rate)^year -
money
输入输出示例:括号内为说明
输入
1000 3
0.025 (money = 1000, year = 3,
rate = 0.025)
输出
interest = 76.89
#include
#include
int main(void)
{
int money,
year;
double interest, rate;
scanf(“%d%d%lf”,&money,&year,&rate);
interest=money*pow((1+rate),year)-money;
printf("interest = %.2f\n", interest);
}
20024程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
输入 x,计算并输出下列分段函数 f(x) 的值(保留2位小数),请调用
sqrt 函数求平方根,调用 pow 函数求幂。
当x >= 0时,f(x) =
x^0.5,当x小于0时,f(x) = (x+1)^2 + 2x + 1/x。
输入输出示例:括号内是说明
输入
3 (repeat=3)
10
-0.5
0
输出
f(10.00) = 3.16
f(-0.50) = -2.75
f(0.00) = 0.00
#include
#include
int main(void)
{
int repeat,
ri;
double x,
y;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%lf", &x);
if(x>=0) y=sqrt(x);
else y=pow((x+1),2)+2*x+1/x;
printf("f(%.2f)
= %.2f\n", x,
y);
}
}
20025程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
输入实数 x,计算并输出下列分段函数 f(x)
的值,输出时保留1位小数。
当 x 不等于10时,y = f(x) = x,当 x 等于10时,y =
f(x) = 1/x。
输入输出示例:括号内是说明
输入
2 (repeat=2)
10
234
输出
f(10.0) = 0.1
f(234.0) = 234.0
#include
int main(void)
{
int repeat,
ri;
double x,
y;
scanf("%d",
&repeat);
for(ri = 1; ri <=
repeat; ri++){
scanf("%lf", &x);
if(x!=10) y=x;
else y=1/x;
printf("f(%.1f) = %.1f\n", x,
y);
}
}
20026程序填空,不要改变与输入输出有关的语句。
输入2个整数 num1 和
num2,计算并输出它们的和、差、积、商与余数。
输出两个整数的余数可以用 printf("%d %% %d = %d\n",
num1, num2, num1%num2);
输入输出示例:括号内是说明
输入
5
3 (num1=5,num2=3)
输出
5 + 3 = 8
5 - 3 = 2
5 * 3 = 15
5 / 3 = 1
5 % 3 = 2
#include
int main(void)
{
int num1, num2;
scanf("%d%d",
&num1,&num2);
printf("%d + %d = %d\n", num1, num2, num1+num2);
printf("%d - %d = %d\n", num1, num2, num1-num2);
printf("%d * %d = %d\n", num1, num2, num1*num2);
printf("%d / %d = %d\n", num1, num2, num1/num2);
printf("%d %% %d = %d\n", num1, num2, num1%num2);
return 0;
}
20031程序填空,不要改变与输入输出有关的语句。
计算表达式 1 + 2 + 3 + ...... + 100的值。
输出示例:
sum = 5050
#include
int main(void)
{
int i, sum;
sum=0;
for(i=1;i<=100;i++)
sum=sum+i;
printf("sum
= %d\n", sum);
}
20032程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
输入一个正整数m(0<=m<=100),计算表达式 m + (m+1) +
(m+2) + ...... + 100的值。
输入输出示例:括号内为说明
输入
3 (repeat=3)
0 (计算0+1+2+...+100)
10 (计算10+11+12+...+100)
50 (计算50+51+52+...+100)
输出
sum = 5050
sum = 5005
sum = 3825
#include
int main(void)
{
int i, m,
sum;
int repeat,
ri;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d", &m);
sum=0;
for(i=m;i<=100;i++)
sum=sum+i;
printf("sum = %d\n", sum);
}
}
20033程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
输入2个正整数 m 和
n(m<=n),计算表达式 1/m + 1/(m+1) + 1/(m+2) + ...... +
1/n的值,输出时保留3位小数。
输入输出示例:括号内为说明
输入
3 (repeat=3)
5
15 (计算1/5+1/6+1/7+...+1/15)
10
20 (计算1/10+1/11+1/12+...+1/20)
1
3 (计算1+1/2+1/3)
输出
sum = 1.235
sum = 0.769
sum = 1.833
#include
int main(void)
{
int i, m,
n;
int repeat,
ri;
double
sum;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d%d", &m, &n);
sum=0;
for(i=m;i<=n;i++)
sum=sum+1.0/i;
printf("sum = %.3f\n", sum);
}
}
20034程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
输入一个正整数 n,计算表达式 1 + 1/3 + 1/5 + ......
的前 n 项之和,输出时保留6位小数。
输入输出示例:括号内为说明
输入
2 (repeat=2)
5 (计算1+1/3+1/5+1/7+1/9)
23 (计算1+1/3+1/5+...+1/45)
输出
sum = 1.787302
sum = 2.549541
#include
int main(void)
{
int i,
n;
int repeat,
ri;
double
sum;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d", &n);
sum=0;
for(i=1;i<=n;i++)
sum=sum+1.0/(2*i-1);
printf("sum = %.6f\n", sum);
}
}
20035程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
读入一个正整数 n,计算1-1/4+1/7-1/10+……的前 n
项之和,输出时保留3位小数。
输入输出示例:括号内是说明
输入
2 (repeat=2)
3
10
输出
sum = 0.893
sum = 0.819
#include
int main(void)
{
int flag, i,
n, t;
int repeat,
ri;
double item,
sum;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d",
&n);
sum=0;flag=1;item=0;t=1;
for(i=1;i<=n;i++)
{ item=flag*1.0/t;
sum=sum+item;
flag=-flag;
t=t+3;
}
printf("sum = %.3f\n", sum);
}
}
20036程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
读入2个整数 lower 和
upper,输出一张华氏—摄氏温度转换表,华氏温度的取值范围是[lower, upper],每次增加2F。
计算公式:c = 5 * (f - 32) /
9,其中:c表示摄氏温度,f表示华氏温度。
输出请使用语句 printf("%3.0f %6.1f\n", fahr,
celsius);
输入输出示例:括号内是说明
输入
2 (repeat=2)
32
35 (lower=32,upper=35)
40
30 (lower=40,upper=30)
输出
fahr celsius
32 0.0
34 1.1
fahr celsius
#include
int main(void)
{
int lower,
upper;
int repeat,
ri;
double
celsius, fahr;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d%d", &lower, &upper);
printf("fahr celsius\n");
for(fahr=lower;fahr<=upper;fahr=fahr+2){
celsius=5 * (fahr- 32) / 9;
printf("%3.0f %6.1f\n", fahr, celsius);
}
}
}
20037程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
输入2 个正整数 m 和 n,计算 m!+n!。
输入输出示例:括号内是说明
输入:
2 (repeat=2)
1
4 (m=1,n=4)
3
8 (m=3,n=8)
输出:
1! + 4! = 25
3! + 8! = 40326
#include "stdio.h"
int main(void)
{
int i, m,
n;
int repeat,
ri;
double fm,
fn;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d%d", &m, &n);
fm=fn=1;
for(i=1;i<=m;i++)
fm=fm*i;
for(i=1;i<=n;i++)
fn=fn*i;
printf("%d! + %d! = %.0f\n", m, n, fm+fn);
}
}
20038程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
读入1 个实数x和正整数
n(n<=50),计算并输出 x 的 n 次幂(保留2位小数),不允许调用pow函数求幂。
输入输出示例:括号内是说明
输入
2 (repeat=2)
1.5
2 (x=1.5,n=2)
2
7 (x=2,n=7)
输出
2.25
128.00
#include
int main(void)
{
int i,
n;
int repeat,
ri;
double
mypow, x;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%lf%d", &x, &n);
mypow=1;
for(i=1;i<=n;i++)
mypow = mypow*x;
printf("%.2f\n", mypow);
}
}
20041程序填空,不要改变与输入输出有关的语句。
输入一个正整数n,生成一张3的乘方表,输出3^0 ~
3^n的值,可调用幂函数计算3的乘方。
输出使用语句 printf("pow(3,%d) = %.0f\n", i,
mypow);
输入输出示例:括号内是说明
输入
3 (n=3)
输出
pow(3,0) = 1
pow(3,1) = 3
pow(3,2) = 9
pow(3,3) = 27
#include
#include
int main(void)
{
int i, n;
double
mypow;
scanf("%d", &n);
for(i=0;i<=n;i++){
mypow=pow(3,i);
printf("pow(3,%d) = %.0f\n", i, mypow);
}
return 0;
}
20042程序填空,不要改变与输入输出有关的语句。
输入一个正整数n,生成一张阶乘表,输出 1! ~ n!
的值,要求定义和调用函数fact(n)计算 n!,函数类型为double。
输出使用语句 printf("%d! = %.0f\n", i,
myfact);
输入输出示例:括号内是说明
输入
3 (n=3)
输出
1! = 1
2! = 2
3! = 6
#include
int main(void)
{
int i,
n;
double
myfact;
double
fact(int n);
scanf("%d", &n);
for(i=1;i<=n;i++){
myfact=fact(i);
printf("%d! = %.0f\n", i, myfact);
}
return 0;
}
double fact(int n)
{
int i;
double f=1;
for(i=1;i<=n;i++)
f=f*i;
return f;
}
20043程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
输入2个正整数 m 和 n(m<=n),计算
n! /(m!* (n-m)!) 。
要求定义并调用函数fact(n)计算n的阶乘, 其中 n 的类型是
int,函数类型是 double。
例:括号内是说明
输入:
2 (repeat=2)
2
7 (m=2,
n=7)
5
12 (m=5, n=12)
输出:
result = 21
result = 792
#include "stdio.h"
double fact(int n);
int main(void)
{
int m,
n;
int repeat,
ri;
double
s;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d%d", &m, &n);
s= fact(n)/(fact(m)*fact(n-m));
printf("result = %.0f\n", s);
}
return 0;
}
double fact(int n)
{
int i;
double f=1;
for(i=1;i<=n;i++)
f=f*i;
return f;
}
20044程序填空,不要改变与输入输出有关的语句。
计算
100^0.5+101^0.5+……+1000^0.5的值(保留2位小数),可调用sqrt函数计算平方根。
输入输出示例:括号内是说明
输出
sum = 20435.99
#include
#include
int main(void)
{
int i;
double
sum;
sum=0;;
for(i=100;i<=1000;i++)
sum=sum+sqrt(i);
printf("sum
= %.2f\n", sum);
}
30001程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
输入参数a,b,c,求一元二次方程a*x*x+b*x+c=0的根,结果保留2位小数。
输出使用以下语句:
printf("参数都为零,方程无意义!\n");
printf("a和b为0,c不为0,方程不成立\n");
printf("x = %0.2f\n", -c/b);
printf("x1 = %0.2f\n",
(-b+sqrt(d))/(2*a));
printf("x2 = %0.2f\n",
(-b-sqrt(d))/(2*a));
printf("x1 = %0.2f+%0.2fi\n", -b/(2*a),
sqrt(-d)/(2*a));
printf("x2 = %0.2f-%0.2fi\n", -b/(2*a),
sqrt(-d)/(2*a));
输入输出示例:括号内为说明
输入:
5 (repeat=5)
0 0 0
(a=0,b=0,c=0)
0 0
1 (a=0,b=0,c=1)
0 2
4 (a=0,b=2,c=4)
2.1 8.9
3.5 (a=2.1,b=8.9,c=3.5)
1 2
3 (a=1,b=2,c=3)
输出:
参数都为零,方程无意义!
a和b为0,c不为0,方程不成立
x = -2.00
x1 = -0.44
x2 = -3.80
x1 = -1.00+1.41i
x2 = -1.00-1.41i
#include
#include
int main(void)
{
int repeat,
ri;
double a, b,
c, d;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%lf%lf%lf", &a, &b,
&c);
d=b*b-4*a*c;
if(a==0)
if(b==0)
if(c==0)
printf("参数都为零,方程无意义!\n");
else
printf("a和b为0,c不为0,方程不成立\n");
else printf("x = %0.2f\n", -c/b);
else if(d>=0){
printf("x1 = %0.2f\n",
(-b+sqrt(d))/(2*a));
printf("x2 = %0.2f\n",
(-b-sqrt(d))/(2*a));
}
else
{ printf("x1 = %0.2f+%0.2fi\n", -b/(2*a),
sqrt(-d)/(2*a));
printf("x2 = %0.2f-%0.2fi\n", -b/(2*a),
sqrt(-d)/(2*a));
}
}
}
30002程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
输入一个整数 x,计算并输出下列分段函数 sign(x) 的值。
-1 x < 0
y = sign(x) = 0
x = 0
1
x > 0
输入输出示例:括号内是说明
输入
3 (repeat=3)
10 (x=10)
0 (x=0)
-98 (x=-98)
输出
sign(10) =
1 (x = 10时 y
= 1)
sign(0) =
0 (x = 0时 y = 0)
sign(-98) = -1 (x =
-98时y = -1)
#include
int main(void)
{
int repeat,
ri;
int x,
y;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d", &x);
if(x>0) y=1;
else if(x==0) y=0;
else y=-1;
printf("sign(%d) = %d\n", x, y);
}
return 0;
}
30003程序填空,不要改变与输入输出有关的语句。
输入10个字符,统计其中英文字母、空格或回车、数字字符和其他字符的个数。
输入输出示例:括号内是说明
输入
Reold 123?
输出
letter = 5, blank = 1, digit = 3, other
= 1
#include
int main(void)
{
char c;
int blank,
digit, i, letter, other;
blank =
digit = letter = other =
0;
for(i = 1; i <=
10; i++){
c = getchar();
if((c >= 'a' && c
<= 'z' ) || ( c >= 'A'
&& c <= 'Z'))
letter ++;
else if(c
>='0'&&c<='9')
digit ++;
else if(c == ' ' || c == '\n')
blank ++;
else other ++;
}
printf("letter = %d, blank = %d, digit
= %d, other = %d\n", letter, blank, digit, other);
return 0;
}
30004程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
输入五级制成绩(A-E),输出相应的百分制成绩(0-100)区间,要求使用switch语句。
五级制成绩对应的百分制成绩区间为:A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59),如果输入不正确的成绩,显示"Invalid
input"。
输出使用以下语句:
printf("90-100\n");
printf("80-89\n");
printf("70-79\n");
printf("60-69\n");
printf("0-59\n");
printf("Invalid input\n");
输入输出示例:括号内是说明
输入
6ABCDEj (repeat=6,输入的五级成绩分别为A、B、C、D、E和无效的字符j)
输出
90-100
80-89
70-79
60-69
0-59
Invalid input (输入数据不合法)
#include
int main(void)
{
char ch;
int repeat,
ri;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
ch =
getchar();
switch(ch) {
case 'A’:
printf("90-100\n");break;
case 'B':
printf("80-89\n");break;
case 'C' :
printf("70-79\n");break;
case 'D' : printf("60-69\n");break;
case 'E' : printf("0-59\n"); break;
default: printf("Invalid input\n"); break;
}
}
return 0;
}
30005程序填空,不要改变与输入输出有关的语句。
查询水果的单价。有4种水果,苹果(apples)、梨(pears)、桔子(oranges)和葡萄(grapes),单价分别是3.00元/公斤,2.50元/公斤,4.10元/公斤和10.20元/公斤。
在屏幕上显示以下菜单(编号和选项),用户可以连续查询水果的单价,当查询次数超过5次时,自动退出查询;不到5次时,用户可以选择退出。
当用户输入编号1~4,显示相应水果的单价(保留1位小数);输入0,退出查询;输入其他编号,显示价格为0。
输入输出示例:括号内是说明
输入
3 (oranges的编号)
0 (退出查询)
输出
[1] apples
[2] pears
[3] oranges
[4] grapes
[0] Exit
price = 4.1
[1] apples
[2] pears
[3] oranges
[4] grapes
[0] Exit
#include
int main(void)
{
int choice,
i;
double
price;
for(i = 1; i
<= 5; i++){
printf("[1] apples\n");
printf("[2] pears\n");
printf("[3] oranges\n");
printf("[4] grapes\n");
printf("[0] Exit\n");
scanf("%d", &choice);
if(choice == 0)
break;
else{
switch (choice)
{
case 1: price=3.0; break;
case 2: price=2.5; break;
case 3: price=4.1; break;
case 4: price=10.2; break;
default: price=0.0; break;
}
printf("price
= %0.1f\n", price);
}
return
0;
}
30006程序填空,不要改变与输入输出有关的语句。
输入5个学生的数学成绩,判断他们的成绩是否及格。如果成绩低于60,输出"Fail",否则,输出"Pass"。
输入输出示例:括号内是说明
输入
61
59
92
40
60
输出
Pass
Fail
Pass
Fail
Pass
#include
int main(void)0
{
int i,
mark;
for(i = 1; i
<= 5; i++){
scanf("%d", &mark);
if(mark>=60) printf(“Pass\n”);
else printf(“Fail\n”);
}
}
30007程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
输入三角形的3条边 a, b, c,如果能构成一个三角形,输出面积 area
和周长 perimeter(保留2位小数);否则,输出"These sides do not correspond to a
valid triangle"。
在一个三角形中,任意两边之和大于第三边。三角形面积计算公式:area =
(s(s-a)(s-b)(s-c))^0.5 ,其中s = (a+b+c)/2
输出使用以下语句:
printf("area = %.2f, perimeter =
%.2f\n",area, perimeter);
printf("These sides do not correspond
to a valid triangle\n");
输入输出示例:括号内是说明
输入
2 (repeat=2)
5 5
3 (a=5,b=5,c=3)
1 4
1 (a=1,b=4,c=1)
输出
area = 7.15, perimeter = 13.00
These sides do not correspond to a
valid triangle
#include
#include
int main(void)
{
int a, b,
c;
int repeat,
ri;
double area,
perimeter, s;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d%d%d", &a, &b,
&c);
if(a+b>c&&b+c>a&&c+a>b)
{ perimeter=a+b+c;
s= perimeter/2;
area=sqrt(s*(s-a)*(s-b)*(s-c));
printf("area = %.2f, perimeter =
%.2f\n",area, perimeter);
}
else
printf("These sides do not correspond to a valid triangle\n");
}
return 0;
}
30008程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
输入一个职工的月薪 salary,输出应交的个人所得税
tax(保留2位小数)。
计算公式:tax = rate * (salary - 850)
当 salary ≤850 时,rate = 0
当 850 < salary ≤ 1350 时,rate = 5%
当 1350 < salary≤ 2850
时,rate = 10%
当 2850 < salary ≤ 5850 时,rate = 15%
当 5850 < salary 时,rate = 20%
输入输出示例:括号内是说明
输入
5 (repeat=5)
1010.87 (salary=1010.87)
32098.76 (salary=32098.76)
800 (salary=800)
4010 (salary=4010)
2850 (salary=2850)
输出
tax = 8.04
tax = 6249.75
tax = 0.00
tax = 474.00
tax = 200.00
#include
int main(void)
{
int repeat,
ri;
double rate,
salary, tax;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%lf", &salary);
if(salary<=850) rate=0;
else
if(salary<=1350) rate=0.05;
else
if(salary<=2850) rate=0.1;
else
if(salary<=5850) rate=0.15;
else rate=0.2;
tax = rate * (salary
- 850);
printf("tax
= %0.2f\n", tax);
}
}
30009程序填空,不要改变与输入输出有关的语句。
输入一个正整数 n,再输入 n
个学生的百分制成绩,统计各等级成绩的个数。成绩等级分为五级,分别为A(90-100)、B(80-89)、C(70-79)、D(60-69)和E(0-59)。
输入输出示例:括号内是说明
输入
5 (n=5)
77 54 92 73 60
输出
Number of A(90-100): 1
Number of B(80-89): 0
Number of C(70-79): 2
Number of D(60-69): 1
Number of E(0-59): 1
#include
int main(void)
{
int i, mark,
n;
int na, nb,
nc, nd, ne;
scanf("%d",&n);
na = nb = nc
= nd = ne = 0;
for(i = 1; i
<= n; i++){
scanf("%d", &mark);
if(mark >=90) na++;
else if(mark >=80)
nb++;
else if(mark >=70)
nc++;
else if(mark >=60)
nd++;
else ne++;
}
printf("Number of A(90-100): %d\n", na);
printf("Number of B(80-89): %d\n", nb);
printf("Number of C(70-79): %d\n", nc);
printf("Number of D(60-69): %d\n", nd);
printf("Number of E(0-59): %d\n", ne);
}
30010程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
输入一个形式如"操作数
运算符操作数"的表达式,对2个整数进行乘、除和求余运算。
输出使用以下语句:
printf("%d * %d = %d\n", x, y, x *
y);
printf("%d / %d = %d\n", x, y, x /
y);
printf("%d Mod %d = %d\n",x, y, x %
y);
printf("Invalid operator\n");
输入输出示例:括号内是说明
输入
4 (repeat=4)
21*8
21/8
21%8
21!8
输出
21 * 8 = 168
21 / 8 = 2
21 Mod 8 = 5
Invalid operator
#include
int main(void)
{
char
sign;
int x,
y;
int repeat,
ri;
scanf("%d",&repeat);
for(ri =
1;ri <= repeat; ri++){
scanf("%d%c%d", &x, &sign,
&y);
switch(sign){
case ‘*’: printf("%d * %d = %d\n", x, y, x * y);break;
case ‘/’: printf("%d / %d = %d\n", x, y, x / y); break;
case ‘%’: printf("%d Mod %d = %d\n", x, y, x % y); break;
default: printf("Invalid operator\n"); break;
}
}
return 0;
}
40011程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
输入两个正整数m和n,输出它们的最小公倍数和最大公约数。
输入输出示例:括号内为说明
输入:
3 (repeat=3)
3
7 (m=3,n=7)
24
4 (m=24,n=4)
24
18 (m=24,n=18)
输出:
21 is the least common multiple of 3
and 7, 1 is the greatest common divisor of 3 and 7.
24 is the least common multiple of 24
and 4, 4 is the greatest common divisor of 24 and 4.
72 is the least common multiple of 24
and 18, 6 is the greatest common divisor of 24 and 18.
#include
int main(void)
{
int gcd, lcm, m,
n;
int repeat,
ri;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d", &m);
scanf("%d", &n);
if(m <= 0 || n <= 0)
printf("m <= 0 or n <= 0");
else{
for(lcm=m;lcm%n!=0;lcm=lcm+m)
;
gcd= m*n/lcm;
}
printf("%d is the least common multiple of %d and %d, %d is the
greatest common divisor of %d and %d.\n", lcm, m, n, gcd, m,
n);
}
return
0;
}
40012程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
读入1个正实数 eps,计算并输出下式的值,精确到最后一项的绝对值小于
eps(保留6位小数)。请使用 while 语句实现循环。
求1-1/4+1/7-1/10+1/13-1/16+……。
输入输出示例:括号内是说明
输入
2 (repeat=2)
1E-4 (eps=1E-4)
0.1 (eps=0.1)
输出
sum = 0.835699
sum = 0.869780
#include
#include
int main(void)
{
int
denominator, flag;
int repeat,
ri;
double eps,
item, sum;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%le", &eps);
sum=0; denominator =1;flag=1;item=1;
while(fabs(item)>=eps)
{ item= flag*1.0/ denominator;
sum=sum+item;
denominator = denominator +3;
flag=-flag;
}
printf("sum = %.6f\n", sum);
}
}
40013程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
读入一批正整数(以零或负数为结束标志),求其中的奇数和。请使用while语句实现循环。
输入输出示例:括号内是说明
输入
2 (repeat=2)
1 3 90 7 0
8 7 4 3 70 5 6 101 -1
输出
The sum of the odd numbers is 11.
The sum of the odd numbers is 116.
#include
int main(void)
{
int x,
sum;
int repeat,
ri;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d", &x);
sum=0;
while(x>0)
{
if(x%2) sum=sum+x;
scanf("%d",
&x);
}
printf("The sum of the odd numbers is %d.\n",
sum);
}
}
40014程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
输入一个整数
in,求它的位数。例如123的位数是3。请使用do-while语句实现循环。
输入输出示例:括号内是说明
输入
4 (repeat=4)
12345 (in=12345)
-100 (in=-100)
-1 (in=-1)
1290 (in=1290)
输出
count = 5
(12345的位数是5)
count = 3
(-100的位数是3)
count = 1
(-1的位数是1)
count = 4
(99的位数是2)
#include
int main(void)
{
int count,
in;
int repeat,
ri;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d",
&in);
count =0;
if(in<0) in=-in;
do{
count ++;
in=in/10;
}while(in);
printf("count = %d\n",
count);
}
}
40015程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
输入一个正整数n, 再输入n个整数,输出最小值。
输入输出示例:括号内是说明
输入
3 (repeat=3)
4 -2 -123 100 0
4 -9 -1 1 -8
3 5 3 1
输出
min = -123
min = -9
min = 1
#include
int main(void)
{
int i, min,
n, x;
int repeat,
ri;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d", &n);
scanf("%d",
&x);
min=x;
for(i=1;i
scanf("%d", &x);
if(x
printf("min = %d\n", min);
}
}
40016程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
输入一个整数 in,求它的位数以及各位数字之和。例如 123 的各位数字之和是
6,位数是 3。
输入输出示例:括号内是说明
输入
4 (repeat=4)
0 (in=0)
23456 (in=23456)
-100 (in=-100)
-1 (in=-1)
输出
count = 1, sum = 0
(0的位数是1,
各位数字之和是0)
count = 5, sum = 20
(23456的位数是5, 各位数字之和是20)
count = 3, sum = 1
(-100的位数是3,
各位数字之和是1)
count = 1, sum = 1
(-1的位数是1,
各位数字之和是1)
#include
int main(void)
{
int count,
in, sum;
int repeat,
ri;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d", &in);
count=sum=0;
if(in<0) in=-in;
if(in==0) {count=1;sum=0;}
while(in!=0)
{
sum=sum+in;
count++;
in=in/10;
}
printf("count = %d, sum = %d\n", count, sum);
}
}
40017程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
输入一个正整数 n,输出
2/1+3/2+5/3+8/5+……前n项之和,保留2位小数。(该序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子)
输入输出示例:括号内是说明
输入
3 (repeat=3)
1 (n=1)
5 (n=5)
20 (n=20)
输出
sum =
2.00 (第1项是2.00)
sum =
8.39 (前5项的和是8.39)
sum = 32.66 (前20项的和是32.66)
#include
int main(void)
{
int i,
n;
int repeat,
ri;
double
denominator, numerator, sum, temp;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d", &n);
denominator=1; numerator =2;sum=0;
for(i=0;i
{ sum=sum+ numerator / denominator;
temp= numerator;
numerator = denominator +
numerator;
denominator =temp;
}
printf("sum =
%.2f\n",sum);
}
}
40018程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
输入2个正整数 a 和 n,求
a+aa+aaa+aa…a(n个a)之和。例如,输入 2 和 3,输出 246(2 + 22 + 222)。
输入输出示例:括号内是说明
输入
3 (repeat=3)
2
3 (a=2, n=3)
5
4 (a=5, n=4)
1
1 (a=1, n=1)
输出
sum =
246 (2+22+222)
sum =
6170 (5+55+555+5555)
sum =
1 (1)
#include
int main(void)
{
int a, i, n,
sn, tn;
int ri,
repeat;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%ld%d", &a, &n);
sn=0; tn=1;
for(i=0;i
sn=sn+tn;
tn=tn*10+1;
}
sn=sn*a;
printf("sum = %d\n", sn);
}
}
40019程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
皮球从
height(米)高度自由落下,触地后反弹到原高度的一半,再落下,再反弹,……,如此反复。问皮球在第 n
次落地时,在空中一共经过多少距离?第 n 次反弹的高度是多少?(输出保留1位小数)
输入输出示例:括号内是说明
输入
3 (repeat=3)
10 2 (height=10m, n=2)
4 1 (height=2m, n=1)
100
8 (height=100m, n=8)
输出
distance=20.0,
height=2.5 (第2次落地时,空中经过距离为20米, 第2次反弹高度为2.5米)
distance=4.0,
height=2.0 (第1次落地时,空中经过距离为4米,第1次反弹高度为2米)
distance=298.4,
height=0.4 (第8次落地时,空中经过距离为298.4米,第8次反弹高度为0.4米)
#include
int main(void)
{
int i,
n;
int repeat,
ri;
double
distance, height;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%lf%d", &height, &n);
distance = height ; height = height /2;
for(i=2;i<=n;i++){
distance = distance +2* height;
height = height
/2;
}
printf("distance = %.1f, height = %.1f\n",
distance, height);
}
}
40021程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
输入1个正整数n,计算下式的前n项之和(保留4位小数)。要求使用嵌套循环。
e
= 1+1/1!+1/2!+....+1/n!
输入输出示例:括号内为说明
输入:
2 (repeat=2)
2 (n=2)
10 (n=10)
输出:
e = 2.5000
e = 2.7183
#include "stdio.h"
int main(void)
{
int i, j,
n;
int repeat,
ri;
double e,
product;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d", &n);
e=1;
for(i=1;i<=n;i++){
product =1;
for(j=1;j<=i;j++)
product = product *j;
e=e+1.0/ product ;
}
printf("e =
%0.4f\n", e);
}
}
40022程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat
(0
输入2个正整数 m 和 n(1<=m,
n<=500),输出 m 和 n
之间的所有素数,每行输出6个。素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
输出语句:printf("%d ", i);
输入输出示例:括号内为说明
输入:
2 (repeat=2)
1
35 (m=1, n=35)
2
10 (m=2,n=10)
输出:
primes:
(1到35之间的素数)
2 3 5 7 11 13
17 19 23 29 31
primes:
(2到10之间的素数)
2 3 5 7
#include "stdio.h"
#include "math.h"
int main(void)
{
int count,
i, j, k, m, n;
int
ri,repeat;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat;ri++){
scanf("%d%d", &m, &n);
printf("primes:\n");
if(m==1)
m=m+1;
count =0;
for (i =m ; i <=n ; i
++)
{ k =sqrt (i );
for (j=2;j<=k ;j++)
if (i %j ==0) break;
if (j>k ) {
printf("%d ",
i);
count++;
if(count%6==0) printf("\n");
}
}
printf("\n");
}
}
40023程序填空,不要改变与输入输出有关的语句。?
输入一个正整数 repeat
(0
将一笔零钱(大于8分,小于1元,
精确到分)换成5分、2分和1分的硬币。
输入金额,问有几种换法?针对每一种换法,输出各种面额硬币的数量和硬币的总数量,要求每种硬币至少有一枚。先输出硬币总数量少的换法。
输出使用语句:printf("fen5:%d,fen2:%d,fen1:%d,total:%d\n",fen5, fen2,
fen1, fen5+fen2+fen1);
输入输出示例:括号内为说明
输入:
2 (repeat=2)
10 (money=10分)
13 (money=13分)
输出:
fen5:1,fen2:2,fen1:1,total:4
fen5:1,fen2:1,fen1:3,total:5
count =
2 (10分有2种换法)
fen5:2,fen2:1,fen1:1,total:4
fen5:1,fen2:3,fen1:2,total:6
fen5:1,fen2:2,fen1:4,total:7
fen5:1,fen2:1,fen1:6,total:8
count =
4 (13分有4种换法)
#include "stdio.h"
int main(void)
{
int count,
fen1, fen2, fen5, money;
int repeat,
ri;
scanf("%d",
&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d", &money);
count=0;
for(fen1=1; fen1<=money;
fen1++)
for(fen2=1; fen2<=money/2;
fen2++)
for(fen5=1; fen5<=20/5;
fen5++)
if(fen1*1+ fen2*2+ fen5*5==money)
{count++;
printf("fen5:%d,fen2:%d,fen1:%d,total:%d\n",fen5, fen2, fen1,
fen5+fen2+fen1);
}
printf("count = %d\n", count);
}
}
#include "stdio.h"
int main(void)
{
int count, fen1, fen2, fen5, money;
int repeat, ri;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &money);
count=0;
for(fen5= money/5; fen5>=1; fen5--)
for(fen2= money/2; fen2>=1; fen2--)
for(fen1=1; fen1< money ; fen1++)
if(fen1*1+ fen2*2+ fen5*5==money){
count++;
printf("fen5:%d,fen2:%d,fen1:%d,total:%d\n",fen5, fen2, fen1, fen5+fen2+fen1);
}
printf("count = %d\n", count);
}
}
40024程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
输入两个正整数 m 和 n(1<=m,
n<=1000),输出 m 到 n之间的所有满足各位数字的立方和等于它本身的数。
例如153的各位数字的立方和是 13+53+33=153。
输出使用语句:printf("%d\n", i);
输入输出示例:括号内为说明
输入:
2 (repeat=2)
100
400 (m=100, n=400)
1 100 (m=1,
n=100)
输出:
result:
153 (1*1*1+5*5*5+3*3*3=153)
370 (3*3*3+7*7*7=370)
371 (3*3*3+7*7*7+1*1*1=371)
result:
1 (1*1*1=1)
#include "stdio.h"
int main(void)
{
int i,
digit, m, n, number, sum;
int repeat,
ri;
scanf("%d",&repeat);
for(ri = 1;
ri <= repeat; ri++){
scanf("%d%d", &m, &n);
printf("result:\n");
for(i=m;i<=n; i++)
{ sum=0;number=i;
while (number)
{
digit =number ;
sum =sum +digit *digit *digit ;
number = number /10;
}
if(i==sum) printf(“%d\n”,i );
}
}
}
40025程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat
(0
输入两个正整数 m 和 n(1<=m,
n<=1000),输出 m 到
n之间的所有完数,并输出其因子。一个数如恰好等于它的因子之和,这个数称为完数,例如,6=1+2+3,其中1、2、3为因子,6为因子和。
输出使用以下语句:
printf("%d = 1", number);
printf(" + %d", factor);
printf("\n");
输入输出示例:括号内为说明
输入:
2 (repeat=2)
1
30 (m=1, n=30)
400
500 (m=400,
n=500)
输出
result:
1 = 1
6 = 1 + 2 + 3
28 = 1 + 2 + 4 + 7 + 14
result:
496 = 1 + 2 + 4
#include
int main(void)
{
int factor, m, n,
number, sum;
int repeat, ri;
scanf("%d",&repeat);
for(ri = 1; ri
<= repeat; ri++){
scanf("%d%d", &m, &n);
printf("result:\n");
for(factor=m;factor<=n;factor++)
{
sum=1;
for(number=2;number<=factor/2;number++)
if(factor%number==0) sum+=number;
if(sum==factor)
{
printf("%d =
1",factor);
for(number=2;number<=factor/2;number++)
if(factor%number==0)
printf(" + %d",number);
printf("\n");
}
}
}
}
50001
程序填空,不要改变与输入输出有关的语句。
从键盘输入一个正整数n,计算 n! 的值。要求定义和调用函数fact(n),计算n!,函数形参n的类型是int,函数类型是double。
输入输出示例:括号内是说明
5 (n=5)
5! = 120.000000
#include
int main(void)
{
int n;
double factorial;
double fact(int n);
scanf ("%d", &n);
factorial=fact(n);
printf("%d! = %f\n", n, factorial);
}
double fact(int n)
{ int i;double s=1;
for(i=1;i<=n;i++)
s=s*i;
return s;
}
50002
程序填空,不要改变与输入输出有关的语句。
输入一个正整数 repeat (0
输入1个整数 x,若 x 大于0,sign(x) = 1;若 x 等于0,sign(x) = 0;否则,sign(x) = -1,最后输出sign(x)的值。
要求定义和调用函数sign(x)实现该分段函数, 函数形参x的类型是int,函数类型是int。
输入输出示例:括号内是说明
输入
3 (repeat=3)
10 (x=10)
-5 (x=-5)
0 (x=0)
输出
sign(10) = 1 (x=10时sign(x)的值为1)
sign(-5) = -1 (x=-5时sign(x)的值为-1)
sign(0) = 0 (x=0时sign(x)的值为0)
#include
int sign(int x);
int main(void)
{
int x, y;
int repeat, ri;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d",&x);
y=
sign(x);
printf("sign(%d) = %d\n", x, y);
}
}
int sign(int x)
{ if(x>0) return 1;
else if(x==0) return 0;
else return -1;
}
50003
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0
输入一批正整数(以零或负数为结束标志),求其中的奇数和。
要求定义和调用函数even(n) 判断数的奇偶性,当n为偶数时返回1,否则返回0,函数形参n的类型是int,函数类型是int。
输入输出示例:括号内是说明
输入
2 (repeat=2)
12 9 7 18 3 11 20 0
11 8 6 17 2 10 19 -1
输出
The sum of the odd numbers is 30.
The sum of the odd numbers is 47.
#include
int even(int n);
int main(void)
{
int n, sum;
int ri, repeat;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d",&n);
sum=0;
while(n>0){
if(even(n)==0)
sum=sum+n;
scanf("%d",&n);
}
printf("The sum of the odd numbers is %d.\n", sum);
}
}
int even(int n)
{ if(n%2==0) return 1;
else return 0;
}
50004
程序填空,不要改变与输入输出有关的语句。
输入一个正整数repeat (0
给定平面任意两点坐标 (x1, y1) 和 (x2, y2),求这两点之间的距离(保留2位小数)。
要求定义和调用函数 dist(x1, y1, x2, y2)计算两点间的距离,函数形参x1、y1、x2和y2的类型都是double,函数类型是double。
输入输出示例:括号内是说明
输入
1 (repeat=1)
10 10 (x1=10, y1=10)
200 100 (x2=200, y2=100)
输出
Distance = 210.24
#include
#include
double dist(double x1, double y1, double x2, double y2);
int main(void)
{
int repeat, ri;
double distance, x1, y1, x2, y2;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%lf%lf%lf%lf", &x1, &y1, &x2, &y2);
distance=dist(x1,x2,y1,y2);
printf("Distance = %.2f\n", distance);
}
}
double dist(double x1, double x2,
double y1, double y2)
{
return sqrt(pow((x1-x2),2)+pow((y1-y2),2));
}