Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2529345
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2010-08-04 18:18:28

    编写一个程序,将两个字符串s1和s2比较,如果s1 > s2,输出一个正数;s1 = s2,输出0,;s1 < s2输出一个负数。不要使用strcmp函数。两个字符串用gets函数读入。输出的正数或者负数的绝对值应是相比较的两个字符串相应字符的ASCII码的差值。例如“A”与“C”相比,由于“A” < "C",应该输出负数,由于“A”与"C"的ASCII嘛差值为2,因此应该输出“-2”。同理:“And”和“Aid”比较,根据第二个字符比较的结果,"n”比"i"大5,因此输出5。
    看到这个题目,我们可以想到如果不用strcmp函数,因此就需要我们一次读取一个字符进行比较,如果等于0,可以执行continue操作,进行下一次的循环。如果不等于零,即找到两个字符串的差值,此时就可以break了。根据上面的原理,编写代码如下:
 

#include <stdio.h>
#define N 100
int main(int argc, int *argvp[])
{
    char str1[N],str2[N];
    char c1,c2;
    int i,result = 0;
    printf("please input s1 string:");
    gets(str1);
    printf("please input s2 string:");
    gets(str2);
    
    for (i = 0 ; ((c1 = str1[i]) != '\0') && ((c2 = str2[i]) != '\0') ; i++)
    {
        result = c1 - c2;
        
        if (0 == result)
        {
          continue;
        }
        else
        {
            break;
        }
    }
    
    printf("the result is :%d\n",result);
    system("pause");
    return 0;
}


阅读(9814) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~