求教一道C语言题目
【问题描述】删除字符串中的字符。输入一个字符串s,再输入一个字符c,将字符串s中出现的所有字符c删除。要求定义并调用函数delchar(s,c),它的功能是将字符串s中出...
【问题描述】
删除字符串中的字符。输入一个字符串s,再输入一个字符c,将字符串s中出现的所有字符c删除。要求定义并调用函数delchar(s,c),它的功能是将字符串s中出现的所有c字符删除。
【输入形式】
首先打印提示“Input a string: ";然后输入字符串,字符串中可以包含空格;字符串以回车结束。
打印提示“Input a char: ”;然后输入一个字符;回车。
【输出形式】
首先打印“After deleted, the string is: ”;紧跟后面输出被删除后的字符串剩余内容
【输入输出样例】(下划线部分表示输入)
Input a string:happy new year
Input a char:a
After deleted, the string is: hppy new yer
我的答案:
#include<stdio.h>
char delchar(char sx[],char c);
int main(void)
{
char sx[80],c;
int i=0;
printf("Input a string: ");
while(sx[i]!='\n'){
scanf("%s",&sx[i]);
i++;
}
printf("Input a char: ");
scanf("%s",&c);
sx[i]=delchar(sx,c);
printf("After deleted, the string is: %s",sx[i]);
return 0;
}
char delchar(char sx[],char c)
{
char str[80];
int j;
while(sx!='\0')
{
char str[80];
int j=0;
if(sx!=c){
str[j]=sx;
j++;
}
}
str[j]='\0';
return str[j];
}
我编译之后输入字符串运行一直显示运行时间过长,求教是怎么回事?谢谢了 展开
删除字符串中的字符。输入一个字符串s,再输入一个字符c,将字符串s中出现的所有字符c删除。要求定义并调用函数delchar(s,c),它的功能是将字符串s中出现的所有c字符删除。
【输入形式】
首先打印提示“Input a string: ";然后输入字符串,字符串中可以包含空格;字符串以回车结束。
打印提示“Input a char: ”;然后输入一个字符;回车。
【输出形式】
首先打印“After deleted, the string is: ”;紧跟后面输出被删除后的字符串剩余内容
【输入输出样例】(下划线部分表示输入)
Input a string:happy new year
Input a char:a
After deleted, the string is: hppy new yer
我的答案:
#include<stdio.h>
char delchar(char sx[],char c);
int main(void)
{
char sx[80],c;
int i=0;
printf("Input a string: ");
while(sx[i]!='\n'){
scanf("%s",&sx[i]);
i++;
}
printf("Input a char: ");
scanf("%s",&c);
sx[i]=delchar(sx,c);
printf("After deleted, the string is: %s",sx[i]);
return 0;
}
char delchar(char sx[],char c)
{
char str[80];
int j;
while(sx!='\0')
{
char str[80];
int j=0;
if(sx!=c){
str[j]=sx;
j++;
}
}
str[j]='\0';
return str[j];
}
我编译之后输入字符串运行一直显示运行时间过长,求教是怎么回事?谢谢了 展开
展开全部
给你简单改了一下,加了点说明,供参考,有不明白的再问吧:
#include<stdio.h>
#define SZ_SIZE 80
void delchar(const char sx[], char c, char (&szAft)[SZ_SIZE]);
int main(void)
{
char c;
char sx[SZ_SIZE] = {0};
char sAfter[SZ_SIZE] = {0};
int i=0;
printf("Input a string: ");
// while(sx[i]!='\n'){
// scanf("%s",&sx[i]);
// i++;
// }
gets(sx); // 换用gets来接收字串比较方便
printf("Input a char: ");
// scanf("%s",&c);
scanf("%c",&c); // 字符格式化应该是%c
delchar(sx,c, sAfter);
printf("After deleted, the string is: %s\n", sAfter);
return 0;
}
// szAft: 返回串.
void delchar(const char sx[], char c, char (&szAft)[SZ_SIZE])
{
int j = 0;
while(*sx!='\0' && j<(SZ_SIZE-1)/*防止越界*/)
{
// char str[80]; // 这句删除
if(*sx != c)
szAft[j++] = *sx;
++sx;
}
szAft[j]='\0';
}
附个测试结果吧:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询