Tips:代码不一定最优解,但一般能懂(可能吧),用的是VS2022。
1.编程求解百元百鸡问题
代码
#include <stdio.h>
int main()
{
int a , b, c,x,y,z=0;
for (a = 1; a < 100; a++)
{
x = 5 * a;
for (b = 1; b < 100; b++)
{
y = 3 * b;
for (c = 1; c < 100; c++)
{
if (c % 3 == 0)
{
z = c / 3;
}
else continue;
if (a + b + c == 100 && x + y + z == 100)
printf("%5d%5d%5d\n", a, b, c);
}
}
}
return 0;
}
思路:很傻的方法(指考虑所有情况),需要注意就是小鸡个数要是3的倍数,不然金钱不是整数。
2.硬币兑换问题
代码
#include <stdio.h>
int main()
{
int n = 0,count=0,sum=0;
int i, j, k;
scanf("%d", &sum);
for (i = 1; i < sum; i++)
{
for (j = 1; j < sum; j++)
{
for (k = 1; k < sum; k++)
{
n = i * 1 + j * 2 + k * 5;
if (n == sum)
count++;
}
}
}
printf("count=%d", count);
return 0;
}
思路:和上题一样。
3.输出图形
代码
#include <stdio.h>
int main()
{
int n = 0;
for (int i = 1; i <= 7; i++)
{
for (int j = 1; j <= 30-i; j++)
{
printf(" ");
}
int k = i;
n = 2*k-1;
while (n != 0)
{
printf("%d", k);
n--;
}
printf("\n");
}
for (int i = 6; i >= 1; i--)
{
for (int j = 30 - i; j >= 1; j--)
{
printf(" ");
}
int k = i;
n = 2 * k - 1;
while (n != 0)
{
printf("%d", k);
n--;
}
printf("\n");
}
return 0;
}
思路:每行打印空格加数字,反正很乱,看懂比较需要时间。
Tips:因为只有一个样例且只需要打印,你甚至可以每行都printf解决(?
4.输出200以内所有能被7或17整除的偶数,并求和
代码
#include <stdio.h>
int main()
{
int sum = 0,cnt=0;
int i;
for (i = 1; i <= 200; i++)
{
if (i % 2 == 0)
{
if (i % 7 == 0 || i % 17 == 0)
{
printf("%6d", i);
cnt++;
sum += i;
}
}
if (cnt == 5)
{
cnt = 0;
printf("\n");
}
}
printf("\n");
printf("sum=%d", sum);
return 0;
}
思路:找出偶数,再找出与题目相符的数,注意每打印五个数换行一次。
Tip:你也可以直接每行打印。
5.素数问题:输入正整数n,m,求不大于n的m个互不相同的最大的素数
代码:
#include <stdio.h>
int main()
{
int n, m;
scanf("%d,%d", &n,&m);
int i, j, k;
i = n;
while ( i!= 0)
{
int cnt = 0;
for (j = i-1; j > 1; j--)
{
if (i % j == 0)
cnt++;
}
if (cnt == 0)
{
printf("%d\n", i);
m--;
}
if (m == 0)
{
break;
}
i--;
}
return 0;
}
思路:逆序,从输入值往下寻找,素数是只能被1和本身相除的数(1不是)。
6.求序列和
代码
#include <stdio.h>
int main()
{
int a, n,i;
int j = 0,sum = 0;
scanf("%d,%d", &a, &n);
for (i = 0; i < n; i++)
{
j = j * 10 + a;
sum += j;
printf("%d",j);
if (i == n - 1)
{
break;
}
printf("+");
}
printf("=%d", sum);
return 0;
}
思路:每一项是前一项十倍加a,打印时要注意加号是否打印。