题目:输入3个整数,输出它们的平均数,保留3位小数
分析:主要考察的是C语言打印函数(printf)的输出格式 + 强制类型转换
C中格式字符串的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项。各项的意义介绍如下:
表示输出类型的格式字符 格式字符意义
d 以十进制形式输出带符号整数(正数不输出符号)
G 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大于等于精度时使用
i 有符号十进制整数(与%d相同)
o 以八进制形式输出无符号整数(不输出前缀O)
x 以十六进制形式输出无符号整数(不输出前缀OX)
u 以十进制形式输出无符号整数
更多的说明可以看 这里
程序:
02
03 int main()
04 {
05 int a = 0;
06 int b = 0;
07 int c = 0;
08
09 scanf( "%d %d %d" , & a , &b , & c);
10 printf( "%.3lf \n " , ( a + b + c) / 3.0); /* type conversion */
11
12 return 0;
13 }
习题1-2 温度(temperature)
题目:输入华氏温度f,输出对应的摄氏温度c,保留3位小数,提示:c = 5(f - 32) / 9
分析:同上题,主要考察的是C语言打印函数(printf)的输出格式
程序:
02
03 int main ()
04 {
05 float f = 0;
06 float c = 0;
07
08 scanf( "%f" , & f);
09 c = 5 * ( f - 32) / 9;
10 printf( "%.3lf \n " , c);
11
12 return 0;
13 }
习题1-3 连续和(sum)
题目:输入正整数n,输出1 + 2 + ... + n的值
分析:这个就没什么好分析的了吧?高斯定理或者循环相加都可以的。
程序:
02
03 int main()
04 {
05 int i = 0;
06 int n = 0;
07 int sum = 0;
08
09 scanf( "%d" , &n);
10 for ( i = 1; i <= n; i ++)
11 {
12 sum += i;
13 }
14 printf( "%d \n " , sum);
15
16 return 0;
17 }
习题1-4 正弦和余弦(sincos)
题目:输入正整数n(n < 360),输出n度的正弦、余弦函数值。
分析:考察的是数学函数的使用,注意角度和弧度的换算关系:180度 = pi弧度
注意:如果使用gcc编译,那么在编译的过程中会出现这种错误:undefined reference to `cos' 和undefined reference to `sin'。这是因为头文件math.h需要额外的链接库,gcc默认编译的时候是没有的。解决方法是:gcc test.c -lm -0 test 其中,lm的意思就是link math
程序:
02 #include <math.h>
03
04 #define pi 4.0 * atan(1.0)
05
06 int main()
07 {
08 int n = 0;
09
10 scanf( "%d" , &n);
11 if (n > 360)
12 {
13 printf( "No answer. \n ");
14 return 0;
15 }
16 printf( "sin = %lf, cos = %lf \n " , sin((n * pi) / 180 ), cos((n * pi) / 180));
17
18 return 0;
19 }
习题1-5 距离(distance)
题目:输入4个浮点数x1, y1, x2, y2,输出平面坐标系点(x1, y1)到点(x2, y2)的距离
分析:1、平面直角坐标系中,两点间的距离公式为:根号下(|X1-X2|的平方+|Y1-Y2|的平方)
2、平方函数sqrt属于math.h文件中
程序:
02 #include <math.h>
03
04 int main()
05 {
06 double x1 = 0;
07 double y1 = 0;
08 double x2 = 0;
09 double y2 = 0;
10 double distance = 0;
11
12 scanf( "%lf %lf %lf %lf" , & x1 , & y1 , & x2 , & y2);
13 distance = sqrt(( x1 - y1) * ( x1 - y1) + ( x2 - y2) * ( x2 - y2));
14 printf( "%lf \n " , distance);
15
16 return 0;
17 }
习题1-6 偶数(odd)
题目:输入一个整数,判断它是否为偶数。如果是,则输出"yes",否则输出"no"
分析:too simple, sometimes naive
程序:
02
03 int main()
04 {
05 int n = 0;
06
07 scanf( "%d" , &n);
08 if (n % 2 == 0)
09 {
10 printf( "yes \n ");
11 }
12 else
13 {
14 printf( "no \n ");
15 }
16
17 return 0;
18 }
习题1-7 打折(discount)
题目:一件衣服95元,若消费满300元,可打八五折。输入购买衣服件数,输出需要支付的金额,保留两位小数
分析:同上
程序:
02
03 #define DISCOUNT 0.85
04 #define PRICE 95.0
05 #define CONDITION 300
06
07 int main()
08 {
09 int n = 0;
10 double sum = 0;
11
12 scanf( "%d" , n);
13 sum = PRICE * n;
14 if ( sum >= CONDITION)
15 {
16 sum *= DISCOUNT;
17 }
18 printf( "%.2lf \n " , sum);
19
20 return 0;
21 }