C语言 结构体题目(能帮助大家清晰地掌握结构体的相关用法,简单易懂)

题目1:

【问题描述】
有以下职工信息,使用结构体数组存储这些信息,从键盘输入5条记录,
之后在屏幕上依次输出职工信息。
struct stuff{
int stuffID;//职工编号
float bonus; //工资
};
【输入形式】5条职工信息,分行输入,数据间空格隔开
【输出形式】分行输出5条职工信息和最低工资,每行数据均使用1个空格分隔
【输入样例】
1001 8540.59
1002 6345.45
1003 3500.65
1004 4898.86
1005 5345.80
【输出样例】每行数据均使用一个空格分割,分五行输出
1001 8540.59
1002 6345.45
1003 3500.65
1004 4898.86
1005 5345.80
minBonus = 3500.65

代码入下:

#include <stdio.h>

struct stuff
{
    int stuffID;
    float bonus;
}a[5];

int main()
{
    int i;
    float min;
    for(i = 0; i < 5; i++)
    scanf("%d %f", &a[i].stuffID, &a[i].bonus);
    min = a[0].bonus;
    for(i = 1; i < 5; i++)
    {

        if(min >= a[i].bonus)
        min = a[i].bonus;
    }
    for(i = 0; i < 5; i++)
    printf("%d %.2f\n", a[i].stuffID, a[i].bonus);

    printf("minBonus = %.2f", min);

}

题目2:

【问题描述】若有以下银行卡信息:
struct card{
    int id;//银行卡号
    int bonus; //金额
};
请编写程序,从键盘输入5条银行卡记录,使用结构体数组存
储这些数据,并按金额升序排序,输出排序后的结果。
【输入形式】5条银行卡记录分行输入,每行数据用空格间隔
【输出形式】分5行输出数据,每行数据均使用空格间隔
【输入样例】
1001  20
1002  80
1003  50
1004  10
1006  40
【输出样例】
1004  10
1001  20
1006  40
1003  50
1002  80

代码入下:

#include <stdio.h>
#include <stdlib.h>

struct card
{
    int id;//银行卡号
    int bonus; //金额
}a[5],tamp;

int main()
{
    int i, j;
    for(i = 0; i < 5; i++)
        scanf("%d %d", &a[i].id, &a[i].bonus);
    for(i = 1; i < 5; i++)
    {
        for(j = 0; j < 5 - i; j++)
        {
            if(a[j].bonus > a[j+1].bonus)
            {
                tamp = a[j];
                a[j] = a[j+1];
                a[j+1] = tamp;
            }
        }
    }
    for(j = 0; j < 5; j++)
    {
        printf("%d %d\n", a[j].id, a[j].bonus);
    }
}

题目3:

【问题描述】有以下学生信息,使用结构体数组存储这些信息

struct student{
int num;//学号
int computer; //计算机成绩
}s[5]={{101,75},{103,80},{104,85},{106,90}};

再输入一条新记录,插入到结构体数组中,让5条记录按计算机成绩升序有序。
【输入形式】2个数据都使用空格分隔
【输出形式】分五行输出数据,每行数据均使用空格分隔
【输入样例】102 88
【输出样例】每行数据均使用一个空格分隔,分五行输出
101 75
103 80
104 85
102 88
106 90

代码入下:

#include <stdio.h>
#include <stdlib.h>


struct student
{
   int num;//学号
   int computer; //计算机成绩
}s[5]={{101,75},{103,80},{104,85},{106,90}},tamp;

int main()
{
    int i, j;
    scanf("%d %d", &s[4].num, &s[4].computer);
    for(i = 1; i < 5; i++)
    {
        for(j = 0; j < 5 - i; j++)
        {
            if(s[j].computer > s[j+1].computer)
            {
                tamp = s[j];
                s[j] = s[j+1];
                s[j+1] = tamp;
            }
        }
    }
    for(j = 0; j < 5; j++)
        printf("%d %d\n", s[j].num, s[j].computer);
}

题目4:

【问题描述】有以下定义:

struct student{
    int num;  //学生序号
    char name[20];  //学生姓名
    int math;  //数学成绩
}stu[4];

请从键盘输入4条学生信息存入结构体数组stu,之后在屏幕上依
次输出这些学生信息,并计算出数学平均成绩,结果保留2位小数。
【输入形式】每条记录的3个数据都使用空格分隔
【输出形式】分四行输出学生信息,每行数据均使用1个空格分隔;
最后一行显示数学平均成绩,保留2位小数
【输入样例】
1 aa 45
2 bb 67
3 dd 77
4 qq 88
【输出样例】
1 aa 45
2 bb 67
3 dd 77
4 qq 88
avg = 69.25 

代码入下:

#include<stdio.h>

struct student
{
    int num;  //学生序号
    char name[20];  //学生姓名
    int math;  //数学成绩
}stu[4];


int main()
{
	int i;
	float avg;
	for(i = 0; i < 4; i++)
    {
		scanf("%d %s %d", &stu[i].num, stu[i].name, &stu[i].math);
	}
	for(i = 0;i < 4; i++)
	{
		printf("%d %s %d\n", stu[i].num, stu[i].name, stu[i].math);
	}
	avg=1.0*(stu[0].math+stu[1].math+stu[2].math+stu[3].math)/4;
	printf("avg = %.2f", avg);
}

题目5:

【问题描述】有以下类信息,使用结构体数组存储这些信息
struct class{
int id;//类编号
char info[20]; //类信息
}a[5]={{1,"aaa"},{2,"bbb"},{6,"ccc"},{7,"ddd"},{4,"eee"}};

从键盘输入一个类编号,如果有该类,删除该类信息,并输出删除
后剩余类信息;如果没有,全部输出。
【输出形式】分行输出数据,每行数据均使用一个空格分隔
【输入样例】1
【输出样例】每行数据均使用一个空格分隔,分行输出
2 bbb
6 ccc
7 ddd
4 eee

代码入下:

#include<stdio.h>


struct class
{
	int id;//类编号
	char info[20]; //类信息
}a[5]={{1,"aaa"},{2,"bbb"},{6,"ccc"},{7,"ddd"},{4,"eee"}};


int main(void)
{
   int i, j, x;
   scanf("%d", &x);
   for(i = 0; i < 5; i++)
   {
       if(a[i].id==x)
        break;
   }
   for(j = i; j < 4; j++)
   {
       a[j] = a[j + 1];
   }
   for(j = 0; j < 4; j++)
   {
       printf("%d %s\n", a[j].id, a[j].info);
   }
}

以上就是我给大家精心准备的5道C语言结构体的题目,希望对大家能有所帮助,记得多多点赞收藏评论哦!感谢感谢!


版权声明:本文为jshsjjn原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。