《我向三体世界说话:迪迦!》第5章 啊大苏打
1-1 1530
复制下列程序到编译环境中,修改其中的语法错误。
#include<stdio.h>
int mian()
{
print(“你好,C语言!”);
return 0
}
答
#include<stdio.h>
int main()
{
printf(你好,C语言!);
return 0 ;
}
1-2 1531
复制下列程序到编译环境中,修改其中的语法错误。
include <studio.h>
int main( )
x=2; y=3;
z=x+y;
printf(z=%dn”, z);
return 0;
答
#include <stdio.h>
int main()
{int x=2, y=3,z;
z=x+y;
printf(z=%dn,z);
return 0;}
1-3 1532
复制下列程序到编译环境中,修改其中的语法错误。
#include<stdio.h>
void main()
{
int max,a,b;
a=3,b=7;
max=max(a,b);
printf(最大值是:%d,max);
int max(int x,int y)
{
int z;
if (x>y)
z=x;
else
z=y;
return (z);
}
}
答
#include<stdio.h>
void main()
{
int c,a,b;
a=3;b=7;
c=max(a,b);
printf(最大值是:%d,c);}
int max(int x,int y)
{
int z;
if (x>y)
z=x;
else
z=y;
return (z);
}
2-1 1206
从键盘输入圆的半径,根据该半径的值,计算圆的周长和面积。输出保留两位小数。
答
#include<stdio.h>
#define pi 3.14
main()
{
float c,s,r;
scanf(%f,&r);
c=(int)(200*pi*r)/100.0;
s=(int)(100*pi*r*r)/100.0;
printf(%.2fn%.2fn,c,s);}
2-2 1210
定义一个长方体的长宽高,从键盘读取这三个参数,计算输出这个长方体的体积。
答
#include<stdio.h>
main()
{int a,b,c,v;
scanf(%d%d%d,&a,&b,&c);
v=a*b*c;
printf(%d,v);}
2-3 1528
编写一个程序,由键盘输入两个整数a、b,计算并输出两数的平方和。
输出格式为(可直接复制):a=%d,b=%d,sum=%d
答
#include<stdio.h>
main()
{int a,b,sum;
scanf(%d%d,&a,&b);
sum=a*a+b*b;
printf(a=%d,b=%d,sum=%d,a,b,sum);}
2-4 1213
定义一个线性函数(形如y=kx+b)的系数k,b,从键盘读取这两个系数,并读取任意x值,输出对应的y值。
答
#include<stdio.h>
main()
{int k,b,x,y;
scanf(%d%d%d,&k,&b,&x);
y=k*x+b;
printf(%d,y);}
2-5 1214
定义任一学生3门课程的成绩,从键盘读取这3门课程的成绩,计算输出该学生的平均成绩(结果保留整数)
答
#include<stdio.h>
main()
{int a,b,c,x;
scanf(%d%d%d,&a,&b,&c);
x=(int)((a+b+c)/3.0);
printf(%d,x);}
2-6 1216
编写程序:由键盘输入圆锥体的半径和高值,计算圆椎体的体积并输出计算结果,结果保留两位小数。Π=3.14
答
#include<stdio.h>
#define pi 3.14
main()
{float V,r,h;
scanf(%f%f,&r,&h);
V=(1/3.0)*pi*r*r*h;
printf(%.2f,V);}
2-7 1208
已知字符‘a’的ASCII值是97,从键盘输入一个字母,请根据字符‘a’的ASCII值,计算出该输入字母的ASCII值并输出。
答
#include<stdio.h>
main()
{char a;
a=getchar();
printf(%d,a);}
2-8 1533
复制下列程序到编译环境中,修改其中的错误。
#include<stdio.h>
int main()
{
int c,a,b;
a=3.2 , b=7.5;
c=a+b;
printf(z=%d,c);
}
答
#include<stdio.h>
int main()
{
double c,a,b;
a=3.2 , b=7.5;
c=a+b;
printf(z=%lf,c);
}
2-9 1537
已知一条直线3x+5=y,从键盘上输入该直线上某点的x坐标(x值为float型),输出该点的(x, y)坐标值。输出格式为(可直接复制):(%f, %f), x, y
答
#include<stdio.h>
main()
{float x,y;
scanf(%f,&x);
y=3*x+5;
printf((%f, %f),x,y);}
3-1 1207
从键盘输入一个四位数,输出各个位颠倒之后的数字,如输入1234,则要求输出4321
答
#include<stdio.h>
main()
{int a;
scanf(%d,&a);
a=a%10*1000+a/10%10*100+a/100%10*10+a/1000;
printf(%d,a);}
3-2 1209
编写程序:输入三个字符和输出对应ASCII值的和。
答
#include<stdio.h>
main()
{int a,b,c,sum;
a=getchar();
b=getchar();
c=getchar();
sum=a+b+c;
printf(%d,sum);}
3-3 1211
编写程序:输入三个小写字母,依次对每个字母输出其后3位的字母,组成新的字母序列输出。例如,输入单词“cat”,则输出字母序列“fdw”。提示:’x’对应’a’, ’y’对应’b’, ’z’对应’c’。
答
#include<stdio.h>
main()
{char a,b,c;
a=getchar();
b=getchar();
c=getchar();
if((int)(a+3)<’z’)
printf(%c,a+3);
else
printf(%c,a-23);
if((int)(b+3)<’z’)
printf(%c,b+3);
else
printf(%c,b-23);
if((int)(c+3)<’z’)
printf(%c,c+3);
else
printf(%c,c-23);
}
3-4 1212
用scanf函数输入数据,a和b是整数,x和y是实型数,c1和c2是单字符,用printf函数进行输出。
答
#include<stdio.h>
main()
{int a,b;
float x,y;
char c1,c2;
scanf(%d%d%f%fn%cn%c,&a,&b,&x,&y,&c1,&c2);
printf(%dn%dn%.1fn%.2fn%cn%c,a,b,x,y,c1,c2);}
3-5 1536
输入一个大写字母,输出该字母在字母表中的位置。例如输入字母B,则输出2;输入字母Z,则输出26。
答
#include<stdio.h>
main()
{char a;
a=getchar();
printf(%d,a-64);}
3-6 1529
从键盘读入一个3位整数,将各个权位的数字转化为字符后输出。例如输入123,则转换为三个字符’1′,’2′,’3’,输出1,2,3
答
#include<stdio.h>
main()
{int n,a,b,c;
scanf(%d,&n);
a=n/100;
b=n/10%10;
c=n%10;
printf(%d,%d,%d,a,b,c);}
3-7 1534
复制下列程序到编译环境中,根据输入样例,修改其中的输入格式错误。
#include<stdio.h>
int main()
{
int c,a,b;
scanf(a=%d b=%d, a, b);
c=a*b;
printf(两个数的乘积是:%d,c);
}
答
#include<stdio.h>
int main()
{
int c,a,b;
scanf(%d%d,&a,&b);
c=a*b;
printf(两个数的乘积是:%d,c);
}
3-8 1535
复制下列程序到编译环境中,根据输入输出样例,修改其中的输出格式错误。
#include<stdio.h>
#include<math.h>
int main()
{
int c,a;
scanf(%d, &a);
if(a>0)
c=sqrt( a ); //sqrt是求平方根的数学函数
else
c=0;
printf(a的平方根是:%d);
}
答
#include<stdio.h>
#include<math.h>
int main()
{
float c,a;
scanf(%f, &a);
if(a>0)
c=sqrt( a ); //sqrt是求平方根的数学函数
else
c=0;
printf(a的平方根是:%f,c);
}
3-9 1538
按指定格式输入输出年月日。
输入格式:2020-2-26,
输出格式:%d年n%d月n%d日n
2020年
2月
26日
答
#include<stdio.h>
main()
{int year,month,day;
scanf(%d-%d-%d,&year,&month,&day);
printf(%d年n%d月n%d日n,year,month,day);
}
3-10 1539
定义一个一元二次方程:y=ax2+bx+c=0(a≠0)的系数a,b,c, 从键盘读取这三个系数,并读取任意x值,输出对应的y值。a、b和c为整型,x和y为float型。
输出格式:y=%.2f
答
#include<stdio.h>
main()
{int a,b,c;
float x,y;
scanf(%d%d%d%f,&a,&b,&c,&x);
y=a*x*x+b*x+c;
printf(y=%.2f,y);}
3-11 1540
编写程序,从键盘输入一个大写英文字母,将其转换为一个小写字母输出。
答
#include<stdio.h>
main()
{char a;
a=getchar();
printf(%c,a+32);}
3-12 1555
输入一个按分钟计量的时间,把它转换成小时和分钟的格式输出,例如,输入50,输出0小时50分
输出格式:%d小时%d分
答
#include<stdio.h>
main()
{int n,a,b;
scanf(%d,&n);
a=n/60;
b=n%60;
printf(%d小时%d分,a,b);}
3-13 1556
输入两个点的二维坐标,计算两个点之间的距离,并输出。
输入数据为float型变量。
输出格式:d=%g
距离公式如下:
答
#include<stdio.h>
#include<math.h>
main()
{float x1,x2,y1,y2,d;
scanf((%f,%f) (%f,%f),&x1,&y1,&x2,&y2);
d=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
printf(d=%g,d);}
4-1 1229
计算华氏温度F对应的摄氏温度。计算公式:C=5×(F-32)/9,式中:C表示摄氏温度,F表示华氏温度。
要求输入华氏温度,输出摄氏温度,输入输出数据要求为整型数据。
输出格式:fahr=%d,celsius=%d
答
#include<stdio.h>
main()
{int C,F;
scanf(%d,&F);
C=(int)(5*(F-32)/9);
printf(fahr=%d,celsius=%d,F,C);}
4-2 1228
计算下列分段函数f(x)的值:
要求输入输出的数据为float,输出结果保留小数点后两位。
输出格式:f(x)=%.2f
答
#include<stdio.h>
#include<math.h>
main()
{float x,a;
scanf(%f,&x);
if(x>=0)
a=sqrt(x);
else
a=(x+1)*(x+1)+2*x+1/x;
printf(f(x)=%.2f ,a);}
4-3 1227
从键盘上输入一个3位整数x,判断其各位数字之和是否为3的倍数,若是,输出yes,否则输出no
答
#include<stdio.h>
main()
{
int x,b,c,d;
scanf(%d,&x);
b=x%10;
c=x/10%10;
d=x/100;
if((b+c+d)%3==0)
printf(yes);
else printf(no);
}
4-4 1226
输入某人的身高height(整型,单位cm)及体重weight(实型,单位kg),根据公式判断其体重与标准体重(公斤)的关系。(标准体重=height-105)
如果是标准体重,则输出“perfect!”
低于标准体重,输出underweight!
高于标准体重,输出slightly fat!
答
#include<stdio.h>
main()
{
int a;
float b,c;
scanf(%d%f,&a,&b);
c=a-105;
if(b==c) printf(perfect!);
else if(b<c)
printf(underweight!);
else printf(slightly fat!);
}
4-5 1225
编写程序,从键盘读取任意一个整数n,如果是奇数,则乘2输出,如果是偶数,则除以2输出。
答
#include<stdio.h>
main()
{
int n;
scanf(%d,&n);
if(n%2==0)
printf(%d,n/2);
else printf(%d,2*n);
}
4-6 1224
设某人有money元,想存5年,输出以下5种存款方式得到的本息额(保留小数点后2位,rn指n年定期存款利息):
(1)一次存5年期。
money × (1 + 5 × r5)
(2)先存2年期,到期后将本息再存3年期。(money × (1 + 2 × r2)) × (1 + 3 × r3)
(3)先存3年期,到期后将本息再存2年期。
(money × (1 + 3 × r3)) × (1 + 2 × r2)
(4)存1年期,到期后将本息再存1年期,连续存5次。
money × pow(1 + r1, 5)
(5)存活期存款。活期利息每一季度结算一次。
money × pow((1 + r0 / 4), 4 × 5)
2018年12月的银行存款利息如下:
1年期定期存款利息为4.14%;
2年期定期存款利息为4.68%;
3年期定期存款利息为5.4%;
5年期定期存款利息为5.85%;
活期存款利息为0.72%(活期存款每一季度结算一次)
要求输入money,输出5种存款方式得到的本息额(保留小数点后2位)。
输出格式:%.2f,%.2f,%.2f,%.2f,%.2f
答
#include<stdio.h>
#include<math.h>
#define r1 0.0414
#define r2 0.0468
#define r3 0.0540
#define r5 0.0585
#define r0 0.0072
main()