|
发表于 2019-11-22 00:30:16
|
显示全部楼层
另外,这个如果我来写,我会用双指针,感觉舒服得多- #include<stdio.h>
- #define N 100
- int main() {
- //输入部分
- int A[N], B[N], i;
- memset(A, 0xff, sizeof(A)); //这样每一个未赋值的A都为-1,下面一样
- memset(B, 0xff, sizeof(B));
- char temp;
- printf("请输入你要合并的正整型数组元素到数组A,以换行符结束:\n");
- for (i = 0; (temp= getchar()) != '\n'; ++i) {
- ungetc(temp,stdin);
- scanf("%d", A + i);
- }
- printf("请输入你要合并的正整型数组元素到数组B,以换行符结束:\n");
- for (i = 0; (temp= getchar()) != '\n'; ++i) {
- std::cin.peek();
- ungetc(temp,stdin);
- scanf("%d", B + i);
- }
- //==============================================
- //处理部分,使用双指针,
- int C[N];
- memset(C, 0xff, sizeof(C));
- int *p = A, *q = B, *r = C;
- while (*p != -1 || *q != -1) {
- if ((unsigned int)*p < (unsigned int)*q) {
- *(r++) = *(p++);
- }
- else if ((unsigned int)*p > (unsigned int)*q) {
- *(r++) = *(q++);
- }
- else {
- *(r++) = *(p++);
- q++;
- }
- }
-
- //==================================================
- //输出部分
- printf("\nA并B的数组 为:\n");
- for (i = 0; C[i] != -1; ++i) {
- printf("%d ", C[i]);
- }
- }
复制代码 |
|