C 程序在输入前结束(开关箱)
我是c编程新手 我写一个程序。但是当我在进入前运行程序时,我的选择程序结束了。 这是截图。C 程序在输入前结束(开关箱),c,switch-statement,C,Switch Statement,我是c编程新手 我写一个程序。但是当我在进入前运行程序时,我的选择程序结束了。 这是截图。 #包括 #包括 main() { char ch; int num1,num2,a,m,s; 浮动d; printf(“\n输入第一个数字:”); scanf(“%d”&num1); printf(“\n输入第二个数字:”); scanf(“%d”&num2); a=num1+num2; m=num1*num2; s=num1-num2; d=(浮动)(num1/num2); printf(“\n输入您
#包括
#包括
main()
{
char ch;
int num1,num2,a,m,s;
浮动d;
printf(“\n输入第一个数字:”);
scanf(“%d”&num1);
printf(“\n输入第二个数字:”);
scanf(“%d”&num2);
a=num1+num2;
m=num1*num2;
s=num1-num2;
d=(浮动)(num1/num2);
printf(“\n输入您的选择:”);
scanf(“%c”和“ch”);
开关(ch)
{
案例“A”:printf(“\n数字的加法=%d”,A);
打破
大小写“M”:printf(“\n数字的倍数为=%d”,M);
打破
案例“S”:printf(“\数字的分段为=%d”,S);
打破
案例“D”:printf(“\n两个数字的除法为=%f”,D);
打破
默认值:printf(“\n无效项”);
打破
}
getch();
返回0;
}
我是在哪里出错的?在
scanf
中的%c
之前添加一个空格将解决此问题。这是因为scanf
在输入前两个整数的值后不会使用\n
字符。由于enter键(\n
)也是一个字符,它被scanf(“%c”和&ch)使用代码>这样,您的默认案例将被执行。在%c之前的空格将丢弃所有空格和空格。谢谢。它起作用了。但是为什么???请看这里:“如果有两个”\n,“格式字符串中的任何单个空白字符都会使用输入中所有可用的连续空白字符”。那么,如果我在scanf???@MaxySpark中的“%c”前面加上两个空格,请阅读我的答案的最后一句话。一个空格将丢弃所有空格。Thanx@Cool Guy,你是主要的!!!不调试您的程序将是第一个错误。第二个错误是,在阅读没有空格前导的格式化的单个%c
时,不研究以了解它不会跳过空格,因此在第二个数字之后使用换行符而不是所需的字符。为什么要使用纯文本输入和输出的屏幕截图?无论如何,您也只检查大写字母。我打赌你不会在大写锁定的情况下打字,所以你输入的是小写字符。
#include<stdio.h>
#include<conio.h>
main()
{
char ch;
int num1, num2, a, m, s;
float d;
printf("\nEnter The First Number: ");
scanf("%d", &num1);
printf("\nEnter The Second Number: ");
scanf("%d", &num2);
a=num1+num2;
m=num1*num2;
s=num1-num2;
d=(float)(num1/num2);
printf("\nEnter Your Choice: ");
scanf("%c", &ch);
switch(ch)
{
case 'A': printf("\nThe Addition Of The Number Is= %d", a);
break;
case 'M': printf("\nThe Multipication Of The Numbers Is= %d", m);
break;
case 'S': printf("\The Subsraction Of THe Numbers Is= %d", s);
break;
case 'D': printf("\nThe Division Of The Two Numbers Is= %f", d);
break;
default : printf("\nInvalid Entry");
break;
}
getch();
return 0;
}