C语言编程题目问题,CCF真题,求找出问题(应该不是错误)
本帖最后由 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 = {0, 0, 0, 0,};
scanf("%d", &n);
while (cnt != n)
{
num++;
if (num % 7 == 0 || seven(num))
{
a += 1;
continue;
}
cnt++;
}
printf("%d\n%d\n%d\n%d", a, a, a, a);
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++)**这种格式,会导致编译出错,如果有大佬知道原因也请告诉我一下。
这段代码感觉***逻辑上应该没有问题***,也测试了很多样例,答案都没什么问题,但始终拿不到满分,还是很郁闷的,请大家帮帮忙,谢谢您。
以下是悲惨的提交经历
你要不要把你第二张图打下马,姓名和邮箱都出来了。 C不支持临时变量在for循环中定义,C++是支持的 MarioCrane 发表于 2020-4-9 19:36
C不支持临时变量在for循环中定义,C++是支持的
不,那样会爆零的 是不是爆int了?换uint或者ll试一试? 子函数变量cn是用来干什么的? 本帖最后由 Vjmms 于 2020-4-9 23:55 编辑
你在 main 函数中的 while 语句逻辑有问题。写了个100分的代码,你参考一下。
#include <stdio.h>
int seven(int num){
while (num != 0){
if (num % 10 == 7){
return 1;
}
num = num / 10;
}
return 0;
}
int main() {
int i;
int cnt = 0, skipTimes = 0;
int skip[] = {0, 0, 0, 0};
int n;
scanf("%d", &n);
while (cnt - skipTimes < n) {
cnt++;
if (cnt % 7 == 0 || seven(cnt)) {
skip[(cnt-1) % 4] += 1;
skipTimes++;
}
}
for (i = 0; i < 4; i++) {
printf("%d\n", skip);
}
return 0;
} 没有 发表于 2020-4-9 19:33
你要不要把你第二张图打下马,姓名和邮箱都出来了。
谢谢提醒,之前{:1_909:}没注意 klamauk 发表于 2020-4-9 20:51
子函数变量cn是用来干什么的?
哦哦,之前把判断位数和判断是否有七分开写的,改的时候忘记删了 huzpsb 发表于 2020-4-9 20:04
是不是爆int了?换uint或者ll试一试?
能给解释下爆零是什么意思吗?我不懂呀{:1_924:}
页:
[1]
2