100000572 - 《算法笔记》2.8小节——C/C++快速入门->结构体(struct)的使用

《算法笔记》2.8小节——C/C++快速入门->结构体(struct)的使用

1303 Problem A C语言11.1

#include <cstdio>
#include <cstring>

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

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

1304 Problem B C语言11.2

#include <stdio.h>
#include <string.h>
//#include <stdlib.h>
//#include <iostream>
//using namespace std;

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

int main() {
	int num = 0;
	scanf("%d", &num);
	student stu[20];
	student *p = stu;

	for (int i = 0; i < num; i++) {
		scanf("%d %s %c %d", &(p + i)->num, &(p + i)->name, &(p + i)->sex, &(p + i)->age);
	}
	//scanf中间必须要加空格,也就是要与输入的格式一致

	for (int i = 0; i < num; i++) {
		printf("%d %s %c %d\n",  (p + i)->num, (p + i)->name, (p + i)->sex, (p + i)->age);
	}

/*	for (int i = 0; i < num; i++) {
		cin >> (p + i)->num >> (p + i)->name >> (p + i)->sex >> (p + i)->age;
		cout << (p + i)->num << " " << (p + i)->name << " " << (p + i)->sex << " " << (p + i)->age << endl;;
	}
*/
	  
	return 0;
}

1306 Problem C C语言11.4

#include <stdio.h>
#include <string.h>

struct{
	int num;
	char name[10];
	char sex;
	char job;
	union {
		int sclass;	//class是类声明的关键字,不能用来定义变量
		char position[10];
	}category;
}stuff[100];

int main() {
	int num;
	scanf("%d", &num);

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

	return 0;
}

1309 Problem D C语言11.7

#include <stdio.h>

struct{
	int num;
	char name[20];
	int score1, score2, score3;
}student[5];

void input();
void print();

int main() {
	
	input();	//结构体不能作为参数;数组可以
	print();
	return 0;
}

void input() {
	for (int i = 0; i < 5; i++) {
		scanf("%d %s %d %d %d", &student[i].num, &student[i].name, &student[i].score1, &student[i].score2, &student[i].score3);
	}
}
void print() {
	for (int i = 0; i < 5; i++) {
		printf("%d %s %d %d %d\n", student[i].num, student[i].name, student[i].score1, student[i].score2, student[i].score3);
	}
}

1310 Problem E C语言11.8

#include <stdio.h>

struct student{
	int num;
	char name[20];
	int score1, score2, score3;
}stu[10];

void input();
void advance(double &,double &, double &, int &);
void output(double &, double &, double &, int &);

int main() {
	double num1=0.0, num2=0.0, num3=0.0;
	int maxnum=0;

	input();
	advance(num1, num2, num3,maxnum);
	output(num1, num2, num3, maxnum);
	return 0;
}

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

void advance(double &num1, double &num2, double &num3, int &maxnum) {
	int sum = 0, max = 0;
	for (int i = 0; i < 10; i++) {
		num1 += stu[i].score1;
		num2 += stu[i].score2;
		num3 += stu[i].score3;
		sum = (stu[i].score1 + stu[i].score2 + stu[i].score3) / 3;
		if (max < sum) {
			max = sum;
			maxnum = i;
		}
	}
}

void output (double &num1, double &num2, double &num3, int &maxnum) {
	printf("%.2f %.2f %.2f\n%d %s %d %d %d", num1/10, num2/10, num3/10, stu[maxnum].num, stu[maxnum].name, stu[maxnum].score1, stu[maxnum].score2, stu[maxnum].score3);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值