C语言之数组学习

参考翁恺的C语言程序设计视频

1.计算平均数并挑出比平均数大的数字

#include

int main()
{
	int x;
	double sum=0;
	int cnt=0;
	int number[100];          //定义数组,即定义了一个叫做number的数组变量。
	scanf("%d", &x);
	while(x!=-1)
	{
		number[cnt]=x;       //对数组中的元素进行赋值。为了搞清楚这段代码是怎么做事情的,在下边加入调试代码。
		//调试代码开始
		{              
			int i;
			printf("%d\t",cnt);
			for(i=0;i<=cnt;i++)
			{
				printf("%d\t",number[i]);
			}
			printf("\n");
		}               
		//调试代码结束
		sum+=x;
		cnt++;
		scanf("%d", &x);
	}
	if(cnt>0)
	{
		printf("%f\n", sum/cnt);
		//下面的代码是为了在算出一个平均数后,再用一个循环**遍历数组**,挑出number中比平均数大的number。
		int i;
		for(i=0; isum/cnt)
			{
				printf("%d\n",number[i]);
			}
		}
	}
	return 0;
}

输入1 2 3 4 5后,得到如下。再输入-1,得到平均数和比平均数大的数字。

sunyuhang@666:~/c$ ./1
1 2 3 4 5
0       1
1       1       2
2       1       2       3
3       1       2       3       4
4       1       2       3       4       5       //这些是调试代码生成的。
-1
3.000000
4
5

2.统计输入数字出现的次数,输入-1结束

#include
int main(void)
{
	const int number =10;       //数组的大小
	int x;
	int count[number];          //定义数组

	int i;
    
	for(i=0;i=0 && x<=9)
		{
			count[x] ++;         //数组参与运算
		}
		scanf("%d", &x);
	}
	
	for(i=0;i

输出为:

sunyuhang@666:~/c$ gcc 2.c -o 2
sunyuhang@666:~/c$ ./2
1 1 2 2 3 4 5 5 5 6 6 6 6 6 
-1
0:0
1:2
2:2
3:1
4:1
5:3
6:5
7:0
8:0
9:0

3.找出数字在数组中的位置

#include

//找出key在数组a中的位置,length表示数组的长度。如果找到,返回位置,没找到返回-1。 
int search(int key,int a[],int length);              //函数声明
int main() 
{
    int a[]={2,3,4,5,6,7,8,9,0,12,13,34,45};
    int x;
    int loc;
    printf("请输入一个数字:");
    scanf("%d", &x);
    loc=search(x,a,sizeof(a)/sizeof(a[0]));          //sizeof(a)给出整个数组所占据内容的大小,
    if (loc!=-1)                                    //sizeof(a[0])给出数组中单个元素的大小,
    {                                              //相除就得到数组中元素的个数,即得到数组的长度。
        printf("%d在第%d个位置上\n",x,loc);
    }
    else
    {
        printf("%d不存在\n",x);
    }
    return 0;
}

int search(int key,int a[],int length)                //数组作为函数参数时,往往必须再用另一个参数来传入数组的大小。
{
    int ret=-1;
    int i;

    //遍历数组去判断我们要找的那个东西是否存在。如果存在,则返回key值并break出来。
    //如果遍历完数组仍然没有找到我们想要的key,则ret返回初始值-1。
    for(i=0;i

输出为:

sunyuhang@666:~/c$ ./3
请输入一个数字:4
4在第2个位置上

4.二维数组

声明一个 x 行 y 列的二维数组,形式如下:

type arrayName [ x ][ y ];

4.1 初始化二维数组:

int a[3][4] = {  
 {0, 1, 2, 3} ,   //  初始化索引号为 0 的行
 {4, 5, 6, 7} ,   //  初始化索引号为 1 的行 
 {8, 9, 10, 11}   //  初始化索引号为 2 的行 
};

列数是必须给出的,行数可以由编译器来数;每行一个{},逗号分隔。
下面的初始化与上面是等同的:

int a[3][4] = {0,1,2,3,4,5,6,7,8,9,10,11};

实例:

#include 
 
int main ()
{
   int a[5][2] = { {0,0}, {1,2}, {2,4}, {3,6},{4,8}};            //定义一个5行2列的数组 
   int i, j;
 
   for ( i = 0; i < 5; i++ )                                    //二维数组的遍历
   {
      for ( j = 0; j < 2; j++ )
      {
         printf("a[%d][%d] = %d\n", i,j, a[i][j] );
      }
   }
   
   return 0;
}

你可能感兴趣的:(C语言之数组学习)