头发 发表于 2020-10-28 19:16:37

求c大佬指点 我输出呢??

#include<stdio.h>
int main()
{
        int g;
        int i,j,max=0,hang,lie,emax,t;
        char name;
        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);
                        sum=sum+g;
                        if(g>max)
                        {
                                max=g;
                                hang=i;
                                lie=j;       
                                emax=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,emax);        //这句是输出每个同学的最高成绩
       }
          
        return 0;
}

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

哪里有毛病?求指点 谢谢!

小甲鱼的铁粉 发表于 2020-10-28 19:22:34

我看你的程序中name的目的是存放名字,scanf("%s")的用法错误了
%s对应的应该是地址,你存的是两个人的名字,就应该使用二维数组
#include<stdio.h>
int main()
{
      int g;
      int i,j,max=0,hang,lie,emax,t;
      char name;
      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);
                        sum=sum+g;
                        if(g>max)
                        {
                              max=g;
                              hang=i;
                              lie=j;      
                              emax=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,emax);      //这句是输出每个同学的最高成绩
         }
         
      return 0;
}

小甲鱼的铁粉 发表于 2020-10-28 19:25:18

一个单位的字符数组只能存放一个字符,像名字这种字符串是占用好几个字节的,比如说你输入qqqq,那么最少需要name去存储,因为除了四个q之外,还需要'/0'结束符,这是系统自动加的

小甲鱼的铁粉 发表于 2020-10-28 19:26:36

然后你输入的是两个名字,就需要的是二维数组,传入scanf("%s")的就是每个一维的地址

头发 发表于 2020-10-28 19:27:13

本帖最后由 头发 于 2020-10-28 19:29 编辑

小甲鱼的铁粉 发表于 2020-10-28 19:25
一个单位的字符数组只能存放一个字符,像名字这种字符串是占用好几个字节的,比如说你输入qqqq,那么最少需 ...

大佬 懂了 谢谢!!

小甲鱼的铁粉 发表于 2020-10-28 19:29:43

头发 发表于 2020-10-28 19:27
大佬 懂了 谢谢!!

记得给最佳答案哦{:10_297:}

头发 发表于 2020-10-28 19:32:48

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

我试了下学生是a和b
输出结果为
            b的最高成绩是:
            的最高成绩是:
怎么改呀

小甲鱼的铁粉 发表于 2020-10-28 19:35:39

头发 发表于 2020-10-28 19:32
我试了下学生是a和b
输出结果为
            b的最高成绩是:


我看一下

小甲鱼的铁粉 发表于 2020-10-28 19:41:29

我是这样输入的aaaa
2
1
bbbb
3
4

头发 发表于 2020-10-28 19:42:48

小甲鱼的铁粉 发表于 2020-10-28 19:41
我是这样输入的

结果和我说的一样吗 ?我刚才试了下还是那样
bbbb的最高成绩是:2
的最高成绩是:4

小甲鱼的铁粉 发表于 2020-10-28 19:44:56

xm:cj:cj:xm:cj:cj:av=2.50
max=4
在2行2列
aaaa的最高成绩是:2
bbbb的最高成绩是:4
这是我的输出。。。。{:10_277:}
好奇怪

头发 发表于 2020-10-28 19:47:03

小甲鱼的铁粉 发表于 2020-10-28 19:44
这是我的输出。。。。
好奇怪

我用的dev c++ 为啥会不一样嘞、、、、???? 最佳给了谢谢啦

小甲鱼的铁粉 发表于 2020-10-28 19:47:30

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

我用dev试试

头发 发表于 2020-10-28 19:51:01

小甲鱼的铁粉 发表于 2020-10-28 19:47
我用dev试试

嗯嗯 麻烦了

小甲鱼的铁粉 发表于 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的结果{:10_277:}{:10_277:}

小甲鱼的铁粉 发表于 2020-10-28 19:59:35

用的机房的电脑,只能这样截图了

小甲鱼的铁粉 发表于 2020-10-28 20:04:41

小甲鱼的铁粉 发表于 2020-10-28 19:59
用的机房的电脑,只能这样截图了

有点bug,b成绩那里,应该这样
#include<stdio.h>
int main()
{
      int g;
      int i,j,max=0,hang,lie,emax,t;
      char name;
      float sum=0;
      for(i=0;i<2;i++)
      {
                      max = 0;
                printf("xm:");
                scanf("%s",name);
               
                for(j=0;j<2;j++)
                {
                        printf("cj:");
                        scanf("%d",&g);
                        sum=sum+g;
                        if(g>max)
                        {
                              max=g;
                              hang=i;
                              lie=j;      
                              emax=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,emax);      //这句是输出每个同学的最高成绩
         }
         
      return 0;
}
页: [1]
查看完整版本: 求c大佬指点 我输出呢??