军训后上了一周的学,对C语言还是一无所知的状态,勉勉强强看完了翁恺C语言全部课程,开始自己尝试完成C语言入门级题目了。
## 题目样例1
给定一个整数 x,判断它能否被 3,5,7整除,并输出以下信息:
1、能同时被3,5,7整除(直接输出 `3 5 7`,每个数中间一个空格);
2、只能被其中两个数整除(按从小到大的顺序输出两个数,例如:`3 5` 或者 `3 7` 或者 `5 7`,中间用空格分隔);
3、只能被其中一个数整除(输出这个除数);
4、不能被任何数整除,输出小写字符 `n`。
## 输入格式
输入一行,包括一个整数 x。
## 输出格式
输出一行,按照描述要求给出整数被 3,5,7整除的情况。
#include <stdio.h>
int main()
{
int x;
scanf("%d", &x);
if(x%3==0&&x%5==0&&x%7==0)
printf("3 5 7");
else if(x%3==0&&x%5==0&&!x%7==0)
printf("3 5");
else if(x%5==0&&x%7==0&&!x%3==0)
printf("5 7");
else if(x%3==0&&x%7==0&&!x%5==0)
printf("3 7");
else if(x%3==0&&!x%5==0&&!x%7==0)
printf("3");
else if(x%5==0&&!x%3==0&&!x%7==0)
printf("5");
else if(x%7==0&&!x%5==0&&!x%3==0)
printf("7");
else
printf("n");
return 0;
}
在这里我们可以了解&&是“同时满足”的关系,!表示否定。
%用于表示余数,/是除法的标志。
==的运用在于赋值,相当于计算中“=”的作用。
## 题目样例2
利用公式 :
x_1=\frac{-b+\sqrt{b^2-4ac}}{2a} , x_2=\frac{-b-\sqrt{b^2-4ac}}{2a}$$
求一元二次方程 ax^2+bx+c=0的根,其中 a 不等于 0。结果要求精确到小数点后 5位。
## 输入格式
输入一行,包含三个浮点数 a,b,c(它们之间以一个空格分开),分别表示方程 ax^2+bx+c=0的系数。
## 输出格式
输出一行,表示方程的解。
若两个实根相等,则输出形式为:`x1=x2=aaaa`;
若两个实根不等,在满足根小者在前的原则,则输出形式为:`x1=aaaa;x2=bbbb`;
若无实根输出 `No answer!`。
所有输出部分要求精确到小数点后 5 位,数字、符号之间没有空格。
#include <stdio.h>
#include <math.h>
int main() {
double a, b, c, y, x1, x2;
scanf("%lf %lf %lf", &a, &b, &c);
y = b * b - 4 * a * c;
if (y > 0) {
x1 = (-b + sqrt(y)) / (2 * a);
x2 = (-b - sqrt(y)) / (2 * a);
if (x1 > x2) {
double temp = x1;
x1 = x2;
x2 = temp;
}
printf("x1=%.5lf;x2=%.5lf\n", x1, x2);
} else if (y == 0) {
x1 = x2 = -b / (2 * a);
printf("x1=x2=%.5lf\n", x1);
} else {
printf("No answer!\n");
}
return 0;
}
一般来说浮点数用double定义而非float,这点值得注意。
并且,用double时后续用%lf更严谨。
运算中用到了数学公式,需要引入<math.h>。
if-else的入门已经基本掌握了,近期会尝试do-while和for之类的练习。