鱼C论坛

 找回密码
 立即注册
查看: 1236|回复: 11

[已解决]数组

[复制链接]
发表于 2020-12-15 20:12:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大佬们,能给我讲讲,如果有a和b两个数组,当我要比较a和b数组里面某一特点位置的大小,比如a[3]="123",b[3]="321",当我要比较a[1]和b[1]的时候可以用大于小于吗?如果a[1]是字母b[1]也是字母呢?
如果我要比较特定位置是否相同,又该怎么办?
最佳答案
2020-12-15 21:13:38
本帖最后由 风过无痕1989 于 2020-12-15 22:04 编辑
  1. #include <stdio.h>
  2. void main()
  3. {
  4.         char a[] = { "123dkg" }, b[] = {"321jef"};
  5.         int i;
  6.         for (i = 0;i < 6;i++)
  7.         {
  8.                 if (a[i] > b[i])
  9.                 {
  10.                         printf("a[%d] = %c > b[%d] = %c", i, a[i], i, b[i]);
  11.                 }
  12.                 if (a[i] == b[i])
  13.                 {
  14.                         printf("a[%d]  = %c = b[%d] = %c ", i, a[i], i, b[i]);
  15.                 }

  16.                 if (a[i] < b[i])
  17.                 {
  18.                         printf("a[%d]  = %c < b[%d] = %c ", i, a[i], i, b[i]);
  19.                 }
  20.                 printf("\n");
  21.         }
  22. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-12-15 21:13:38 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风过无痕1989 于 2020-12-15 22:04 编辑
  1. #include <stdio.h>
  2. void main()
  3. {
  4.         char a[] = { "123dkg" }, b[] = {"321jef"};
  5.         int i;
  6.         for (i = 0;i < 6;i++)
  7.         {
  8.                 if (a[i] > b[i])
  9.                 {
  10.                         printf("a[%d] = %c > b[%d] = %c", i, a[i], i, b[i]);
  11.                 }
  12.                 if (a[i] == b[i])
  13.                 {
  14.                         printf("a[%d]  = %c = b[%d] = %c ", i, a[i], i, b[i]);
  15.                 }

  16.                 if (a[i] < b[i])
  17.                 {
  18.                         printf("a[%d]  = %c < b[%d] = %c ", i, a[i], i, b[i]);
  19.                 }
  20.                 printf("\n");
  21.         }
  22. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-15 21:15:04 | 显示全部楼层
       如果是数字、单个字符可以直接比,字符串可以用函数 strcmp() 。比如,str1[] = "abc" ,str2[] = "def",则 strcmp(str1 , str2) < 0,因为 str1 小于 str2。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-15 22:05:32 | 显示全部楼层
你运行我2楼的程序,就得到答案了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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,如果是两个字符该怎么比较。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 小
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢!我靠,nb啊,讲的很生动,真的。但是如果我非要比较DA和SA的大小,除了使用函数,还有什么方法没?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

我上面那个例子,不就是没有使用函数吗,一个字符一个字符地比较
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-16 17:00:44 | 显示全部楼层
风过无痕1989 发表于 2020-12-16 16:57
我上面那个例子,不就是没有使用函数吗,一个字符一个字符地比较
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         char a[]={'a','b','c','A','SA','DA'},b[]={'a','2','c','B','DA','SA'};
  5.         int i;
  6.                 for (i = 0;i < 6;i++)
  7.         {
  8.                 if (a[i] > b[i])
  9.                 {
  10.                         printf("a[%d] = %c > b[%d] = %c", i, a[i], i, b[i]);
  11.                 }
  12.                 if (a[i] == b[i])
  13.                 {
  14.                         printf("a[%d]  = %c = b[%d] = %c ", i, a[i], i, b[i]);
  15.                 }

  16.                 if (a[i] < b[i])
  17.                 {
  18.                         printf("a[%d]  = %c < b[%d] = %c ", i, a[i], i, b[i]);
  19.                 }
  20.                 printf("\n");
  21.         }
  22.         return 0;
  23. }
复制代码


这个就是,假如我要比较DA和SA,但是编译器的结果是A=A?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-12-16 17:10:09 | 显示全部楼层
严凯 发表于 2020-12-16 17:00
这个就是,假如我要比较DA和SA,但是编译器的结果是A=A?
  1. #include<stdio.h>
  2. int main()
  3. {
  4.         char a[]={“SA}, b[]={"DA"};    // 字符串要用双引号,不能用单引号
  5.         int i;
  6.                 for (i = 0;i < 6;i++)
  7.         {
  8.                 if (a[i] > b[i])
  9.                 {
  10.                         printf("a[%d] = %c > b[%d] = %c", i, a[i], i, b[i]);
  11.                 }
  12.                 if (a[i] == b[i])
  13.                 {
  14.                         printf("a[%d]  = %c = b[%d] = %c ", i, a[i], i, b[i]);
  15.                 }

  16.                 if (a[i] < b[i])
  17.                 {
  18.                         printf("a[%d]  = %c < b[%d] = %c ", i, a[i], i, b[i]);
  19.                 }
  20.                 printf("\n");
  21.         }
  22.         return 0;
  23. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-16 17:14:50 | 显示全部楼层

不是,大佬,我的意思是比较整个DA和SA,因为S>D所以输出DA<SA,就比如张一小张三大,但不可能说张=张,一<三。应该是输出张一<张三啊,就怎么才能比较整个的值,并且输出整个,DA<SA
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-12-17 11:25:13 | 显示全部楼层
严凯 发表于 2020-12-16 17:14
不是,大佬,我的意思是比较整个DA和SA,因为S>D所以输出DA

大佬,人呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-8 03:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表