精华内容
下载资源
问答
  • C语言数组排序

    2019-09-27 11:33:00
    有些时候要用char型的数组来储存学号、证件号,这时候的排序就不能简单的用比较大小的方式来完成了。 可以使用C语言头文件#include<string.h>的库函数: strcmp(str_1,str_2)来完成 在结构体里重载了运算符>...

    有些时候要用char型的数组来储存学号、证件号,这时候的排序就不能简单的用比较大小的方式来完成了。
    可以使用C语言头文件#include<string.h>的库函数: strcmp(str_1,str_2)来完成
    在结构体里重载了运算符>
    下面是strcmp的简单使用及冒泡排序

    typedef struct Student {
    	char id_number[11] = { '\0' };
    	char name[7] = { '\0' };
    	char m_grade[4] = { '\0' };
    	char e_grade[4] = { '\0' };
    	int operator>(Student& other) {
    		char* id_1, *id_2;
    		id_1 = id_number;
    		id_2 = other.id_number;
    		if (strcmp(id_1,id_2)>0) {
    			return 1;
    		}
    		else {
    			return 0;
    		}
    	}
    }Stu;
    
    
    void swap(Stu& other, Stu& another) {
    	Stu temp;
    	temp = other;
    	other = another;
    	another = temp;
    }
    void bubble_sort(Stu *students,int &length) {
    	int i, j;
    	if (length > 1) {
    		for (i = 0; i < length; i++) {
    			for (j = i + 1; j < length; j++) {
    				if ((students[i] > students[j]) == 1) {
    					swap(students[i], students[j]);
    				}
    			}
    		}
    	}
    }
    
    展开全文
  • C语言数组概念

    2020-10-31 09:10:31
    1)元素类型角度:数组是相同类型的变量的有序集合 测试指针变量占有内存空间大小 2)内存角度:联系的一大片内存空间 数组初始化 //数组元素的个数可以显示或隐式指定 //分析数组初始化{0}与memset比较 ...

    概念

    1)元素类型角度:数组是相同类型的变量的有序集合 测试指针变量占有内存空间大小
    2)内存角度:联系的一大片内存空间
    在这里插入图片描述

    数组初始化

    //数组元素的个数可以显示或隐式指定
    //分析数组初始化{0}与memset比较

    int main()
    {
    	int i = 0;
    	int a[10] = {1,2}; //其他初始化为0
    	int b[] = {1, 2};
    	int c[20] = {0};
     
    	for (i=0; i<10; i++)
    	{
    		printf("%d ", a[i]);
    	}
    	memset(a, 0, sizeof(a));
    	getchar();
    	return 0;	
    }
    

    数组名的技术盲点

    1)数组首元素的地址和数组地址是两个不同的概念
    2)数组名代表数组首元素的地址,它是个常量。
    解释如下:变量本质是内存空间的别名,一定义数组,就分配内存,内存就固定了。所以数组名起名以后就不能被修改了。
    3)数组首元素的地址和数组的地址值相等
    4、怎么样得到整个一维数组的地址?
    C语言规定:
    Int a[10];

    printf("得到整个数组的地址a: %d \n", &a);
    printf("数组的首元素的地址a: %d \n", a);
    

    怎么样表达int a[10]这种数据类型那?

    展开全文
  • #include #include #include int size = 0;int flag = 0;void output(int *arry){int i = 0;for(i=0; i{printf("arry[%d]=%d\t",i,arry[i]);if((i+1)%5 == 0)printf("\n");}printf("\n");}void getarry(int *arry){i...

    #include

    #include

    #include

    int size = 0;

    int flag = 0;

    void output(int *arry)

    {

    int i = 0;

    for(i=0; i

    {

    printf("arry[%d]=%d\t",i,arry[i]);

    if((i+1)%5 == 0)

    printf("\n");

    }

    printf("\n");

    }

    void getarry(int *arry)

    {

    int i = 0;

    srand(time(NULL));

    for(i=0; i

    {

    arry[i] = rand() % 100;

    }

    }

    void add(int *arry, int pos, int num)

    {

    int i = 0;

    if(pos>=0 && pos<=size)

    {

    if(pos < size)  //在中间插入

    {

    for(i=size; i>pos; i--)

    {

    arry[i] = arry[i-1];

    }

    arry[pos] = num;

    }

    else     //在最后的位置插入

    {

    arry[size] = num;

    }

    size++;

    }

    else

    printf("只能在0-%d的位置插入。\n",size);

    }

    int search(int *arry, int num)

    {

    static int pos = 0;

    if(flag)

    pos++;

    for(; pos

    {

    if(arry[pos] == num)

    {

    flag = 0;

    return pos;

    }

    }

    return -1;

    }

    void mod(int *arry, int pos, int num)

    {

    if(pos>=0 && pos

    {

    arry[pos] = num;

    }

    else

    {

    printf("输入位置错误。\n");

    }

    }

    int del(int *arry, int num)

    {

    int count = 0;

    int pos = 0;

    int i = 0;

    pos=search(arry, num);

    while(pos+1)

    {

    for(i=pos; i

    {

    arry[i] = arry[i+1];

    }

    count++;

    pos=search(arry, num);

    }

    return count;

    }

    int main()

    {

    //pos 0到size-1

    int *arry = NULL;

    int count = 0;

    int pos = 0;

    int num = 0;

    printf("输入要产生多少个随机数:");

    scanf("%d",&size);

    arry = malloc(2*size*sizeof(int));

    getarry(arry);

    output(arry);

    printf("输入要添加的位置(0-%d):",size);

    scanf("%d",&pos);

    printf("输入要添加的数字:");

    scanf("%d",&num);

    add(arry, pos, num);

    output(arry);

    printf("输入要查找的数字:");

    scanf("%d",&num);

    pos=search(arry, num);

    while(pos+1)

    {

    flag = 1;

    count++;

    printf("arry[%d]=%d\n",pos, num);

    pos=search(arry, num);

    }

    printf("共找到%d个匹配数字\n",count);

    printf("输入要修改的位置:");

    scanf("%d",&pos);

    printf("输入要修改为数字:");

    scanf("%d",&num);

    mod(arry, pos, num);

    output(arry);

    printf("输入要删除的数字:");

    scanf("%d",&num);

    del(arry, num);

    output(arry);

    free(arry);

    arry = NULL;

    return 0;

    }

    展开全文
  • 我觉得稍微麻烦一点的就是允许数组内有重复,我想了两个办法,一种是排序好再挨个比较。另外一个我写了出了,但是跑不正确,怎么弄k都等于10,代码如下,请看出bug的大神指点:int thr_bg(int s1[],int s2[]){int q,...

    我觉得稍微麻烦一点的就是允许数组内有重复,我想了两个办法,一种是排序好再挨个比较。另外一个我写了出了,但是跑不正确,怎么弄k都等于10,代码如下,请看出bug的大神指点:

    int thr_bg(int s1[],int s2[]){

    int q,w,k=0;

    for (q=0; q<10; q++) {

    for (w=0; w<10 && s1[q]!=s2[w]; w++);

    // 找出与数组1第一个相同元素的位置

    if (w<10) {

    for (; w<10; w++) {

    s2[w]=s2[w+1];

    }

    //把数组1第一个相同元素剔除,后面的元素依次向前

    k++;

    //记录与数组1第一个相同元素的个数

    }

    }

    printf("%d\n",k);

    if (k=10) { //如果有十个相同元素,就代表完全相同

    return 1;

    }

    else return 0;

    }

    int main(){

    int s1[10],s2[10],i,j;

    printf("s1:");

    for (i=0; i<10; i++) {

    scanf("%d",&s1[i]);

    }

    printf("s2:");

    for (j=0; j<10; j++) {

    scanf("%d",&s2[j]);

    }

    if (thr_bg(s1,s2))

    printf("yiyang");

    else printf("buyiyanga");

    }

    另外,还有什么其他的实现方法推荐吗?

    展开全文
  • C语言数组学习(1)

    2020-12-31 23:56:06
    数组不能整体赋值,不能对数组名赋值 ...省略下标必须全部初始化,同类型的数组不能比较大小 数组元素部分赋值时,没有赋值的元素打印的是随机数 定义一个整型数组并进行初始化: int a[4]={1,3,5,7
  • 编程小白C语言数组5

    2020-05-14 08:10:36
    定义数组大小 n 假设n=5 //可以为5,也可以是10,假设呗 假设max = a[0 ] 就是最大值,然后依次和数组后面的数就行比较,如果发现有比max更大的数,就相应变化(把更大的数赋值给max),当遍历完 整个数组之后,max就是最大...
  • C语言数组应用举例

    2015-12-29 22:49:20
    设排序是从大到小进序的,则可把欲插入的数与数组中各数逐个比较,当找到第一个比插入数小的元素i时,该元素之前即为插入位置。然后从数组最后一个元素开始到该元素为止,逐个后移一个单元。最后把插入数赋予元素i...
  • 1.一维数组 不允许动态定义数组长度,如  int n; scanf("%d",&n); ...2.在定义数组的时候要显示类型和空间大小(分配地址) ...(1).strcpy(数组,字符串) ...比较两个字符串的大小 (3). strle
  • C语言数组排序总结

    千次阅读 2010-04-22 17:11:00
    (1)“冒泡法” 冒泡法大家都较熟悉。其原理为从a[0]开始,依次将其和后面的元素...下面列出其代码:void bubble(int *a,int n) /*定义两个参数:数组首地址与数组大小*/ { int i,j,temp; for(i=0;ifor(j=i+1;jif(a[i
  • C语言数组排序小结

    2011-01-31 19:52:00
    (1)“冒泡法” 冒泡法大家都较熟悉。其原理为从a[0]开始,依次将其和后面的元素比较,...下面列出其代码: void bubble(int *a,int n) /*定义两个参数:数组首地址与数组大小*/ { int i,j,temp; for(i=0;ifo
  •  原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置。 然后比较第二、第三个……直到比较第n-1个和第n个,此时,每一次比较都将较大的一个数...
  • 如果a数组中的元素大于b数组中相应元素的数目多于b数组与中大于a数组中相应元素的数目(例如,a[i]>b[i]6次,b[i]>a[i]3次,其中i每次为不同的值),则认为a数组大于b数组,并分别统计出两个数组相应元素大于...
  • (1)"冒泡法" 冒泡法大家都较熟悉。其原理为从a[0]开始,依次将其和后面的元素比较,若a[0]>...void bubble(int *a,int n) /*定义两个参数:数组首地址与数组大小*/ { int i,j,temp; for(i=0;i<n-...
  • 指针数组是什么:顾名思义,指针在前,数组在后即数组也,只不过里面所存放的内容皆是地址而已,数组不论几维,在计算机内存中都是呈线性...给个大小比较图: 代码: int* arr[10] = { 0 };  int(*arry)[10] ...
  • c语言柔性数组

    2021-05-13 11:01:11
    放在结构体最后边 大小为0 ...比如如果是字符串数组,由\0确保字符串结束,如果是其他类型数组,访问时,再额外传一个数组大小的参数 下边文章写的比较好 https://zhuanlan.zhihu.com/p/94855692 ...
  • 目录一、在c++中:数组定义可以用变量表示大小二、在c++中:定义数组并初始化时可以忽略赋值符号 注意下面的例子都是在c11标准下,c++中支持的语法 一、在c++中:数组定义可以用变量表示大小 二、在c++中:定义数组...
  • C语言 A1—一维数组元素大小顺序排列 题目:将一维数组里面的数据从小到大按顺序排列: #include <stdio.h> #include <unistd.h>//sleep函数的头文件 int main(void) { int a[5];//定义数组 for(int i=0...
  • C语言 图解数组

    2018-10-12 21:10:31
    1.哪些问题会用到数组? 用循环结构来引用数组里的元素。 接招看题019: 在循环中用scanf函数分别给...假设排序是从大到小进行的,那么可以把想要插入的数与数组中各数进行比较,当找到第一个比插入数小的元素i时...
  • C语言数组C语言比较特殊的一种数据类型。这种数据类型由元素类型和元素个数共同决定。并且元素计数是从0开始到数字大小减去1。 数组数组名是数组的名字。在使用它的时候需要注意C语言中的规定。首先我们...
  • c语言数组长度问题

    2017-10-25 22:26:00
    c语言中定义一个数组,如何获取数组的长度有时是我们必须所用到的。引出sizeof和strlen! 1.sizeof与strlen()比较strlen计算字符数组的字符数,以"\0"为结束判断,不计算为'\0'的数组元素。sizeof计算数据(包括数组...
  • c 语言字符数组应用举例 篇一 c 语言字符数组应用举例 为了把一个数按大小插入已排好序的数组中应首先确定排序是从 大到小还是从小到大进行的设排序是从大到小进序的则可把欲 插入的数与数组中各数逐个比较当找到第...
  • c语言编程中我们这样定义数组时编译器回报一个错误 const int n=5; int ar[n]; 这确实是一个很棘手的问题,它会迫使我们用动态开辟空间的方法来定义数组,但是我们使用动态开辟的方法比较复杂,容易出现错误。...
  • 其他指针,多半用在参数传递,数据结构内部(不确定需要内存的大小,或者链表,二叉树等链式结构)的时候。还有一种是有些函数参数就是指针,这时定义一个指针,来操作传进来的指针参数比较好。指针作为参数,有一下几...
  • C语言——数组-——从小到大输出 ** #include <stdio.h> int main(void) { int arr[5] = {11,14,5,18,3}; int i,j; int length = 0;//作为数组的长度 length = sizeof(arr) / sizeof(int);//求出数组大小 //...
  • c/c++ c语言动态数组

    2018-01-25 09:07:18
    - 访问比较方便,–>数组名字 index,[0,N],所有的元素都是挨个排在一起,方便整体的管理和维护 - 数组的缺点 大小不可改变; 不宜定义过大,栈上内存空间大小有限,全局变量不可释放; 动态数组 ...
  • c语言实现数组的排序

    2016-12-21 14:45:00
    选择排序实际上是从0到length-1,选择某个元素与其他的元素进行大小比较,如果大于就交换,其他情况不做操作,如图: 冒泡排序实际上是先选择某个元素,然后从最后一个元素依次往前比较(不超过选择的元素),...
  • c语言数组的动态赋值法

    千次阅读 2019-01-12 19:22:34
    动态赋值法在c语言程序中有着很大的作用,比如输入几个数比较他们的大小,也可以与冒泡排序法相结合,从而使程序易于编译执行 #include &lt;stdio.h&gt;//动态赋值法,输入10个数,比较他们的大小 #include...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 592
精华内容 236
关键字:

c语言数组比较大小

c语言 订阅