有一個問題,它採用了no的情況,並且在每種情況下它不採用:of對象,每個對象都是點或圓或線段。我寫了完整的代碼,但開關箱不工作。任何建議表示讚賞。C中的字符輸入和切換大小寫有誤嗎?
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
int main()
{
int test,nob,ans[4],px,py,cx,cy,cr,lx1,ly1,lx2,ly2,flag,i,j;
char type;
scanf("%d",&test); //no:of test cases
while(test) {
flag=0;
scanf("%d",&nob); //no:of objects
while(nob)
{
scanf("%c\\n",&type); //what type of object
switch(type)
{
case 'p':
{
scanf("%d%d",&px,&py);
if((px<=ans[0] && py<=ans[1] && px>=ans[2] && py>=ans[3])|| flag==0) {
ans[0]=px;ans[1]=py;ans[2]=px;ans[3]=py;
}
break;
}
case 'c':
{
scanf("%d%d%d",&cx,&cy,&cr);
if((cx-cr<=ans[0] && cy-cr<=ans[1] && cx+cr>=ans[2] && cy+cr>=ans[3])|| flag==0) {
ans[0]=cx-cr;ans[1]=cy-cr;ans[2]=cx+cr;ans[3]=cy+cr;
}
break;
}
case 'l':
{
scanf("%d%d%d%d",&lx1,&ly1,&lx2,&ly2);
if((lx1<=ans[0] && ly1<=ans[1] && lx2>=ans[2] && ly2>=ans[3])|| flag==0) {
ans[0]=lx1;ans[1]=ly1;ans[2]=lx2;ans[3]=ly2;
}
break;
}
default:
printf("you entered wrong letter.");
}
flag=1;
nob--;
}
for(i=0;i<4;i++)
{
printf("%d ",ans[i]);
}
printf("\n");
test--;
}
return 0;
}
當您運行此程序時,switch case
不起作用。我認爲在輸入字符的時候會出現問題。請幫助我。我一直在試圖解決這個錯誤3天。
的回答解釋了故障,但也應'flag'當錯誤項引起了'default'情況下'nob'不能設置? –
@風向標,我很抱歉..我不明白你問了什麼。 – harry
我在'switch'語句後修改'flag'和'nob'。但是如果輸入無效,導致'default:'情況,你是否還想要這兩個可變更新?如果沒有,將它們移到其他單個(成功)'case'語句中的每一個。查看答案的更新。 –