| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1861 人关注过本帖
标题:函数那里有点问题,麻烦大佬们看一下!!!
只看楼主 加入收藏
未遂1002
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-11-28
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:7 
函数那里有点问题,麻烦大佬们看一下!!!
编程:编写一个函数print,打印一个学生的成绩数组,该数组中有5个学生的数据记录,
每个记录包括num、name、score[3],用主函数输入这些记录,用print函数输出这些记录。


#include<stdio.h>
struct stu
{
  int num;
  char name[20];
  int score [3];
}student[5];

void print(struct student[])
{
  int k,l;
  for(k=0;k<5;k++)
  {
     printf("%d",student[k].num);
     printf("%c",student[k].name[20]);
     for(l=0;l<3;l++)
     {
     printf("%d",student[k].score[l]);
     }
  
  
  }

}


void main()
{
  int i,j;
  for(i=0;i<5;i++)
  {
      printf("\n请输入学号");
      scanf("%d",&student[i].num);
      printf("\n请输入姓名");
      scanf("%c",&student[i].name);
      printf("\n请输入3门成绩");
      for(j=0;j<3;j++)
      {
          scanf("%d",&student[i].score[j]);
      }
  }
  print(student);


}





显示的错误是这样的:error C2664: 'print' : cannot convert parameter 1 from 'struct stu [5]' to 'struct student []'

[此贴子已经被作者于2018-12-19 12:48编辑过]

搜索更多相关主题的帖子: 函数 print num student printf 
2018-12-19 12:34
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
void print(struct student[])
改为
void print(struct stu[])

你的代码中根本就不存在 struct student 这个结构体名
2018-12-19 12:54
未遂1002
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-11-28
收藏
得分:0 
回复 2楼 rjsp
嗯 好像没错了
哦哦 应该是结构体的名称

我程序还有点问题
就是输入的时候
可以麻烦看一下吗
谢谢啦
2018-12-19 13:00
未遂1002
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-11-28
收藏
得分:0 
回复 3楼 未遂1002
为什么不能输入姓名
2018-12-19 13:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
以下是引用未遂1002在2018-12-19 13:00:54的发言:

嗯 好像没错了
哦哦 应该是结构体的名称
 
我程序还有点问题
就是输入的时候
可以麻烦看一下吗
谢谢啦

我只会写正宗标准的C代码,但我看你的编译器连void main都能容忍,估计是不支持标准C语法了。
程序代码:
#include <stdio.h>

struct student
{
    int num;
    char name[20];
    int score[3];
};

void print( const struct student s[], size_t n )
{
    for( size_t i=0; i!=n; ++i )
    {
        printf( "%d ", s[i].num );
        printf( "%s", s[i].name );
        for( size_t j=0; j!=sizeof(s[i].score)/sizeof(s[i].score[0]); ++j )
            printf( " %d", s[i].score[j] );
        putchar( '\n' );
    }
}

int main( void )
{
    struct student s[5];
    for( size_t i=0; i!=sizeof(s)/sizeof(*s); ++i )
    {
        printf( "请输入学号: " );
        scanf( "%d", &s[i].num );

        printf( "请输入姓名: " );
        scanf( "%s", s[i].name );

        printf( "请输入%zu门成绩: ", sizeof(s[i].score)/sizeof(s[i].score[0]) );
        for( size_t j=0; j!=sizeof(s[i].score)/sizeof(s[i].score[0]); ++j )
            scanf( "%d", &s[i].score[j] );
       

        putchar( '\n' );
    }

    print( s, sizeof(s)/sizeof(*s) );
}

输入输出如下:
请输入学号: 1
请输入姓名: name1
请输入3门成绩: 11 12 13

请输入学号: 2
请输入姓名: name2
请输入3门成绩: 21 22 23

请输入学号: 3
请输入姓名: name3
请输入3门成绩: 31 32 33

请输入学号: 4
请输入姓名: name4
请输入3门成绩: 41 42 43

请输入学号: 5
请输入姓名: name5
请输入3门成绩: 51 52 53

1 name1 11 12 13
2 name2 21 22 23
3 name3 31 32 33
4 name4 41 42 43
5 name5 51 52 53



2018-12-19 13:47
未遂1002
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-11-28
收藏
得分:0 
回复 5楼 rjsp
感谢感谢
2018-12-20 20:53
莱茵瓶
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:32
专家分:103
注 册:2018-10-30
收藏
得分:5 
程序代码:
#include<stdio.h>
struct stu
{
  int num;
  char name[20];                   //name[] 定义的是字符串数组
  int score [3];
}student[5];

void print(struct student[])
{
  int k,l;
  for(k=0;k<5;k++)
  {
     printf("%d",student[k].num);
     printf("%c",student[k].name[20]);  //c是字符 s是字符串输出,
                                        //改成 printf("%s",student[k].name);
    
     for(l=0;l<3;l++)
     {
     printf("%d",student[k].score[l]);
     } 
  }

}

void main()
{
  int i,j;
  for(i=0;i<5;i++)
  {
      printf("\n请输入学号");
      scanf("%d",&student[i].num);
      printf("\n请输入姓名");
      scanf("%c",&student[i].name);     //改成scanf("%s",student[i].name);
      printf("\n请输入3门成绩");
      for(j=0;j<3;j++)
      {
          scanf("%d",&student[i].score[j]);
      }
  }
  print(student);
}
弄清楚 char name[20]和char name;的区别
%c和%s 的区别
scanf (“%c”,&name) 、scanf (“%c”,name)、scanf (“%s”,&name)和scanf (“%s”,name)的区别
这几个搞清楚了你就明白问题在哪了
2018-12-21 10:03
未遂1002
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2018-11-28
收藏
得分:0 
回复 7楼 莱茵瓶
谢谢,懂了懂了。
2018-12-22 19:39
快速回复:函数那里有点问题,麻烦大佬们看一下!!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023250 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved