1、编写一个将输入复制到输出的程序,并将其中连续多个空格用一个空格代替。
解1:
注:从没想到,无中生有也可以用在这里。光靠C语言本身力量真的很有限。
解2:
解3:
#include
void main(){
int i=0,j=0;
char str[100];
char cpy[100];
printf("输入一组语句:\n");
gets(str);
while(i<100) {
if (str[i]!=' ') {
cpy[j++]=str[i];
i++;
}
else {
cpy[j++]=str[i];
while(str[i]==' ') i++;
}
}
printf("复制到输出:%s\n",cpy);
}
解4:
#include
void main()
{
char pre_ch,ch;
while ((ch=getchar())!=EOF)
{
if ( pre_ch !=' '|| ch !=' ')
{
putchar(ch);
}
pre_ch=ch;
}
}
注:这个有点意思。看似空格一个也没输出,但最后还是输出了。关键在“||”,当pre_ch非空格而ch为空格时,空格ch就输出了。
解5:
#include
#include
void main()
{
char a[] = "sd c d d g sdsd a ";
int i = 0;
int j;
int len;
char *p;
p = a;
len = strlen(p);
for(i=0;i
{
if(a[i]== ' ')
{
while(a[i+1] ==' ')
{
for(j=i+1;j
{
a[j-1]=a[j];
}
len--;
}
}
}
for(i=0;i
{
printf( "%c ",a[i]);
}
}
注:始终感觉代码可以在简化一些,但菜鸟能力有限。
解6:
#include
#define NONBLANK 'a'
void main()
{
int c ,lastc;
lastc=NONBLANK;
while((c=getchar())!=EOF)
{
if(c!=' '||lastc!=' ')
putchar(c);
lastc=c;
}
}