看板 C_and_CPP 關於我們 聯絡資訊
#include <stdio.h> #include<stdlib.h> struct date{ int yy; int mm; int dd; }; struct student{ char name[15]; struct date birthday; int eng; int math; int prog; }; void printStudent(struct student s){ printf("%6s %6.2f\n",s.name,(float)((s.eng)+(s.math)+(s.prog))/3); } int main(){ int select; int i; int j; int list[10]; int change; char namechange; printf("1. List average scroes.\n"); printf("2. List students born in January.\n"); printf("3. Sort students by programming score.\n"); printf("Enter any other number to exit.\n?"); scanf("%d", &select); struct student sArray[10]= { {"John" ,{71, 1,3},78 ,90 ,60}, {"Mary" ,{72, 5,13},80 ,66 ,74}, {"Neil" ,{73, 3,23},42 ,55 ,90}, {"Eric" ,{75, 1,14},88 ,99 ,75}, {"Norman",{78, 2,9}, 64 ,52 ,85}, {"Tom" ,{80, 10,28},60 ,55 ,61}, {"Jerry" ,{85, 11,3},94 ,87 ,88}, {"Linda" ,{77, 9,18},83 ,74 ,62}, {"Rita" ,{74, 6,30},71 ,62 ,50}, {"Angie" ,{72, 1,27},57 ,58 ,59} }; while (1){ switch(select){ case 1: for(i=0;i<=9;i++){ printStudent(sArray[i]); } printf("\n"); break; case 2: for(i=0;i<=9;i++){ if(sArray[i].birthday.mm==1) printf("%6s %6.2f\n",sArray[i].name,(float)((sArray[i].eng)+(sArray[i].math)+(sArray[i].prog))/3); } break; case 3: for(i=0;i<=9;i++){ for(j=0;j<=9-i;j++){ if(sArray[j].prog>sArray[j+1].prog){ change=sArray[j].prog; namechange=sArray[j].name; sArray[j].prog=sArray[j+1].prog; sArray[j].name=sArray[j+1].name; sArray[j+1].prog=change; sArray[j+1].name=namechange; } } } break; default : return 0; }; printf("1. List average scroes.\n"); printf("2. List students born in January.\n"); printf("3. Sort students by programming score.\n?"); printf("Enter any other number to exit."); scanf("%d", &select); } system("PAUSE"); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.137.20.1
TroyLee:如果是用C的話..sArray 宣告要放前面 03/11 13:57
snowlike:namechange=sArray[j].name; //你把string丟給了char 03/11 16:10