[bo]以下是引用 [un]jamesbind[/un] 在 2008-4-20 11:53 的发言:[/bo]
不同意雨中飞燕14#的代码可以快一倍以上。
我觉得没有考虑puts()函数调用的开销以及puts()函数本身实现的代码。而将puts函数等同于一般语句了。
不同意雨中飞燕14#的代码可以快一倍以上。
我觉得没有考虑puts()函数调用的开销以及puts()函数本身实现的代码。而将puts函数等同于一般语句了。
前者字符串遍历两次,我的代码只遍历一次,你说是不是两倍??
请分析清楚再下结论,你以上分析仅仅在语法级别,并没有在算法层面上考虑
----------------解决方案--------------------------------------------------------
首先声明,我的分析不是基于语法的,而是从实际执行速度方面分析的。
你的代码从表面上看只遍历了一遍,但实际上puts()中还要遍历一遍。而且还要加上函数调用的开销,所以我认为你的算法实际上比4楼的要慢。
“其实4楼的代码可以更快。。。快一倍。。。”
这是你的原话。我只是想讨论问题,没想你吵架,但是说实话,看了你的回复让我觉得心里有些不舒服。
----------------解决方案--------------------------------------------------------
已经写出来了
#include<stdio.h>
#include<string.h>
#define N 10
int main(void)
{
char str[N];
int x,i,j;
printf("请输入十个数:");
scanf("%s",str);
x=strlen(str);
for(i=0;i<x;i++)
{
if(str[i]=='c')
{
if(str[i+1]=='h')
{
str[i]=str[i+2];
str[i+1]=str[i+3];
for(j=i+1;j<N;j++)
{
str[j]=str[j+2];
}
}
}
}
printf("%s",str);
printf("\n");
}
在别人的基础上修改了一下
----------------解决方案--------------------------------------------------------
看来你还没有看懂我的代码,哈哈,随便你
----------------解决方案--------------------------------------------------------
算法分析应该关心输入规模和基本操作,对于这个题输入规模就是字符串的长度; 基本操作就是比较, 所以和函数调用无关呢~
----------------解决方案--------------------------------------------------------
对于别人的代码
改不来
因为不知道原来作者的思路
改了之后也没有印象
所以就自己写咯
----------------解决方案--------------------------------------------------------
燕子那个调用指针都还米学还
我都不知道该怎么改
就只是发现了你一个低级错误
没有加上;
----------------解决方案--------------------------------------------------------
[bo]以下是引用 [un]zhuwei168[/un] 在 2008-4-20 12:23 的发言:[/bo]
对于别人的代码
改不来
因为不知道原来作者的思路
改了之后也没有印象
所以就自己写咯
对于别人的代码
改不来
因为不知道原来作者的思路
改了之后也没有印象
所以就自己写咯
Very Very Good!!!!!
严重支持!
[color=white]
[[it] 本帖最后由 雨中秣燕 于 2008-4-20 12:26 编辑 [/it]]
----------------解决方案--------------------------------------------------------
回复 34# 的帖子
#include<stdio.h>#define N 11 //警告!!必须是11或者以上
int main(void)
{
char str[N], ch;
char* pstr = str;
scanf("%s",str); scanf(" %c",&ch); //先后顺序!!
for(; *pstr != '\0'; ++pstr )
{
if(*pstr != ch) putchar(*pstr);
else
{
puts(pstr+1); break;
}
}
return 0;
}
这个是我给你改好的代码自己好好看看查收一下
省得以后再这么粗心,都是低级毛病。
而且你们发现了没
你们的代码都不能够实现题目的意思
----------------解决方案--------------------------------------------------------
你们的思路
都只是删除一个字符
而我要的是删除两个
所以你们的代码都有缺陷
需要改进滴
----------------解决方案--------------------------------------------------------