航空航天大类C语言程设
第一次上机及练习赛:
当然这些题都很基础,不过写这个Blog是通过这些基础的代码在C/C++语言入门时注意一些基础问题(毕竟这些东西属于初心者向了(o゚▽゚)o ),话不多谈,直接开干。
Q1(第一次上机 E题)
题意概括(今后所有题意舍去不必要的背景和人名迫害):
在 100 100 100以内整数的加减乘除内,有一个一个表达式 a ÷ b ÷ c a÷b÷c a÷b÷c。如果在这个式子里加上括号会导致可能有不同的计算顺序,导致有不同的计算结果。题目要求计算不同计算顺序结果的平均值。
理解:
就两个除号,怎么打括号也就只有两种计算结果了, ( a ÷ b ) ÷ c (a÷b)÷c (a÷b)÷c 和
a ÷ ( b ÷ c ) a÷(b÷c) a÷(b÷c),当然这里用分数写可能更直观,就是 a b c \frac{a}{bc} bca和 a ÷ b c = a c b a÷\frac{b}{c}=\frac{ac}{b} a÷cb=bac了,平均值自然就是除以2了。当然可以直接做一个初中级别的分式化简题直接电脑计算答案 a ( 1 + c 2 ) 2 c b \frac{a(1+c^{2})}{2cb} 2cba(1+c2)了,当然肯定不是本题的用意了( ̄▽ ̄)~*
至于在C语言做整数除法要注意,int类型做除法‘/’默认是整除的,比如写一个:
a = 1/5;
#结果输出结果是a = 0,就是算的1除以5整除的结果了
要得到浮点运算的结果,常数可以小数点.0或者*1.0
而a = 1.0/5; 结果一位小数保留就是0.2了
代码:(博文附的代码保证 100 % 100\% 100%在评测系统AC)
#include<stdio.h>
int main() {
int a, b, c;
scanf("%d%d%d", &a, &b, &c);
double r1, r2, r;
r1 = (a * 1.0 / b) / c;
r2 = a / (b * 1.0 / c);
r = (r1 + r2) * 0.5;
printf("%.7lf", r);
return 0;
}
输入样例(三个整数空格隔开)
1 2 3
输出样例(保留7位小数)
0.8333333
Q2(第一次上机H题)
输入:一行,两个正整数 a a a和 b b b
输出:一行,