学C语言过程中写的一个程序,个人感觉不错,让大家评价评价.我菜鸟一个,代码有什么不恰当的地方希望大家可以留言帮助我改进.
1 #include <stdio.h> 2 3 4 struct sys 5 { 6 int ch; 7 char name[20]; 8 }; 9 10 11 12 13 int strthan(char a[], char b[]) 14 { 15 int i, iRuturn, aSize = 0, bSize = 0; 16 while(1) 17 { 18 if(a[aSize++] == 0) 19 { 20 21 break; 22 } 23 } 24 while(1) 25 { 26 if(b[bSize++] == 0) 27 { 28 29 break; 30 } 31 } 32 if(aSize != bSize) 33 { 34 iRuturn = 0; 35 goto fo; 36 } 37 for(i = 0; i < aSize; i++) 38 { 39 if(a[i] == b[i]) 40 { 41 continue; 42 } 43 iRuturn = 0; 44 } 45 fo: if(iRuturn == 0) 46 { 47 return 0; 48 } 49 else 50 { 51 return 1; 52 } 53 }//DIY的字符串比较 54 55 int main(void) 56 { 57 struct sys s[4] = {{0, "Mr.A"}, {0, "Mr.B"}, {0, "Mr.C"}, {0, "Mr.D"}}; 58 int i, o, c; 59 char shuju[20]; 60 char *a[4] = {"Mr.A", "Mr.B", "Mr.C", "Mr.D",}; 61 printf("Welcome to good human select system:<>\n\n"); 62 printf("Candidato have Mr.A Mr.B Mr.C Mr.D\n\n"); 63 printf("Please input voter number "); 64 scanf("%d", &o); 65 printf("\n"); 66 67 for(i = 1; i < o+1; i++) 68 { 69 printf("No.%d voting, please write suspensory name: ", i); 70 71 scanf("%s", &shuju); 72 73 if(strthan(shuju, s[0].name)) 74 { 75 s[0].ch += 1; 76 } 77 else if(strthan(shuju, s[1].name)) 78 { 79 s[1].ch += 1; 80 } 81 else if(strthan(shuju, s[2].name)) 82 { 83 s[2].ch += 1; 84 } 85 else if(strthan(shuju, s[3].name)) 86 { 87 s[3].ch += 1; 88 } 89 };//记录投票数 90 91 92 printf("\n"); 93 94 95 for(c = 0; c < 4; c++) 96 { 97 printf("%s have %d \n", s[c].name, s[c].ch); 98 } 99 //显示投票结果 100 101 printf("\n\n"); 102 103 104 105 106 if(s[0].ch < s[1].ch) 107 { 108 a[0] = a[1]; 109 } 110 if(s[0].ch < s[2].ch) 111 { 112 a[0] = a[2]; 113 } 114 if(s[0].ch < s[3].ch) 115 { 116 a[0] = a[3]; 117 } 118 if(s[1].ch < s[2].ch) 119 { 120 a[1] = a[2]; 121 } 122 if(s[1].ch < s[3].ch) 123 { 124 a[1] = a[3]; 125 } 126 if(s[2].ch < s[3].ch) 127 { 128 a[2] = a[3]; 129 } 130 //投票统计 131 132 printf("No.1 is %s\n", a[0]); 133 134 /*for(i = 0; i < 4; i++) 135 { 136 printf("%s", a[i]); 137 }*/ 138 //排名次 139 140 printf("\n"); 141 }