在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
int main(void) {
	int len;
	scanf("%d", &len);
	int* nums = (int*)malloc(sizeof(int) * len);
	for (int i = 0; i < len; ++i) {
		scanf("%d", nums + i);
	}
	int target, i, j;//i为左下标,j为右下标
	scanf("%d", &target);
	for (i = 0, j = len - 1; i < j;) {
		if ((nums[i] + nums[j]) > target) {
			j--;//和大,j左移
		} else if ((nums[i] + nums[j]) < target) {
			i++;//和小,i右移
		} else {
			printf("[%d,%d]", nums[i], nums[j]);
			break;
		}
	}
	return 0;
}

在这里插入图片描述

#include<stdio.h>
#include<stdlib.h>
typedef struct LinkList {
	int val;
	struct LinkList* next;
}Node;

Node* creat() {
	int n;
	puts("输入长度");
	scanf("%d", &n);
	Node* head = (Node*)malloc(sizeof(Node));
	Node* end = head;
	for (int i = 0; i < n; ++i) {
		Node* node= (Node*)malloc(sizeof(Node));
		scanf("%d", &node->val);
		end->next = node;
		end = node;
	}
	end->next = NULL;
	return head;
}
void print(Node* head) {
	while (head->next) {
		printf("%d ",head->next->val);
		head = head->next;
	}
}

int main(void) {
	Node* head1 = creat();
	Node* head2 = creat();
	Node* newhead = (Node*)malloc(sizeof(Node));
	Node* t1 = head1->next, * t2 = head2->next, * p = newhead;
	while (t1 && t2) {
		if (t1->val <= t2->val) {
			p->next = t1;
			p = t1;
			t1 = t1->next;
		} else if (t1->val > t2->val) {
			p->next = t2;
			p = t2;
			t2 = t2->next;
		}
	}
	if (t1 == NULL) {
		p->next = t2;
	}
	if (t2 == NULL) {
		p->next = t1;
	}
	print(newhead);
	return 0;
}

在这里插入图片描述
在这里插入图片描述

#include<stdio.h>
#include<string.h>
int main(void) {
	char word1[101];
	char word2[101];
	char word3[101];
	gets(word1);
	gets(word2);
	int len1 = strlen(word1);
	int len2 = strlen(word2);
	int i = 0, j = 0, len = 0;
	for (; i < len1 && j < len2;) {
		if (len % 2 == 0) {
			word3[len++] = word1[i++];
		} else {
			word3[len++] = word2[j++];
		}
	}
	if (i == len1) {//第一个短
		while (word2[j]) {
			word3[len++] = word2[j++];
		}
	}
	if (j == len2) {//第二个短
		while (word1[i]) {
			word3[len++] = word1[i++];
		}
	}
	word3[len] = 0;
	puts(word3);
	return 0;
}

在这里插入图片描述

#include<stdio.h>
#include<math.h>
#include<string.h>
#define M 10005
char s1[M], s2[M], s[M];
int a[M], b[M], c[M];
int main(void) {
    int i, j, m, n, k;
    int flag1 = 1;
    int flag2 = 1;
    gets(s1);
    gets(s2);
    memset(c, 0, sizeof(c));
    n = strlen(s1);
    m = strlen(s2);
    if (s1[0] == '-') {
        flag1 = -1;
    }//标记正负
    if (s2[0] == '-') {
        flag2 = -1;
    }//标记正负
    k = n + m;//保证相乘后的位数不会大于k
    /*把字符串s1和s2逆序用数字排列*/
    for (i = 0; i < n; i++) {
        if (flag1 == -1) {
            if (i == n - 1) {
                break;
            }
        }
        a[i] = s1[n - i - 1] - '0';
    }
    for (i = 0; i < m; i++) {
        if (flag1 == -1) {
            if (i == n - 1) {
                break;
            }
        }
        b[i] = s2[m - 1 - i] - '0';
    }
    /* 乘运算*/
    for (i = 0; i < n; i++) {
        for (j = 0; j < m; j++) {
            c[i + j] += a[i] * b[j];
            //乘法法则运算
        }   
    }
    for (i = 0; i <= k; i++) {
        if (c[i] >= 10) {
            c[i + 1] += c[i] / 10;
            c[i] %= 10;
        }
    }
    /*去除前导0*/
    i = k;
    while (c[i] == 0) {
        i--;
    }
    /*判断两个非负数之积是否为0,以及逆序打印c[]*/
    if (i < 0) {
        printf("0");
    } else {
        if (flag1 * flag2 == -1) {
            printf("-");
        }
        for (; i >= 0; i--) {
            printf("%d", c[i]);
        }
    }
    printf("\n");
    return 0;
}

在这里插入图片描述

#include<stdio.h>
int book[10];//标记数组
int find[10];//答案数组
int len;
void print(int n) {
	for (int i = 1; i <= n; ++i) {
		printf("%5d", find[i]);
	}
	printf("\n");
}
void dfs(int step,int n) {
	if (step == n + 1) {
	//所有数字已经都用过了,即找到一种排列
		print(n);//输出这种排列
		return;//注意,输出后一定要返回
	}
	for (int i = 1; i <= n; ++i) {
		if (book[i]) {
		//如果i被使用过,继续找没使用过的i
			continue;
		}
		//找到未被使用的i
		book[i] = 1;//标记它
		find[step] = i;//把它放到答案里
		dfs(step + 1, n);//继续找下一个位置
		//注意,是一步步返回的,一定要在每步结束后把标记归0
		book[i] = 0;
	}
	return;
}
int main(void) {
	int n;
	scanf("%d", &n);
	book[10] = { 0 };
	len = 0;
	dfs(1, n);
	return 0;
}
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