日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

定义struct结构体数组

發布時間:2024/3/24 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 定义struct结构体数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

題目要求:
有3個候選人,每個選民只能投票選一人,要求編一個統計選票的程序,先后輸入被選人的名字,最后輸出各人得票結果。
解題思路:
設一個結構體數組,數組中包含3個元素
每個元素中的信息應包括候選人的姓名(字符型)和得票數(整型)
輸入被選人的姓名,然后與數組元素中的“姓名”成員比較,如果相同,就給這個元素中的“得票數”成員的值加1
輸出所有元素的信息

說明: (1)定義結構體數組一般形式是 ① struct 結構體名{成員表列} 數組名[數組長度]; ② 先聲明一個結構體類型,然后再用此類型定義結構體數組:結構體類型 數組名[數組長度];如:struct Person leader[3]; (2)對結構體數組初始化的形式是在定義數組的后面加上: ={初值表列}; 如: struct Person leader[3]= {"Li",0,"Zhang",0,"Fun",0}; /* Note:Your choice is C IDE */ #include "stdio.h"struct Person{char name[20];//姓名int count;//票數 }a[3]={"li",0,"zhang",0,"liu",0};//a[3]為全局的結構體數組void main() {int i,j;char b[20];printf("請輸入10個人的投票的結果:");for(i=0;i<10;i++){scanf("%s",b);//讀人10個人的投票姓名for(j=0;j<3;j++)if(strcmp(b,a[j].name)==0)//stcmp函數比較字符串的大小,若兩個字符串大小相等則結果為0a[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 zhangli:4 zhang:4liu:2

題目要求:
有n個學生的信息(包括學號、姓名、成績),要求按照成績的高低順序輸出各學生的信息。
解題思路:
用結構體數組存放n個學生信息,采用選擇法對各元素進行排序(進行比較的是各元素中的成績)。

/* Note:Your choice is C IDE */ #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;// const是一個C語言的關鍵字,它限定一個變量不允許被改變。//若有30個人則 const int n=30;//const int n=5;相當于在最上面直接定義,即 #define N 5//一旦被修飾就不能被賦值改變。當const int n=5之后再令n=9就是錯的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.0010103 Wang 98.5010106 Li 86.9010101 Zhang 78.0010108 Ling 73.50 上面代碼進行優化 1 函數的調用 /* Note:Your choice is C IDE */ #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

總結

以上是生活随笔為你收集整理的定义struct结构体数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。