黑魂3 波尔多大锤:如何输入两行数字,用C语言,请会的大师帮帮忙!谢谢!

来源:百度文库 编辑:神马品牌网 时间:2024/05/08 05:26:04
【问题描述】
比较两组整数是否有相同的元素,不考虑元素的顺序,并忽略元素重复的情况。例如:
1 4 9 16 9 7 4 9 11
与下列一组整数:
11 7 9 16 4 1
相同。
【输入形式】
分行输入两组整数,以空格分割
【输出形式】
打印两组整数中相同的元素,顺序以第一行的整数输出顺序为准,如果没有相同元素,打印“No Answer”
【输入样例】
1 4 9 16 9 7 4 9 11
11 7 9 16 4 1
【输出样例】

"#"代表空格
1#4#9#16#7#11#
【样例说明】
输入两组整数
1 4 9 16 9 7 4 9 11
11 7 9 16 4 1
由于这两个数组具有相同的元素,顺序打印第一行与第二行相同的元素

请问这个程序题目要求的输入的两行数字要怎么输入,我们老师说要用一个while,我想明白了,但是自己写不出来,请大师帮忙,谢谢!
E:\vc\zuoye\c0605.c(3) : error C2087: '<Unknown>' : missing subscript
E:\vc\zuoye\c0605.c(5) : error C2064: term does not evaluate to a function
大师你的程序太深奥,我看不懂!这个是VC运行时的错误提示,我也看不懂,请帮我解释一下吧,谢谢哈!程序运行好了之后给您追加分数!

/*说明:$代表回车
不知道你们老师是不是这样要求
我的这个程序有点问题的,如果这么输入
1#4#9#16#9#7#4#9#11$
11#7#9#16#4#1$
是没有问题的
但是如果这样输入(你的样例输入就是这样)
1#4#9#16#9#7#4#9#11#$
11#7#9#16#4#1#$
我的程序就出错了
如果真的是上面那样,就要用gets()读取一行,再提取行中数组,
具体方法请看我写的另一个程序
http://zhidao.baidu.com/question/7641809.html
*/
#include <stdio.h>

int main()
{
int a[100],b[100]={0},length=0,i,cur,have=0;
char symbol=' ';

while(1)
{
scanf("%d",&a[length]);
for(i=0;i<length;++i)if(a[i]==a[length])
{
--length;
break;
}
++length;
symbol=getchar();
if(symbol=='\n') break;
}
while(1)
{
scanf("%d",&cur);
for(i=0;i<length;++i) if(cur==a[i]) b[i]=1;
symbol=getchar();
if(symbol=='\n') break;
}
for(i=0;i<length;++i) if(b[i]) have=1,printf("%d ",a[i]);
if(have==0) printf("No Answer");
printf("\n");
return 0;
}

/*这里贴代码比较麻烦*/
#include<stdio.h>
main(){
int a[2][],i,j,l[2],fg=0;
char c;
while(EOF()){
for(i=0,j=0; scanf("%d %c",&a[j][i],c)&&(c!='\n'); ++i) l[j]=i;
++j;
}
c=' ';
for(i=0; i<l[0]; ++i)
for(j=0; j<l[1]; ++j)
if(a[0][i]==a[1][j])
{printf("%d %c",a[0][i],c);fg++;}
if(!fg)printf("No Answer");
}