鱼C论坛

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

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

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

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

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

x
#include<stdio.h>
int main()
{
        int g[2][2];
        int i,j,max=0,hang,lie,emax[2],t;
        char name[2];
        float sum=0;
        for(i=0;i<2;i++)
        {
                printf("xm:"); 
                scanf("%s",name);
                
                for(j=0;j<2;j++)
                {
                        printf("cj:");
                        scanf("%d",&g[i][j]);
                        sum=sum+g[i][j];
                        if(g[i][j]>max) 
                        {
                                max=g[i][j];
                                hang=i;
                                lie=j;        
                                emax[i]=max;                                        //这里是给每个同学的最高成绩赋值
                        }
                        
                }
         } 
         printf("av=%.2f\n",sum/4);
         printf("max=%d\n",max);
         printf("在%d行%d列\n",hang+1,lie+1);
         for(t=0;t<2;t++)
         {
                 printf("%s的最高成绩是:%d",name[t],emax[t]);        //这句是输出每个同学的最高成绩
         }
          
        return 0;
}

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

哪里有毛病?求指点 谢谢!
最佳答案
2020-10-28 19:22:34
我看你的程序中name的目的是存放名字,scanf("%s")的用法错误了
%s对应的应该是地址,你存的是两个人的名字,就应该使用二维数组
#include<stdio.h>
int main()
{
        int g[2][2];
        int i,j,max=0,hang,lie,emax[2],t;
        char name[2][20];
        float sum=0;
        for(i=0;i<2;i++)
        {
                printf("xm:"); 
                scanf("%s",name[i]);
                
                for(j=0;j<2;j++)
                {
                        printf("cj:");
                        scanf("%d",&g[i][j]);
                        sum=sum+g[i][j];
                        if(g[i][j]>max) 
                        {
                                max=g[i][j];
                                hang=i;
                                lie=j;        
                                emax[i]=max;                                        //这里是给每个同学的最高成绩赋值
                        }
                        
                }
         } 
         printf("av=%.2f\n",sum/4);
         printf("max=%d\n",max);
         printf("在%d行%d列\n",hang+1,lie+1);
         for(t=0;t<2;t++)
         {
                 printf("%s的最高成绩是:%d",name[t],emax[t]);        //这句是输出每个同学的最高成绩
         }
          
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-10-28 19:22:34 | 显示全部楼层    本楼为最佳答案   
我看你的程序中name的目的是存放名字,scanf("%s")的用法错误了
%s对应的应该是地址,你存的是两个人的名字,就应该使用二维数组
#include<stdio.h>
int main()
{
        int g[2][2];
        int i,j,max=0,hang,lie,emax[2],t;
        char name[2][20];
        float sum=0;
        for(i=0;i<2;i++)
        {
                printf("xm:"); 
                scanf("%s",name[i]);
                
                for(j=0;j<2;j++)
                {
                        printf("cj:");
                        scanf("%d",&g[i][j]);
                        sum=sum+g[i][j];
                        if(g[i][j]>max) 
                        {
                                max=g[i][j];
                                hang=i;
                                lie=j;        
                                emax[i]=max;                                        //这里是给每个同学的最高成绩赋值
                        }
                        
                }
         } 
         printf("av=%.2f\n",sum/4);
         printf("max=%d\n",max);
         printf("在%d行%d列\n",hang+1,lie+1);
         for(t=0;t<2;t++)
         {
                 printf("%s的最高成绩是:%d",name[t],emax[t]);        //这句是输出每个同学的最高成绩
         }
          
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 19:25:18 | 显示全部楼层
一个单位的字符数组只能存放一个字符,像名字这种字符串是占用好几个字节的,比如说你输入qqqq,那么最少需要name[5]去存储,因为除了四个q之外,还需要'/0'结束符,这是系统自动加的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 19:26:36 | 显示全部楼层
然后你输入的是两个名字,就需要的是二维数组,传入scanf("%s")的就是每个一维的地址
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


大佬 懂了 谢谢!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 19:29:43 | 显示全部楼层
头发 发表于 2020-10-28 19:27
大佬 懂了 谢谢!!

记得给最佳答案哦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我试了下  学生是a和b
输出结果为
              b的最高成绩是:
              的最高成绩是:
怎么改呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 19:35:39 | 显示全部楼层
头发 发表于 2020-10-28 19:32
我试了下  学生是a和b
输出结果为
              b的最高成绩是:

我看一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-10-28 19:41:29 | 显示全部楼层
我是这样输入的
aaaa
2
1
bbbb
3
4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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


结果和我说的一样吗 ?我刚才试了下还是那样
bbbb的最高成绩是:2
的最高成绩是:4
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 19:44:56 | 显示全部楼层
xm:cj:cj:xm:cj:cj:av=2.50
max=4
在2行2列
aaaa的最高成绩是:2
bbbb的最高成绩是:4
这是我的输出。。。。
好奇怪
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我用的dev c++ 为啥会不一样嘞、、、、???? 最佳给了谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我用dev试试
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

嗯嗯 麻烦了
想知道小甲鱼最近在做啥?请访问 -> 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的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-10-28 19:59:35 | 显示全部楼层
用的机房的电脑,只能这样截图了
aaa.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

有点bug,b成绩那里,应该这样
#include<stdio.h>
int main()
{
        int g[2][2];
        int i,j,max=0,hang,lie,emax[2],t;
        char name[2][20];
        float sum=0;
        for(i=0;i<2;i++)
        {
                        max = 0; 
                printf("xm:"); 
                scanf("%s",name[i]);
                
                for(j=0;j<2;j++)
                {
                        printf("cj:");
                        scanf("%d",&g[i][j]);
                        sum=sum+g[i][j];
                        if(g[i][j]>max) 
                        {
                                max=g[i][j];
                                hang=i;
                                lie=j;        
                                emax[i]=max;                                        //这里是给每个同学的最高成绩赋值
                        }
                        
                }
         } 
         printf("av=%.2f\n",sum/4);
         printf("max=%d\n",max);
         printf("在%d行%d列\n",hang+1,lie+1);
         for(t=0;t<2;t++)
         {
                 printf("%s的最高成绩是:%d",name[t],emax[t]);        //这句是输出每个同学的最高成绩
         }
          
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-12 19:09

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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