gpt4 book ai didi

c - 为什么当输入大于9时程序会崩溃?

转载 作者:行者123 更新时间:2023-11-30 20:00:53 25 4
gpt4 key购买 nike

我不知道为什么它会在我的机器上崩溃,但确实如此

给你一个正整数,N,:

如果 1 <= N <= 9,则打印它的英文表示。即“一”代表 1,“二”代表 2,依此类推。否则打印“大于 9”(不带引号)。输入格式:

输入将仅包含一个整数 N 。

#include <stdio.h>

const char* itos2(int);

int main() {
/* Enter your code here. Read input from STDIN. Print output to STDOUT */
int a;
scanf("%i", &a );
printf("%s",((a >= 1 || a <= 9) ? itos2(a) : "Greater than 9"));

//printf("%s",itos2(a)); this doesn't crash provided a default label is set
return 0;
}

const char* itos2(int a)
{
const char* str [] = { "one" , "two", "three", "four", "five", "six", "seven", "eight", "nine"};
switch(a)
{
case 1 : return str[0];
case 2 : return str[1];
case 3 : return str[2];
case 4 : return str[3];
case 5 : return str[4];
case 6 : return str[5];
case 7 : return str[6];
case 8 : return str[7];
case 9 : return str[8];
default: return "Greater than 9";
}
}

最佳答案

状况a >= 1 || a <= 9始终为真,这意味着您的 itos2无论您输入什么内容,始终都会调用 a 。如果a位于 [1, 9] 之外范围,函数 itos2无法返回任何内容,产生未定义的行为(在您的情况下发生崩溃)。

显然你的意思是a >= 1 && a <= 9作为您调用itos2的条件。 && ,不是|| .

关于c - 为什么当输入大于9时程序会崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38732590/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com