解题思路:
有同学说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语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:580 |
C语言程序设计教程(第三版)课后习题10.1 (C语言代码)浏览:585 |
2006年春浙江省计算机等级考试二级C 编程题(1) (C语言代码)浏览:726 |
震宇大神的杀毒软件 (C语言代码)浏览:1162 |
矩形面积交 (C语言代码)浏览:1433 |
单词个数统计 (C语言代码)浏览:1046 |
C语言程序设计教程(第三版)课后习题7.5 (C语言代码)浏览:712 |
敲七 (C语言代码)浏览:2748 |
C语言程序设计教程(第三版)课后习题6.10 (C语言代码)浏览:538 |
简单的a+b (C语言代码)浏览:617 |