用C语言完成:程序功能: 输入两个整数序列,要求计算并输出两个序列共有元素的和。 【输入格式】第一行输入第1个整数序列,先给出正整数n (<=20) ,随后是n个整数;第二行输入第2个整数序列,先给出正整数m (<=20) ,随后是m个整数。 【输出格式】一个整数,表示两个序列共有元素的和。 【输入样例】 3 2 -7 9 4 8 -7 6 2 【输出样例】 -5
时间: 2023-11-22 11:54:22 浏览: 60
以下是用C语言实现的代码:
```c
#include <stdio.h>
int main()
{
int n, m, i, j;
int a[20], b[20], sum = 0;
// 输入第一个整数序列
scanf("%d", &n);
for (i = 0; i < n; i++)
{
scanf("%d", &a[i]);
}
// 输入第二个整数序列
scanf("%d", &m);
for (i = 0; i < m; i++)
{
scanf("%d", &b[i]);
}
// 计算共有元素的和
for (i = 0; i < n; i++)
{
for (j = 0; j < m; j++)
{
if (a[i] == b[j])
{
sum += a[i];
break;
}
}
}
// 输出共有元素的和
printf("%d\n", sum);
return 0;
}
```
程序思路:
1. 首先,分别输入两个整数序列,存放在数组 a 和 b 中。
2. 然后,用两个循环遍历这两个数组,若发现相同的元素,则将其加入 sum 中。
3. 最后,输出 sum。
相关问题
C语言输入两个整数序列,要求计算并输出两个序列共有的元案和5。输入:第一行输入第一个整数序列,先给出正整数n(<=20),随后是n个整数;第二行输入是第二个整数序列,先给出正整数m(<=20),随后是m个整数。 输出:第二行输出一个整数,表示两个序列共有元素的和值。要求采用两个一维数组存储数据a[n]、b[m],再双for一一比较
好的,下面是代码实现:
```c
#include <stdio.h>
int main() {
int n, m, i, j, sum = 0;
int a[20], b[20];
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
scanf("%d", &m);
for (j = 0; j < m; j++) {
scanf("%d", &b[j]);
}
for (i = 0; i < n; i++) {
for (j = 0; j < m; j++) {
if (a[i] == b[j]) {
sum += a[i];
break;
}
}
}
printf("%d", sum);
return 0;
}
```
这段代码实现了输入两个整数序列,计算并输出两个序列共有的元素和的功能。首先读入两个序列,然后使用两个 for 循环,分别遍历两个序列并进行比较,如果存在相同的元素,则将其加入 sum 中。最后输出 sum 的值即可。
编程寻找两个字符串的最长公共子序列 要求可以输入两个字符串 输出最长公共子序列以及长度 同时用C语言完成
好的,以下是C语言的代码实现:
```c
#include <stdio.h>
#include <string.h>
void lcs(char *str1, char *str2, char *result, int *length) {
int m = strlen(str1);
int n = strlen(str2);
int c[m+1][n+1];
memset(c, 0, sizeof(c));
for (int i = 1; i <= m; i++) {
for (int j = 1; j <= n; j++) {
if (str1[i-1] == str2[j-1]) {
c[i][j] = c[i-1][j-1] + 1;
} else {
c[i][j] = (c[i][j-1] > c[i-1][j]) ? c[i][j-1] : c[i-1][j];
}
}
}
*length = c[m][n];
while (m > 0 && n > 0) {
if (str1[m-1] == str2[n-1]) {
*result++ = str1[m-1];
m--;
n--;
} else if (c[m-1][n] > c[m][n-1]) {
m--;
} else {
n--;
}
}
*result = '\0';
int i, j;
char temp;
for (i = 0, j = *length-1; i < j; i++, j--) {
temp = result[i];
result[i] = result[j];
result[j] = temp;
}
}
int main() {
char str1[] = "ABCDGH";
char str2[] = "AEDFHR";
char result[100];
int length;
lcs(str1, str2, result, &length);
printf("Result: %s\n", result);
printf("Length: %d\n", length);
return 0;
}
```
函数 `lcs` 接受两个字符串 `str1` 和 `str2`,一个字符数组 `result` 和一个整数指针 `length`,返回值为空。
函数会将最长公共子序列存储在 `result` 中,长度存储在 `length` 中。
例如,如果输入 `str1 = "ABCDGH"` 和 `str2 = "AEDFHR"`,则调用 `lcs(str1, str2, result, &length)` 将输出:
```
Result: ADH
Length: 3
```