有一个问题,它采用no:of case并且在每种情况下它不采用对象,每个对象是一个点或圆或线段。我写了完整的代码,但是开关盒没有用。任何建议都表示赞赏。
#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天。
答案 0 :(得分:3)
padding-right
之前必须有一个空格 - 此处不需要%c
:
\\n
否则,上一个scanf(" %c", &type); //what type of object
中的newline
(\n
)将被视为scanf()
(type
不需要这样做。)< / p>
您还需要定义%d
:
ans
未使用int ans[4] = {0};
- 可以删除:
j
此外,正如Weather Vane所述,如果'j' : unreferenced local variable
输入错误,则不应更新type
和flag
。您可以按如下方式解决此问题:
nob