1. 程式人生 > >張傳霖的程式設計筆記 第三篇 12月23日

張傳霖的程式設計筆記 第三篇 12月23日

第一部分 知識概括
1、陣列是一組具有相同型別的變數的集合,按順序排列。
2、構成陣列的每個資料項稱為陣列元素或下標變數。
3、元素型別int score[5];從0算起,5個元素
4、字串實際就是由若干有效字元構成且以字元’/0’作為結束的一個字元序列。字元陣列:一維:一個字串
5、使用字串處理函式gets(),可以輸入帶空格的字串。puts()來輸出字串。
6、常用的字串處理函式:
strcat(字串名1,字串名2):將字串2連線到字串1後邊,返回字串1的值
strncat(字串名1,字串名2,長度n):將字串2前n個字元連線到字串1後邊,返回字串1的值。
strcpy(字串名1,字串名2):將字串2複製到字串1後邊,返回字串1的值。
strncpy(字串名1,字串名2,長度n):將字串2前n個字元複製到字串1後邊,返回字串1的值。
strcmp(字串名1,字串名2):比較字串1和字串2的大小,比較的結果由函式帶回;
如果字串1>字串2,返回一個正整數;
如果字串1=字串2,返回0;
如果字串1<字串2,返回一個負整數;
strncmp(字串名1,字串名2,長度n):比較字串1和字串2的前n個字元進行比較,函式返回值的情況同strcmp函式;
strlen(字串名):計算字串的長度,終止符’\0’不算在長度之內
strlwr(字串名):將字串中大寫字母換成小寫字母
strupr(字串名):將字串中小寫字母換成大寫字母
7、順序查詢、折半查詢
第二部分 例子
1、程式設計實現顯示使用者輸入的月份(不包括閏年的月份)擁有的天數:
#include<stdio.h>
#define MONTHS 12 保證輸入資料合法的方法
int main()
{
int days[MONTHS]={31,28,31,30,31,30,31,31,31,30,31,30,31};
int month;
do{
printf(“Input a month:”);
scanf("%d",&month);
}while(month<1||month>12); 容錯方式
printf(“The number of days is %d\n”,days[month-1];
return 0;
}
2、sort函式用法:
#include
#include
using namespace std;
int main()
{
int a[10]={9,6,3,8,5,2,7,4,1,0};
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
sort(a,a+10);
for(int i=0;i<10;i++)
cout<<a[i]<<endl;
return 0;
}
第三部分 過程、感受
1、資料型別 陣列名(常量)[整數1][整數2]…[整數n]
int a[5]直接對a的訪問,就是訪問此陣列的首地址。
int a[n]錯誤:n不能為變數。一旦定義,不能改變大小。
下標越界是大忌
2、while(cin>>x)x有效 輸入;x無效 不輸入
memset 只能是0或-1
3、二維陣列<陣列名>[下標1][下標2]
int a[4][10]整型數 陣列元素型別一定要一致
陣列要定義成全域性陣列,不要在函式內定義陣列。
行列來控制型別,注意換行。
4、sort函式用法:#include
using namespace std;預設的sort函式是按升序排
sort(a,a+n);//兩個引數分別為待排序陣列的首地址和尾地址
[a,a+n]
bool complare(int a,int b)
return a>b; true 原來排序正確;false 原來排序錯誤
sort(a,a+10,complare);
5、char chr[5]=“abcd” 字元陣列儲存字串,字串可以修改
6、字串輸入scanf("%s",字元陣列名) 輸入多個字串時,以空格分隔。
7、感想:C語言中沒有用於表示字串的關鍵字以陣列形式將字串輸出
字串和字元陣列的區別和聯絡:
C語言中沒有一個用於表示字串的關鍵字
c語言的字串由C的字元陣列變形而成,末尾加上’\0’
字串比字元陣列多一個’\0’
聯絡:
都是一陣列形式儲存資料,字元之間地址連續,可以用下標來訪問,同樣的資料如果以字元陣列和字串儲存大小有區別,字串比字元陣列大一個’\0’。通過本次課,對於函式的定義和宣告,陣列以及字串有了進一步的認識,掌握了字元陣列和字串函式的使用,以及與陣列有關的常用演算法,由此我學會了如何去理清自己的思路來設計程式。