【发布时间】:2016-11-14 00:43:44
【问题描述】:
我对 C 的基础感到满意:-
此程序中有两次 scanf() 迭代。第一个功能齐全。 第二次出现什么都不做,而是退出程序并返回到标准命令提示符行。
另外,我的第二个 for 循环只打印前 4 个数字而不是 5 个。
代码如下:
int main() {
int i;
int iNum[4]
int iMenu = 0;
printf("\n\n\tPlease enter five numbers: ");
for (i = 0; i < 4; i++) {
scanf("%d ", &iNum[i]);
}
printf("\n\tThank you. Here are your numbers: \n\t");
for (i = 0; i < 4; i++) {
printf("%d", iNum[i]);
}
printf("\n\tMenu:");
printf("\n1\tSort your numbers ascending.");
printf("\n2\tSort your numbers descending.");
printf("\n3\tQuit program");
printf("\n\nWhat would you like to do?\n\tEnter your option here: ");
scanf(" %d", &iMenu);
switch (iMenu) {
case 1:
printf("\nCase1testPrint");
sortAsc();
break;
case 2:
printf("\nCase2testPrint");
sortDesc();
break;
. . .//rest of code }
当程序到达第二个 scanf() 时,程序结束并返回到命令提示符。
这令人莫名其妙,我尝试了许多可能出错的变体。请提供您可以提供的。
这是我运行程序时的样子。注意我的条目“1”出现在命令行而不是程序中:
C:\Users\Cortland\Documents\C projects>gcc arraysort.c
C:\Users\Cortland\Documents\C projects>a
Please enter five numbers: 3
6
5
4
5
Thank you. Here are your numbers:
3 6 5 4
Menu:
1 Sort your numbers ascending.
2 Sort your numbers descending.
3 Quit program
What would you like to do?
Enter your option here:
C:\Users\Cortland\Documents\C projects>1
【问题讨论】:
-
您的文本要求此人输入五个数字,但您的数组只有 4 的空间,而您的代码实际上只有 4 个数字。但是您的输出似乎显示它要求五个数字。此处不匹配。
-
for (i = 0; i < 4; i++) {将迭代 0、1、2、3。为什么不是 4?因为<不包括= -
那不是你的真实代码。
iNum的声明中缺少分号。 (您还缺少#include <stdio.h>,但松散的编译器可能会让您在没有它的情况下进行编译。)除非您复制并粘贴出现问题的实际代码,否则我们无法区分实际代码中的错误和错误你在总结的时候介绍了。
标签: c