鱼C论坛

 找回密码
 立即注册
查看: 2234|回复: 9

[已解决]为什么加了最后的for就不能输出了

[复制链接]
发表于 2022-12-3 11:35:01 | 显示全部楼层 |阅读模式

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

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

x
#include<stdio.h>
int main()
{
        int a[4][5],b[5]={0},c[5]={0};
        int (*p)[5]=a;
        int i,j,sum=0,js1,rs=0,js=0;
        float pj1;
        for(i=0;i<5;i++)
        {
                for(j=0;j<4;j++)
                {
                        scanf("%d",&*(*(p+i)+j));
                }
        }
        for(i=0;i<5;i++)    //第一组 
        {
                sum+=  **(p+i);
        }
                                                         // printf("%.1f",sum*1.0/5);
        for(i=0;i<5;i++)   //第二组 
        {
                js1=0;
                for(j=0;j<4;j++)
                {
                        if( *(*(p+i)+j) <60) js1++;
                }
                if(js1>=2) rs++;
        }
                                                          //printf("%d",rs);
        for(i=0;i<5;i++) //第三组 
        {
                pj1=0;
                for(j=0;j<4;j++)
                {
                        pj1+=1.0/4*(*(*(p+i)+j));
                }
                if(pj1>=90) b[i]=1;
        }
        for(i=0;i<5;i++)
        {
                for(j=0;j<4;j++)
                {
                        if(*(*(p+i)+j) >=85) c[i]=1;
                        else
                        { c[i]=0; break;}
                }
        }
        /*for(i=0;i<5;i++)
        {
                if(b[i]||c[i]) js++;
        }*/
        printf("%.1f %d %d",sum*1.0/5,rs,js);
        return 0;
        
}
输入5个学生,4门课成绩,二维数组stu[5][4]表示,行标表示学生,列标表示课程成绩,
(1)求第一门课的平均分;
(2)统计有2门以上(含2门)课程不及格的同学人数;
(3)平均成绩在90分以上(含90分)或者全部课程成绩在85分以上(含85分)的同学视为优秀,统计人数,
错误1.png
正确1.png
加了最后的for就输出不了,不加就可以输出但(3)没有完成。
最佳答案
2022-12-3 12:07:38
#include<stdio.h>
int main()
{
        int a[5][4],b[5]={0},c[5]={0};
        int (*p)[4]=a;
        int i,j,js1,rs=0,js=0;
        float sum=0,pj1;
        for(i=0;i<5;i++)
        {
                for(j=0;j<4;j++)
                {
                        scanf("%d",*(p+i)+j);
                }
        }
        for(i=0;i<4;i++)
        {
            sum=0;
            for(j=0;j<5;j++)    //第一组
        {
                sum+=  *(*(p+j)+i);
        }
            printf("%.1f  ",sum*1.0/5);
          }
          printf("\n");                                          // printf("%.1f",sum*1.0/5);
        for(i=0;i<5;i++)   //第二组
        {
                js1=0;
                for(j=0;j<4;j++)
                {
                        if( *(*(p+i)+j) <60) js1++;
                }
                if(js1>=2) rs++;
        }
        printf("%d\n",rs);
        rs=0;
        for(i=0;i<5;i++)   //第三组
        {
                sum=0;
                js1=0;
                for(j=0;j<4;j++)
                {
                        if( *(*(p+i)+j) >=90) js1++;
                        sum+=*(*(p+i)+j);
                }
                if(sum/4>=85) rs++;
                else if(js1>=2)rs+=1;
        }
        printf("%d\n",rs);
        return 0;

}
85 93 59 92
93 95 89 88
86 88 88 87
59 51 52 68
78 32 59 91
80.2  71.8  69.4  85.2
2
3

Process returned 0 (0x0)   execution time : 5.078 s
Press any key to continue.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-12-3 11:57:30 | 显示全部楼层

回帖奖励 +5 鱼币

第一张图片好像是报错了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 12:03:43 | 显示全部楼层

回帖奖励 +5 鱼币

本帖最后由 zhangjinxuan 于 2022-12-3 12:06 编辑

