第一题
求最大公约数和最小公倍数。输入两个正整数 m 和 n (m≤1000, n≤1000 ),求其最大公约数和最小公倍数。试编写相应程序。
#include<stdio.h>
int main() {
int m, n,a,b,c;
printf("请输入两个正整数m和n:(m<=1000,n<=1000,m>=n)\n");
scanf("%d %d", &m, &n);
a = m;
b = n;
while (b != 0) {
c = a % b;
a = b;
b = c;
}
printf("最大公约数为%d\n", a);
printf("最小公倍数为%d\n", m * n / a);
}
第二题
使用函数验证哥德巴赫猜想:任何一个不小于 6 的偶数均可表示为两个奇素数之和。例如 6=3+3,8=3+5,…,18=5+13。将 6~100 之间的偶数都表示成两个素数之和,打印时一行打印 5 组。试编写相应程序。
#include <stdio.h>
int prime(int n);
int main()
{
int m, i, a = 0;
for (int n = 6; n <= 100; n += 2) {
for (i = 3; i < n; i += 2) {
m = n - i;
if (prime(m) == 1 && prime(i) == 1) {
printf("%d=%d+%d ", n, i, m);
a++;
if (a % 5 == 0)
printf("\n");
break;
}
}
}
return 0;
}
int prime(int n)
{
int i;
for (i = 2; i < n && (n % i != 0); i++);
return n == i ? 1 : 0; //判断是否为素数,是返回1,否返回0
}
第三题
求一批整数中出现最多的数字。输入一个正整数 n(n≤1000),再输入 n 个整数,分析每个整数的每一位数字,求出现次数最多的数字。例如输入 3 个整数 1234、2345、3456,其中出现最多的数字是 3 和 4,均出现了 3 次。试编写相应程序。
#include<stdio.h>
int main()
{
int n,t=0;
int b[10];
int a,c;
for (int i = 0; i < 10; i++) {
b[i] = 0;
}
printf("你想要输入几个整数:(n<=1000)\n");
scanf("%d", &n);
printf("请输入这%d个整数(以空格隔开):\n",n);
for (int i = 1; i <= n; i++) {
scanf("%d", &a);
if (a == 0) b[0] == 0;
while (a != 0) {
c = a % 10;
a /= 10;
b[c]++;
}
}
for (int i = 0; i < 10; i++)
{
if (b[i] > t)
t = b[i];
}
for (int i = 0; i < 10; i++)
{
if (t==b[i])
printf(" %d", i);
}
return 0;
}
第四题
#include<stdio.h>
int main()
{
int n,m=0;
int a[6][6];
printf("请输入n:(1<=n<=6)\n");
scanf("%d", &n);
printf("输入%d阶方阵\n", n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
scanf("%d", &a[i][j]);
}
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < i + 1; j++)
if (a[i][j] == 0)
m++;
}
if (m != 0)
printf("YES");
else
printf("NO");
}
总结
以上就是C语言相关的作业练习和作者自己的思考,希望能帮到大家。