C语言第三天

1.不好的表达式的例子

1 a=5;
2 c = (b=a+2) - (a=2);

c = (b = a+2) - (a=2);执行前和执行后有两个时间点p1和p2(用C语言标准来说叫做Sequence Point)。本例中,子表达式(a=2)的副作用在p1和p2之间是不确定的(不确定该副作用已经发生,也就是说a的值变为2)。然后,标准有这么一段,

第二条规则说时间点p1前的值(旧值)只能被用作计算新值。本例中,子表达式(b=a+2)中b的新值是由a来确定的(2是常量,在此不考虑),而a所指定的值是p1前的值还是新值是不确定的(参见第一>段文字)。所以就有问题了。比如,clang编译器会报警告。

如果非要写成一行,可以写做 c = (b = a+2, a=2, b-a); 因为操作符",", "||"和"&&"都对应一个序列点(Sequence Point)。

2.写出以下代码执行后,t1和t2的值,以空格隔开:

1 int a=14;
2 int t1 = a++;
3 int t2 = ++a;

正确答案:14 16

3.写出以下表达式的结果,一个结果一行:

6 + 5 / 4 - 2
2 + 2 * (2 * 2 - 2) % 2 / 3
10 + 9 * ((8 + 7) % 6) + 5 * 4 % 3 * 2 + 3 
1 + 2 + (3 + 4) * ((5 * 6 % 7 / 8) - 9) * 10
正确答案:
5
2
44
-627

3.逆序的三位数:

程序每次读入一个正三位数,然后输出逆序的数字。注意,当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入700,输出应该是7。

提示:用%10可以得到个位数,用/100可以得到百位数...。将这样得到的三个数字合起来:百位*100+十位*10+个位,就得到了结果。

注意:除了题目要求的输出,不能输出任何其他内容,比如输入时的提示,输出时的说明等等都不能。这道题目要求输出逆序的数字,程序就只能输出这个数字,除此之外任何内容都不能输出。

输入格式:

每个测试是一个3位的正整数。

输出格式:

输出逆序的数。

输入样例:

123

输出样例:

321

1 #include<stdio.h>
2 int main()
3 {
4     int a;
5     scanf("%d",&a);
6     printf("%d",a%10*100+a/10%10*10+a/100);
7     return 0;
8 }

4.厘米换算英尺英寸

如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等于12英寸。

输入格式:

输入在一行中给出1个正整数,单位是厘米。

输出格式:

在一行中输出这个厘米数对应英制长度的英尺和英寸的整数值,中间用空格分开。

输入样例:

170

输出样例:

5 6
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int cm=0;
 5     scanf("%d",&cm);
 6     int foot = cm / 30.48;
 7     int inch = ((cm / 30.48) - foot)*12;
 8     printf("%d %d",foot,inch);
 9     return 0;
10  } 

5.计算摄氏温度

给定一个华氏温度F,本题要求编写程序,计算对应的摄氏温度C。计算公式:C=5×(F−32)/9。题目保证输入与输出均在整型范围内。

输入格式:

输入在一行中给出一个华氏温度。

输出格式:

在一行中按照格式“Celsius = C”输出对应的摄氏温度C的整数值。

输入样例:

150
 

输出样例:

Celsius = 65
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int F;
 5     int C=0;
 6     scanf("%d",&F);
 7     C=5*(F-32)/9;
 8     printf("Celsius = %d",C);
 9     return 0;
10  } 

6.是不是太胖了

据说一个人的标准体重应该是其身高(单位:厘米)减去100、再乘以0.9所得到的公斤数。已知市斤的数值是公斤数值的两倍。现给定某人身高,请你计算其标准体重应该是多少?(顺便也悄悄给自己算一下吧……)

输入格式:

输入第一行给出一个正整数H(100 < H ≤ 300),为某人身高。

输出格式:

在一行中输出对应的标准体重,单位为市斤,保留小数点后1位。

输入样例:

169
 

输出样例:

124.2
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int H;
 5     double W; 
 6     scanf("%d",&H);
 7     W=(H-100)*0.9*2;
 8     printf("%.1f",W);
 9     return 0;
10  } 

 7.求整数均值

本题要求编写程序,计算4个整数的和与平均值。题目保证输入与输出均在整型范围内。

输入格式:

输入在一行中给出4个整数,其间以空格分隔。

输出格式:

在一行中按照格式“Sum = 和; Average = 平均值”顺序输出和与平均值,其中平均值精确到小数点后一位。

输入样例:

1 2 3 4
 

输出样例:

Sum = 10; Average = 2.5
 1 #include<stdio.h>
 2 int main()
 3 {
 4     int a,b,c,d;
 5     int Sum=0;
 6     double Average;
 7     scanf("%d %d %d %d",&a,&b,&c,&d);
 8     Sum = a+b+c+d;
 9     Average = Sum / 4.0;
10     printf("Sum = %d; Average = %.1f",Sum,Average);
11     return 0;
12  } 

8.















------------恢复内容结束------------

猜你喜欢

转载自www.cnblogs.com/cx710828xz/p/12443223.html