这可能是一个简单的答案。我只用C编程了一个月。 我正在创建一个C程序,向用户显示菜单1-4。 菜单选项1-3向用户询问整数,当输入整数时,程序会写入或“绘制”该数量的“点”或句点。 每个第一个选项将执行相同的功能,但分别是while循环,do-while循环和for循环。 终止程序的唯一方法是在主菜单中选择4。
我的问题是如何让我的程序循环并继续正常工作。 当我执行程序时,它第一次正常工作,但程序循环回主菜单。没有其他选择可行。 IE:如果我再次为“点图”尝试输入一个整数,它就无法正常工作。
我也无法在任一菜单上验证字母或“非数字”的输入,如果您输入一个字母,它会破坏程序。
我不知道该做什么以及去哪里。 我不需要重写代码,也许只是一些关于在哪里采取它的想法。 我会接受提供的任何参考或链接。 我的不完整计划的副本包含在下面:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
system("cls");
int programRun=0;
int menuSelection=0;
int absmenuSelection=0;
int dotNumber=0;
int countNumber=0;
char enter;
while(programRun==0)
{
system("cls");
printf("\nplease make a number selection\n");
printf("Please select a choice:\n");
printf("[1] While loop...\n");
printf("[2] Do-While loop...\n");
printf("[3] For loop...\n");
printf("[4] Exit program...\n\n");
scanf("%d%c",&menuSelection,&enter);
absmenuSelection= abs(menuSelection);
if (absmenuSelection <1 || absmenuSelection>4)
{
}
switch (absmenuSelection)
{
case 1:
printf("\nPlease input a number for the amount of dots you wish to see...");
scanf("%d", &dotNumber);
if(dotNumber > 0)
{
while(countNumber<dotNumber)
{
countNumber++;
printf(".");
}
}
else{
printf("\nsorry, that is an invalid response. Now you have to try again.\n");
}
printf("\n");
system("pause");
break;
case 2:
printf("\nPlease input a number for the amount of dots you wish to see...");
scanf("%d", &dotNumber);
if(dotNumber > 0)
{
do
{
countNumber++;
printf(".",countNumber);
}
while( countNumber<dotNumber );
}
else
{
printf("\nsorry, that is an invalid response. Now you have to try again.\n");
}
printf("\n");
system("pause");
break;
case 3:
printf("\nPlease input a number for the amount of dots you wish to see...");
scanf("%d", &dotNumber);
if(dotNumber > 0)
{
for(countNumber=0;countNumber<dotNumber;countNumber++)
{
printf(".",countNumber + 1);
}
}
else
{
printf("\nsorry, that is an invalid response. Now you have to try again.\n");
}
printf("\n");
system("pause");
break;
case 4:
while(programRun>1)
programRun=1;
printf("\nOkay have a nice day");
return 0;
default:
printf("\nsorry that is an invalid statement, try again\n\n");
system("pause");
}}
system ("pause") ;
return 0;
}
答案 0 :(得分:0)
效果很好.....
在每个case:
countNumber=0;
或尝试
if(dotNumber > 0)
{
countNumber=0;
/*REST */
}
否则案例1:案例2:如果我在首先给dotNumber一个更高的值并且在最后给出更低的值后尝试2次
将无效修改强> C库函数void isdigit(int c)检查传递的字符是否为十进制数字字符。
if( isdigit(variableHere) )
{
//is a digit
}
示例o / p
please make a number selection
Please select a choice:
[1] While loop...
[2] Do-While loop...
[3] For loop...
[4] Exit program...
1
Please input a number for the amount of dots you wish to see 4
....
Press any key to continue . . .