C语言简单东西。。懂得叫我一下。。最好代码来。。或者看看我写的怎么改就对了。。错在哪里。。就是那两

C语言简单东西。。懂得叫我一下。。最好代码来。。或者看看我写的怎么改就对了。。错在哪里。。就是那两个for语句。。万分感谢。。

while 循环里的i未负值追答

可以加个for循环

追问

我明天看看

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-13

首先,如果需要输入字符串,应该使用char类型的数组,就代码说需要单列一行用char声明a,b,c三个数组


其次,你的输入循环(while循环)是在用n1进行循环输入,为什么scanf时使用的是i?就代码而言有两种改法:1.将循环改为i从0开始循环,判断i<n时继续;2.将scanf部分的下角标改为n1,不过两个数组会变成逆序输入。


再次,scanf的部分对输入字符串形式的数据(%s),后面对应的参数不应加取址符(&)再对起始地址存储数组取址,应提供的是字符串起始地址,而不是存储起始地址的指针的地址(即单次指针即可,不需加取址符形成二重指针),就代码说只需去掉两个"&"符号。


再次,你在第一个for循环之后,将c[]的0~n-1项(总计n个条目)填入了数据,在第二个for循环开始时又将c[]的下角标从n-1这个已经有值的条目开始复制,会使b的第一项覆盖c中a的最后一项,就代码说只需将第二个for循环的i赋初值的部分改为i=n。


最后,第二个循环的判断条件也存在问题,就你的要求来看,第二个循环中应该从第一个循环的结束部分开始循环n次,但是你的i从大于0的数值开始循环,在小于n的地方结束,明显循环不足n次。就代码说需要将第二个for循环的判断条件改为j<n。


以下为代码:

int main(){
int n, i, j, len, amount;
char a[1010][30], b[1010][30], c[1010][30];
while (scanf("%d", &n) != EOF&&n != 0){
i = 0;
while (i < n){
scanf("%s%s", a[i], b[i]);
i++;
}
for (i = 0; i < n; i++){
strcpy(c[i], a[i]);
}
for (i = n, j = 0; j < n; i++, j++){
strcpy(c[i], b[j]);
}
}
}


顺带求采纳

追问

好的。。我晚点看看

刚刚楼上的那个未负值的意思是我那个i。。应该改成n1

本回答被网友采纳
相似回答