将字符串1中的底数为奇数的值赋值给字符串2,并打印。

3K哥 发布于 2014/11/27 22:34
阅读 137
收藏 0

如题,老师要求我们将原代码改为while循环,使程序更加精简,但是不知道该如何继续精简了。

原代码如下:

#include<stdio.h>
#include<string.h>
int  main()
{
	char str1[20],str2[10];
	int i,n;
	gets(str1);
	for(i=0;;i++)
		if(str1[2*i+1]!='\0')
		str2[i]=str1[2*i+1];
	else
	{
		str2[i]='\0';
		break;
	}
	n=strlen(str2);
	for(i=0;i<n;i++)
		printf("%c",str2[i]);

}



我改为while循环这样对吗?还能继续精简吗?代码如下:
#include <stdio.h>
#include <string.h>
int main()
{
	char str1[20],str2[10];
	int i=0;
	gets(str1);
	while(i<=20)
	{
		if(str1[2*i+1]!='\0')
		str2[i]=str1[2*i+1];
	else
	{
		str2[i]='\0';
		break;
	}
	printf("%c",str2[i]);
	i++;
	}

}



加载中
0
w
wuql5
字符数组要注意越界问题,最后一个字符是'\0',这是不能更改的。
3K哥
3K哥
恩恩,谢谢哦,我就是这个东西不知道能不能删
0
excepiton
excepiton

int i=1,j=0;

while(i<20){

str2[j]=str1[i];

i+=2;

j+=1;


}

3K哥
3K哥
能注释一下后面什么意思吗?大一刚刚接触c语言,菜鸟一枚
0
w
wuql5

int i=1,j=0;

while(i<18){

str2[j]=str1[i];//把字符数组1的单下标的值赋给字符数组2.

i=i+2;//i加2,保持单数。

j=j+1;//i加1,使下标增加1.

}

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部