C語言-第五章、用數組實現批量數據處理

5_1  數組的概念數組

注:(1)在定義數組時,數組的元素個數(又稱數組長度)必須是肯定的,即只能是整型常量表達式。函數

         (2)完成數組的定義,引用元素時,下標從0開始計數。code

5_2  一維數組排序

2.1   一維數組的定義字符串

2.2  一維數組的使用get

1.   兩種方法初始化字符串處理

(1)在定義數組時同時初始化數組元素string

注:①能夠只部分元素初始化io

 

        ②只能給元素逐個賦值,不能總體賦值。class

(2)先定義,再初始化:採用循環結構如:

#include<stdio.h>
int main()
{
    int i,score[10];
	for (i=0;i<10;i++)
	{
	    scanf("%d",&score[i]);/*也能夠是對元素直接賦值如:score[i]=i+2;*/
	}
    return 0;
}

2.C語言中只能逐個地引用數組元素,而不能對數組進行總體引用。如:

for (i=0;i<50;i++)
printf("%d",score[i]);/*而不是printf("%d",score);*/

3.刪除數組元素

簡要分析:功能實現   ①查找定位           ②移動

#include<stdio.h>
#define  N  10
int main()
{
    int a[N]={1,2,3,4,5,6,7,8,9,10},x,i,k,flag=0;
	printf("原數組值:");
	for(i=0;i<N;i++)
		printf("%4d",a[i]);
	printf("輸入要刪除的元素值:");
	scanf("%d",&x);
	for(i=0;i<N;i++)
		if (a[i]==x)   {k=i;flag=1;break;}
		if (flag==0)  printf("不存在爲%d的元素值!\n",x);
		else 
		{
		    if (k==N-1) a[N-1]=0;
			else 
			{
				for (i=k;i<N-1;i++)
					a[i]=a[i+1];
			    a[i]=0;
			}
    printf("\n刪除元素%d後的數組值:",x);
	for(i=0;i<N;i++)   printf("%4d",a[i]);
	printf("\n");
		}
    return 0;
}

2.一維數組的排序

【5-4】輸入N個整數,將其按升序排列

①冒泡排序法:

#include<stdio.h>
#define  N  5
int main()
{
    int a[N],t,i,j;
    printf("請輸入%d個數:",N);
	for (i=0;i<N;i++)
		scanf("%d",&a[i]);
	for (i=0;i<N-1;i++)
		for (j=0;j<N-i-1;j++)
			if (a[j]>a[i])
		{
		
				t=a[j];a[j]=a[j+1];a[j+1]=t;
		}
		printf("升序排列結果以下:\n");
		for(i=0;i<N;i++)
			printf("%4d",a[i]);
		printf("\n");
    return 0;
}

 

②選擇排序法:

#include<stdio.h>
#define  N  5
int main()
{
    int a[N],t,i,j,k;
    printf("請輸入%d個數:",N);
	for (i=0;i<N;i++)
		scanf("%d",&a[i]);
	for (i=0;i<N-1;i++)
	{   k=i;
		for (j=i+1;j<N;j++)
			if (a[j]<a[k])
				k=j;
			if (k!=i)
		{
		
				t=a[k];a[k]=a[i];a[i]=t;
		}
	}
		printf("升序排列結果以下:\n"); 
		for(i=0;i<N;i++)
			printf("%4d",a[i]);
		printf("\n");
    return 0;
}

2.3.數組中遞推的應用

【5-5】利用一維數組,輸出斐波拉契數列:1,1,2,3,5,8,13,21,34,55,89……

#include<stdio.h>
#define  N  20
int main()
{
    int a[N]={1,1},i;
    for (i=2;i<N;i++)
		a[i]=a[i-1]+a[i-2];
	for(i=0;i<N;i++)
	{
	    printf("%d\t",a[i]);
		if((i+1)%5==0)
			printf("\n");
	}
    return 0;
}

5_3  二維數組

_3-1.二維組的定義

_3-2.二維數組的使用

1.二維數組的初始化

2.二維數組元素的引用

3.二維數組的應用舉例

5_4  字符數組

_4-1 字符數組的定義

_4-2 字符數組和字符串

