习题1-1 平均数(average)
输入3个整数,输出它们的平均值,保留3位小数。
#include <stdio.h>
int main()
{
int a,b,c;
double average;
scanf("%d%d%d",&a,&b,&c);
average = (a+b+c)/3.0;
printf("%.3lf\n",average);
return 0;
}
习题1-2 温度(temperature)
输入华氏温度f,输出对应的摄氏温度c,保留3位小数。提示:c=5(f-32)/9。
#include <stdio.h>
int main()
{
double f,c;
scanf("%lf",&f);
c = 5*(f-32)/9;
printf("%.3lf\n",c);
return 0;
}
习题1-3 连续和(sum)
输入正整数n,输出1+2+···+n的值。提示:目标是解决问题,而不是练习编程。
分析:1+2+···+n = (1+n)*n/2
#include <stdio.h>
int main()
{
int n,sum;
scanf("%d",&n);
sum = (1+n)*n/2;
printf("%d\n",sum);
return 0;
}
习题1-4 正弦和余弦(sincos)
输入正整数n(n<360),输出n度的正弦、余弦函数值。提示:使用数学函数。
分析:需将角度换算为弧度。角度180度 对应 弧度1pi
#include <stdio.h>
#include <math.h>
int main()
{
double n/*角度*/,
x/*弧度*/;
const double pi = 4.0*atan(1.0);
scanf("%lf",&n);
x = n/180*pi;
printf("%lf\n",sin(x));
printf("%lf\n",cos(x));
return 0;
}
习题1-5 距离(distance)
输入4个浮点数x1,y1,x2,y2,输出平面坐标系中点(x1,y1)到点(x2,y2)的距离。
分析:平面两点间距离:d=sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1))
sqrt()求算术平方根
#include <stdio.h>
#include <math.h>
int main()
{
double x1,y1,x2,y2,d;
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
d = sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
printf("%lf\n",d);
return 0;
}
习题1-6 偶数(odd)
输入一个整数,判断它是否为偶数。如果是,则输出“yes”,否则输出“no”。提示:可以用多种方法判断。
分析:除了%2,今天又学到一种新的方法:if(n&1),与1按位与,结果为1则是奇数,为0是偶数
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
if(n&1) printf("no");/*是奇数*/
else printf("yes");/*是偶数*/
return 0;
}
习题1-7 打折(discount)
一件衣服95元,若消费满300元,可打八五折。输入购买衣服件数,输出需要支付的金额(单位:元),保留两位小数。
#include <stdio.h>
int main()
{
int n;
double money;
scanf("%d",&n);
money = 95*n;
if(money>=300)
money*=0.85;
printf("%.2lf\n",money);
return 0;
}
习题1-8 绝对值(abs)
输入一个浮点数,输出它的绝对值,保留两位小数。
#include <stdio.h>
int main()
{
double n;
scanf("%lf",&n);
if(n>0)
printf("%.2lf\n",n);
else
printf("%.2lf\n",-n);
return 0;
}
习题1-9 三角形(triangle)
输入三角形三边长度值(均为正整数),判断它是否能为直角三角形的三个边长。如果可以,则输出“yes”,如果不能,则输出“no”。如果根本无法构成三角形,则输出“not a triangle”。
分析:先判断能否构成三角形,再进一步判断能否构成直角三角形。
#include <stdio.h>
int main()
{
int a,b,c,t;
scanf("%d%d%d",&a,&b,&c);
if(a>c)
{t=a;a=c;c=t;}
if(b>c)
{t=b;b=c;c=t;}/*这2个if语句确保了c是最长的边*/
if(a+b<=c)
printf("not a triangle\n");
else
if(a*a+b*b == c*c)
printf("yes\n");
else
printf("no\n");
return 0;
}
习题1-10 年份(year)
输入年份,判断是否为闰年。如果是,则输出“yes”,否则输出“no”。提示:简单地判断除以4的余数是不够的。
#include <stdio.h>
int main()
{
int y;
scanf("%d",&y);
if(y%4==0 && y%100!=0 || y%400==0)
printf("yes\n");
else
printf("no\n");
return 0;
}