鱼C论坛

 找回密码
 立即注册
查看: 1200|回复: 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: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:25:18 | 显示全部楼层
一个单位的字符数组只能存放一个字符,像名字这种字符串是占用好几个字节的,比如说你输入qqqq,那么最少需要name[5]去存储,因为除了四个q之外,还需要'/0'结束符,这是系统自动加的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 19:26:36 | 显示全部楼层
然后你输入的是两个名字,就需要的是二维数组,传入scanf("%s")的就是每个一维的地址
小甲鱼最新课程 -> 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:29:43 | 显示全部楼层
头发 发表于 2020-10-28 19:27
大佬 懂了 谢谢!!

记得给最佳答案哦
小甲鱼最新课程 -> 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:35:39 | 显示全部楼层
头发 发表于 2020-10-28 19:32
我试了下  学生是a和b
输出结果为
              b的最高成绩是:

我看一下
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-10-28 19:41:29 | 显示全部楼层
我是这样输入的
  1. aaaa
  2. 2
  3. 1
  4. bbbb
  5. 3
  6. 4
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


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

使用道具 举报

发表于 2020-10-28 19:44:56 | 显示全部楼层
  1. xm:cj:cj:xm:cj:cj:av=2.50
  2. max=4
  3. 在2行2列
  4. aaaa的最高成绩是:2
  5. bbbb的最高成绩是:4
复制代码

这是我的输出。。。。
好奇怪
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

发表于 2020-10-28 19:47:30 | 显示全部楼层
头发 发表于 2020-10-28 19:47
我用的dev c++ 为啥会不一样嘞、、、、???? 最佳给了谢谢啦

我用dev试试
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

发表于 2020-10-28 19:56:46 | 显示全部楼层
xm:AAAA
cj:100
cj:100
xm:BBBB
cj:99
cj:99
av=99.50
max=100
在1行1列
AAAA的最高成绩是:100BBBB的最高成绩是:-1
--------------------------------
Process exited after 13.91 seconds with return value 0
请按任意键继续. . .
这是dev的结果
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 19:59:35 | 显示全部楼层
用的机房的电脑,只能这样截图了
aaa.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 20:04:41 | 显示全部楼层
小甲鱼的铁粉 发表于 2020-10-28 19:59
用的机房的电脑,只能这样截图了

有点bug,b成绩那里,应该这样
  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.                         max = 0;
  11.                 printf("xm:");
  12.                 scanf("%s",name[i]);
  13.                
  14.                 for(j=0;j<2;j++)
  15.                 {
  16.                         printf("cj:");
  17.                         scanf("%d",&g[i][j]);
  18.                         sum=sum+g[i][j];
  19.                         if(g[i][j]>max)
  20.                         {
  21.                                 max=g[i][j];
  22.                                 hang=i;
  23.                                 lie=j;        
  24.                                 emax[i]=max;                                        //这里是给每个同学的最高成绩赋值
  25.                         }
  26.                         
  27.                 }
  28.          }
  29.          printf("av=%.2f\n",sum/4);
  30.          printf("max=%d\n",max);
  31.          printf("在%d行%d列\n",hang+1,lie+1);
  32.          for(t=0;t<2;t++)
  33.          {
  34.                  printf("%s的最高成绩是:%d",name[t],emax[t]);        //这句是输出每个同学的最高成绩
  35.          }
  36.          
  37.         return 0;
  38. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-13 01:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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