我这边并没有问题,最后的一个循环加上没有错的:
#include<stdio.h>
int main()
{
        int a[4][5],b[5]={0},c[5]={0};
        int (*p)[5]=a;
        int i,j,sum=0,js1,rs=0,js=0;
        float pj1;
        for(i=0;i<5;i++)
        {
                for(j=0;j<4;j++)
                {
                        scanf("%d",&*(*(p+i)+j));
                }
        }
        for(i=0;i<5;i++)    //第一组 
        {
                sum+=  **(p+i);
        }
                                                         // printf("%.1f",sum*1.0/5);
        for(i=0;i<5;i++)   //第二组 
        {
                js1=0;
                for(j=0;j<4;j++)
                {
                        if( *(*(p+i)+j) <60) js1++;
                }
                if(js1>=2) rs++;
        }
                                                          //printf("%d",rs);
        for(i=0;i<5;i++) //第三组 
        {
                pj1=0;
                for(j=0;j<4;j++)
                {
                        pj1+=1.0/4*(*(*(p+i)+j));
                }
                if(pj1>=90) b[i]=1;
        }
        for(i=0;i<5;i++)
        {
                for(j=0;j<4;j++)
                {
                        if(*(*(p+i)+j) >=85) c[i]=1;
                        else
                        { c[i]=0; break;}
                }
        }
        for(i=0;i<5;i++)
        {
                if(b[i]||c[i]) js++;
        }
        printf("%.1f %d %d",sum*1.0/5,rs,js);
        return 0;
        
}
程序输出:
80.2 2 2
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 12:05:37 | 显示全部楼层

回帖奖励 +5 鱼币

学习下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 12:06:58 | 显示全部楼层

回帖奖励 +5 鱼币

还没学这个呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 12:07:28 | 显示全部楼层

回帖奖励 +5 鱼币

谢谢楼主的币
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 12:07:38 | 显示全部楼层    本楼为最佳答案   
#include<stdio.h>
int main()
{
        int a[5][4],b[5]={0},c[5]={0};
        int (*p)[4]=a;
        int i,j,js1,rs=0,js=0;
        float sum=0,pj1;
        for(i=0;i<5;i++)
        {
                for(j=0;j<4;j++)
                {
                        scanf("%d",*(p+i)+j);
                }
        }
        for(i=0;i<4;i++)
        {
            sum=0;
            for(j=0;j<5;j++)    //第一组
        {
                sum+=  *(*(p+j)+i);
        }
            printf("%.1f  ",sum*1.0/5);
          }
          printf("\n");                                          // printf("%.1f",sum*1.0/5);
        for(i=0;i<5;i++)   //第二组
        {
                js1=0;
                for(j=0;j<4;j++)
                {
                        if( *(*(p+i)+j) <60) js1++;
                }
                if(js1>=2) rs++;
        }
        printf("%d\n",rs);
        rs=0;
        for(i=0;i<5;i++)   //第三组
        {
                sum=0;
                js1=0;
                for(j=0;j<4;j++)
                {
                        if( *(*(p+i)+j) >=90) js1++;
                        sum+=*(*(p+i)+j);
                }
                if(sum/4>=85) rs++;
                else if(js1>=2)rs+=1;
        }
        printf("%d\n",rs);
        return 0;

}
85 93 59 92
93 95 89 88
86 88 88 87
59 51 52 68
78 32 59 91
80.2  71.8  69.4  85.2
2
3

Process returned 0 (0x0)   execution time : 5.078 s
Press any key to continue.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 12:32:01 | 显示全部楼层
你维度记反了,第一维应该是每个学生,第二维才是成绩
#include<stdio.h>
int main()
{
        int a[5][4],b[5]={0},c[5]={0};
        int (*p)[4]=a;
        int i,j,sum=0,js1,rs=0,js=0;
        float pj1;
        for(i=0;i<5;i++)
        {
                for(j=0;j<4;j++)
                {
                        scanf("%d",&*(*(p+i)+j));
                }
        }
        for(i=0;i<5;i++)    //第一组 
        {
                sum+=  **(p+i);
        }
                                                         // printf("%.1f",sum*1.0/5);
        for(i=0;i<5;i++)   //第二组 
        {
                js1=0;
                for(j=0;j<4;j++)
                {
                        if( *(*(p+i)+j) <60) js1++;
                }
                if(js1>=2) rs++;
        }
                                                          //printf("%d",rs);
        for(i=0;i<5;i++) //第三组 
        {
                pj1=0;
                for(j=0;j<4;j++)
                {
                        pj1+=1.0/4*(*(*(p+i)+j));
                }
                if(pj1>=90) b[i]=1;
        }
        for(i=0;i<5;i++)
        {
                for(j=0;j<4;j++)
                {
                        if(*(*(p+i)+j) >=85) c[i]=1;
                        else
                        { c[i]=0; break;}
                }
        }
        for(i=0;i<5;i++)
        {
                if(b[i]||c[i]) js++;
        }
        printf("%.1f %d %d",sum*1.0/5,rs,js);
        return 0;
        
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-12-3 12:32:35 | 显示全部楼层

啊,总是有人比我早点
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-12-3 12:38:10 | 显示全部楼层
zhangjinxuan 发表于 2022-12-3 12:32
啊,总是有人比我早点

,习惯就好,jackz007才是快
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-20 20:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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