目录
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;
}