C语言入门-结构体(struct)

 查询学生成绩:

#include <stdio.h>

#define N 2


struct teacher
{
	char id[11];
	char name[21];
	char gender;
	int age;
	char zc[11];
	char xl[7];
	char phone[12];
	float wage;
};


void show(struct teacher dep[], int n);

int main()
{
	struct teacher sx[N];

	int i;

	for(i = 0; i < N; i++)
	{
		scanf("%s%s" ,sx[i].id, sx[i].name);
		fflush(stdin);//
		scanf("%c" ,&sx[i].gender);
		scanf("%d%s%s%s%f" , &sx[i].age, sx[i].zc,
				sx[i].xl, sx[i].phone,&sx[i].wage);
	}

	show(sx, N);
	return 0;
}

void show(struct teacher dep[], int n)
{
	int i;
	/*
	char id[11];char name[21];char gender;int age;
	char zc[11];char xl[7];	char phone[12];	float wage;
	*/
	for(i = 0; i < n; i++)
		//显示
		printf("%s %s %c %d %s %s %s %.2f\n" ,dep[i].id, dep[i].name, dep[i].gender,
				dep[i].age, dep[i].zc,dep[i].xl, dep[i].phone,
				dep[i].wage);
}
#include <stdio.h>
#include <string.h>//用字符串中的strlen,strcmp,strcpy等需要头文件
#define N 2

void input(char no[ ][11],char name[][21],int age[],
		float c_score[ ], float math[], float english[], int n);
void output(char no[ ][11],char name[][21],int age[],
		float c_score[ ], float math[], float english[], int n);
int find(char name[][21], int n, char fname[]);
void total(char no[ ][11],char name[][21],int age[],
		float c_score[ ],  int n);
int main()
{
	char no[N][11];
	char name[N][21];
	int age[N];
	float c_score[N];
	float math[N];
	float english[N];
	char fname[21];
	int result;

	input( no ,name, age,c_score, math, english, N);
	output( no ,name, age,c_score, math, english, N);

	fflush(stdin);
	gets(fname);

	result = find(name, N, fname);
	if(result < 0)
		printf("查无此人\n");
	else
	output( no+result,name + result, 
			age  + result,c_score + result, 
			math + result, english + result, 1);
	
	 total( no, name, age,
		c_score,  N);


	return 0;
}

void input(char no[ ][11],char name[][21],int age[],
		float c_score[ ], float math[], float english[], int n)
{

	int i;

	for(i = 0; i < n; i++)
	{
		printf("请输入学号: ");
		fflush(stdin);
		gets(no[i]);
		printf("请输入姓名: ");
		fflush(stdin);
		scanf("%s", name[i]);

		printf("请输入年龄: ");	
		scanf("%d", &age[i]);
		printf("请输入C语言成绩: ");	
		scanf("%f", &c_score[i]);
		printf("请输入高等数学成绩: ");	
		scanf("%f", &math[i]);
		printf("请输入英语成绩: ");	
		scanf("%f", &english[i]);
	}

}
void output(char no[ ][11],char name[][21],int age[],
		float c_score[ ], float math[], float english[], int n)
{
	int i;

	for(i = 0; i < n; i++)
	{
		printf("%-14s%-22s%-4d%-7.1f%-7.1f%-7.1f\n", no[i], name[i], age[i],
				c_score[i], math[i], english[i]);
	}

}

//返回值是该学生的位置
int find(char name[][21], int n, char fname[])
{
	int i;

	for(i = 0; i < n; i++)
	{
		if(0 == strcmp(name[i],fname))
			return i;
	}

	return -1;
}

void total(char no[ ][11],char name[][21],int age[],
		float c_score[ ],  int n)
{
	int i;
	printf("\n优(成绩>=90)的学生为:\n");
	for (i = 0; i<N; i++)
	{
		if (c_score[i] >= 90)
		{
			printf("%-10d",no[i]);
			printf("5-16d",name[i]);
			printf("%-4d",age[i]);
			printf("%-6.0f",c_score[i]);
			printf("\n");

		}
	}
	printf("\n良(80<=成绩<90)的学生: \n");
	for (i=0;i<N;i++)
	{
		if(c_score[i]>=80 && c_score[i] < 90)
		{
			printf("%-10ld",no[i]);
			printf("%-16s", name[i]);
			printf("%-4d",age[i]);
			printf("%-6.0f", c_score[i]);
			printf("\n");
		}
	}

}

 C语言结构体的输入输入出:



#include<stdio.h>

struct stu{

        char name[20];

        //char  age[3];

        int     age;

        long score;

};

#define N 100      //宏定义

struct stu stu1[N];//结构体数组

int main()
{
        int i;
        int num; 
        printf("you want to input and how many student:\n"); 
        scanf("%d",&num); 
 
        for(i = 0;i < num; i++) 
        { 
 
                printf("请输入第%d个学生的name:\n",i+1); 
 
                scanf("%s",&stu1[i].name); 
 
 
                printf("请输入第%d个学生的age:\n",i+1); 
 
                scanf("%d",&stu1[i].age); 
 
        } 
 
 
        printf("your information is:\n"); 
 
        for(i = 0;i < num;i++) 
        { 
 
                printf("%s\n%d\n",stu1[i].name,stu1[i].age);     
 
        } 
}





-- (插入) 可视 --                                           49        51,2          69%

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Naiva

你的鼓励将是我创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值