浙江大学城市学院c语言题目,[转载]浙江大学城市学院C语言期末上机考试题库之一...

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) = %.1fn", 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 = %dn",

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 = %.2fn", 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)

= %.2fn", 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) = %.1fn", x,

y);

}

}

20026程序填空,不要改变与输入输出有关的语句。

输入2个整数 num1 和

num2,计算并输出它们的和、差、积、商与余数。

输出两个整数的余数可以用 printf("%d %% %d = %dn",

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 = %dn", num1, num2, num1+num2);

printf("%d - %d = %dn", num1, num2, num1-num2);

printf("%d * %d = %dn", num1, num2, num1*num2);

printf("%d / %d = %dn", num1, num2, num1/num2);

printf("%d %% %d = %dn", 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

= %dn", 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 = %dn", 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 = %.3fn", 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 = %.6fn", 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 = %.3fn", sum);

}

}

20036程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat

(0

读入2个整数 lower 和

upper,输出一张华氏—摄氏温度转换表,华氏温度的取值范围是[lower, upper],每次增加2F。

计算公式:c = 5 * (f - 32) /

9,其中:c表示摄氏温度,f表示华氏温度。

输出请使用语句 printf("%3.0f %6.1fn", 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 celsiusn");

for(fahr=lower;fahr<=upper;fahr=fahr+2){

celsius=5 * (fahr- 32) / 9;

printf("%3.0f %6.1fn", 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! = %.0fn", 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("%.2fn", mypow);

}

}

20041程序填空,不要改变与输入输出有关的语句。

输入一个正整数n,生成一张3的乘方表,输出3^0 ~

3^n的值,可调用幂函数计算3的乘方。

输出使用语句 printf("pow(3,%d) = %.0fn", 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) = %.0fn", i, mypow);

}

return 0;

}

20042程序填空,不要改变与输入输出有关的语句。

输入一个正整数n,生成一张阶乘表,输出 1! ~ n!

的值,要求定义和调用函数fact(n)计算 n!,函数类型为double。

输出使用语句 printf("%d! = %.0fn", 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! = %.0fn", 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 = %.0fn", 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

= %.2fn", 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.2fn", -c/b);

printf("x1 = %0.2fn",

(-b+sqrt(d))/(2*a));

printf("x2 = %0.2fn",

(-b-sqrt(d))/(2*a));

printf("x1 = %0.2f+%0.2fin", -b/(2*a),

sqrt(-d)/(2*a));

printf("x2 = %0.2f-%0.2fin", -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.2fn", -c/b);

else if(d>=0){

printf("x1 = %0.2fn",

(-b+sqrt(d))/(2*a));

printf("x2 = %0.2fn",

(-b-sqrt(d))/(2*a));

}

else

{ printf("x1 = %0.2f+%0.2fin", -b/(2*a),

sqrt(-d)/(2*a));

printf("x2 = %0.2f-%0.2fin", -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) = %dn", 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 = %dn", 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-100n");

printf("80-89n");

printf("70-79n");

printf("60-69n");

printf("0-59n");

printf("Invalid inputn");

输入输出示例:括号内是说明

输入

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-100n");break;

case 'B':

printf("80-89n");break;

case 'C' :

printf("70-79n");break;

case 'D' : printf("60-69n");break;

case 'E' : printf("0-59n"); break;

default: printf("Invalid inputn"); 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] applesn");

printf("[2] pearsn");

printf("[3] orangesn");

printf("[4] grapesn");

printf("[0] Exitn");

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.1fn", 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(“Passn”);

else printf(“Failn”);

}

}

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 =

%.2fn",area, perimeter);

printf("These sides do not correspond

to a valid trianglen");

输入输出示例:括号内是说明

输入

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 =

%.2fn",area, perimeter);

}

else

printf("These sides do not correspond to a valid trianglen");

}

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.2fn", 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): %dn", na);

printf("Number of B(80-89): %dn", nb);

printf("Number of C(70-79): %dn", nc);

printf("Number of D(60-69): %dn", nd);

printf("Number of E(0-59): %dn", ne);

}

30010程序填空,不要改变与输入输出有关的语句。

输入一个正整数repeat

(0

输入一个形式如"操作数

运算符操作数"的表达式,对2个整数进行乘、除和求余运算。

输出使用以下语句:

printf("%d * %d = %dn", x, y, x *

y);

printf("%d / %d = %dn", x, y, x /

y);

printf("%d Mod %d = %dn",x, y, x %

y);

printf("Invalid operatorn");

输入输出示例:括号内是说明

输入

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 = %dn", x, y, x * y);break;

case ‘/’: printf("%d / %d = %dn", x, y, x / y); break;

case ‘%’: printf("%d Mod %d = %dn", x, y, x % y); break;

default: printf("Invalid operatorn"); 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 = %.6fn", 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 = %dn",

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 = %dn", 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 = %dn", 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 =

%.2fn",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 = %dn", 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 = %.1fn",

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.4fn", 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:%dn",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:%dn",fen5, fen2, fen1,

fen5+fen2+fen1);

}

