鱼C论坛

 找回密码
 立即注册
查看: 1037|回复: 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 编辑
#include <stdio.h>
void main()
{
        char a[] = { "123dkg" }, b[] = {"321jef"};
        int i;
        for (i = 0;i < 6;i++)
        {
                if (a[i] > b[i])
                {
                        printf("a[%d] = %c > b[%d] = %c", i, a[i], i, b[i]);
                }
                if (a[i] == b[i])
                {
                        printf("a[%d]  = %c = b[%d] = %c ", i, a[i], i, b[i]);
                }

                if (a[i] < b[i])
                {
                        printf("a[%d]  = %c < b[%d] = %c ", i, a[i], i, b[i]);
                }
                printf("\n");
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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[i] > b[i])
                {
                        printf("a[%d] = %c > b[%d] = %c", i, a[i], i, b[i]);
                }
                if (a[i] == b[i])
                {
                        printf("a[%d]  = %c = b[%d] = %c ", i, a[i], i, b[i]);
                }

                if (a[i] < b[i])
                {
                        printf("a[%d]  = %c < b[%d] = %c ", i, a[i], i, b[i]);
                }
                printf("\n");
        }
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2020-12-15 22:05:32 | 显示全部楼层
你运行我2楼的程序,就得到答案了
想知道小甲鱼最近在做啥?请访问 -> 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,如果是两个字符该怎么比较。
想知道小甲鱼最近在做啥?请访问 -> 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 小
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢!我靠,nb啊,讲的很生动,真的。但是如果我非要比较DA和SA的大小,除了使用函数,还有什么方法没?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我上面那个例子,不就是没有使用函数吗,一个字符一个字符地比较
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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[i] > b[i])
                {
                        printf("a[%d] = %c > b[%d] = %c", i, a[i], i, b[i]);
                }
                if (a[i] == b[i])
                {
                        printf("a[%d]  = %c = b[%d] = %c ", i, a[i], i, b[i]);
                }

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

这个就是,假如我要比较DA和SA,但是编译器的结果是A=A?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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[i] > b[i])
                {
                        printf("a[%d] = %c > b[%d] = %c", i, a[i], i, b[i]);
                }
                if (a[i] == b[i])
                {
                        printf("a[%d]  = %c = b[%d] = %c ", i, a[i], i, b[i]);
                }

                if (a[i] < b[i])
                {
                        printf("a[%d]  = %c < b[%d] = %c ", i, a[i], i, b[i]);
                }
                printf("\n");
        }
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不是,大佬,我的意思是比较整个DA和SA,因为S>D所以输出DA<SA,就比如张一小张三大,但不可能说张=张,一<三。应该是输出张一<张三啊,就怎么才能比较整个的值,并且输出整个,DA<SA
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

大佬,人呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-21 08:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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