例题抄写

 

/*9.1学生(学号姓名 型别 住址)放在一个结构体变量中 住处之恩个学生的信息
*/

 

#include <stdio.h>
int main(){
    struct Student{
        int num;
        char  name[20] ;
        char sex;
        char add[20];
    }s1={1,"»ÆÏþÃ÷",'m',"BeiJing"}; 
    
    printf("num=%d\n,name=%s\n,sex=%c\n,add=%s\n",s1.num,s1.name,s1.sex,s1.add); 
    
} 

结果:
num=1
,name=黄晓明
,sex=m
,add=BeiJing

--------------------------------
Process exited after 0.9575 seconds with return value 0
请按任意键继续. . .


总结:很简单的代码,上课都练过,不过自己打还是有点慢,可能是打代码少的原因


9.2
输入两个学生的姓名,学号,成绩 输出较高的学生的学号,姓名,成绩 

#include <stdio.h>
int main(){
	struct student{
		int num;
		char name;
		float score;	
	}s1,s2;
	
	scanf("%d,%s,%f",&s1.num,&s1.name,&s1.score);
	
	scanf("%d,%s,%f",&s2.num,&s2.name,&s2.score);
	
	if(s1.score>s2.score){
		printf("%d,%s,%f",s1.num,s1.name,s1.score);//比较
	}else if(s1.score<s2.score){
		printf("%d,%s,%f",s2.num,s2.name,s2.score);//比较
	}else{
		printf("两人成绩相同");    //比较(相同)
	}
}         

  

//l老师,这道题有问题,我的电脑没有报错但是也没有警告,但运行时就是显示:程序已停止工作

 

/*
9.3 三个候选人 每个选民只能投一人
编一个统计选票的程序 先后输入被选人名字最后输出结果
*/

#include <stdio.h>

int main(){
    
    struct ppeople{
        char name[20];
        int count;
    } ren[3] = {"liu",0, "wang",0,"sun",0};
    
    int i, j;
    char ren_name[20];
    
    for (i = 1; i <= 10;i++){
        scanf("%s", ren_name);
        for ( j = 0; j < 3; j++){
            if (strcmp(ren_name, ren[j].name) == 0) ren[j].count++;
        }
    }
    
    printf("\n结果\n");
    for (i = 0; i < 3; i++){ 
        printf("%5s:%d\n", ren[i].name,lren[i].count)
    } 
}

结果:

liu
liu
liu
liu
wang
wang
sun
sun
sun

结果

liu:4
wang:2
sun:3
请按任意键继续. . .
 

总结:这道题写的时候没有思路,后来看书才知道要怎么做,我本来想定义指针,变化指针指向 的位置来实现结果发现不对,所以改了好几遍才写出来

 

9.4 n个学生的信息(学号成绩姓名) 按成绩分高低输出个学生的信息 

#include <stdio.h>

int main(){
    
    struct Student{
        int num;
        char name[20];
        int score;
    }stu[5] = {{1,"li",50},{2,"zhao",60},{3,"wang",70},{4,"qian",80},{5,"sun",90}};
        
        struct Student temp;//出现问题 
        int j,k;
        int i = 0;
        int n = 5;
        for(i;i<n-i;i++){
            k = i;
            for(j=i+1;j<n;j++){
                if(stu[j].score>stu[k].score){
                    k = j;
                    temp = stu[k];
                    stu[k] = stu[i];
                    stu[i] = temp;
                }
                
            }
        }    
        
        for(i = 0;i<5;i++){
            printf("%d,%s,%d\n",stu[i].num,stu[i].name,stu[i].score);
        }
    
} 

结果:

5,sun,90
4,qian,80
3,wang,70
1,li,50
2,zhao,60


--------------------------------
Process exited after 0.77 seconds with return value 0
请按任意键继续. . .


 

总结:代码中标出的地方第一遍打时出现问题,我直接定义了temp结果显示不行,后来才弄明白这没有定义结构里的东西,所以后来加上了结构名实现了

 

/*9.5通过指向结构体变量的指针变量来输出结构体中成员的信息。*/

#include <stdio.h>
int main(){
    struct Student{
        int num;
        char name[20];
        float score;
    }s1 = {1,"li",60};
    struct Student *p;//多加了一个int 
    p = &s1;//忘打地址符 
    printf("%d,%s,%f\n",p->num,p->name,p->score);//指针输出法1 
    printf("%d,%s,%f\n",(*p).num,(*p).name,(*p).score); //指针输出法2 
}

结果:

1,li,60.000000
1,li,60.000000

--------------------------------
Process exited after 0.3954 seconds with return value 0
请按任意键继续. . .

 

总结:以前我总在定义分数时定义int型,后来发现有时成绩是浮点型的所以之后都改成了浮点型,而且用了两种指针输出方法输出

 

9.6 有n个结构体变量,内含学生学号,姓名和3门课程成绩。要求输出平均成绩最高的学生的信息
  (包括学号,姓名,3门课程成绩和平均成绩)。


#include <stdio.h>

int main(){

struct student{
    int num;
    char name[20];
    char sex;
    int age;
};
    struct student stu[3] = { { 10101, "Li", 'M', 18 }, { 10102, "zhang", 'M', 18 }, { 10103, "Wang", 'F', 18 } };
    struct student *p;
    p = stu; 

    for (; p < stu + 3; p++)
        printf("%5d %-20s%2c%4d\n", p->num, p->name, p->sex, p->age);
}
/*
10101 Li               M  18
10102 zhang           M  18
10103 Wang             F  18
请按任意键继续. . .
*/

总结:这道题感觉和前面体有好多类似的地方,没出什么毛病,感觉这么练习很有用

 

9.7

#include<stdio.h>
struct student
{
    int num;
    char name[20];
    float score[3];
    float aver;
};
void input(struct student stu[])
{
    int i;
    printf("请输入各学生的信息:学号,姓名,三门课成绩:\n");
    for (i = 0; i < 3; i++){
        scanf("%d%s%f%f%f", &stu[i].num, &stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);
        stu[i].aver = (stu[i].score[0] + stu[i].score[1] + stu[i].score[2]) / 3.0;
    }
}
struct student max(struct student stu[])
{
    int i, m = 0;
    for (i = 1; i<3; i++)
        if (stu[i].aver>stu[m].aver) m = i;
    return stu[m];
}
void print(struct student stud)
{
    printf("\n成绩最高的学生是:\n");
    printf("学号:%d\n姓名: %s\n三门课成绩: %5.1f ,%5.1f,%5.1f\n平均成绩:%5.1f\n", stud.num, stud.name, stud.score[0], stud.score[1], stud.score[2], stud.aver);
}
int main()
{
    //void input (struct student stu[]);
    //struct student max(struct student stu[]);
    //void print(struct student stu);
    struct student stu[3], *p = stu;
    input(p);
    print(max(p));
    return 0;
}
/*请输入各学生的信息:学号,姓名,三门课成绩:
10101 Li 78 89 98
10103 Wang 98.5 87 69
10106 Sun 88 76.5 89

成绩最高的学生是:
学号:10101
姓名: Li
三门课成绩:  78.0 , 89.0, 98.0
平均成绩: 88.3
请按任意键继续. . .
*/

 

 

 上传码云

 

 

posted on 2017-04-09 21:32  帅气的攻城狮  阅读(157)  评论(0编辑  收藏  举报

导航