用结构体输入两个学生的学号、姓名和成绩,输出 成绩较高的学生的学号、姓名和成绩。

#include <stdio.h>
struct Student
{
int num;
char name[20];
float score;
};
void main()
{
struct Student student1,student2;
scanf("%d,%s,%f",&student1.num,&student1.name,&student1.score);
scanf("%d,%s,%f",&student2.num,&student2.name,&student2.score);
if(student1.score>student2.score)
printf("%s(%d):%6.2f\n",student1.name,student1.num,student1.score);
else
printf("%s(%d):%6.2f\n",student2.name,student2.num,student2.score);
}

哪里不对?

1、首先在编程软件中,引入头部的方法代码。

2、实现动态数组在结构体中间的方法代码,如下图所示。

3、运行测试的结果,如下图所示。

4、接着输入实现动态数组在结构体末尾的方法代码,如下图所示。

5、最后运行测试结果,如下图所示,就完成了结构体中使用动态数组输出数据。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-12

代码如下:

#include<stdio.h>

#include<stdlib.h>

int  main()

{struct  Student//声明结构体类型 

  {  int   num;

     char  name[20];

     float score; 

  }

  student1,student2;//定义两个结构体变量 

  scanf("%d%s%f",&student1.num,student1.name,&student1.score);//输入两个学生的数据 

  scanf("%d%s%f",&student2.num,student2.name,&student2.score);

  printf("The  higher  score is:\n");

  if(student1.score>student2.score)

  printf("%d %s %6.2f\n",student1.num,student1.name,student1.score);

  else  if(student1.score<student2.score) 

  printf("%d %s %6.2f\n",student2.num,student2.name,student2.score);

  else

  {printf("%d %s %6.2f\n",student1.num,student1.name,student1.score);

   printf("%d %s %6.2f\n",student2.num,student2.name,student2.score);

  }

  return 0;

}

扩展资料

结构体作用

结构体和其他类型基础数据类型一样,例如int类型、char类型,只不过结构体可以做成你想要的数据类型。以方便日后的使用。

在实际项目中,结构体是大量存在的。研发人员常使用结构体来封装一些属性来组成新的类型。由于C语言内部程序比较简单,研发人员通常使用结构体创造新的“属性”,其目的是简化运算。

结构体在函数中的作用不是简便,其最主要的作用就是封装。封装的好处就是可以再次利用。让使用者不必关心这个是什么,只要根据定义使用就可以了。

访问结构成员

为了访问结构的成员,我们使用成员访问运算符(.)。成员访问运算符是结构变量名称和我们要访问的结构成员之间的一个句号。您可以使用 struct 关键字来定义结构类型的变量。

结构作为函数参数

您可以把结构作为函数参数,传参方式与其他类型的变量或指针类似。

指向结构的指针

您可以定义指向结构的指针,方式与定义指向其他类型变量的指针相似,如下所示:

struct Books *struct_pointer;

现在,您可以在上述定义的指针变量中存储结构变量的地址。为了查找结构变量的地址,请把 & 运算符放在结构名称的前面,如下所示:

struct_pointer = &Book1;

为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如下所示:

struct_pointer->title;

本回答被网友采纳
第2个回答  推荐于2017-12-16

scanf("%d,%s,%f",&student1.num,&student1.name,&student1.score);

scanf("%d,%s,%f",&student2.num,&student2.name,&student2.score);

上面这2句不对,可以编译成功,但是保存的值是错误的,

因为它会把“逗号”当作字符送给了%s,所以最后面的%d没有输入数据。

可以换成空格。

scanf() 开始读取输入以后,会在遇到的第一个空白字符空格(blank)、制表符(tab)或者换行符(newline)处停止读取。

#include <stdio.h>

struct Student

{

int num;

char name[20];

float score;

};

void main()

{

struct Student student1,student2;

scanf("%d %s %f",&student1.num,&student1.name,&student1.score);

scanf("%d %s %f",&student2.num,&student2.name,&student2.score);

if(student1.score>student2.score)

printf("%s(%d):%6.2f\n",student1.name,student1.num,student1.score);

else

printf("%s(%d):%6.2f\n",student2.name,student2.num,student2.score);

}

本回答被提问者采纳