航空航天大类C语言程设第二次上机练习
第二期更新,主要是第二次上机和练习赛的内容。
Q1(上机A题)一个非负的浮点数(小数部分不超过六位),输出它的小数部分(六位小数保留)和整数部分(空格隔开)
这个题只要稍微熟悉一下变量声明就很好做了,注意给的是非负浮点数,所以少了个坑(狗头)
先给出代码
#include <stdio.h>
int main() {
double x;
scanf("%lf", &x);
int n = x;
double y = x - n;
printf("%d %.6lf", n, y);
return 0;
}
这里x是double
类型,而之后n是int
类型,把x的值赋给n,会涉及类型转换,这种方式浮点数转整数直接抹去小数部分保留整数部分,所以转换整型不同于取整函数。
不妨看下面两个例子:
int a = 2.333;
int b = -2.333;
#输出a和b的值
2 -2
对于正数,相当于 ⌊ x ⌋ \lfloor{x}\rfloor ⌊x⌋,取不大于 x x x的最大整数,但对于负数,相当于 ⌈ x ⌉ \lceil{x}\rceil ⌈x⌉,取大于 x x x的最小整数,所以说不说明数的正负形坑就出来了吧。
Q2(上机C题)
单项式求积:有多个单项式项式 A i A_{i} Ai, A i = k i × x p i A_i=k_i \times x^{p_i} Ai=ki×xpi,已知 k i k_{i} ki和 p i p_{i} pi,需要求这些单项式的乘积,并表达成一个简单的单项式形式 k × x p k \times x ^ p k×xp,,输出形式为k*x^p
,其中 k k k和 p p p为整数。
输入描述,连续多行
每行两个数,用空格分隔,分别为 k i k_i ki, p i p_i pi
如果某一行两个数的值为0 0
,则代表结束输入
单项式相乘,系数相乘,指数相加, ∏ i = 1 n A i = ( ∏ i = 1 n k i ) × x ∑ i = 1 n p i \prod_{i=1}^{n}A_{i} = (\prod_{i=1}^nk_i) \times x^{\sum_{i=1}^{n}p_{i}} ∏i=1nAi=(∏i=1nki)×x∑i=1npi
k k k, p p p的初值设为1和0,每次读入合法的 k i k_i ki和 p i p_i pi就用赋值运算符+=
和*=
更新 k k k, p p p的值,最后格式化输出
代码:
#include <stdio.h>
int main() {
int k = 1, p = 0, ki, pi;
while (1) {
scanf("%d %d", &ki, &pi);
if (ki == 0 && pi == 0) break;
else {
k *= ki, p += pi;
}
}
printf("%d*x^%d", k, p);
return 0;
}
输入样例:
3 5
6 10
0 0
输出样例:
18x^15
Q3(上机F题)
输入一个圆的圆心坐标 ( x , y ) (x,y) (x,y),和半径 r r r,再给出一条直线方程 A x +