c语言编程编写函数,在一个字符串中查找字符x,将其全部替换为y(x、y都是任意字符变量),求助 编写函数,在一个字符串中查找字符x,将其全部替换为y(x、y...

c\u8bed\u8a00\u7f16\u7a0b\u7f16\u5199\u51fd\u6570\uff0c\u5728\u4e00\u4e2a\u5b57\u7b26\u4e32\u4e2d\u67e5\u627e\u5b57\u7b26x\uff0c\u5c06\u5176\u5168\u90e8\u66ff\u6362\u4e3ay\uff08x\u3001y\u90fd\u662f\u4efb\u610f\u5b57\u7b26\u53d8\u91cf\uff09\u3002

//\u4f60\u7684\u4ee3\u7801\u6ca1\u4ec0\u4e48\u903b\u8f91\u95ee\u9898\uff0c\u53ea\u662f\u4e66\u5199\u89c4\u8303\u6709\u9519\uff1a\u770b\u6211\u6ce8\u91ca#include\u3000\u3000#include\u3000\u3000#define N 15\u3000\u3000int Exchange(char *a, char x, char y)\u3000\u3000{\u3000\u3000 int i = 0, j;\u3000\u3000 bool isFind = false;\u3000\u3000 while (a[i] != '\0') //\u8fd9\u91cc\u662f\0\uff0c\u4e0d\u662f/0\u3000\u3000 {\u3000\u3000 if (a[i] == x)\u3000\u3000 {\u3000\u3000 a[i] = y;\u3000\u3000 isFind = true;\u3000\u3000 }\u3000\u3000 i++;\u3000\u3000 }\u3000\u3000\u3000\u3000 return isFind;\u3000\u3000 }\u3000\u3000void main()\u3000\u3000{\u3000\u3000 int i;\u3000\u3000 char x, y, a[N];\u3000\u3000 gets(a);\u3000\u3000 scanf("%c,%c", &x, &y); //%c\u548c%c\u4e4b\u524d\u6709\u9017\u53f7,\u9694\u5f00\u3000\u3000 if( Exchange(a, x, y) ){\u3000\u3000 puts(a);\u3000\u3000 }\u3000\u3000 else\u3000\u3000 printf("\u6ca1\u6709\u88ab\u66ff\u6362\n");\u3000\u3000 system("pause");\u3000\u3000 }\u3000\u3000

#include
int replace(char *p, char c1,cahr c2)
{int t=0;
for(;*p;p++)
if(*p==c1){*p=c2; t=1;}
return t;
}
int main()
{
char s[100],c1,c2;
printf("\u8bf7\u8f93\u5165\u4e00\u4e2a\u5b57\u7b26\u4e32\uff1a\n");
gets(s);
printf("\u8bf7\u8f93\u5165\u8981\u67e5\u627e\u548c\u66ff\u6362\u7684\u5b57\u7b26(\u7528\u4e00\u4e2a\u7a7a\u683c\u5206\u9694):");
scanf("%c %c",&c1,&c2);
if(replace(s,c1,c2);==0)
printf("\u672a\u627e\u5230\u8981\u66ff\u6362\u7684\u5b57\u7b26\uff01");
else
{
printf("\u66ff\u6362\u540e\u7684\u5b57\u7b26\u4e32\uff1a\n");
puts(s);
}
system('pause");
return 0;
}

#include <stdio.h>

#define N 7

int change(char a[],char b,char c) {
 int i = 0,count = 0;
 while(a[i] != '\0') {
 if(a[i] == b) a[i] = c;
 count++;
 i++;
 }
 return count;
}

int main() {
char a[N],b,c;
int i;
printf("请输入6个字符:
");
for(i = 0;i < N;i++)
scanf("%c",&a[i]);
printf("请分别输入被替换字符和替换字符:
");
a[i] = '\0'; // 补充串结束符
scanf("%c%c",&b,&c);
change(a,b,c);
for(i = 0;i < N;i++)
printf("%c",a[i]);
printf("
");
return 0;
}


输不出来的原因是你的 scanf("%c%c",&b,&c);中的b接受了上一个scanf输入中的回车换行符1310中的换行符10,所以你的b变成了ASCII的10,是个不可见字符,而C接收了你输入的第二个字符,所以没法替换。你可以在scanf("%c%c",&b,&c);的前面加个scanf("%c",&b);试试,应该就可以正常替换了。这是scanf的问题。

问题出在第二个scanf。第一个scanf输入时,输入6个字符后回车,6个字符被a接收了,而回车未被接收(在缓存中),被第二个scanf捕获,从而被被b接收了,下断点调试你就能看到b=10.
并不是xoaxa 说的 a[i] = '\0'; // 补充串结束符 ,他只是凑巧将N变为7了,然后a[6]接收了回车
更改的方法是在第二个scanf上一行加一句 getchar(); 让getchar接收掉回车

  • C璇█缂栫▼瀹炵幇,鍦ㄤ竴涓瓧绗︿覆涓,鏌ユ壘鍙︿竴涓瓧绗︿覆绗竴娆″嚭鐜扮殑浣嶇疆,濡傛灉...
    绛旓細include <string.h> / 鍑芥暟鍚:strstrn 鍙傛暟: char *str1,char *str2,int n 杩斿洖鍊:char 璇存槑: 姝鍑芥暟鍦str1涓壘str2绗琻娆″嚭鐜帮紝濡傛灉str2涓虹┖锛岃繑 鍥瀞tr1锛涘鏋渟tr2鍦╯tr1涓嚭鐜板垯杩斿洖str2鍦╯tr1涓 鍑虹幇鐨勪綅缃,n涓鸿礋鏁版椂杩斿洖NULL 2013-4-7 22:37 / char * strstrn(char *str1,...
  • C璇█缂栫▼,鍐欎竴涓嚱鏁,浣胯緭鍏ョ殑涓涓瓧绗︿覆鎸夊弽搴忓瓨鏀,鍦涓诲嚱鏁颁腑杈撳叆鍜...
    绛旓細for(i=length-1;i>=0;i--) //浠庣粰瀹氱殑瀛楃涓茬殑鏈鍚庝竴浣嶄緷娆″悜鍓嶉亶鍘嗗悇瀛楃 putchar(*(str+i)); //姣忓悜鍓嶄竴涓瓧绗﹀嵆鎵撳嵃璇ュ瓧绗,鐩磋嚦绗竴涓瓧绗︿负姝倉int main(){ char str[80]=""; //瀹氫箟涓涓暱搴︿负80瀛楄妭鐨勫瓧绗︿覆鏁扮粍,骞跺垵濮嬪寲gets(str); //浠庨敭鐩樹腑杈撳叆涓涓瓧绗︿覆(閬囧洖杞﹂敭缁撴潫)printit(...
  • C璇█涓浣缂栧啓涓涓瓧绗︿覆澶嶅埗鍑芥暟,骞跺湪涓诲嚱鏁颁腑璋冪敤瀹冦
    绛旓細include<stdio.h>void str_copy(char *str1, char *str2) // 瀛楃涓澶嶅埗鍑芥暟{ while(*str1++ = *str2++); // 灏嗗瓧绗︿覆str2涓殑姣忎釜瀛楃閫愪釜澶嶅埗鍒皊tr1涓紝鐩村埌閬囧埌瀛楃涓茬粨鏉熷瓧绗'\0'}void main(){ char s1[] = "abcd"; char s2[5]; str_copy(s2, s1); //...
  • c璇█缂栫▼缂栬緫涓涓嚱鏁,鍦ㄥ瓧绗︿覆S1涓鎵惧瓧绗︿覆S2,濡傛灉娌℃壘鍒,杈撳嚭 n...
    绛旓細include <stdio.h> include <string.h> include <malloc.h> int search(char * strSource, char * strFind){ int find_len=strlen(strFind);int i=0;int flag=0;while( *(strSource+i) != '\0' ){ if(*(strSource+i) == *strFind){ if(strncmp(strSource+i,strFind,find_len) ...
  • c璇█缂栫▼銆缂栧啓涓涓 C 鍑芥暟,鍦ㄤ竴涓瓧绗︿覆涓壘鍒板彲鑳界殑鏈闀跨殑瀛愬瓧绗︿覆...
    绛旓細鎵浠ヤ綘鐨 void enter(char x[]) //杈撳叆鍑芥暟 杩欎釜鍑芥暟鏍规湰灏变笉瀵癸紝鍥犱负鏁扮粍涓嶈兘鑷繁鍔ㄦ佸闀裤傜涓夛紝浣犲湪绋嬪簭涓凡缁忛檺瀹氫簡鏁扮粍鐨勯暱搴︽槸100锛岄偅涔堟渶濂藉氨鐩存帴浣跨敤x[100]銆瀛楃涓鏄互'\0'缁撳熬鐨勶紝鎵浠ワ紝鍙璇诲埌'\0'灏辫涓哄瓧绗︿覆缁撴潫銆傛墍浠ヤ笉闇瑕佸姩鎬佹暟缁勩
  • C璇█缂栫▼:鍐欎竴涓嚱鏁,杈撳叆涓琛屽瓧绗,灏嗘瀛楃涓涓渶闀跨殑鍗曡瘝杈撳嚭...
    绛旓細include <stdio.h> void main(){ int a,b,c;printf("璇疯緭鍏3涓暣鏁帮細");scanf("%d%d%d",&a,&b,&c);if((a>b)&& (a<c)|| (ac))printf("\n d 涓轰綅浜庝腑闂寸殑鏁癨n",a);if((b>a)&& (b<c)|| (bc))printf("\n d 涓轰綅浜庝腑闂寸殑鏁癨n",b);if((c>b)&& (c<a)|| ...
  • 缂栧啓绋嬪簭瀹炵幇鍦ㄤ竴涓瓧绗︿覆涓煡鎵炬寚瀹氱殑瀛楃(璇风敤c璇█浣滅瓟)_鐧惧害鐭 ...
    绛旓細int main(){ int i,index,count;char a,ch,str[80];scanf("%c\n",&a);i=0;index=-1;count=0;ch=getchar();for(i=0;ch!='\n';i++){ str=ch;count++;ch=getchar();} for(i=0;i<count;i++)if(a==str)index=i;if(index!=-1)printf("index=%d",index);else printf...
  • C璇█缂栫▼,鍐欎竴涓嚱鏁,浣胯緭鍏ョ殑涓涓瓧绗︿覆鎸夊弽搴忓瓨鏀,鍦涓诲嚱鏁颁腑杈撳叆鍜...
    绛旓細include <string.h> void f(char str[]);main(){ static char str[100]; //璁剧疆涓洪潤鎬佽鏂规硶璋冪敤鏃舵敼鍙 gets(str);f(str);puts(str);} void f(char str[]){ int len = strlen(str),i;char c;for(i=0;i<len/2;i++){ c = str[i];str[i] = str[len -i -1];str[...
  • C璇█缂栧啓绋嬪簭瀹炵幇鍦ㄤ竴涓瓧绗︿覆涓煡鎵炬寚瀹氬瓧绗,骞惰緭鍑烘寚瀹氱殑瀛楃鍦ㄥ瓧...
    绛旓細public static void main(String[]args){ System.out.println("璇疯緭鍏ヤ綘瑕佸垽鏂殑瀛楃涓:");Scanner s=new Scanner(System.in);String str=s.nextLine();char[]ch=str.toCharArray();Arrays.sort(ch);//瀵规暟缁勬帓搴 char max='a';//璁板綍鍑虹幇娆℃暟鏈澶氬厓绱 int maxcount=0;//璁板綍鏈澶у嚭鐜版鏁 ...
  • C璇█:鐢鍑芥暟缂栧啓涓涓绋嬪簭,浠庨敭鐩樿緭鍏ヤ竴涓甫鏈夌┖鏍肩殑瀛楃涓,鍘绘帀瀛楃涓...
    绛旓細1銆侀鍏堬紝闅忎究鍒涘缓涓涓湁main鏂规硶鐨勭被銆2銆佸畾涔涓涓瓧绗︿覆鍙橀噺锛岃繖閲岀粰鍙橀噺璧嬪硷紝鍓嶅悗閮界暀鏈変竴涓┖鏍笺3銆佸厛杩愯涓閬嶏紝鐪嬭緭鍑烘晥鏋滐紝鍙互鐪嬪埌鐧惧害鍖呮嫭绌烘牸鐨勫嚑涓瓧绗﹂兘鎵撳嵃鍑烘潵浜嗐4銆佷负浜嗘洿鍔犳竻鏅帮紝鐢ㄥ瓧绗︿覆瀵硅薄鍙﹀涓涓柟娉曗渓ength()鈥濆緱鍒版瀛楃涓茬殑闀垮害涓6锛 璇存槑鐨勭‘鏄滅櫨搴︹濆姞涓や釜绌烘牸鐨勯暱搴...
  • 扩展阅读:学编程一年大概多少钱 ... 初学编程必背50个 ... 吓人的编程代码 ... c++编程可以自学吗 ... c十十编程要学多久 ... 编程必背100个代码 ... c++编程适合几岁学 ... 十大编程语言排名 ... c++和python先学哪个 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网