Day 3 算法笔记之习题集2.8

本文展示了C语言中结构体与数组的使用,包括读取输入、比较、统计和输出。程序涉及到了二维数组、结构体数组、联合体的使用,以及根据条件进行不同的输入处理。同时,还包含了函数的运用,如输入输出函数,计算平均值和查找最高分。
摘要由CSDN通过智能技术生成

目录

1.C语言11.1

2.C语言11.2

3.C语言11.4

4.C语言11.7

5.C语言11.8


1.C语言11.1

这里有一个细节需要注意,定义martix时是定义成二维数组,因为c语言里数组的每一层可以当做是字符串,所以需要二维数组。

#include<cstdio>
#include<cstring>

struct person{
	char name[20];
	int count;
}leader[3]={"Li",0,"Zhang",0,"Fun",0};


int main(){
	
	int length;
	scanf("%d",&length);
	char martix[100][10];
	for (int i=0; i<length; i++){
		scanf("%s",martix[i]);
	}
	for(int i=0;i<length;i++){
		if (strcmp(martix[i],leader[0].name) ==0){
			leader[0].count+=1;
		}if (strcmp(martix[i],leader[1].name) ==0){
			leader[1].count+=1;
		}if (strcmp(martix[i],leader[2].name) ==0){
			leader[2].count+=1;
		}
	}
	for(int i=0;i<3;i++){
		printf("%s:%d\n",leader[i].name,leader[i].count);
	}
	
	return 0;
}

2.C语言11.2

#include<cstdio>
#include<cstring>

struct student {
    int num;
    char name[20];
    char sex;
    int age;
};


int main(){
	int length;
	scanf("%d",&length);
	student martix[length];
	for(int i=0;i<length;i++){
		scanf("%d %s %c %d",&martix[i].num,&martix[i].name,&martix[i].sex,&martix[i].age);
	}
	for(int i=0;i<length;i++){
		printf("%d %s %c %d\n",martix[i].num,martix[i].name,martix[i].sex,martix[i].age);
	}
	
	
	return 0;
}

3.C语言11.4

这一个有意思的是,输入到一半还可以停下来判断一下再输入。

#include<cstdio>
#include<cstring>


struct {
    int num;
    char name[10];
    char sex;
    char job;
    union {
        int sclass;
        char position[10];
    }category;
}stu[100];

int main(){
	int length;
	scanf("%d",&length);
	
	for(int i=0; i<length; i++){
		scanf("%d %s %c %c",&stu[i].num,&stu[i].name,&stu[i].sex,&stu[i].job);
		if (stu[i].job=='s'){
			scanf("%d",&stu[i].category.sclass);
		}else{
			scanf("%s",&stu[i].category.position);
		}
	}
	
	for(int i=0; i<length; i++){
		if (stu[i].job=='s'){
			printf("%d %s %c %c %d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].job,stu[i].category.sclass);
		}else{
			printf("%d %s %c %c %s\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].job,stu[i].category.position);
		}
	}
	
	
	
	
	return 0;
}

4.C语言11.7

这一个就中规中矩,但是我对函数对数组的作用现在好像有点迷,等明天复习一下看看。

#include<cstdio>
#include<cstring>

struct student{
	int num;
	char name[20];
	int c1;
	int c2;
	int c3;
}stu[5];

void input(){
	for (int i=0;i<5;i++){
		scanf("%d %s %d %d %d",&stu[i].num,&stu[i].name,&stu[i].c1,&stu[i].c2,&stu[i].c3);
	}
}

void output(){
	for (int i=0;i<5;i++){
		printf("%d %s %d %d %d\n",stu[i].num,stu[i].name,stu[i].c1,stu[i].c2,stu[i].c3);
	}
}

int main(){
	input();
	output();
	
	
	return 0;
}

5.C语言11.8

原来数组可以这样用?知其然不知其所以然。

#include<cstdio>
#include<cstring>

struct student{
	int num;
	char name[20];
	int c1;
	int c2;
	int c3;
}stu[10];

void input(){
	for (int i=0;i<10;i++){
		scanf("%d %s %d %d %d",&stu[i].num,&stu[i].name,&stu[i].c1,&stu[i].c2,&stu[i].c3);
	}
}

void output(){
	for (int i=0;i<10;i++){
		printf("%d %s %d %d %d\n",stu[i].num,stu[i].name,stu[i].c1,stu[i].c2,stu[i].c3);
	}
}

void putev(){
	double x=0,y=0,z=0;
	for(int i=0;i<10;i++){
		x+=stu[i].c1;
	}
	for(int i=0;i<10;i++){
		y+=stu[i].c2;
	}
	for(int i=0;i<10;i++){
		z+=stu[i].c3;
	}
	printf("%.2f %.2f %.2f\n",x/10,y/10,z/10);
}

void findmax(){
	int max = 0;
	for(int i=1;i<10;i++){
		if (stu[max].c1+stu[max].c2+stu[max].c3 <stu[i].c1+stu[i].c2+stu[i].c3){
			max = i;
		}
		
	}
	printf("%d %s %d %d %d\n",stu[max].num,stu[max].name,stu[max].c1,stu[max].c2,stu[max].c3);
}

int main(){
	input();
	putev();
	findmax();
//	output();
	
	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值