漫漫C仔 发表于 2019-9-24 08:16:15

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;
}

漫漫C仔 发表于 2019-9-24 08:17:06

代码打错了,重新发个 #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 08:59:38

本帖最后由 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:16:56

本帖最后由 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]
查看完整版本: S1E12问题求助