有一个问题,它采用了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'语句中的每一个。查看答案的更新。 –