题目要求:
有3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输入被选人的名字,最后输出各人得票结果。
解题思路:
设一个结构体数组,数组中包含3个元素
每个元素中的信息应包括候选人的姓名(字符型)和得票数(整型)
输入被选人的姓名,然后与数组元素中的“姓名”成员比较,如果相同,就给这个元素中的“得票数”成员的值加1
输出所有元素的信息
说明:
(1)定义结构体数组一般形式是
① struct 结构体名
{成员表列} 数组名[数组长度];
② 先声明一个结构体类型,然后再用此类型定义结构体数组:
结构体类型 数组名[数组长度];
如:
struct Person leader[3];
(2)对结构体数组初始化的形式是在定义数组的后面加上:
={初值表列};
如:
struct Person leader[3]= {"Li",0,"Zhang",0,"Fun",0};
#include "stdio.h"
struct Person{
char name[20];
int count;
}a[3]={"li",0,"zhang",0,"liu",0};
void main()
{
int i,j;
char b[20];
printf("请输入10个人的投票的结果:");
for(i=0;i<10;i++){
scanf("%s",b);
for(j=0;j<3;j++)
if(strcmp(b,a[j].name)==0)
a[j].count++;
}
for(i=0;i<3;i++)
printf("%5s:%d\n",a[i].name,a[i].count);
}
结果显示:
请输入10个人的投票的结果:li li li li liu liu zhang zhang zhang zhang
li:4
zhang:4
liu:2
题目要求:
有n个学生的信息(包括学号、姓名、成绩),要求按照成绩的高低顺序输出各学生的信息。
解题思路:
用结构体数组存放n个学生信息,采用选择法对各元素进行排序(进行比较的是各元素中的成绩)。
#include "stdio.h"
struct Student{
int num;
char name[20];
float score;
};
void main()
{
struct Student stu[5]={
{10101,"Zhang",78},
{10103,"Wang",98.5},
{10106,"Li",86.9},
{10108,"Ling",73.5},
{10110,"Fun",100}
};
const int n=5;
int i,j;
struct Student k;
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++)
if(stu[j+1].score>stu[j].score){
k=stu[j];
stu[j]=stu[j+1];
stu[j+1]=k;
}
}
for(i=0;i<n;i++)
printf("%6d %8s %6.2f\n",stu[i].num,stu[i].name,stu[i].score);
}
结果显示:
10110 Fun 100.00
10103 Wang 98.50
10106 Li 86.90
10101 Zhang 78.00
10108 Ling 73.50
上面代码进行优化 1
函数的调用
#include "stdio.h"
void sort(struct Student stu[],int n);
struct Student{
long int num;
char name[20];
float score;
};
void main()
{
struct Student stu[3]={
{2019010,"Meng",69.7},
{2019012,"Liu",78.9},
{2019014,"Zhang",98.5}
};
int i,n=3;
sort(stu,n);
for(i=0;i<n;i++)
printf("%6ld %8s %6.1f\n",stu[i].num,stu[i].name,stu[i].score);
}
void sort(struct Student stu[],int n){
int i,j;
struct Student k;
for(i=0;i<n-1;i++){
for(j=0;j<n-1-i;j++)
if(stu[j+1].score>stu[j].score){
if(stu[j+1].score>stu[j].score){
k=stu[j];
stu[j]=stu[j+1];
stu[j+1]=k;
}
}
}
}
结果显示:
2019014 Zhang 98.5
2019012 Liu 78.9
2019010 Meng 69.7
上面的代码进行优化 2
函数的调用
#include "stdio.h"
void sort(struct student src[3],int n);
struct student
{
long xuehao;
char name[20];
int grade;
};
int main()
{
int i;
struct student src[3]={
{2019052,"a",69},
{2019051,"b",78},
{2019053,"c",70}
};
sort(src,3);
for(i=0;i<3;i++){
printf("%ld %8s %d\n",src[i].xuehao,src[i].name,src[i].grade);
}
}
void sort(struct student src[3],int n)
{
int j=0,i=0;
struct student temp;
for(j=2;j>0;j--){
for(i=0;i<j;i++){
if(src[i+1].grade>src[i].grade){
temp=src[i];
src[i]=src[i+1];
src[i+1]=temp;
}
}
}
}
结果显示:
2019051 b 78
2019053 c 70
2019052 a 69
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)