鱼C论坛

 找回密码
 立即注册
查看: 1353|回复: 16

[已解决]求c大佬指点 我输出呢??

[复制链接]
发表于 2020-10-28 19:16:37 | 显示全部楼层 |阅读模式

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

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

x
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int g[2][2];
  5.         int i,j,max=0,hang,lie,emax[2],t;
  6.         char name[2];
  7.         float sum=0;
  8.         for(i=0;i<2;i++)
  9.         {
  10.                 printf("xm:");
  11.                 scanf("%s",name);
  12.                
  13.                 for(j=0;j<2;j++)
  14.                 {
  15.                         printf("cj:");
  16.                         scanf("%d",&g[i][j]);
  17.                         sum=sum+g[i][j];
  18.                         if(g[i][j]>max)
  19.                         {
  20.                                 max=g[i][j];
  21.                                 hang=i;
  22.                                 lie=j;       
  23.                                 emax[i]=max;                                        //这里是给每个同学的最高成绩赋值
  24.                         }
  25.                        
  26.                 }
  27.          }
  28.          printf("av=%.2f\n",sum/4);
  29.          printf("max=%d\n",max);
  30.          printf("在%d行%d列\n",hang+1,lie+1);
  31.          for(t=0;t<2;t++)
  32.          {
  33.                  printf("%s的最高成绩是:%d",name[t],emax[t]);        //这句是输出每个同学的最高成绩
  34.          }
  35.           
  36.         return 0;
  37. }
复制代码


结尾的for那句输出了一行空格  然后就结束了。。。

哪里有毛病?求指点 谢谢!
最佳答案
2020-10-28 19:22:34
我看你的程序中name的目的是存放名字,scanf("%s")的用法错误了
%s对应的应该是地址,你存的是两个人的名字,就应该使用二维数组
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int g[2][2];
  5.         int i,j,max=0,hang,lie,emax[2],t;
  6.         char name[2][20];
  7.         float sum=0;
  8.         for(i=0;i<2;i++)
  9.         {
  10.                 printf("xm:");
  11.                 scanf("%s",name[i]);
  12.                
  13.                 for(j=0;j<2;j++)
  14.                 {
  15.                         printf("cj:");
  16.                         scanf("%d",&g[i][j]);
  17.                         sum=sum+g[i][j];
  18.                         if(g[i][j]>max)
  19.                         {
  20.                                 max=g[i][j];
  21.                                 hang=i;
  22.                                 lie=j;        
  23.                                 emax[i]=max;                                        //这里是给每个同学的最高成绩赋值
  24.                         }
  25.                         
  26.                 }
  27.          }
  28.          printf("av=%.2f\n",sum/4);
  29.          printf("max=%d\n",max);
  30.          printf("在%d行%d列\n",hang+1,lie+1);
  31.          for(t=0;t<2;t++)
  32.          {
  33.                  printf("%s的最高成绩是:%d",name[t],emax[t]);        //这句是输出每个同学的最高成绩
  34.          }
  35.          
  36.         return 0;
  37. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-10-28 19:27:13 | 显示全部楼层
本帖最后由 头发 于 2020-10-28 19:29 编辑
小甲鱼的铁粉 发表于 2020-10-28 19:25
一个单位的字符数组只能存放一个字符,像名字这种字符串是占用好几个字节的,比如说你输入qqqq,那么最少需 ...


大佬 懂了 谢谢!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-28 19:32:48 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-10-28 19:22
我看你的程序中name的目的是存放名字,scanf("%s")的用法错误了
%s对应的应该是地址,你存的是两个人的名 ...

我试了下  学生是a和b
输出结果为
              b的最高成绩是:
              的最高成绩是:
怎么改呀
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-28 19:42:48 | 显示全部楼层


结果和我说的一样吗 ?我刚才试了下还是那样
bbbb的最高成绩是:2
的最高成绩是:4
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-28 19:47:03 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-10-28 19:44
这是我的输出。。。。
好奇怪

我用的dev c++ 为啥会不一样嘞、、、、???? 最佳给了谢谢啦
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-10-28 19:51:01 | 显示全部楼层

嗯嗯 麻烦了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-30 04:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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