用c语言编写一个程序,尽量简短,不启用C99标准模式也不添加编译选项【问题描述】 比较两组整数是否有相同的元素,每组整数个数不超过100。若有相同的元素,则按照由大到小的顺序输出相同的元素(重复出现的元素只输出一个)。如果没有相同元素,打印字符串:No Answer。 【输入形式】 首先从标准输入(键盘)输入第一组整数的个数,再输入第一组整数,以一个空格分割;然后输入第二组整数的个数,再输入第二组整数,以一个空格分割。 【输出形式】 按照由大到小的顺序向标准输出(显示器)输出两组整数中相同的元素,以一个空格分隔;如果没有相同元素,则打印"No Answer"。 【输入样例】 9 2 5 10 17 10 8 5 10 12 7 12 8 10 17 5 2 1009 【输出样例】 17 12 10 8 5 2 【样例说明】 输入两组整数 2 5 10 17 10 8 5 10 12 12 8 10 17 5 2 1009 由于这两个数组具有相同的元素,按照由大到小的顺序输出为:17 12 10 8 5 2。
时间: 2023-06-19 22:08:04 浏览: 151
以下是使用C语言编写的程序:
```c
#include <stdio.h>
int main()
{
int n1, n2, i, j, temp, flag;
int arr1[100], arr2[100], ans[100], ans_cnt = 0;
scanf("%d", &n1);
for(i = 0; i < n1; i++)
scanf("%d", &arr1[i]);
scanf("%d", &n2);
for(i = 0; i < n2; i++)
scanf("%d", &arr2[i]);
for(i = 0; i < n1; i++)
{
flag = 0;
for(j = 0; j < n2; j++)
{
if(arr1[i] == arr2[j])
{
flag = 1;
break;
}
}
if(flag)
{
ans[ans_cnt++] = arr1[i];
}
}
if(ans_cnt == 0)
{
printf("No Answer");
}
else
{
for(i = 0; i < ans_cnt - 1; i++)
{
for(j = i + 1; j < ans_cnt; j++)
{
if(ans[i] < ans[j])
{
temp = ans[i];
ans[i] = ans[j];
ans[j] = temp;
}
}
}
for(i = 0; i < ans_cnt; i++)
{
printf("%d ", ans[i]);
}
}
return 0;
}
```
该程序的思路是,先输入两组整数,然后依次遍历第一组整数,查找是否有与第二组整数相同的元素,如果有,则将该元素存入一个临时数组中。最后,如果临时数组中有元素,则按照从大到小的顺序输出,否则输出"No Answer"。
阅读全文