栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

五大板块(1)—— 数组

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

五大板块(1)—— 数组

文章目录
    • 一、定义
    • 二、数组初始化
        • 1、大多情况下,数组在定义时必须确定大小
        • 2、数组的定义在下面三种情况下不需要指明大小
        • 3、不能直接给数组赋值字符串
    • 三、数组简单应用
        • 1、斐波那契数列
        • 2、冒泡排序
        • 3、选择排序

一、定义

在内存中开辟连续空间,即
相同数据类型;地址空间连续。

二、数组初始化 1、大多情况下,数组在定义时必须确定大小
#include 

int main()
{
        int num;
        int i;
        printf("需要录入的学生人数?n");
        scanf("%d",&num);
        int array[num];
        
        //int array[num];

        for(i=0;i
                printf("请输入第%d个学生的成绩n",i+1);
                scanf("%d",&array[i]);
        }

        printf("这些学生的成绩是:");

        for(i=0;i
                printf("%d ",array[i]);
        }

        return 0;
}

这样程序的执行虽无问题,但却是一个不好的习惯。

C语言变量的定义最好要放在开头,否则有时候编译器会报错的,就是要先定义完变量,再做其他事。(是的,但这通常是发生在写32,51上,Keil的C51所采用的C标准是一个较早期的标准,在程序书写上有较多的限制。)

而在gcc编译器中变量的定义却可以放在程序任何位置。

想动态赋值,可以用指针

#include 
#include 

int main()
{
        int num;
        int i;

        int *parray = NULL;//防止野指针
        printf("需要录入的学生人数?n");
        scanf("%d",&num);
      
        //      游标卡尺    开辟空间大小
        parray = (int *)malloc(sizeof(int) * num);//开辟空间 字节为单位 malloc前相当于游标卡尺
        memset(parray,0,sizeof(int) * num);//空间初始化

        for(i=0;i
                printf("请输入第%d个学生的成绩n",i+1);
                scanf("%d",parray++);
        }

        printf("这些学生的成绩是:");

        parray -= num;//指针回调,少了这个输出都是0
        for(i=0;i
                printf("%d ",*parray++);
        }

        return 0;
}

2、数组的定义在下面三种情况下不需要指明大小

①数组是形式参数
②数组声明的同时进行了初始化

int a[] = {0,1,2,3};

③数组的存储类型为extern

3、不能直接给数组赋值字符串

错误示范:

#include 

int main()
{
        char array[128] = {0};
        array = "cpcp shuai";
        printf("%sn",array);
        
        return 0;
}


提示错误:对具有数组类型的表达式赋值

error: assignment to expression with array type

用strcpy函数

#include 
#include 

int main()
{
        char array[128] = {0};
        strcpy(array,"cpcc shuai");
        printf("%sn",array);

        return 0;
}

三、数组简单应用 1、斐波那契数列

斐波那契数列是一组第一位和第二位为1,从第三位开始,后一位是前两位和的一组递增数列,

像这样的:1、1、2、3、5、8、13、21、34、55…

#include
void main(){
	int i,n;
	int f[128]={1,1};
	printf("请输入斐波那契数列的通项:");
	scanf("%d",&n);
	printf("%d,%d",f[0],f[1]);
	for(i=2;i
		f[i]=f[i-2]+f[i-1];
		printf(",%d",f[i]);
	}
}

2、冒泡排序

#include 
#include 
int main()
{
	int arry[8] = {312,2,4,6,3,65,64,13};
	int len;
	int i;
	int j;
	int tmp;
	len = sizeof(arry)/sizeof(arry[0]);
	for(i=0;i
		for(j=0;j
			if(arry[j]
				tmp = arry[j];
				arry[j] = arry[j+1];
				arry[j+1] = tmp;
			}
		}
	}
	for(i=0;i
		printf("%d ",arry[i]);
	}
	return 0;
}
3、选择排序

#include 
#include 
int main()
{
	int arry[8] = {312,2,4,6,3,65,64,13};
	int len;
	int i;
	int j;
	int tmp;
	len = sizeof(arry)/sizeof(arry[0]);
	for(i=0;i
		for(j=i+1;j
			if(arry[i]
				tmp = arry[j];
				arry[j] = arry[i];
				arry[i] = tmp;
			}
		}
	}
	for(i=0;i
		printf("%d ",arry[i]);
	}
	return 0;
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/867318.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号