复试终于结束了,唉。。一言难尽
1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <string.h> 4 void test1_1_swap(char *pa, char *pb) 5 { 6 //由于传入的实参是数组地址,它是一个char* const类型, 7 //即数组的首地址是无法被修改的,所以这种直接交换首地址的方法是不可行的 8 //char *temp; 9 //temp = pa; 10 //pa = pb; 11 //pb = temp; 12 char temp[100]; 13 strcpy(temp, pa); 14 strcpy(pa, pb); 15 strcpy(pa, temp); 16 } 17 18 void test1_2() 19 { 20 char pa[] = "ABCDE"; 21 char *pb = "EFG"; 22 //pb[1] = 'A';//pb指向字符串常量(const char*),不能修改字符串常量的内容 23 pb = pa; 24 //strcpy(pa, "ABCDEFGXYZ");//pa的内存空间只有6B,而被复制的字符串大小为11B 25 pb = "D"; 26 } 27 28 void test2_1(char item) 29 { 30 //item = 'F'; 31 //如果item没有存在于arr中,那么程序将死循环 32 char arr[] = "ABCDE"; 33 int N = strlen(arr) - 1, num; 34 //for(num = N; arr[num] != item; num--); 35 for(num = N; arr[num] != item && num >= 0; num--); 36 printf("test2_1::num = %d\n", num); 37 } 38 39 int test2_2_value(int n) 40 { 41 // n = 4; 42 // 输入11, 22, 33, 44 43 // 输出110 = 44 + 33 + 22 + 11 44 int x; 45 if(n == 0) 46 { 47 return 0; 48 } 49 else 50 { 51 scanf("%d", &x); 52 return(test2_2_value(n - 1) + x); 53 } 54 } 55 56 void test2_3() 57 { 58 char a[] = "ABC"; 59 60 //1、值传递 61 //void fun1(char e); 62 //fun1(a[0]); 63 64 //2、地址传递 65 66 //形参为指针 67 //void fun2_1(char* pa, int n); 68 //fun2_1(a, strlen(a)); 69 70 //形参为数组 71 //void fun2_2(char aa[], int n); 72 //fun2_2(&a[0], strlen(a)); 73 //或 74 //fun2_2(a, strlen(a)); 75 } 76 77 void test2_4() 78 { 79 //s; 80 //loop: 81 //if(B) 82 //{ 83 //s; 84 //goto loop; 85 //} 86 //else 87 //{ 88 //end; 89 //} 90 } 91 92 void test3_1_main() 93 { 94 long a1, a2, b1, b2, c1, c2; 95 char op; 96 printf("\ntest3_1::请输入要进行的分数运算:"); 97 scanf("%ld/%ld%c%ld/%ld", &a1, &a2, &op, &b1, &b2); 98 if(0 == a2 || 0 == b2) 99 { 100 printf("test3_1::分母不能为零\n"); 101 return; 102 } 103 switch(op) 104 { 105 case '+': 106 c1 = a1 * b2 + b1 * a2; 107 c2 = a2 * b2; 108 break; 109 case '-': 110 c1 = a1 * b2 - b1 * a2; 111 c2 = a2 * b2; 112 break; 113 case '*': 114 c1 = a1 * b1; 115 c2 = a2 * b2; 116 break; 117 case '/': 118 c1 = a1 * b2; 119 c2 = a2 * b1; 120 break; 121 default: 122 printf("test3_1::不支持该运算符\n"); 123 return; 124 } 125 long test3_1_gcd(long c1, long c2); 126 long g = test3_1_gcd(c1, c2); 127 c1 = c1 / g; 128 c2 = c2 / g; 129 printf("test3_1::%ld/%ld\n", c1, c2); 130 } 131 132 133 long test3_1_gcd(long c1, long c2) 134 { 135 if(c1 < c2) 136 { 137 long temp = c1; 138 c1 = c2; 139 c2 = temp; 140 } 141 long r = c1 % c2; 142 while(r != 0) 143 { 144 c1 = c2; 145 c2 = r; 146 r = c1 % c2; 147 } 148 return c2; 149 } 150 151 struct node 152 { 153 int num; 154 struct node *next; 155 }; 156 void test3_2_main() 157 { 158 159 void test3_2_turn(struct node **head); 160 struct node *head, *p; 161 head = (struct node*)malloc(sizeof(struct node)); 162 head->num = 0; 163 head->next = NULL; 164 int i; 165 for(i = 10; i > 0; --i) 166 { 167 p = (struct node*)malloc(sizeof(struct node)); 168 p->num = i; 169 p->next = head->next; 170 head->next = p; 171 } 172 p = head; 173 printf("test3_2::"); 174 while(p) 175 { 176 printf("%d ", p->num); 177 p = p->next; 178 } 179 printf("\n"); 180 //printf("%5x\n", (int)head); 181 test3_2_turn(&head); 182 //printf("%5x\n", (int)head); 183 printf("test3_2::"); 184 while(head) 185 { 186 printf("%d ", head->num); 187 p = head; 188 head = head->next; 189 free(p); 190 } 191 } 192 193 void test3_2_turn(struct node **phead) 194 { 195 struct node temp, *head = *phead; 196 temp.next = NULL; 197 struct node *p = head->next; 198 while(head) 199 { 200 p = head->next; 201 head->next = temp.next; 202 temp.next = head; 203 head = p; 204 } 205 *phead = temp.next; 206 } 207 208 void test3_3_main() 209 { 210 char num[50]; 211 int count[10]; 212 int i, j; 213 for(i = 0; i < 10; ++i) 214 { 215 count[i] = 0; 216 } 217 printf("\ntest3_3::请输入数字串:"); 218 scanf("%s", num); 219 for(i = 0; num[i] != '\0'; ++i) 220 { 221 j = (int)(num[i] - '0'); 222 ++count[j]; 223 } 224 printf("test3_3::"); 225 for(i = 0; i < 10; ++i) 226 { 227 printf("%2d:%2d ", i, count[i]); 228 } 229 printf("\n"); 230 } 231 232 struct student 233 { 234 int no; 235 int c_score; 236 }; 237 #define S_MAX 3 238 void test3_4_main() 239 { 240 struct student s[S_MAX]; 241 int i = 0, j = 0, k = 0, max[S_MAX], min[S_MAX], ma = 0, mi = 100; 242 for(; i < S_MAX; ++i) 243 { 244 printf("\ntest3_4::请输入第%d个学生的学号和C语言成绩: ", i + 1); 245 scanf("%d %d", &s[i].no, &s[i].c_score); 246 if(s[i].c_score > ma) 247 { 248 j = 0; 249 max[j] = s[i].no; 250 ma = s[i].c_score; 251 } 252 else if(s[i].c_score == ma) 253 { 254 max[++j] = s[i].no; 255 } 256 if(s[i].c_score < mi) 257 { 258 k = 0; 259 min[k] = s[i].no; 260 mi = s[i].c_score; 261 } 262 else if(s[i].c_score == mi) 263 { 264 min[++k] = s[i].no; 265 } 266 } 267 printf("\ntest3_4::max:%d, no:", ma); 268 for(i = 0; i <= j; ++i) 269 { 270 printf(" %d", max[i]); 271 } 272 printf("\ntest3_4::min:%d, no:", mi); 273 for(i = 0; i <= k; ++i) 274 { 275 printf(" %d", min[i]); 276 } 277 } 278 279 int main() 280 { 281 test3_1_main(); 282 test3_2_main(); 283 test3_3_main(); 284 test3_4_main(); 285 printf("\nHello world!\n"); 286 return 0; 287 }