吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1614|回复: 14
收起左侧

[已解决] C语言编程题目问题,CCF真题,求找出问题(应该不是错误)

[复制链接]
TYUTlfx 发表于 2020-4-9 18:15
本帖最后由 TYUTlfx 于 2020-4-12 08:37 编辑

学了一段时间C语言,今天在CCF上找了真题来做,结果不管怎么修改都只有70分,求大佬们给看看可能是哪里的问题。

之前头脑混乱忘了发题了,直接一串代码,还有大佬给看,真是太谢谢了。把题补上,大家再帮忙看看呗,谢谢谢谢。
3.png
2.png

#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++)这种格式,会导致编译出错,如果有大佬知道原因也请告诉我一下。
这段代码感觉逻辑上应该没有问题,也测试了很多样例,答案都没什么问题,但始终拿不到满分,还是很郁闷的,请大家帮帮忙,谢谢您。



以下是悲惨的提交经历
1.png


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

没有 发表于 2020-4-9 19:33
你要不要把你第二张图打下马,姓名和邮箱都出来了。
MarioCrane 发表于 2020-4-9 19:36
huzpsb 发表于 2020-4-9 20:02
MarioCrane 发表于 2020-4-9 19:36
C不支持临时变量在for循环中定义,C++是支持的

不,那样会爆零的
huzpsb 发表于 2020-4-9 20:04
是不是爆int了?换uint或者ll试一试?
klamauk 发表于 2020-4-9 20:51
子函数变量cn是用来干什么的?
Vjmms 发表于 2020-4-9 23:54
本帖最后由 Vjmms 于 2020-4-9 23:55 编辑

你在 main 函数中的 while 语句逻辑有问题。写了个100分的代码,你参考一下。
[C] 纯文本查看 复制代码
#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[i]);
        }
        return 0;
}
 楼主| TYUTlfx 发表于 2020-4-10 08:46
没有 发表于 2020-4-9 19:33
你要不要把你第二张图打下马,姓名和邮箱都出来了。

谢谢提醒,之前没注意
 楼主| TYUTlfx 发表于 2020-4-10 08:48
klamauk 发表于 2020-4-9 20:51
子函数变量cn是用来干什么的?

哦哦,之前把判断位数和判断是否有七分开写的,改的时候忘记删了
 楼主| TYUTlfx 发表于 2020-4-10 08:49
huzpsb 发表于 2020-4-9 20:04
是不是爆int了?换uint或者ll试一试?

能给解释下爆零是什么意思吗?我不懂呀
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-30 05:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表