S1E12问题求助
我用最笨的方法写出这种小甲鱼老师的答案,但是运行结果有问题,看代码,自己又看不出有啥问题,求解,问题如下:请你使用 if 语句,对数组进行越界检查,让代码只允许访问数组内的数据。
我打的代码清单如下(请大神解决): <stdio.h>
int main()
{
char ch = "FishC";
int i;
printf("请输入你想访问的字符序号(0~5):");
scanf("%d",&i);
if(i=0)
{
printf("%c\n",ch);
}
else if(i=1)
{
printf("%c\n",ch);
}
else if(i=2)
{
printf("%c\n",ch);
}
else if(i=3)
{
printf("%c\n",ch);
}
else if(i=4)
{
printf("%c\n",ch);
}
else(i=5);
{
printf("%c\n",ch);
}
return 0;
} 代码打错了,重新发个 #include<stdio.h>
int main()
{
char ch = "FishC";
int i;
printf("请输入你想访问的字符序号(0~5):");
scanf("%d",&i);
if(i=0)
{
printf("%c\n",ch);
}
else if(i=1)
{
printf("%c\n",ch);
}
else if(i=2)
{
printf("%c\n",ch);
}
else if(i=3)
{
printf("%c\n",ch);
}
else if(i=4)
{
printf("%c\n",ch);
}
else(i=5);
{
printf("%c\n",ch);
}
return 0;
} 本帖最后由 yuweb 于 2019-9-24 09:06 编辑
在第31行
else(i=5);
{
printf("%c\n",ch);
}
应该加if判断,而且不应该以 分号 结尾
还有,if判断中应该是 等等号(==)而非 等于号(=)
#include<stdio.h>
int main()
{
char ch = "FishC";
int i;
printf("请输入你想访问的字符序号(0~5):");
scanf("%d",&i);
if(i==0)
{
printf("%c\n",ch);
}
else if(i==1)
{
printf("%c\n",ch);
}
else if(i==2)
{
printf("%c\n",ch);
}
else if(i==3)
{
printf("%c\n",ch);
}
else if(i==4)
{
printf("%c\n",ch);
}
else if(i==5)
{
printf("%c\n",ch);
}
return 0;
} 本帖最后由 jackz007 于 2019-9-24 10:21 编辑
要打印 ch[ i ],直接索引就好了,不用逐个判断 i 的数值,如果对 i 的数值不能放心,也只需要加一道数值范围检查的门槛就可以了,楼主对 i 数值检查的逻辑实在太累赘!
include <stdio.h>
int main(void)
{
char ch[] = "FishC" ;
int i ;
printf("请输入你想访问的字符序号(0~5):") ;
if (scanf("%d" , & i) == 1) {
if(i >= 0 && i <= strlen(ch)) printf("%c\n" , ch) ;
else printf("数值超限\n") ;
} else {
printf("输入无效\n") ;
}
}
页:
[1]