_4-3 字符數組的初始化

 

①逐一賦值:char str[10]={C',' ','p','r','o','g','r','a','m'};

 

②字符串賦給指定的數組:char str[10]={"C progaram"}

_4-4.  字符數組的輸入輸出

1. 用格式符「%c」逐個輸入輸出數組中的字符

【例5-8】逐個輸入/輸出數組中的字符

#include<stdio.h>
#include<stdio.h>
int main()
{
    char c[10];
	int i;
   printf("請輸入10個字符:");
   for(i=0;i<10;i++)
	   scanf("%c",&c[i]);
   printf("您輸入的10個字符爲:");
   for (i=0;i<10;i++);
   printf("%c",c[i]);
   printf("\n");
    return 0;
}

2. 用格式符「%s」將整個字符串一次輸出,遇到‘\0’中止輸出(中止後不會自動換行)。

(1)【例5-9】 

#include<stdio.h>
int main()
{
    char c[]="Program";
   printf("%s\n",c);
   c[4]='\0';
   printf("%s\n",c);
    return 0;
}

注:數組下標從0開始計數,因此c[4]是第五個數即‘\0’,結束。

(2)用「%s」輸出字符時,printf 函數中的輸出項爲元素的地址如:

char c[]="Program";
printf("%s",&c[1]);   /*結果爲:rogram*/

(3)  可用scanf輸入一個字符串,系統默認以空格做爲一個串的輸出結束標誌如:

char c[20];
scanf("%s",c);
printf("%s",c);

鍵盤輸入:you are a student.

結果爲:you

注:若是要輸入的字符串中原本就有空格字符,則不能使用格式控制符「%」將整個字符串輸入。此時,一般可採用格式符「%c」逐個輸入數組中的字符或字符串處理函數gets來接收字符串。

_4-5  經常使用的字符串處理函數

頭文件stdio.h 包含:輸入、輸出、合併、修改、比較、轉換、複製、搜索等幾類。

而其餘字符串函數應包含頭文件「string.h」

1.字符串輸出函數puts

2.字符串輸入函數gets

#include<stdio.h>
int main()
{
    char str [15];
    printf("請輸入一個字符串:");
    gets (str)
    puts("您輸入的字符串以下:");
    puts (str);
    return 0;
}

 

①當輸入的字符串中含有空格時,輸出仍爲所有字符串。使用gets函數接受字符串時,只以回車做爲結束標       志。這是與scanf函數不一樣的。
②使用puts函數輸出字符串時,其參數能夠是字符數組名,也能夠是字符串常量。
③puts函數徹底能夠由printf函數取代,當須要按比較靈活的格式輸出時,一般使用printf函數。

3.字符串鏈接函數strcat

功能:把字符數組2中的字符串鏈接到字符數組1中字符串的後面,字符串1的串結束標誌'\0'自動刪去。字符數組名2能夠字符串常量。

   通常調用格式:strcat(字符數組名1,字符數組名2)如:

#include<stdio.h>
#include<string.h>
{   char str1[30]="This a";
    char str2[10]="book";
    strcat(str1,str2);
    puts(str1)
    return 0;
}

4.  字符串複製函數strcpy

 

功能:把字符數組2中的字符串複製到字符數組1中。串結束標誌'\0'也一同拷貝。"字符數組名2"能夠字符串常量。

格式:strcpy(字符數組名1,字符數組名2)

#include<stdio.h>
#include<string.h>
int main()
{
    char str1[15],str2[]="C Language";
    strcpy (str1,str2);
    puts(str1);
    return 0;
}

5.  字符串比較函數strcmp

 

功能:兩個數組(字符串)按照ASC‖碼順次比較,並由函數返回值比較結果。
字符串1=字符串2,函數返回0值;
字符串1>字符串2,函數返回>0值

字符串1<字符串2,函數返回<0值

格式:strcmp (字符數組名1,字符數組名2)

6.求字符串長度的函數strlen

功能:測出字符串的實際長度(不含字符串結束標誌‘\0’)並做爲函數返回值

格式:strlen(字符數組名)

5_5  數組的應用舉例

相關文章
相關標籤/搜索