本帖最后由 TYUTlfx 于 2020-4-12 08:37 编辑
学了一段时间C语言,今天在CCF上找了真题来做,结果不管怎么修改都只有70分,求大佬们给看看可能是哪里的问题。
之前头脑混乱忘了发题了,直接一串代码,还有大佬给看,真是太谢谢了。把题补上,大家再帮忙看看呗,谢谢谢谢。
#include <stdio.h>
#define true 1
#define false 0
int seven(int a);
int main()
{
int n, num = 1, cnt = 0, i = 1;
int a[4] = {0, 0, 0, 0,};
scanf("%d", &n);
while (cnt != n)
{
num++;
if (num % 7 == 0 || seven(num))
{
a[num % 4] += 1;
continue;
}
cnt++;
}
printf("%d\n%d\n%d\n%d", a[1], a[2], a[3], a[0]);
return 0;
}
int seven(int a)
{
int n = a, cn = 1, b = false;
while (n != 0)
{
if (n % 10 == 7)
{
b = true;
break;
}
n /= 10;
}
return b;
}
关于数组的初始化与输出没有使用循环来做是因为另一个问题,就是如果使用for (int i = 0; i < n; i++)这种格式,会导致编译出错,如果有大佬知道原因也请告诉我一下。
这段代码感觉逻辑上应该没有问题,也测试了很多样例,答案都没什么问题,但始终拿不到满分,还是很郁闷的,请大家帮帮忙,谢谢您。
以下是悲惨的提交经历
|