C 确定要使用的正确循环
我试着自学C。为了好玩和我自己的发展,我创建了一个代码,提示用户输入字母等级,然后输出该字母等级的范围。以下是我到目前为止的情况:C 确定要使用的正确循环,c,loops,exit,C,Loops,Exit,我试着自学C。为了好玩和我自己的发展,我创建了一个代码,提示用户输入字母等级,然后输出该字母等级的范围。以下是我到目前为止的情况: //Ted C. Lim #include "stdio.h" int main() { char grade; printf("Enter a single character grade: "); scanf("%c", &grade); printf("You entered %c as the grade. ", g
//Ted C. Lim
#include "stdio.h"
int main()
{
char grade;
printf("Enter a single character grade: ");
scanf("%c", &grade);
printf("You entered %c as the grade. ", grade);
switch(grade)
{
case 'A':
printf("The grade range for A and A- is 100%% - 90%%.");
break;
case 'B':
printf("The grade range for B and B- is 80%% - 89%%.");
break;
case 'C':
printf("The grade range for C and C- is 70%% - 79%%.");
break;
case 'D':
printf("The grade range for D and D- is 60%% - 69%%.");
case 'F':
printf("The grade range for F is 0%% - 59%%.");
default:
printf("That grade does not exist.");
break;
}
}
如果运行该程序,您将看到它只询问用户一次,返回正确的输出,然后停止。我想做的是无限期地重复提示,直到用户输入类似“Q”的内容退出。我知道我应该在这里使用某种循环,但我不太确定如何应用它。这里有几个不同的选项,while和do-while循环都可以使用。就个人而言,我会说do-while循环更适合这种情况,主要是因为您确信希望程序至少提示用户一次。为了使用它,您需要将do放在printf语句之前,然后在末尾的一些scanf输入为!=“Q”您可以使用
while
循环以及另一个字符大小写退出循环
char grade;
while (1)
{
printf("Enter a single character grade (or 'X' to exit): ");
scanf(" %c", &grade);
printf("You entered %c as the grade. ", grade);
if (grade == 'X') // Or another letter, make it clear what you're using
{
break;
}
// Output code here...
}
我还建议您检查小写和大写字母。在开关
语句中:
case 'A':
case 'a':
printf("The grade range for A and A- is 100%% - 90%%.");
break;
if (grade == 'X' || grade == 'x')
{
break;
}
在if
语句中:
case 'A':
case 'a':
printf("The grade range for A and A- is 100%% - 90%%.");
break;
if (grade == 'X' || grade == 'x')
{
break;
}
要无限期地重复某个操作,可以将其包装在
while
循环中,并使用始终为真的条件(例如while(1){…}
),如下所示:
#include <stdio.h>
#include <ctype.h>
int main()
{
char grade;
while (1)
{
printf("Enter a single character grade (or Q to quit):\n");
scanf(" %c", &grade);
grade = toupper(grade);
if (grade == 'Q') break;
printf("You entered %c as the grade.\n", grade);
switch(grade)
{
case 'A':
printf("The grade range for A and A- is 100%% - 90%%.\n");
break;
case 'B':
printf("The grade range for B and B- is 80%% - 89%%.\n");
break;
case 'C':
printf("The grade range for C and C- is 70%% - 79%%.\n");
break;
case 'D':
printf("The grade range for D and D- is 60%% - 69%%.\n");
break;
case 'F':
printf("The grade range for F is 0%% - 59%%.\n");
break;
default:
printf("That grade does not exist.\n");
break;
}
}
return 0;
}
#包括
#包括
int main()
{
煤焦品位;
而(1)
{
printf(“输入单个字符的等级(或Q以退出):\n”);
scanf(“%c”级和等级);
等级=toupper(等级);
如果(等级=‘Q’)中断;
printf(“您输入了%c作为等级。\n”,等级);
道岔(坡度)
{
案例“A”:
printf(“A和A-的等级范围为100%-90%。\n”);
打破
案例“B”:
printf(“B和B的等级范围为80%-89%。\n”);
打破
案例“C”:
printf(“C和C的等级范围为70%-79%。\n”);
打破
案例“D”:
printf(“D和D-的等级范围为60%-69%。\n”);
打破
案例“F”:
printf(“F的等级范围为0%-59%。\n”);
打破
违约:
printf(“该等级不存在。\n”);
打破
}
}
返回0;
}
您会注意到,我还做了一些其他修改,我将在这里介绍:
include“stdio.h”
应该是#include
。尖括号告诉编译器在标准目录中查找系统头文件#include
,因为我正在使用toupper()
函数将输入字符转换为大写。这使您的代码更易于使用,因为它现在将同时接受大写和小写字母scanf()
格式字符串在%c
前面包含一个空格。这将跳过任何空白字符,包括换行符。如果没有它,程序会将这些字符视为实际输入,并告诉您\n
等级不存在break
语句可用于在用户输入Q时退出循环。您的开关
块中还缺少两个break
smain()
函数被声明为int main(){…}
,因此它应该返回一个整数值。如果未发生错误,则此值应为零将您的交换机外壳封装在一个while循环中,该循环为true,它将无限期运行。您还可以使用scanf检查要输入的特定密钥,以停止它