C語言入門-數組

今天十月一日,上午看閱兵激情澎湃,可是下午仍是要繼續寫C語言,前面的這塊很簡單html

int number[100];

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

1、定義數組

  1. <類型> 變量名稱[元素數量]
  2. 元素數量必須是整數

數組特色

  1. 全部的元素具備相同的數據類型
  2. 一旦建立,就不能改變大小
  3. (數組中的元素在內存中是連續以此排序的)

2、數組例子

寫一個程序,輸入數量不肯定的[0,9]範圍內的整數,統計每一種數字出現的次數,輸入-1表示結束數組

一般用到數組都是下面的步驟:函數

#include <stdio.h>

int main(void)
{

	// 數組的大小
	const int number = 10;
	int x;
	// 定義數組
	int count[number];
	int i;

	// 初始化數組
	for (i = 0; i < number; i++)
	{
		count[i] = 0;
	}

	scanf("%d" , &x);
	while( x != -1){
		if(x >= 0 && x <= 9){
			// 數組參與運算
			count[x] ++;
		}
		scanf("%d" , &x);
	}

	// 遍歷數組輸出
	for (i = 0; i < number; i++)
	{
		printf("%d:%d\n", i , count[i]);
	}

	return 0;
}

3、數組運算

數組的集成初始化

int a[] = {2,4,6,7,1,3,5,9,11,13,23,14,32};

集成初始化時定位

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

	int i;
	for (i = 0; i < 10; ++i)
	{
		printf("%d\t", a[i]);
	}
	// 2       0       3       6       0       0       0       0       0       0
  1. 用[n]在初始化數據中給出定位
  2. 沒有定位的數據接在前面的位置後面
  3. 其餘位置的值補零
  4. 也能夠不給出數組大小,讓編譯器算
  5. 特別適合初始數據稀疏的數組

數組大小

  1. sizeof給出整個數組所佔據的內容的大小,單位是字節
sizeof(a)/sizeof(a[0]);
  1. sizeof(a[0])給出數組中單個元素的大小,因而相除就獲得了數組的單元個數
  2. 這樣的代碼,一旦修改數組中的初始的數據,不須要修改遍歷的代碼

數組的賦值

  1. 數組變量自己不能被賦值
  2. 要把一個數組的全部元素交給另外一個數組,必須採用遍歷

4、數組中查找元素

數組做爲函數參數時,每每必須再用另外一個參數來傳入數組的大小spa

數組做爲函數的參數時:調試

  1. 不能在[]中給出數組的大小
  2. 不能再利用sizeof來計算數組的元素個數
#include <stdio.h>

int main(void)
{
	int a[] = {2,4,6,7,1,3,5,9,11,13,23,14,32,};
	int x;
	int loc;
	printf("請輸入一個數字:\n");
	scanf("%d" , &x);


	loc = search(x, a, sizeof(a)/sizeof(a[0]));
	if (loc != -1)
	{
		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;
	for (i = 0; i < length; i++)
	{
		if (a[i] == key)
		{
			ret = i;
			break;
		}
	}
	return ret;
}

5、素數

判斷是否能被已知的且<x的素數整除code

#include <stdio.h>

int main(void)
{
	const int number = 10;
	int prime[10] = {2};
	int count = 1;
	int i = 3;
	while(count < number){
		if (isPrime(i,prime,count))
		{
			prime[count++] = i;
		}

		// 進行調試
		{
			printf("i=%d \tcnt=%d\t", i , count );
			int i;
			for (i = 0; i < number; i++)
			{
				printf("%d\t", prime[i]);
			}
			printf("\n");
		}
		i++;
	}

	for ( i = 0; i < number; i++)
	{
		printf("%d", prime[i]);
		if ( (i+1)%5)
		{
			printf("\t");
		}else{
			printf("\n");
		}
	}
	return 0;
}


int isPrime(int x, int knownPrimes[], int numberofKnowPrimes)
{
	int ret = 1;
	int i;
	for (i = 0; i <numberofKnowPrimes ; i++)
	{
		if ( x % knownPrimes[i] == 0)
		{
			ret = 0;
			break;
		}
	}
	return ret;
}

6、二維數組

int a[3][5]
// 一般能夠理解爲a是一個3行5列的矩陣

二維數組的遍歷

for(i = 0; i<3; i++){
    for(j = 0; j<5; j++){
        a[i][j] = i * j;
    }
}

// a[i][j]是一個int,表示第i行第j列上的單元

二維數組的初始化

int a[][5] = {
    {0,1,2,3,4,},
    {2,3,4,5,6,},
};
  1. 列數是必須給出的,行數能夠有編譯器來定
  2. 每行一個{},逗號分隔
  3. 最後的逗號能夠存在
  4. 若是省略,表示補零

原文出處:https://www.cnblogs.com/mengd/p/11615667.htmlhtm

相關文章
相關標籤/搜索