C语言pta简单输出整数

C语言 pta原题

img


我第一次做函数的题目。自己的代码运行有问题,希望大家帮我看看。

#include<stdio.h>
int main()
{
    void PrintN(int N);//声明函数 
    int N;
    scanf("%d",&N);
    PrintN(N);
    return 0;
}
    void PrintN(int N)//定义函数 
    {
        for(int i=1;i<=N;i++)
        {
        printf("%d\n",i);
        }
    }



【以下回答由 GPT 生成】

问题的代码中没有明确的错误,但是缺少了对输入的合法性进行检查的代码。如果输入的N不是一个合法的整数,程序就会出现问题。下面是一个修改后的代码,在输入N之前,增加了对输入的合法性进行检查的代码:

#include <stdio.h>
#include <ctype.h>
#include <stdbool.h>

bool isValidInput(char* input);

void PrintN(int N);

int main()
{
    int N;
    char input[100];
    printf("请输入一个整数:");
    fgets(input, sizeof(input), stdin);

    if (isValidInput(input))
    {
        sscanf(input, "%d", &N);
        PrintN(N);
    }
    else
    {
        printf("输入的内容不是合法的整数。\n");
    }

    return 0;
}

bool isValidInput(char* input)
{
    for (int i = 0; input[i] != '\0'; i++)
    {
        if (!isdigit(input[i]) && input[i] != '-')
        {
            return false;
        }
    }
    return true;
}

void PrintN(int N)
{
    for (int i = 1; i <= N; i++)
    {
        printf("%d\n", i);
    }
}

这样修改后,程序会先读取用户的输入作为一个字符串,然后使用isValidInput函数对输入进行检查,判断输入是否合法。如果输入合法,再使用sscanf函数将字符串转换为整数,并调用PrintN函数进行输出。如果输入不合法,就会打印出相应的提示信息。

这样的修改可以提高代码的鲁棒性,防止用户输入非法的字符串导致程序出错。



【相关推荐】



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

#include<stdio.h>
    void PrintN(int N)//定义函数 
    {
        for(int i=1;i<=N;i++)
        {
        printf("%d\n",i);
        }
    }
int main()
{
    void PrintN(int N);//声明函数 
    int N;
    scanf("%d",&N);
    PrintN(N);
    return 0;
}

 
 
 

试试这个