一道c程题~~~请高手帮忙看一下~~~

题目:编写一个程序,完成以下功能。请输入一个字符串:shanghaifudan<回车>请输入一个查找字符:a<回车>请输入一个替代字符:e<回车>更新后的字符串为:she... 题目:
编写一个程序,完成以下功能。

请输入一个字符串:shanghai fudan<回车>
请输入一个查找字符:a<回车>
请输入一个替代字符:e<回车>
更新后的字符串为:shenghei fuden

其中 第一行的shanghai fudan及第二行的a及第三行的e均为用户输入,其他为程序输出。
效果是把字符串(如shanghai fudan)中某个指定的字符(如a)用另一个指定的字符(如b)代替,如变成shenghei fuden。

我的回答::
#include <stdio.h>
#include<string.h>
void main()
{
int i,m,n,j;
char a[100],n,p;
printf("请输入一串字符,以回车结束\n");
gets(a);
printf("请输入字符串中你想查找与替换的字符\n");
n=getchar();
p=getchar();
m=strlen(a);
for(i=0;i<m;i++)
{if (a[i]==n)
{
for(j=m;j>i+1;j--)
{a[j]=a[j-1];
a[i+1]=a[i]=p;}
m++;
}

}
printf("更改后的字符串为%s",a);

}

到底错在哪了呢。。。。。请高手指点~~~谢谢!!!
展开
 我来答
阿西旺琳
2012-04-10 · 超过89用户采纳过TA的回答
知道小有建树答主
回答量:215
采纳率:0%
帮助的人:279万
展开全部
初步观察,你的n用int声明了一遍,怎么又用char声明啊

getchar是接受回车的,所以不能这么写

#include <stdio.h>
#include<string.h>
void main()
{
int i,m,n,j;
char a[100],c,p;
printf("请输入一串字符,以回车结束\n");
gets(a);
printf("请输入字符串中你想查找字符\n");
c=getchar();getchar();
printf("请输入字符串中你想替换字符\n");
p=getchar();
m=strlen(a);
for(i=0;i<m;i++)
if (a[i]==c) a[i]=p;
printf("更改后的字符串为%s",a);

}
vtanghq3
2012-04-10
知道答主
回答量:2
采纳率:0%
帮助的人:3.1万
展开全部
1、 n=getchar();
p=getchar(); n=getchar();输入后好像是以‘\0’结束,这样输入p的值其实就是‘\0’,可以再中间加个getchar(); 即:n=getchar();getchar(); p=getchar();
用专业的表达不会,只是个人理解。
2、if (a[i]==n)
{
/*
for(j=m;j>i+1;j--)
{a[j]=a[j-1];
a[i+1]=a[i]=p;}
m++;
*/
a[i] = p;
}
这里如果判断a【i】为要替换的直接将a【i】=p,即可呀
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxrtwgfr5062
2012-04-10
知道答主
回答量:18
采纳率:0%
帮助的人:5.8万
展开全部
freedom金小样你好!
S #include<stdio.h> #include<stdlib.h> #include<string.h> void sortA(int *arry, int aSize); void main() { char buf[6]; int *arry; while(1) { printf("pls input a number...\n"); scanf("%s", buf); int nLen = strlen(buf); if(nLen>5) { printf("the number overlong\n"); continue; } for(int i=0; i<nLen; i++) { if(buf[i]<48 || buf[i]>57) { printf("Not a number...\n"); break; } } if(i<nLen) continue; printf("这个数为%d位数\n这个数由数字\"", nLen); arry = (int*)malloc(sizeof(int) * nLen); for(i=0; i<nLen; i++) { arry[i] = buf[i] - 48; printf("%d.", arry[i]); } printf("\"组成\n"); sortA(arry, nLen); printf("排序后为:"); for(i=0; i<nLen; i++) printf("%d\t", arry[i]); printf("\n"); free(arry); printf("input \"yes\" continue, otherwise exit...\n"); scanf("%s", buf); if(strcmp(buf, "yes") != 0) break; } } void sortA(int *arry, int aSize) { int temp; for(int i=0; i<aSize; i++) for(int j=i+1; j<aSize; j++) { if(arry[i]>arry[j]) { temp = arry[i]; arry[i] = arry[j]; arry[j] = temp; } } }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式