c语言数组教案
1. c语言 数组内数字比较大小
#include<stdio.h>
voidmain()
{
inta[10]={10,2,3,4,5,6,9,8,7,1};
inti,j,t;
for(j=0;j<10;j++)
for(i=0;i<10-1-j;i++)
if(a[i]>a[i+1])/*由小到大,由大到小时改为<*/
{
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
for(i=0;i<10;i++)
printf("%d",a[i]);
}
(1)c语言数组教案扩展阅读
C语言数组长度获取
#include<stdio.h>
#include<stdlib.h>
#defineGET_ARRAY_LEN(array,len){len=(sizeof(array)/sizeof(array[0]));}
//定义一个带参数的宏,将数组长度存储在变量len中
intmain()
{
chara[]={'1','2','3','4'};
intlen;
GET_ARRAY_LEN(a,len)
//调用预定义的宏,取得数组a的长度,并将其存储在变量len中
printf("%d ",len);
system("pause");
return0;
}
2. c语言插入数组元素(数组)
C语言中,数组是一组连续的相同类型的数据集合。 所以要在数组中插入元素,需要按照以下步骤:
1、找到插入点;
2、将插入点所在元素,及之后的所有元素,都向后移动一个单位;
3、将插入点赋值为要插入的元素。
以固定位置插入,代码举例如下:
#include<stdio.h>
voidinsert(int*a,intn,inti,intv)
//将长度为n的数组a,下标为i的位置插入值为v的元素。插入后,数组长度为n+1.
{
intj;
for(j=n-1;j>=i;j--)//将i及以后的后移一位。由于是固定位置插入,所以不需要查找插入位置。
a[j+1]=a[j];
a[i]=v;//插入元素。
}
intmain()
{
inta[5]={1,3,6,7};/五个元素数组,初始化四个值。
inti;
insert(a,4,2,5);//将5插入到a[2]位置。
for(i=0;i<5;i++)
printf("%d",a[i]);//输出结果,为13567
return0;
}
3. c语言二维数组实例
以下是几个简单的C语言二维数组实例代码
输出第n行的杨辉三角形:
#include<stdio.h>
voidmain()
{
inti,j,n; inta[100][100]={0};//定义一个二维数组。
scanf("%d",&n);
a[0][1]=1;
for(i=1;i<n;i++)
for(j=1;j<i+2;j++)
a[i][j]=a[i-1][j]+a[i-1][j-1];
for(i=0;i<n;i++)
{
for(j=1;j<i+2;j++)
printf("%d ",a[i][j]);
printf(" ");
}
}样例输入:5
样例输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
将一个n*m矩阵的行和列互换,并输出:
#include<stdio.h>
voidmain()
{
inti,j,n,m;
inta[100][100],b[100][100];
scanf("%d%d",&n,&m);
for(i=0;i<n;i++)
for(j=0;j<m;j++)
{
scanf("%d",&a[i][j]);
b[j][i]=a[i][j];
}
printf("输出原矩阵: ");
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
printf("%d ",a[i][j]);
printf(" ");
}
printf("输出互换后的矩阵: ");
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
printf("%d ",b[i][j]);
printf(" ");
}样例输入:
2 3
15 46 47
16 3 48
样例输出:
输出原矩阵:
15 46 47
16 3 48
输出互换后的矩阵:
15 16
46 3
47 48
4. c语言一维数组
#include "stdio.h"
#define N 30
void main()
{
int grades[N]; //所有人的分数
int upAverage[N]; //超过平均分的学生序号
int unPass[N]; //不及格的学生序号
int nNum = 0; //学生总人数
int nUpAve = 0; //超过平均分的人数
int totGrade = 0; //总分
int n50,n60,n70,n80,n90; //各个分数段人数
double average; //平均分
int i;
//读入成绩
while (1){
scanf("%d",&grades[nNum]);
if (grades[nNum]<0) break;
totGrade += grades[nNum];
nNum++;
}
average = totGrade*1.0/nNum;
//统计各个分数段人数
n50 = n60 = n70 = n80 = n90 = 0;
for (i=0; i if (grades[i] >= average) upAverage[nUpAve++] = i;
if (grades[i] < 60) unPass[n50++] = i;
else if (grades[i] < 70) n60++;
else if (grades[i] < 80) n70++;
else if (grades[i] < 90) n80++;
else n90++;
}
//结果输出
printf("不及格人数: %d\n",n50);
printf("不及格学生序号:");
for (i=0; i printf("\n成绩在全班平均分及平均分之上的学生人数: %d\n",nUpAve);
printf("这些学生序号:");
for (i=0; i printf("\n以直方图方式统计各分数段的学生人数及所占的百分比\n");
printf("\n分数段 \t 学生人数\t图形");
printf("\n <60 \t %2d(%.0lf%%) \t", n50, n50*100.0/nNum); for (i=0; i printf("\n 60-69 \t %2d(%.0lf%%) \t", n60, n60*100.0/nNum); for (i=0; i printf("\n 70-79 \t %2d(%.0lf%%) \t", n70, n70*100.0/nNum); for (i=0; i printf("\n 80-89 \t %2d(%.0lf%%) \t", n80, n80*100.0/nNum); for (i=0; i printf("\n >=90 \t %2d(%.0lf%%) \t", n90, n90*100.0/nNum); for (i=0; i printf("\n");
}
5. C语言中如何定义数组
数组定义的三种方式
1、第一种
int []a = newint[5];
a[0] = 10;
2、第二种
int []c = newint[]{1,2,3};
3、第三种
int []i ={1,2,3,4};
4、错误的写法
int []i1 = [1,2,3,4];
System.out.println(Arrays.toString(c));
5、总之,具体的元素不能被【】包裹。【】包裹的应该是数组的数量。
(5)c语言数组教案扩展阅读
数组的注意事项:
1、 数组中每个元素的数据类型必须相同,对于inta[4];,每个元素都必须为 int。
2、 数组长度 length最好是整数或者常量表达式,
3、 访问数组元素时,下标的取值范围为 0 ≤ index < length,
参考资料
网络-数组
6. 关于c语言中数组作为函数参数的函数之间调用问题
1、新建一个数组作为参数项目,如图所示:
7. c语言字符数组使用方法
c语言字符数组使用方法
导语:字符数组是一个存储字符的数组,而字符串是一个用双括号括起来的以'/0'结束的字符序列,下面就由我为大家介绍一下c语言字符数组使用方法,希望对大家有所帮助!
1、字符数组的定义与初始化
字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。
char str[10]={ 'I',' ','a','m',' ',‘h','a','p','p','y'};
即把10个字符分别赋给str[0]到str[9]10个元素
如果花括号中提供的字符个数大于数组长度,则按语法错误处理;若小于数组长度,则只将这些字符数组中前面那些元素,其余的元素自动定为空字符(即 '/0' )。
2、字符数组与字符串
在c语言中,将字符串作为字符数组来处理。(c++中不是)
在实际应用中人们关心的是有效字符串的长度而不是字符数组的长度,例如,定义一个字符数组长度为100,而实际有效字符只有40个,为了测定字符串的实际长度,C语言规定了一个“字符串结束标志”,以字符'/0'代表。如果有一个字符串,其中第10个字符为'/0',则此字符串的有效字符为9个。也就是说,在遇到第一个字符'/0'时,表示字符串结束,由它前面的字符组成字符串。
系统对字符串常量也自动加一个'/0'作为结束符。例如"C Program”共有9个字符,但在内存中占10个字节,最后一个字节'/0'是系统自动加上的。(通过sizeof()函数可验证)
有了结束标志'/0'后,字符数组的长度就显得不那么重要了,在程序中往往依靠检测'/0'的位置来判定字符串是否结束,而不是根据数组的`长度来决定字符串长度。当然,在定义字符数组时应估计实际字符串长度,保证数组长度始终大于字符串实际长度。(在实际字符串定义中,常常并不指定数组长度,如char str[ ])
说明:''代表ASCII码为0的字符,从ASCII码表中可以查到ASCII码为0的字符不是一个可以显示的字符,而是一个“空操作符”,即它什么也不干。用它来作为字符串结束标志不会产生附加的操作或增加有效字符,只起一个供辨别的标志。
对C语言处理字符串的方法由以上的了解后,再对字符数组初始化的方法补充一种方法――即可以用字符串常量来初始化字符数组:
char str[ ]={"I am happy"}; 可以省略花括号,如下所示
char str[ ]="I am happy";
注意:上述这种字符数组的整体赋值只能在字符数组初始化时使用,不能用于字符数组的赋值,字符数组的赋值只能对其元素一一赋值,下面的赋值方法是错误的
char str[ ];
str="I am happy";
不是用单个字符作为初值,而是用一个字符串(注意:字符串的两端是用双引号“”而不是单引号‘'括起来的)作为初值。显然,这种方法更直观方便。(注意:数组str的长度不是10,而是11,这点请务必记住,因为字符串常量"I am happy"的最后由系统自动加上一个'/0')
因此,上面的初始化与下面的初始化等价
char str[ ]={'I',' ','a','m',' ','h','a','p','p','y','/0'};
而不与下面的等价
char str[ ]={'I',' ','a','m',' ','h','a','p','p','y'};
前者的长度是11,后者的长度是10.
说明:字符数组并不要求它的最后一个字符为'/0',甚至可以不包含'/0',向下面这样写是完全合法的。
char str[5]={'C','h','i','n','a'};
++++++++
可见,用两种不同方法初始化字符数组后得到的数组长度是不同的。
#include
void main(void)
{
char c1[]={'I',' ','a','m',' ','h','a','p','p','y'};
char c2[]="I am happy";
int i1=sizeof(c1);
int i2=sizeof(c2);
printf("%d",i1);
printf("%d",i2);
}
结果:10 11
3、字符串的表示形式
在C语言中,可以用两种方法表示和存放字符串:
(1)用字符数组存放一个字符串
char str[ ]="I love China";
(2)用字符指针指向一个字符串
char* str="I love China";
对于第二种表示方法,有人认为str是一个字符串变量,以为定义时把字符串常量"I love China"直接赋给该字符串变量,这是不对的。
C语言对字符串常量是按字符数组处理的,在内存中开辟了一个字符数组用来存放字符串常量,程序在定义字符串指针变量str时只是把字符串首地址(即存放字符串的字符数组的首地址)赋给str。
两种表示方式的字符串输出都用
printf("%s",str);
%s表示输出一个字符串,给出字符指针变量名str(对于第一种表示方法,字符数组名即是字符数组的首地址,与第二种中的指针意义是一致的),则系统先输出它所指向的一个字符数据,然后自动使str自动加1,使之指向下一个字符...,如此,直到遇到字符串结束标识符 " /0 "。
4、对使用字符指针变量和字符数组两种方法表示字符串的讨论
虽然用字符数组和字符指针变量都能实现字符串的存储和运算,但它们二者之间是有区别的,不应混为一谈。
4.1、字符数组由若干个元素组成,每个元素放一个字符;而字符指针变量中存放的是地址(字符串/字符数组的首地址),绝不是将字符串放到字符指针变量中(是字符串首地址)
4.2、赋值方式:
对字符数组只能对各个元素赋值,不能用以下方法对字符数组赋值
char str[14];
str="I love China"; (但在字符数组初始化时可以,即char str[14]="I love China";)
而对字符指针变量,采用下面方法赋值:
char* a;
a="I love China";
或者是 char* a="I love China"; 都可以
4.3、对字符指针变量赋初值(初始化):
char* a="I love China";
等价于:
char* a;
a="I love China";
而对于字符数组的初始化
char str[14]="I love China";
不能等价于:
char str[14];
str="I love China"; (这种不是初始化,而是赋值,而对数组这样赋值是不对的)
4.4、如果定义了一个字符数组,那么它有确定的内存地址;而定义一个字符指针变量时,它并未指向某个确定的字符数据,并且可以多次赋值。
5、字符串处理函数
5.1
char *strcat(char *str1,const char *2 );
char *strcat(char *strDestination,const char *strSource );
功能:函数将字符串str2 连接到str1的末端,并返回指针str1
注:连接前两个字符串的后面都有一个' /0 ',连接时将字符串1后面的 ' /0 ‘去掉,只在新串最后保留一个 ' /0 ‘
5.2
char *strcpy(char *str1,const char *2 );
char *strcpy(char *strDestination,const char *strSource );
功能:复制字符串strSource中的字符到字符串strDestination,包括空值结束符。返回值为指针strDestination。
注:1、“字符数组1”必须写成数组名形式,“字符串2"可以是字符数组名,也可以是一个字符串常量
2、复制时连同字符串后面的 ' /0 ' 一起复制到数组1中
3、不能用赋值语句直接将一个字符串常量或者字符数组直接赋给一个字符数组(同普通变量数组是一样的),而只能用strcpy函数处理。
4、可以用strcpy函数将字符串2中的前若干个字符复制到字符数组1中去。
;8. 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];
(8)c语言数组教案扩展阅读:
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等。