电子科大计算机复试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 }

 

转载于:https://www.cnblogs.com/mender/archive/2013/03/22/2976082.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
电子科技大学的复试C语言笔试是一道比较综合性的测试题,主要涉及C语言的基础知识、指针、链表、排序算法、动态内存管理等内容。笔试时间为90分钟,总共有10道题目。 第一道题目是简答题,要求回答C++C语言的基本区别,以及C语言的优点和缺点。这道题目考察的是考生对C语言的了解程度和对语言特点的掌握程度。 第二道题目是编程题,要求实现一个链表的反转。这道题目考察的是考生对链表的基本操作和指针的理解程度,以及对指针的应用能力。 第三、四道题目是选择题,涉及C语言中的数据类型、运算符、流控制语句等方面。这些题目主要考察的是考生对C语言基础知识的掌握程度。 第五、六、七道题目是编程题,分别是实现二分查找、冒泡排序和快速排序。这些题目考察的是学生对常见排序算法的掌握程度以及对C语言的应用能力和编程能力。 第八、九、十道题目是关于动态内存管理的编程题,要求实现动态内存分配、动态内存释放和链表的动态内存管理。这些题目考察的是学生对动态内存管理的掌握程度以及对指针的理解和应用能力。 总的来说,电子科技大学的C语言试题目比较综合,既考察了基础知识,又考察了编程能力和应用能力。对于想要申请电子科技大学的学生来说,熟练掌握C语言的基础知识和常见的排序算法,掌握动态内存管理和指针的应用技巧是非常重要的。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值