大家出的题太难了,我说一个简单的供初学者联系 数7
数7大家应该都玩过, 一桌人从1开始数,遇到以7结尾或者7的倍数不能说出来,喊"过".如果把数字喊出来了,就出局了.下面的人接着数.我的题目是共20个人按1-20编号,大家开始数7, 如果每一个人都把以7结尾或者7的倍数的数喊出来了, 请问最后一个人的编号是多少?
#include <stdio.h> int main(void) { int a[21] = { 0 }, i, k = 0, j = 1; int m = 0; for (i = 1; i <= 20; i++) a[i] = i; i = 1; while (m < 19) { if (a[i]) k++; if ((k % 7 == 0) && a[i]) { a[i] = 0; printf("%-3d--> ", i); m++; k = 0; if (j++ % 6 == 0) printf("\n"); } if (i == 20) i = 0; ++i; } printf("\n\nThe last one is "); for (i = 0; i <=20; i++) { if (a[i] != 0) printf("number %d\n", i); } printf("\n"); return 0; }
#include <stdio.h> #define N 101 int main(void) { int a[N] = { 0 }, i, k = 0, j = 1; int m = 0, n; printf("Please input n:"); scanf("%d", &n); // 千万别输比N - 1大的数哦, 要不然先改N的宏:) printf("\n"); for (i = 1; i <= n; i++) a[i] = i; i = 1; while (m < n - 1) { if (a[i]) k++; if ((k % 7 == 0) && a[i]) { a[i] = 0; printf("%-3d--> ", i); m++; k = 0; if (j++ % 6 == 0) printf("\n"); } if (i == n) i = 0; ++i; } printf("\n\nThe last one is "); for (i = 0; i <= n; i++) { if (a[i] != 0) printf("number %d\n", i); } printf("\n"); return 0; }