A:输入入门(3)
题目说以0 0结束,也就是a和b同时为0的时候结束
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int a, b;
while (true) {
cin >> a >> b;
if (a == 0 && b == 0) break;
cout << a + b << endl;
}
return 0;
}
B:输入入门(2)
题目说第一行一个整数n,表示有n组测试数据,那么就要循环n次
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n, a, b;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a >> b;
cout << a + b << endl;
}
return 0;
}
C:输入入门(1)
题目说了以EOF为结束。注 :当题目说了多组测试数据而没有明确说有n组或以什么作为结束时我们默认也认为是以EOF作为结束
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int a, b;
while (~scanf("%d%d", &a, &b)) // 等价于scanf("%d%d", &a, &b) != EOF
printf("%d\n", a + b);
return 0;
}
D:输出入门
题目说两组数据间留一个换行,也就是最后一组后面不加换行,但是我们不知道什么时候是最后一组,所以可以在除第一组数据外的数据前面加一个换行。
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int a, b;
bool head = true;
while (true) {
cin >> a >> b;
if (a == 0 && b == 0) break;
if (head) head = false;
else cout << endl;
cout << a + b << endl;
}
return 0;
}
E:C语言实验题――整除
同时被3和5整除,所以我们要用逻辑与运算符
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n;
cin >> n;
if (n % 3 == 0 && n % 5 == 0) cout << "Yes" << endl;
else cout << "No" << endl;
return 0;
}
当然,想一想也知道,3和5的公倍数就是15的倍数
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n;
cin >> n;
if (n % 15 == 0) cout << "Yes" << endl;
else cout << "No" << endl;
return 0;
}
F:C语言实验题――求平均值
遇到小数的题建议使用double,而且可以用int存储的数据不建议使用double存。
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n;
double m, sum = 0;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
scanf("%lf", &m);
sum += m;
}
printf("%.2f\n", sum / n);
return 0;
}
G:C语言实验题――圆周率
既然求的是PI,而给出的公式是PI/4。那么我们可以将等式的两边都乘4
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
double p = 0;
int n;
scanf("%d", &n);
for (int i = 1; i <= n; i++) {
p += 4.0 / (4 * i - 3);
p -= 4.0 / (4 * i - 1);
}
printf("%.5f\n", p);
return 0;
}
H:成绩评估
标准的switch题目,对10位进行判断就好,当然也可以使用if-else来解决
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n;
while (~scanf("%d", &n)) {
switch(n / 10) {
case 10 :
case 9 : cout << "A" << endl; break;
case 8 : cout << "B" << endl; break;
case 7 : cout << "C" << endl; break;
case 6 : cout << "D" << endl; break;
case 5 :
case 4 :
case 3 :
case 2 :
case 1 :
case 0 : cout << "E" << endl; break;
default : cout << "Score is error!" << endl;
}
}
return 0;
}
I:亲和数
只许求出a和b的真约数和就可以了,其实求n的真约数只需循环sqrt(n)次,我这里循环了n次。对于这题应该可以解决。
#include <iostream>
#include <cstdio>
using namespace std;
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
int a, b, sa = 0, sb = 0;
cin >> a >> b;
for (int i = 1; i < a; i++) {
if (a % i == 0)
sa += i;
}
for (int i = 1; i < b; i++) {
if (b % i == 0)
sb += i;
}
if (a == sb && b == sa) puts("YES");
else puts("NO");
}
return 0;
}
J:求绝对值最大值
要求绝对值最大的数,那么就在比较的时候在两边加上abs函数
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main() {
int n, m, k = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> m;
if (abs(m) > abs(k)) {
k = m;
}
}
cout << k << endl;
return 0;
}
K:C语言实验题――最小公倍数和最大公约数
最大公约数和最小公倍数,求出一个就可以推出另一个,最大公约数比较好求,所以来求最大公约数
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main() {
int a, b, gcd;
cin >> a >> b;
for (gcd = a < b ? a : b; gcd >= 1; gcd --) {
if (a % gcd == 0 && b % gcd == 0)
break;
}
cout << a * b / gcd << " " << gcd << endl;
return 0;
}
可以了解一下辗转相除法和algorithm头文件下的__gcd函数
L:C语言实验题――分数序列
和斐波那契数列相似。
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int main() {
int a = 2, b = 1, c, n;
double sum = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
sum += 1.0 * a / b;
c = a + b;
b = a;
a = c;
}
printf("%.6f\n", sum);
return 0;
}