严凯 发表于 2020-12-15 20:12:44

数组

大佬们,能给我讲讲,如果有a和b两个数组,当我要比较a和b数组里面某一特点位置的大小,比如a="123",b="321",当我要比较a和b的时候可以用大于小于吗?如果a是字母b也是字母呢?
如果我要比较特定位置是否相同,又该怎么办?

风过无痕1989 发表于 2020-12-15 21:13:38

本帖最后由 风过无痕1989 于 2020-12-15 22:04 编辑

#include <stdio.h>
void main()
{
        char a[] = { "123dkg" }, b[] = {"321jef"};
        int i;
        for (i = 0;i < 6;i++)
        {
                if (a > b)
                {
                        printf("a[%d] = %c > b[%d] = %c", i, a, i, b);
                }
                if (a == b)
                {
                        printf("a[%d]= %c = b[%d] = %c ", i, a, i, b);
                }

                if (a < b)
                {
                        printf("a[%d]= %c < b[%d] = %c ", i, a, i, b);
                }
                printf("\n");
        }
}

jackz007 发表于 2020-12-15 21:15:04

       如果是数字、单个字符可以直接比,字符串可以用函数 strcmp() 。比如,str1[] = "abc" ,str2[] = "def",则 strcmp(str1 , str2) < 0,因为 str1 小于 str2。

风过无痕1989 发表于 2020-12-15 22:05:32

你运行我2楼的程序,就得到答案了

严凯 发表于 2020-12-16 15:35:13

风过无痕1989 发表于 2020-12-15 22:05
你运行我2楼的程序,就得到答案了

灰常感谢,但是我想问一下,我刚才试过,如果我定义,
        char a[]={'a','b','c','A','DA','SA'},b[]={'a','2','c','B','DA','SA'};
单个字符都可以比较,但是字符数大于1之后,就不能比较了,后面两个输出都是A=A,A=A,如果是两个字符该怎么比较。

风过无痕1989 发表于 2020-12-16 15:54:24

严凯 发表于 2020-12-16 15:35
灰常感谢,但是我想问一下,我刚才试过,如果我定义,
        char a[]={'a','b','c','A','DA','SA'},b[]={'a' ...

DA 就不是一个字符了,而是字符串了,它们存贮占用的是两个数组单元,而不是一个字符数组单元能装得下的。
对字符串的比较,是先比较第一个字母,第一个字母大的字符串就大,第一个字母若相等,再比较第二个字母。这个也很好理解的,比如我们常用的按姓氏笔划排名字,若是同姓,看第二个汉字的拼音,谁小就谁在前面:赵一和赵五,赵五肯定排在前面,因为“五”的拼音 wu,“一”的拼音 yi,第一个字母 w 比 y 小

严凯 发表于 2020-12-16 16:03:13

风过无痕1989 发表于 2020-12-16 15:54
DA 就不是一个字符了,而是字符串了,它们存贮占用的是两个数组单元,而不是一个字符数组单元能装得下 ...

谢谢!我靠,nb啊,讲的很生动,真的。但是如果我非要比较DA和SA的大小,除了使用函数,还有什么方法没?

风过无痕1989 发表于 2020-12-16 16:57:28

严凯 发表于 2020-12-16 16:03
谢谢!我靠,nb啊,讲的很生动,真的。但是如果我非要比较DA和SA的大小,除了使用函数,还有什么方法没?

我上面那个例子,不就是没有使用函数吗,一个字符一个字符地比较

严凯 发表于 2020-12-16 17:00:44

风过无痕1989 发表于 2020-12-16 16:57
我上面那个例子,不就是没有使用函数吗,一个字符一个字符地比较

#include<stdio.h>
int main()
{
        char a[]={'a','b','c','A','SA','DA'},b[]={'a','2','c','B','DA','SA'};
        int i;
                for (i = 0;i < 6;i++)
      {
                if (a > b)
                {
                        printf("a[%d] = %c > b[%d] = %c", i, a, i, b);
                }
                if (a == b)
                {
                        printf("a[%d]= %c = b[%d] = %c ", i, a, i, b);
                }

                if (a < b)
                {
                        printf("a[%d]= %c < b[%d] = %c ", i, a, i, b);
                }
                printf("\n");
      }
        return 0;
}

这个就是,假如我要比较DA和SA,但是编译器的结果是A=A?

风过无痕1989 发表于 2020-12-16 17:10:09

严凯 发表于 2020-12-16 17:00
这个就是,假如我要比较DA和SA,但是编译器的结果是A=A?

#include<stdio.h>
int main()
{
      char a[]={“SA}, b[]={"DA"};    // 字符串要用双引号,不能用单引号
      int i;
                for (i = 0;i < 6;i++)
      {
                if (a > b)
                {
                        printf("a[%d] = %c > b[%d] = %c", i, a, i, b);
                }
                if (a == b)
                {
                        printf("a[%d]= %c = b[%d] = %c ", i, a, i, b);
                }

                if (a < b)
                {
                        printf("a[%d]= %c < b[%d] = %c ", i, a, i, b);
                }
                printf("\n");
      }
      return 0;
}

严凯 发表于 2020-12-16 17:14:50

风过无痕1989 发表于 2020-12-16 17:10


不是,大佬,我的意思是比较整个DA和SA,因为S>D所以输出DA<SA,就比如张一小张三大,但不可能说张=张,一<三。应该是输出张一<张三啊,就怎么才能比较整个的值,并且输出整个,DA<SA

严凯 发表于 2020-12-17 11:25:13

严凯 发表于 2020-12-16 17:14
不是,大佬,我的意思是比较整个DA和SA,因为S>D所以输出DA

大佬,人呢?
页: [1]
查看完整版本: 数组