解题思路:
有同学说C++看不懂,所以来一个用C语言写的程序,不过因为测试数据的问题,导致用C语言写要注意很多问题。特别是输入命令那里,我也错了很多发。通过跟大佬一起慢慢分析,找可能出现的错误。最后才找到。大家可以参考一下源程序。
注意事项:
参考代码:
#include <stdio.h> #include <string.h> int main() { char s[50]; char order,c1,c2; int i=0,j,len; int pos=-1; //位置或者标志 s[i]=getchar(); while(s[i]!='.') //s[i]不等于.则继续输入 { i++; s[i]=getchar(); } s[++i]='\0'; //加上字符串的结束标志 len=i; //len保存字符串长度 scanf("%c",&order); //输入命令 while(order=='\n'|| order==' ') //如果命令是空格或者回车,继续读,直到不是为止。 注意这里,测试数据有坑 scanf("%c",&order); if(order=='D') //删除操作 { scanf(" %c",&c1); //输入要删除的字符,注意%c前面有一个空格分隔 for(i=0;s[i];i++) //删除操作 if(s[i]==c1) //找到则删除它 { pos=1; //标志设置为1,表示操作成功 for(j=i;s[j];j++) //前移一个位置,覆盖即可删除。 s[j]=s[j+1]; break; } } else if(order=='I') //插入操作 { scanf(" %c %c",&c1,&c2); //其中c1表示插入到指定字符前面,c2表示将要插入的字符 //注意每一个%c前面都有一个空格分隔 for(i=len-1;i>=0;i--) //找插入位置,从后面往前面查找,找到则记录位置并退出 if(s[i]==c1) { pos=i; //记录插入位置 break; } if(pos!=-1) //找到了插入位置 { for(i=len;i>=pos;i--) //后移一个位置,腾出位置插入,包括字符串结束标志也往后移动 s[i+1]=s[i]; s[pos]=c2; } } else if(order=='R') //替换操作 { scanf(" %c %c",&c1,&c2); //其中c1为被替换的字符,c2为替换的字符 //注意每一个%c前面都有一个空格分隔 for(i=0;s[i];i++) if(s[i]==c1) //找到则替换,注意时全部替换 { pos=1; s[i]=c2; } } if(pos==-1) //操作不成功 puts("no exist"); else //操作成功,则输出新字符串 puts(s); return 0; }
0.0分
6 人评分
C语言程序设计教程(第三版)课后习题8.1 (C++代码)浏览:756 |
C语言程序设计教程(第三版)课后习题7.5 (C++代码)浏览:782 |
点我有惊喜!你懂得!浏览:3873 |
点我有惊喜!你懂得!浏览:1068 |
C语言程序设计教程(第三版)课后习题3.7 (C语言代码)浏览:1066 |
简单的a+b (C语言代码)浏览:681 |
字符串的输入输出处理 (C语言代码)浏览:924 |
C语言训练-求函数值 (C语言代码)浏览:573 |
C语言程序设计教程(第三版)课后习题6.8 (C++代码)浏览:575 |
【计算直线的交点数】 (C语言代码)浏览:1442 |