C语言高手请帮我

来源:百度知道 编辑:UC知道 时间:2024/05/07 09:28:19
1、将字符数组c1中下标为单号(1,3,5….)的元素值赋给另一个字符数组c2中,然后输出这两个数组中的内容。
我的代码:
#include <stdio.h>
main()
{
int i,j,n;
char c1[20],c2[10];
gets(c1);
puts(c1);
for(i=1,i<=10,i++)
n=2*i-1;
c2[10]=c1[n];
puts(c2);
getch();
}
新手 错误比较多
请指教
不能运行!! 哪里还有错误啊?


c2[10]=c1[n];
改成
c2[i-1]=c1[n];
应为c2的大小为10,不能用c2[10],否则数组越界。
此外,for循环有两个语句,所以要加{},main函数没返回值的话最好加上void,再补充一下,你的变量j好像多余哦。for的格式是for( ; ; ),里面不是逗号!
所以可改成:
#include <stdio.h>
void main()
{
int i,n;
char c1[20],c2[10];
gets(c1);
puts(c1);
for(i=1;i<=10;i++) {
n=2*i-1;
c2[i-1]=c1[n]; }
puts(c2);
getch();
}

c的数组下标都是0开始,所以下标为单号,在程序中恰恰是双号,所以

for(i=1,i<=10,i++)
n=2*i-1;
c2[10]=c1[n];

要改成

for(i=0,i<10,i++)
{
n=2*i;
c2[10]=c1[n];
}

for的循环体需要{ }标识,否则编译器默认for后面第一行为循环体,c2[10]=c1[n]; 这句就没在循环体里面

for(i=1,i<=10,i++)改为
for(i=1;i<=10;i++)

#include <stdio.h>
main()
{
int i,j,n;
char c1[20],c2[10];
gets(c1);
puts(c1);
for(i=1;i<=19;i+=2)
c2[i/2]=c1[i];
puts(c2);
getch();
}

少了{} 加在for语句后面 puts(c2)前