gpt4 book ai didi

c - 使用atoi查找最大和最小数字

转载 作者:太空宇宙 更新时间:2023-11-04 08:16:09 29 4
gpt4 key购买 nike

    scanf("%1c%2c %d %d %d %d %d %d %d %d %d %d",
&x, &y, &arr[0], &arr[1], &arr[2], &arr[3], &arr[4],
&arr[5], &arr[6], &arr[7], &arr[8], &arr[9]);
strcpy(string, x);
value1 = atoi(string);

strcpy(string, y);
value2 = atoi(string);

value_final = value1 + value2;

我正在尝试获取 -l-s 的 ascii 值,然后将它们与 ascii 值一起传递给 switch添加了,但是当我使用 atoi 时出现错误,我不确定当用户输入 -l 时您是否应该添加 ascii 值或 -s 还是另一种方法?

最佳答案

您的代码有几个问题:

  • 主要:switch 案例没有break; 子句。控制落入下一个子句,最后落入 default 语句。
  • 主要:char 数组和单个 char 变量之间的混淆:strcpy(string, x); 甚至不应该编译。
  • 您用于解析-l-s 的方法非常复杂并且可能是错误的。您应该使用字 rune 字。
  • 您不需要双重循环来查找数组中的最小或最大元素。一个循环就足够了,printf 语句应该在循环之外。 maxmin 未初始化,循环调用未定义的行为。
  • 标题说使用atoi():如果这是你的作业,你不应该使用scanf()

这是一个简化的版本:

int main(void) {
char option[3], buffer[32];
int i, min, max, value;

min = max = 0;
if (scanf("%2s", option) == 1) {
for (int i = 0; i < 10 && scanf("%31s", buffer) == 1; i++) {
value = atoi(buffer);
if (i == 0) {
min = max = value;
} else {
if (min > value)
min = value;
if (max < value)
max = value;
}
}
if (!strcmp(option, "-l")) {
printf("output: The largest number is %d\n", max);
return 0;
} else
if (!strcmp(option, "-s")) {
printf("output: The smallest number is %d\n", min);
return 0;
}
}
printf("You have entered an invalid option, try again next time.\n");
return 0;
}

关于c - 使用atoi查找最大和最小数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35688291/

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