电子科大计算机复试C语言

复试终于结束了,唉。。一言难尽

  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 }

 

posted @ 2013-03-22 17:50  mender  阅读(479)  评论(0编辑  收藏  举报