为什么加了最后的for就不能输出了
#include<stdio.h>int main()
{
int a,b={0},c={0};
int (*p)=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=1;
}
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
if(*(*(p+i)+j) >=85) c=1;
else
{ c=0; break;}
}
}
/*for(i=0;i<5;i++)
{
if(b||c) js++;
}*/
printf("%.1f %d %d",sum*1.0/5,rs,js);
return 0;
}
输入5个学生,4门课成绩,二维数组stu表示,行标表示学生,列标表示课程成绩,
(1)求第一门课的平均分;
(2)统计有2门以上(含2门)课程不及格的同学人数;
(3)平均成绩在90分以上(含90分)或者全部课程成绩在85分以上(含85分)的同学视为优秀,统计人数,
加了最后的for就输出不了,不加就可以输出但(3)没有完成。
第一张图片好像是报错了 本帖最后由 zhangjinxuan 于 2022-12-3 12:06 编辑
我这边并没有问题,最后的一个循环加上没有错的:
#include<stdio.h>
int main()
{
int a,b={0},c={0};
int (*p)=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=1;
}
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
if(*(*(p+i)+j) >=85) c=1;
else
{ c=0; break;}
}
}
for(i=0;i<5;i++)
{
if(b||c) js++;
}
printf("%.1f %d %d",sum*1.0/5,rs,js);
return 0;
}
程序输出:
80.2 2 2 学习下 还没学这个呢 谢谢楼主的币{:5_109:} #include<stdio.h>
int main()
{
int a,b={0},c={0};
int (*p)=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.271.869.485.2
2
3
Process returned 0 (0x0) execution time : 5.078 s
Press any key to continue.
你维度记反了,第一维应该是每个学生,第二维才是成绩
#include<stdio.h>
int main()
{
int a,b={0},c={0};
int (*p)=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=1;
}
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
{
if(*(*(p+i)+j) >=85) c=1;
else
{ c=0; break;}
}
}
for(i=0;i<5;i++)
{
if(b||c) js++;
}
printf("%.1f %d %d",sum*1.0/5,rs,js);
return 0;
} jhq999 发表于 2022-12-3 12:07
啊,总是有人比我早点{:10_282:} zhangjinxuan 发表于 2022-12-3 12:32
啊,总是有人比我早点
{:5_109:},习惯就好,jackz007才是快
页:
[1]