printf("count = %dn", 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:%dn",fen5, fen2, fen1, fen5+fen2+fen1);

}

printf("count = %dn", count);

}

}

40024程序填空,不要改变与输入输出有关的语句。

输入一个正整数 repeat

(0

输入两个正整数 m 和 n(1<=m,

n<=1000),输出 m 到 n之间的所有满足各位数字的立方和等于它本身的数。

例如153的各位数字的立方和是 13+53+33=153。

输出使用语句:printf("%dn", 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(“%dn”,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! = %fn", 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) = %dn", 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 = %.2fn", distance);

}

}

double dist(double x1, double x2,

double y1, double y2)

{

return sqrt(pow((x1-x2),2)+pow((y1-y2),2));

}

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言参考答案汇总(浙江大学城市学院) 第2周(M2) 2 20011华氏温度100°F对应的摄氏温度。 2 20012 华氏温度 150°F 对应的摄氏温度。 3 20013摄氏温度26°C对应的华氏温度。 3 20015当n为152,分别出n的个位数字(digit1)、十位数字(digit2)和百位数字(digit3)的值。 3 20026 输入2个整数 num1 和 num2,计算并输出它们的和、差、积、商与余数。 4 第3周(M3) 5 20031 1+2+3+......+100(调试示例error02_5) 5 20032 m+(m+1)+(m+2)+......+100 5 20033 1/m+1/(m+1)+1/(m+2)+......+1/n 6 20034 1 + 1/3 + 1/5 + ......的前n项和 7 20035 1-1/4+1/7-1/10+……的前n项之和 7 20036 输出华氏-摄氏温度转换表(改错题error02_6) 8 20038 x的n次幂 9 20041 生成 3 的乘方表 10 20044 100^0.5+101^0.5+……+1000^0.5 10 20053 计算物体自由下落的距离 11 20056 计算分段函数 11 20061 阶梯电价 12 20062 m*m+1/m+(m+1)*(m+1)+1/(m+1)+(m+2)*(m+2)+1/(m+2)+......+n*n+1/n 13 20063 1-2/3+3/5-4/7+5/9-6/11+…… 14 20064 2^1+2^2+2^3+……+2^n 15 第4周(M4) 15 10007 显示图案 (复习printf()的字符串输出) 15 20042 生成阶乘表 16 20043 使用函数 n! /(m!* (n-m)!) 16 20054 平均值 17 20057 1+1/2+1/3+......+1/n 18 20065 0!+1!+2!+……+n! 18 40015 最小值 19 40018 a+aa+aaa+aa…a 20 第5周(M5) 21 30001 一元二次方程的根 21 30002 分段函数的值 23 30003 分类统计字符 23 30004 显示五级记分制成绩所对应的百分制成绩区间(使用switch) 24 30005 显示水果的价格(使用switch) 25 30007 三角形的面积和周长 27 30008 计算个人所得税 28 30051 判断闰年 29 30052 统计学生平均成绩与及格人数 30 30053 分段计算水费(使用嵌套的if-else语句) 31 第6周(M6) 32 40011 最小公倍数和最大公约数(调试示例error04_1) 32 40012 1-1/4+1/7-1/10+1/13-1/16+…… 33 40014 整数的位数 34 40023 换硬币 35 40024 找出各位数字的立方和等于它本身的数 36 40025 找完数(改错题error04_2) 38 40027 从高位开始逐位输出一个整数的各位数字(选作) 39 40052 判断素数 40 40053 逆序输出整数 41 40054 输出斐波那契序列 42 第7周(M7) 42 50002 使用函数判断数的符号 42 50003 使用函数奇数和 43 50005 使用函数统计素数并和 44 50006 使用函数统计一个整数中数字的个数 45 50007 使用函数找水仙花数 46 50009 使用函数余弦函数的近似值 48 50052 使用函数找最大值 49 50062 使用函数输出指定范围内的 Fibonacci 数 50 50063 使用函数找出指定范围内的完数 51 第8周(M8) 52 40013 奇数和 52 40062 x+x*x/2!+x*x*x/3!+x*x*x*x/4!+……的值 53 50004 使用函数计算两点间的距离 54 50061 使用函数a+aa+aaa+aa…a 55 60002 整数的十进制、八进制和十六进制表现形式 56 60003 分类统计字符 57 60006 验证歌德巴赫猜想 58 60007 使用函数输出整数的逆序数 59 60009 统计单词 60 60062 简单计算器 61

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值