注册 登录
编程论坛 C++教室

自己写的程序,求指教哪个地方可以优化

zhengchen080 发布于 2013-08-02 09:56, 800 次点击
#include<stdio.h>
#include<string.h>
main()
{
    char a[20],b[20];
    gets(a);
    gets(b);
    int i,j,m,la,lb;
    la=strlen(a);
    lb=strlen(b);
    for(i=0,j=0;i<la&&j<lb;i++,j++)
    {
        if(a[i]>b[j])
        {
            m=a[i]-b[j];
            break;
        }
        else if(a[i]<b[j])
        {
            m=a[i]-b[j];
            break;
        }
        else
        {
            if(a[i+1]=='\0'&&b[j+1]!='\0')
                m=0-b[j+1];
            else if(a[i+1]!='\0'&&b[j+1]=='\0')
                m=a[i+1];
            else
            {
                m=0;
            }
        }
    }
    printf("%d\n",m);
}
10 回复
#2
wp2319572013-08-02 09:58
1、没分
2、贴错地方了
3、不知道你的代码能实现啥功能
#3
rjsp2013-08-02 10:09
最起码,你得告诉别人你这代码要实现什么功能
#4
zhengchen0802013-08-02 10:11
回复 2楼 wp231957
将两个字符串a[]和b[]比较,如果a[]>b[],输出一个正数;a[]=b[],输出0;a[]<b[],输出一个负数。不要用strcpy函数。两个字符串用gets函数读入。输出的正数或负数的绝对值应是相比较的两个字符串相对应字符的ASCII码的差值。例如,’A’与’C’相比,由于’A’<’C’,应输出负数,由于’A’与’C’的码差值为2,因此应输出"-2"。同理:"And"和"Aid"比较,根据第2个字符比较结果,’n’比’i’大5,因此应输出"5"。
#5
peach54602013-08-02 10:17
if(a[i+1]=='\0'&&b[j+1]!='\0')
                m=0-b[j+1];
            else if(a[i+1]!='\0'&&b[j+1]=='\0')
                m=a[i+1];
            else
            {
                m=0;
            }
没必要整这么复杂,这段
#6
peach54602013-08-02 10:18
头文件:string.h
格式:strlen (字符数组名)
功能:计算字符串s的(unsigned int型)长度,不包括'\0'在内
说明:返回s的长度,不包括结束符NULL。
#7
wp2319572013-08-02 10:20
如果是练习写代码的话   #include <string.h> 都不能使用  所有字符串相关的函数都要自己实现
#8
rjsp2013-08-02 10:21
回复 4楼 zhengchen080
程序代码:
#include <stdio.h>

int yourstrcmp( const char* a, const char* b )
{
    int ret = 0 ;
    while( !(ret=*a-*b) && *b )
            ++a, ++b;
    return ret;
}

int main()
{
    char a[20], b[20];
    gets(a);
    gets(b);
    printf( "%d\n", yourstrcmp(a,b) );

    return 0;
}
#9
bfmiyt2013-08-02 12:22
用一个while就行了
#10
天使梦魔2013-08-02 22:03
优化是相对的,前提是你要会相对论。
设计到极致无非两种情况一种吃内存一种吃cpu
打个比方你玩汉诺塔,你就是cpu,三个支柱算是内存。你有6个碟子,现在开始玩,我保证步数超出你的想象。
那如果我增加内存,你有7个支柱,你的步数最多就11。

在哪优化?是保证质量还是效率。
单次作用还是保证质量吧。
如果是复用你就需要细致到每个变量的计算的申请。
最明显的是游戏开发,你设计一个人物类,包含贴图,移动方式,速度,生命,经验等等等。
创建主人公只需要设置类成员,创建敌人也只要改变类成员,记住这是你设计的它不怎么好。
游戏第一关你和一个猛男pk,你很轻松的干掉了他,得到超级变身器,你变成了终结者。
游戏第二关你要和一万个猛男pk,听上去很爽,而且你怕什么你是终结者。
玩家不会怕,但开发者怕了,一万个敌人从他那不太好的类中被定义出来,cpu要不停的去处理他们,ai,能力值,图形渲染等等等




好了我要万年大潜水
#11
peach54602013-08-03 06:52
回复 10楼 天使梦魔
你说的优化,她听不懂的...
层次没到那个地步...
1