北邮考研复试C语言上机题目精选
查找 题目描述: AC代码: #include <stdio.h> #include <stdlib.h> int main() { int a[101],b[101]; int n,m,i,j,flag; while(scanf("%d",&n) != EOF) { //接收输入数组 for(i = 0; i < n; i ++) { scanf("%d",a + i); } //接收查找数组 scanf("%d",&m); for(j = 0; j < m; j ++) { scanf("%d",b + j); } //判断查找存在 for(j = 0; j < m; j ++) { flag = 0; for(i = 0; i < n; i ++) { if(b[j] == a[i]) { flag = 1; break; } } if(flag) { printf("YESn"); }else { printf("NOn"); } } } return 0; }
题目描述: AC代码: #include <stdio.h> #include <stdlib.h> int partition(int *A,int left,int right); void quicksort(int *A,int begin,int end); int main() { int i,n,k; int a[1001]; while(scanf("%d",&n) != EOF) { //接受stdin输入数据 for(i = 0; i < n; i ++) { scanf("%d",a + i); } scanf("%d",&k); //快速排序 quicksort(a,n - 1); //输出第k小的数 for(i = 0,j = 0; i < n && j < k; i ++) { if(a[i] != a[i + 1]) { if(j == k - 1) { printf("%dn",a[i]); break; }else { j ++; } } } } return 0; } void quicksort(int *A,int end) { int pivot; if(begin < end) { pivot = partition(A,begin,end); quicksort(A,pivot - 1); quicksort(A,pivot + 1,end); } } int partition(int *A,int right) { int stand = A[left]; while(left < right) { while(left < right && A[right] >= stand) { right --; } if(left < right) { A[left ++] = A[right]; } while(left < right && A[left] <= stand) { left ++; } if(left < right) { A[right --] = A[left]; } } A[left] = stand; return left; } 打牌 题目要求: 题目描述: 牌只有1到9,手里拿着已经排好序的牌a,对方出牌b,用程序判断手中牌是否能够压过对方出牌。 输入: 输入有多组数据。 输出: 压过输出YES 否则NO。 样例输入: 12233445566677 样例输出: YES 注意事项: #include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char a[101]; char b[101]; char ch,key; int i,lena,lenb,flag; int count[11]; while(scanf("%s",a) != EOF) { //接收回车符 ch = getchar(); //接收出牌 scanf("%s",b); ch = getchar(); //长度 lena = strlen(a); lenb = strlen(b); //初始化 memset(count,sizeof(count)); //遍历手牌 for(i = 0; i < lena; i ++) { count[a[i] - '0'] ++; } //检测对方出牌 switch(lenb) { case 1: case 2: case 3: case 4: flag = 0; for(key = b[0] - '0' + 1; key <= 9; key ++) { if(count[key] >= lenb) { flag = 1; break; } } break; case 5: flag = 0; for(key = b[0] - '0' + 1; key < 9; key ++) { if(count[key] > 0 && count[key + 1] > 0 && count[key + 2] > 0 && count[key + 3] > 0 && count[key + 4] > 0) { flag = 1; break; } } break; } //打印输出 if(flag) { printf("YESn"); }else { printf("NOn"); } } return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |