鱼C论坛

 找回密码
 立即注册
查看: 1527|回复: 8

[已解决]数组调用错误

[复制链接]
发表于 2019-6-19 15:31:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
/*设计一个程序
  显示宝宝班及贝贝班各班名称及各班人数
*/

int main(void)
{
        int i[5]={16,18,19,20,22};//a组班级有5个班及各班人数
        int j[5]={18,17,18,21,26};//b组班级5个班及各班人数
   
    int val;
    
        do
        {
                
         printf("请输入您想查询的班级代码:宝宝输入1,贝贝输入2:\n");
         
     scanf("%d",&val);
      while(getchar()!='\n');
     switch(val)
         {
     case 1:
         printf("宝宝班人数:%d %d %d %d %d\n",i[5]);
         break;
         
         case 2:
         printf("贝贝班人数:%d %d %d %d %d\n",j[5]);
         break;
         }
        }
   while('%d');//返回do函数,重新开始循环
        return 0;
}

两个班级人数输出显示不正常,数据大了很多。死活没找到原因
最佳答案
2019-6-19 15:35:48
定义的时候是 int i[5]   用的时候索引元素时就只有 i[0] i[1] i[2] i[3] i[4]

printf("宝宝班人数:%d %d %d %d %d\n",i[5]);  要求输出5个,只给了一个也就算了,还给了个越界的。。。过来挨打。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2019-6-19 15:35:48 | 显示全部楼层    本楼为最佳答案   
定义的时候是 int i[5]   用的时候索引元素时就只有 i[0] i[1] i[2] i[3] i[4]

printf("宝宝班人数:%d %d %d %d %d\n",i[5]);  要求输出5个,只给了一个也就算了,还给了个越界的。。。过来挨打。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-19 15:39:40 | 显示全部楼层
本帖最后由 df3379 于 2019-6-19 15:41 编辑
风扫地 发表于 2019-6-19 15:35
定义的时候是 int i[5]   用的时候索引元素时就只有 i[0] i[1] i[2] i[3] i[4]

printf("宝宝班人数:%d  ...


那应该怎样写?如果写成
printf("宝宝班人数:1班%d人 2班%d人 3班%d人 4班%d人 5班%d人\n\n",i[0] i[1] i[2] i[3] i[4]);
就会提示错误
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-19 15:41:18 | 显示全部楼层
#include <stdio.h>


int main(void)
{
    int i[5]= {16,18,19,20,22}; //a组班级有5个班及各班人数
    int j[5]= {18,17,18,21,26}; //b组班级5个班及各班人数

    int val;

    do
    {

        printf("请输入您想查询的班级代码:宝宝输入1,贝贝输入2:\n");

        scanf("%d",&val);
        while(getchar()!='\n');

        int index;
        switch(val)
        {
        case 1:
//            printf("宝宝班人数:%d %d %d %d %d\n",i[5]); 喝车不开酒
            printf("宝宝班人数:");
            for (index = 0; index < 5; ++index) {
                printf("%d ", i[index]);
            }
            printf("\n");
            break;

        case 2:
//            printf("贝贝班人数:%d %d %d %d %d\n",j[5]); 开酒不喝车
            printf("贝贝班人数:");
            for (index = 0; index < 5; ++index) {
                printf("%d ", j[index]);
            }
            printf("\n");

            break;
        }
    }
    while('%d');//返回do函数,重新开始循环
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-19 15:41:57 | 显示全部楼层
需要复习,数组的遍历
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-19 15:48:59 | 显示全部楼层

如果我想显示具体哪个班的数据呢?例如:
printf("宝宝班人数:1班%d人 2班%d人 3班%d人 4班%d人 5班%d人\n",i[4])//最后这个代码请无视。我只是举例说明,输出显示效果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-19 15:56:58 | 显示全部楼层
printf("宝宝班人数:1班%d人 2班%d人 3班%d人 4班%d人 5班%d人\n",i[0],i[1],i[2],i[3],i[4]);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-6-19 15:57:06 | 显示全部楼层
#include <stdio.h>
/*设计一个程序
  显示宝宝班及贝贝班各班名称及各班人数
*/

int main(void)
{
        int i[5]={16,18,19,20,22};//a组班级有5个班及各班人数
        int j[5]={18,17,18,21,26};//b组班级5个班及各班人数
   
    int val;
   

        do
        {
                
         printf("请输入您想查询的班级代码:宝宝输入1,贝贝输入2:\n");
         
     scanf("%d",&val);
      while(getchar()!='\n');
     switch(val)
         {
     case 1:
         printf("宝宝班人数:1班%d人 2班%d人 3班%d人 4班%d人 5班%d人\n\n",i[0],i[1],i[2],i[3],i[4]);
              break;
         
         case 2:
         printf("贝贝班人数:1班%d人 2班%d人 三班%d人 4班%d人 5班%d人\n\n",j[0],j[1],j[2],j[3],j[4]);
         break;
         }
        }
   while('%d\n');//返回do函数,重新开始循环
        return 0;
}

我最终想要的是这个效果!谢谢大佬们的提点。就是我的语法用错了。输入语句之前用空格,本来该用逗号就行的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-19 16:07:55 | 显示全部楼层
df3379 发表于 2019-6-19 15:48
如果我想显示具体哪个班的数据呢?例如:

还需要学习,数组和指针的相关只是。非常重要。我C语言不精通,没有资格教别人
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-10-3 21:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表