本文目录一览:
- 1、c语言 数组章
- 2、c语言数组的定义
- 3、C语言 数组
- 4、c语言 c语言数组那一章太难理解了
c语言 数组章
实现功能:排序,插入数据
#include stdio.h
#include stdlib.h
int main(void)
{
int *p,i,j,n;
int figure,temp,max;
printf("请输入需要开辟的空间数组\n");
scanf("%d",n);
p=(int *)malloc(sizeof(int )*n); //开辟动态数组
printf("请随意输入%d位数的数字\n",n);
for(i=0;in;i++)
scanf("%d",p[i]);
for(i=0;in;i++) //将用户输入的数据排序
{
max=i;
for(j=i+1;jn;j++) //选择排序法
if(p[max]p[j])
{
temp=p[i];
p[i]=p[j];
p[j]=temp;
}
}
printf("排序后的数组如下\n");
for(i=0;in;i++)
printf("%d ",p[i]);
printf("\n");
p=(int *)realloc(p,sizeof(int)*(n+1)); //在原基础上再开辟1个空间,用以插入
printf("请你输入需要增加的数字\n");
scanf("%d",figure);
if(figure=p[0]) //第一种情况,将数字插入第一个数组里
{
for(i=0;in;i++) //将数据往后一位移动,以空出位置插入数据
p[n-i]=p[n-i-1];
p[0]=figure; //将数据插入
}
else
if(figure=p[n-1]) //将数组与最后一个数据比较,如果大于则插入数字
p[n]=figure; //将数字直接插入
else
{
for(i=0;in-1;i++) //次循环是为了寻找能插入的位置
if(figure=p[i]figure=p[i+1]) //为什么=显示不同结果
{
for(j=0;jn-(i+1);j++) //次循环是将插入位置,后面的数据向后移动
p[n-j]=p[n-j-1]; //将数据往后移动
break; //为了不再让i自加下去,跳出循环
}
p[n-j]=figure; //将数字插入
}
printf("插入后的数据如下\n");
for(i=0;i=n;i++)
printf("%d ",p[i]);
free(p); //释放内存
return 0;
}
c语言数组的定义
C语言支持一维数组和多维数组。如果一个数组的所有元素都不是数组,那么该数组称为一维数组。
在C语言中使用数组必须先进行定义,一维数组的定义方式为:类型说明符; 数组名 ;[常量表达式]。
其中,类型说明符是任一种基本数据类型或构造数据类型。数组名是用户定义的数组标识符,方括号中的常量表达式表示数据元素的个数,也称为数组的长度。例如:
int a[10]; /* 说明整型数组a,有10个元素 */
float b[10], c[20]; /* 说明实型数组b,有10个元素,实型数组c,有20个元素 */
char ch[20]; /* 说明字符数组ch,有20个元素 */
对于数组类型说明应注意以下几点:
1、数组的类型实际上是指数组元素的取值类型。对于同一个数组,其所有元素的数据类型都是相同的。
2、数组名的书写规则应符合标识符的书写规定。
3、数组名不能与其它变量名相同。例如:
int a;
float a[10];
是错误的。
4、方括号中常量表达式表示数组元素的个数,如a[5]表示数组a有5个元素。但是其下标从0开始计算。因此5个元素分别为a[0], a[1], a[2], a[3], a[4]。
5、不能在方括号中用变量来表示元素的个数,但是可以是符号常数或常量表达式。例如:
#define FD 5
// ...
int a[3+2],b[7+FD];
是合法的。但是下述说明方式是错误的。
int n=5;
int a[n];
6、允许在同一个类型说明中,说明多个数组和多个变量。例如:
int a,b,c,d,k1[10],k2[20];
扩展资料:
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1]目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
C语言 数组
struct Idx {
int prev;
int next;
} k[len];
memset(k, -1, sizeof(k));
int i, j;
for (i=0; ilen; i++) {
for (j=0; ji; j++) {
if (a[i][0] == a[j][1]) {
k[i].prev = j;
k[j].next = i;
}
if (a[i][1] == a[j][0]) {
k[i].next = j;
k[j].prev = i;
}
}
}
这里 len 是你数组的大小,数组a是你的数组;
再建一个同样大小的索引数组k。
经过处理后,索引数组k建立了双向链。
要统计有几条链,只要计算prev=-1或next=-1的个数。
要遍历链条,从prev=-1且next=0的开始,一直到next=-1的结束
根据你后面添加的描述,输入一个节点,假定是第x个,可以从索引表中直接确定链条
假定输入了第x个节点,
如果索引表k[x].prev=-1,表示这个节点没有前面的点,至少是个链表的开始
如果prev=0,表示这个前面还有点,跟着prev向前,可以得到它的前一个节点;
如果索引表k[x].next = -1,表示这个节点没有后面的点,至少是链表的结尾
如果next =0,表示这个后面还有点,跟着next向后,可以得到后一个节点。
c语言 c语言数组那一章太难理解了
数组其实和一般的数据类型是一样的,用法都一样,只是数组在内存中是连续的
存储结构存储了同样数据类型的一些数据,这就要求数组要有下标来指明是哪个
内存空间里的数据,(其实下标也就相当于内存地址的计算,如a[3]其实就相当
于*(a+3)这里,a是数组元素的首地址也就是第一个元素的地址,+3就是从这
个地址开始,往后数三个内存单元,当然也就是数组中第四个元素了)所以这里
就要注意数组的下标的范围了,数组长度是N的话,那么下标范围就是0到N-1;
有什么不懂的还可以问我。。。