我正在尝试自学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. ", 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'的东西退出。我知道我应该在这里使用某种循环,但我不太确定如何应用它。
答案 0 :(得分:0)
你可以在这里选择几个不同的选项,while和do while循环都可以。就个人而言,我会说while while循环更适合这种情况,主要是因为你肯定知道你希望程序至少提示用户一次。为了使用它,你需要在printf语句之前放置do,然后在最后输入一些scanf时运行!=“Q”
答案 1 :(得分:0)
您可以使用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...
}
我还建议您检查小写和大写字母。在switch
声明中:
case 'A':
case 'a':
printf("The grade range for A and A- is 100%% - 90%%.");
break;
在if
声明中:
if (grade == 'X' || grade == 'x')
{
break;
}
答案 2 :(得分:0)
要无限期地重复某个操作,您可以将其包含在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;
}
你会注意到我做了一些其他修改,我将在这里进行修改:
include "stdio.h"
应该是#include <stdio.h>
。尖括号告诉编译器在标准目录中查找系统头文件。
我还添加了#include <ctype.h>
,因为我正在使用toupper()
函数将输入字符转换为大写。这使您的代码更易于使用,因为它现在将接受大写和小写字母。
scanf()
格式字符串包含%c
之前的空格。这将跳过任何空白字符,包括换行符。没有它,程序会将这些字符视为实际输入,并告诉您\n
成绩不存在。
当用户输入Q时,break
语句可用于退出循环。break
块中还有一些switch
个缺失。
main()
函数声明为int main() { ... }
,因此它应返回一个整数值。如果没有发生错误,则此值应为零。
答案 3 :(得分:0)
将你的开关盒放入一个真正的while循环中,它将无限期地运行。您还可以使用scanf检查要输入的特定键以停止它。