While循环和getchar函数辅助
我是C编程新手,在做这个问题时遇到了一些问题,需要使用while循环和嵌套开关函数。如果用户的输入在循环开始时为-1,则开关终止 我应该使用getchar()函数来确定while循环是否继续 我曾试图用-1替换EOF,但后来发现getchar()只读取一个字符-1'是两个字符。它还读取一个字符,如果它是整数,则将始终作为无符号整数返回 内容还可以,我只是在while循环中遇到了问题,getchar函数:While循环和getchar函数辅助,c,C,我是C编程新手,在做这个问题时遇到了一些问题,需要使用while循环和嵌套开关函数。如果用户的输入在循环开始时为-1,则开关终止 我应该使用getchar()函数来确定while循环是否继续 我曾试图用-1替换EOF,但后来发现getchar()只读取一个字符-1'是两个字符。它还读取一个字符,如果它是整数,则将始终作为无符号整数返回 内容还可以,我只是在while循环中遇到了问题,getchar函数: while (paycode = getchar()) != EOF) 其中,将导致wh
while (paycode = getchar()) != EOF)
其中,将导致while循环结束的输入应为-1。我还面临一个问题,由于某种原因,prinf(“Enter pacode”)会重复两次。我知道代码可能看起来有点混乱和未优化,请原谅
任何建议、优化、建议和反馈都将不胜感激。附件是我的代码样本
int main(void)
{
int paycode, managersalary, grossweeklysales, overtime;
float hourlysalary,comissionsalary ,piecepay, piecenumber, piecewage;
unsigned int totalhours, managercount = 0, hourlycount = 0, comissioncount = 0 , piececount = 0;
printf("Enter paycode (-1 to end): ");
while ( (paycode = getchar()) != EOF) { //How to replace by EOF with -1? Do I use default: then?
//what If I use switch loop only or with a for loop?
switch (paycode) {
case '1':
printf("Manager selected.\n");
printf("Enter weekly salary: ");
scanf("%d", &managersalary);
printf("Manager's pay is $%d", managersalary);
managercount++;
break;
case '2':
printf("Hourly worker selected.\n");
printf("Enter hourly salary: ");
scanf("%f", &hourlysalary);
printf("Enter total hours worked: ");
scanf("%d", &totalhours);
if (totalhours > 40) {
overtime = totalhours - 40;
printf("Worker worked %d overtime hours\n", overtime);
}
printf("Worker's pay is $%.2f.", (hourlysalary*40)+(1.5*hourlysalary)*overtime);
break;
case'3':
printf("Comission worker selected.\n");
printf("Enter gross weekly sales: ");
scanf("%d", &grossweeklysales);
comissionsalary = 250 + grossweeklysales*(5.7 / 100);
printf("Comission worker's pay is $%.2f", comissionsalary);
comissioncount++;
break;
case '4':
puts("Pieceworker selected.");
printf("Enter number of pieces: ");
scanf("%f", &piecenumber);
printf("Enter number of pieces: ");
scanf("%f", &piecewage);
piecepay = piecenumber * piecewage;
printf("Pieceworker's pay is $%.2f", piecepay);
piececount++;
break;
}
printf("Enter paycode (-1 to end): ");
如果您询问如何在控制台输入上创建文件结束条件,这取决于操作系统。在类似Unix的OSs上,键入Ctrl-D。在Windows上,我认为是Ctrl-Z。更大的问题可能是混合使用getchar()和scanf()。
EOF
不必是-1
,它可以是任何负数。getchar()
返回一个数字。如果它成功读取一个字符,则返回该字符。(字符只是小数字)。如果无法读取字符,则返回EOF
(可能等于也可能不等于-1
)EOF
是一个不等于任何字符的数字<代码>-1也是一个数字,而不是“两个字符”,这与EOF
不是“三个字符”完全相同。