为什么不执行switch语句

来源:百度知道 编辑:UC知道 时间:2024/06/05 06:44:13
RT,代码如下,乱码部分为中文

#include<stdio.h>
#include<stdlib.h>

main()
{
int D,N,n;
double p;
double totalN=0,total=0

for(D=1;D <= 5;D++){
printf("ÖÜ%dÏúÊÛÇé¿ö:\n", D);
N=0;
while(N != -1)
scanf("%d,%d",&N,&n);
switch(N)
case 1:
p=2.98;
break;
case 2:
p=4.50;
break;
case 3:
p=9.98;
break;
case 4:
p=4.49;
break;
case 5:
p=6.87;
break;
}
totalN=totalN+p*n;

total=total+totalN
}
printf("±¾ÖÜÏúÊÛ×ܶîΪ: %f\n", total);

system("pause");

return 0;
}
这是个循环计算一周销售量的问题
D表示天数,N为产品号,n为销量,p为单价,totalN为单天营业额,total为总计

此程序因该做如下调整
从SCANF 到最后一个break为一个整体应用{ } 括起来
switch的分支语句以为一个整体 也应该用{ } 括起来
这样每次就都能够执行到switch语句,但是程序中还存在 细节性的错误,需要修改以后才能用,就自己慢慢改吧,这里就不改了……

调整以后程序结构如下

#include<stdio.h>
#include<stdlib.h>

main()
{
int D,N,n;
double p;
double totalN=0,total=0

for(D=1;D <= 5;D++){
printf("ÖÜ%dÏúÊÛÇé¿ö:\n", D);
N=0;
while(N != -1)
{ scanf("%d,%d",&N,&n);
switch(N)
{ case 1:
p=2.98;
break;
case 2:
p=4.50;
break;
case 3:
p=9.98;
break;
case 4:
p=4.49;
break;
case 5:
p=6.87;
break;}
}
}
totalN=totalN+p*n;

total=total+totalN
}
printf("±¾ÖÜÏúÊÛ×ܶ&ici