PTA l1-005题,打印的时候有方框,为什么第三行的宏定义改成17打印的时候就没有方框了

img

img


PTA l1-005题,打印的时候有方框,为什么第三行的宏定义改成17打印的时候就没有方框了

因为16时,没有空间存放字符串结尾符,没🈶结尾符的字串不是完整字串,处理时容易出问题!
你把准考证号改成 15位数应该也是可以的

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7642642
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:PTA L1-015 跟奥巴马一起画方块 (15 分)
  • 除此之外, 这篇博客: PTA错题中的 L1-5 判断题: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    判断题的评判很简单,本题就要求你写个简单的程序帮助老师判题并统计学生们判断题的得分。
    输入格式:
    输入在第一行给出两个不超过 100 的正整数 N 和 M,分别是学生人数和判断题数量。第二行给出 M 个不超过 5 的正整数,是每道题的满分值。第三行给出每道题对应的正确答案,0 代表“非”,1 代表“是”。随后 N 行,每行给出一个学生的解答。数字间均以空格分隔。
    输出格式:
    按照输入的顺序输出每个学生的得分,每个分数占一行。
    ~# 问题描述:

    #include<stdio.h>
    int main()
    {
        int N,M,i;
        scanf("%d %d",&N,&M);
        int answergrade[M];
        int answer[M];
        int student[M];
        for(i=0;i<M;i++)
        {scanf("%d",&answergrade[i]);}
        for(i=0;i<M;i++)
        {scanf("%d",&answer[i]);}
        for(int j=0;j<N;j++)
        {
             answergrade[j]=0;
                if (student[i] == answer[i]) 
                {
                    student[j] += answergrade[i];
                }
        printf("%d\n", student[j]);
        }
       
    }
    

    第一行、第二行、第三行的循环是固定的for()赋值即可
    稍微要动点脑子的是之后每行给出学生的答案以及计算他的得分这里。

    ~# 原因分析:

    for (int j = 0; j < N; j++) {
            student[j] = 0;
            for (int i = 0; i < M; i++) {
                int sAnswer;
                scanf("%d", &sAnswer);
                if (sAnswer == answer[i]) {
                    student[j] += answergrade[i];
                }
            }
    
            printf("%d\n", student[j]);
    

    ~# 解决方案:


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^