南京华夏银行:请求高手指点我的错误,有追加分

来源:百度文库 编辑:神马品牌网 时间:2024/05/01 10:44:58
题目是:判断一个字符ch是否与str所指串中的某个字符相同,若相同,什么也不做,若不同,将其插在串后.
#include "stdio.h"
fun(char*s,char ch)
{char str[80];
int i=0;int j=0;
while(s[i]!='\0');
i++;
while(s[j++]!=ch)
s[i+1]=ch;
s[i]='\0';
}
main()
{char str[12]="zxcvbnmBB";
printf("input ch:",ch);
scanf("%c",&ch);
fun(str,ch);
printf("the string is %s",str);
}
能通过运行,但是不能在串后添加字符,

你的代码的算法有误:

把fun函数中相应的代码改写:
while(s[i] != '\0')//这句后面不要有“;”
i++;
while(j<i)
if(s[j]!=ch)j++;//不同就比较下一个字符
else return;//有相同的则什么也不做
//现在插入
s[j]=ch;
s[j+1]='\0';

一个比较精简高效的fun是:
void fun(char*s, char ch)
{
int i=0;
while(s[i]!='\0')
if(s[i++]==ch) return;
s[i++]=ch;
s[i]='\0'
}

改为,行了,不过效率太差,你的C语法还需加强

#include "stdio.h"
fun(char*s,char ch)
{
int i=0;int j=0;
while(s[i]!='\0')
i++;
while(s[j]!=ch&&s[j]!='\0')
j++;
if(i==j){
s[i]=ch;
s[++i]='\0'; }
}
main()
{char str[12]="zxcvbnmBB";
char ch;
printf("input ch:");
scanf("%c",&ch);
fun(str,ch);
printf("the string is %s\n",str);
}