#include <stdio.h>
void main()
{char a[100],b[100];
int i,j=0;
scanf("%s",a);
for(i=0;i;i++)
if((a[i]<'0'||a[i]>'9')&&a[i]!='\0')
b[j++]=a[i];
for(j=0;j;j++)
printf("%c",b[j]);}
哪里错了
已经修改好了:
#include <stdio.h>
void main()
{char a[100],b[100];
int i,j=0;
scanf("%s",&a); //最好改用gets(a); 它可复制包含空格的字符串
for(i=0;i<=strlen(a);i++) //这会连同'\0'结束符一起复制
if(a[i]<'0'||a[i]>'9')
b[j++]=a[i];
puts(b);
}
原来的程序:
for(i=0;i;i++) //没有循环结束条件,另外它却一次循环体也不会执行,因为初次 i 的值为0,即假
if((a[i]<'0'||a[i]>'9')&&a[i]!='\0') //&&a[i]!='\0' 只是不复制‘\0',而这却是字符串结束的标志
b[j++]=a[i];
for(j=0;j;j++) //同上,不会执行循环体
printf("%c",b[j]);}
#include <stdio.h>
void main()
{char a[100],b[100];
int i,j=0;
scanf("%s",&a); //最好改用gets(a); 它可复制包含空格的字符串
for(i=0;i<=strlen(a);i++) //这会连同'\0'结束符一起复制
if(a[i]<'0'||a[i]>'9')
b[j++]=a[i];
puts(b);
}
原来的程序:
for(i=0;i;i++) //没有循环结束条件,另外它却一次循环体也不会执行,因为初次 i 的值为0,即假
if((a[i]<'0'||a[i]>'9')&&a[i]!='\0') //&&a[i]!='\0' 只是不复制‘\0',而这却是字符串结束的标志
b[j++]=a[i];
for(j=0;j;j++) //同上,不会执行循环体
printf("%c",b[j]);}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2014-05-12
#include "stdafx.h"
#include "string.h"
#include "stdio.h"
int main()
{
char str1[30],str2[30];
int i;
printf("input the string\n");
//for (i=0;i<=29;i++) //难道你要输入30次才停止?
scanf("%s",str1);
int j=0;
for(i=0;i<=strlen(str1);i++)
{
if ((str1[i]<'0')||(str1[i]>'9'))
{
//strcpy (str2,str1); //你这每次都是将没改动的str1赋值给str2 相当于没操作,strcpy是将str1整个字符串赋值给str2,而非一个字符
str2[j]=str1[i];
j++;
}
}
printf("%s",str2);
}
#include "string.h"
#include "stdio.h"
int main()
{
char str1[30],str2[30];
int i;
printf("input the string\n");
//for (i=0;i<=29;i++) //难道你要输入30次才停止?
scanf("%s",str1);
int j=0;
for(i=0;i<=strlen(str1);i++)
{
if ((str1[i]<'0')||(str1[i]>'9'))
{
//strcpy (str2,str1); //你这每次都是将没改动的str1赋值给str2 相当于没操作,strcpy是将str1整个字符串赋值给str2,而非一个字符
str2[j]=str1[i];
j++;
}
}
printf("%s",str2);
}