c - 使用 Structure 打印五个成员高度中的第 n 个成员

标签 c arrays structure

enter image description here

#include <stdio.h>

struct member {
    char name[20];
    int age;
    char sex;
    int height;
};  


int main(void)
{
int i,j;
struct member input[5]={0,};
int tot, rank, max=0;
int max2[5]={0,};
float res;

for (i=0; i<5; i++)
{
    scanf("%s ", input[i].name);
    scanf("%d %c %d", &input[i].age, &input[i].sex, &input[i].height);
    getchar();
}
    scanf("%d", &rank);
    max =input[0].height;

 for(i=1;i<=5;i++) {
    for(j=0;j<5;j++) {
        if(max>=input[j].height)
            max=max;
        else
            max=input[j].height;
    }

     max2[i]=max;

     for(j=0;j<5;j++) {
        if(max==input[j].height)
            input[j].height*=(-1);
      }

     max=-1;
 }


 for (i=0; i<5; i++)
{
    if(max2[rank]== input[i].height)
        printf("%s %d %c %d\n",input[i].name, input[i].age, input[i].sex,input[i].height);

}



    fflush(stdin);
    getchar();


return 0;

}

上面我的代码打印的结果什么都没有...甚至输入的高度也变成负数.. 这个程序有什么问题? 输入和打印应该与示例图像相同...... 请帮忙!

最佳答案

第一个scanf应该是固定的

scanf("%s ", input[i].name);

在第二个 scanf 中,input[i].sex 是一个 char 类型,所以你必须使用 "% c" 而不是 %s

scanf("%d %s %d", &input[i].age, &input[i].sex, &input[i].height);

应该是

scanf("%d %c %d", &input[i].age, &input[i].sex, &input[i].height);

关于c - 使用 Structure 打印五个成员高度中的第 n 个成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16737486/

相关文章:

c - LAPACKE_dgesvd(..) 中的参数 superbed 是什么意思?

c - 插入链表

c - < insmod : ERROR: could not insert module GSM. ko : Unknown symbol in module. > 如何修复它?

Java 2D 数组 : Return Row with Maximum Value

c - 结构体指针前向声明?

java - 在 Java 中放置比较器类的最佳位置是哪里

matlab - 从matlab中的结构数组中删除项目

c - 填充 C 输出参数

java - 用户将字母插入数组并控制输入Java是否有重复和顺序

c - 我应该编写一个程序来对结构数组进行排序,但我不知道这样做