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.写出以下表达式的结果,一个结果一行:
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.
------------恢复内容结束------------