求解一道C语言题?
A.
ecbda
B.
acdbe
C.
acebd
D.
dabce
我想问一下这题目是啥意思?abcde入栈的话,按后进先出原则,出栈不应该只能是edcba吗?如果我题目理解错了,那该怎么做? 展开
如果按照全部进去以后,再全部出来就是你所说的答案edcba,但也可以进一个出一个,比如,a进,又出来,那么此时b在底层了;或者进二个出二个,也是一样的。
这题如果没错,我猜应该是答案B,a先进,再出来,进bc,c出来,进d,d出,b出,再进e,出e。其他几个A中,e出来那么应该都进去了,那么顺序应该是edcba;C中,bd位置错,b在底层那么先出的是d才对;D中,d出来,那么abc肯定都进去了,ab顺序就不对。
由上面的概括,这一题选b.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int GetPrime(int a[], int b[], int n) {
int C = 0;
for(int i = 0; i < n; i++) {
int j;
if(a[i] == 1 || a[i] % 2 == 0)
continue;
for(j = 2; j * j <= a[i]; j++)
if(a[i] % j == 0)
break;
if(j * j > a[i])
b[C++] = a[i];
}
return C;
}
int main() {
int a[20], b[20], n;
srand(time(NULL));
for(int i = 0; i < 20; i++)
a[i] = rand() % 99 + 1;
n = GetPrime(a, b, 20);
printf("原始数组:\n");
for(int i = 0; i < 20; i++)
printf("%d%c", a[i], i % 5 == 4 ? '\n' : ' ');
if(n == 0)
printf("\nNO");
else {
printf("\n素数数组:\n");
for(int i = 0; i < n; i++)
printf("%d%c", b[i], i % 5 == 4 ? '\n' : ' ');
}
putchar('\n');
return 0;
}