版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第六章數(shù)組
CProgrammingLanguage
數(shù)據(jù)對象的組合:數(shù)組
數(shù)組(array)是多個同類型數(shù)據(jù)
對象的組合。構(gòu)造數(shù)據(jù)類型之一
一個數(shù)組匯集了多個數(shù)據(jù)——數(shù)
組元素。可從數(shù)組出發(fā)處理各元
素,或以統(tǒng)一方式處理一批元素
(所有元素)。
2
數(shù)組機制要解決:
1)數(shù)組描述,數(shù)組變量定義;
2)數(shù)組使用,包括通過數(shù)組的下
標(biāo)變量使用其元素;
3)數(shù)組實現(xiàn),數(shù)組的存儲方式。
■數(shù)組元素
元素:屬同一數(shù)據(jù)類型,用數(shù)組名和下標(biāo)確定
,在C語言中可以有單下標(biāo)數(shù)組元素、
雙下標(biāo)數(shù)組元素和多下標(biāo)數(shù)組元素O
,、下標(biāo)要用方括號括起來,下標(biāo)可以
是常量、變量和表達式,計算機自
動取整。
如:a[5]>b[2][3]>abc1[1][5][7]等。
4
一、一維數(shù)組的定義
只有一個下標(biāo)的數(shù)組。
類型定義符數(shù)組名[元素個數(shù)];
a▲
數(shù)組名表示內(nèi)編譯時分配連續(xù)內(nèi)存
存首地址,是內(nèi)存字節(jié)數(shù)=
地址常量數(shù)組元素個數(shù)*
sizeof(元素數(shù)據(jù)類型)
6
說明:
例:試判斷下列數(shù)組定義是否合法:
#defineSTU35
floatno_student[STU];
intscore_student[STU*3];
intperson(10);
intn=10,a[n];
式)。
6、每個元素都可作為一個變量來使用;
如:a[0]=5;a[1]=4;
7
二、一維數(shù)組的引用
數(shù)組必須先定義,后使用
只能逐個引用數(shù)組元素,不能一次引用整個數(shù)組
例inta[10];
printf("%d,,,a);(x)
必須for(j=0;j<10;j++)
如:
a[0]=a[5]+a[7]-a[2*3]〃常量和表達式做下標(biāo)7
a[i]=a[i]+1;〃變量做下標(biāo)*/
a[a[0]]=>a[1]/*數(shù)組元素做下標(biāo)*/
8
r列]從鍵盤輸15個整數(shù),然后反序輸出。
main()
{inti,a[15];
for(i=0;i<15;i++)
scanf(u%d55,&a[i]);
for(i=14;i>=0;i-)
printf("%4d5,,a[i]);
}
輸入:123456789101112131415J
輸出:151413121110987654321
注意:1、循環(huán)控制變量的初值、終值及控制條件。
2、不能整體輸出數(shù)組
例:printf("%d”,a);是錯誤的。
9
三、一維數(shù)組的存儲結(jié)構(gòu)
數(shù)組在內(nèi)存中分配一片連續(xù)的存儲單元,
數(shù)組元素按數(shù)組下標(biāo)從小到大連續(xù)存放。
例inta[5];
a[0]
a[l]
a[2]
a[3]
a[4]
內(nèi)存
a相當(dāng)于5個變量,a[0]?a[4]可看作變量名。
10
,四、一維數(shù)組的初始化
?初始化方式
在定義數(shù)組時,為數(shù)組元素賦初值
(在編譯階段使之得到初值)
inta[5]={1,2,3,4,5};
等價于:a[0]=1;a[1]=2;a[2]=3;a[3]=4;a[4]=5;
?:?說明:
?數(shù)組不初始化,其元素值為隨機數(shù)
?對static數(shù)組元素不賦初值,系統(tǒng)會自動賦以。值
staticinta[5];
如inta[51=,6.2.3£
inta[]={1,234,5,6};
編譯系統(tǒng)根據(jù)初值個數(shù)確定數(shù)組維數(shù)
[例]
#include<stdio.h>
main()
{inti,a[5]={3,4,5},b[5];
printf(u\narrayais:55);
for(i=0;i<5;i++)printf(u%6d5,,a[i]);
printf(u\narraybis:55);
for(i=0;i<5;i++)printf(u%d,",b[i]);
}(initary.c)
運行結(jié)果:
arrayais:34500
arraybis:-32,1398,40,1170,454,/*隨機數(shù)7
12
Tip:
操作數(shù)組的多個或全部元素的常用編程方式是用
for語句和一個循環(huán)變量,令變量遍歷數(shù)組全部下標(biāo):
for(n=0;n<數(shù)組長度;n++)...
?問題:假設(shè)程序里寫:
inta[30];...
for(n=2;n<=30;n++)...
循環(huán)中試圖訪問a[30],實際無此元素。
用超數(shù)組范圍下標(biāo)值訪問元素:越界訪問。
是數(shù)組使用中最常見的語義錯誤。
13
用輸入函數(shù)從鍵盤或數(shù)據(jù)文件中讀取數(shù)據(jù)
到數(shù)組元素賦初值
、[例]給數(shù)組a賦值。
main()
{inti,a[10];
for(i=0;i<=9;i++)
scanf("%d'\&a[i]);
}
14
用賦值語句給數(shù)組元素賦初值
[例]
main()
{intarr[10]J,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=0;i<4;i++)
k+=arr[i]+i;
printf("%d\n'\k);
(initarray.c)}
15
程序舉例
[例]
main()
{intk,t=1,a[3]={1,2,3};
for(k=0;k<3;k++)
a[k]+=a[k]-t;
for(k=0;k<3;k++)
printf(u%4d,,,a[k]);
}
16
程序舉例
[例]
main()
{inta[『{2,345,678,9};
inti,r=1,n=3;
for(i=0;i<=n;i++)
r=r*a[i];
printf(<t%d\n,,,r);
}
17(Rating_counter.c)
程序舉例
m定義長度為10的整型類型一維數(shù)組,從鍵
盤輸入10個整數(shù),分別存放在10個數(shù)組元素中,
然后將數(shù)組中的元素按逆序存放后輸出其值。
0123456789Q9876543210
分析:
1.a[0]與a[9]交換,
交換a[8],依此類推。
錯誤的寫法a[0]=a[9];a[9]=a[0];
2.如何控制循環(huán),只需循環(huán)到一半
k=(n-1)/2;
for(i=0,j=n-1;i<=k;i++,j--)
{t=a[i];a[i]=a[j];a[j]=t}
還可以寫成for(i=0J=n-1;i<j;i++,j-)
18
程序舉例
main()
for(i=0;i<10;i++)
scanf「%cr,&a[i]);
for(i=0;i<10;i++)
printf(,i%4d,,,a[i]);
printf(,,\n,');
for(i=0J=9;i<j;i++,j-)
{t=a[i];a[i]=a[j];a[j]=t;}
for(i=0;i<10;i++)
printf(ii%4dii,a[i]);
printf(,i\n,,);
)
19
程序舉例
#include<stdio.h>
[例]
main()
{inta[10],i,max,min;
printf("Enter10integers:\n");
for(i=0;i<10;i++)
{printf("%d:",i+1);
scanf("%d",&a[i]);
}
max=min=a[0];
for(i=1;i<10;i++)
{if(max<a[i])max=a[i];
if(min>a[i])min=a[i];
)
printf("Maximumvalueis%d\n",max);
printf("Minimumvalueis%d\n",min);
}
20
程序舉例
—I例]將數(shù)組中數(shù)值最小的元素排在第一位
main()
輸入10個數(shù)給a[0]到a[9]
{inti,t,a[10];
fori=1to9
for(i=0;i<10;i++)
',,i
scanf(%dJa[i]);
printf”rT);a[i]=a[0]
for(i=1;i<10;i++)
輸出a[0]到a[9]
if(a[i]<a[0])
{t=a[0];a[0]=a[i];a[i]=t;}
for(i=0;i<10;i++)
,,,i
printf(%4dJa[i]);
21printfC'yn");)
程序舉例
Fl]從鍵盤上輸入10個整數(shù),用選擇法將其按由
小到大的順序排列并輸出。
基本思想:
(1)從第0個位置到第9個位置中選擇出最小的一
個與第。個位置的數(shù)交換。
(2)從第1個位置到第9個位置中選擇出最小的一
個與第1個位置的數(shù)交換。
■■■
(9)從第8個位置到第9個位置中選擇出最小的一
個與第8個位置的數(shù)交換。
例:513393222812321排
序過程如下:
22
程序舉例
①
②一
③
④
⑤
?
01@
⑼
23
程序舉例
UiWlude<stdio.h>
main()
for(i=0;i<=9;i++)scanf("%d”,&a[i]);
for(i=0;i<=8;i+±)
for(j=i+1;j<=9;j++)
內(nèi)循環(huán):外循環(huán):
if(a[i]>aU])在(i,9)控制選擇
內(nèi)選擇最的次數(shù)
{t=a[i];a[i]=a[j];aD]=t;小數(shù)
for(i=0;i<=9;i++)
printf(u%6d,5,a[i]);
)
24
程序舉例
r|
從程序可知:
1、程序使用兩重循環(huán)來實現(xiàn)排序。
2、其中,外循環(huán)控制排序趟數(shù)。若數(shù)組有N個元素,
則共進行N?1趟排序。第一趟,i=0;第二趟,i
=1,■■■
3、其中,內(nèi)循環(huán)完成在[i,9]的區(qū)間內(nèi)選擇最小
數(shù)。比較次數(shù)隨趟數(shù)i的增大而減少。
4、在每一趟選擇中,當(dāng)后面元素較小時,馬上進行
交換。而這種交換是不必要的。事實上,只要記
住較小元素的位置,即下標(biāo),在內(nèi)循結(jié)束后做一
次交換即可,這樣可大大節(jié)省程序運行時間。
改進程序如下:
25
#include<stdio.h>
main()
(intiJ,k,t,a[10];
for(i=0;i<10;i++)scanf(u%dJ\&a[i]);
for(i=0;i<9;i++)、
{k=i;
forO=i+1;j<10;j++)l內(nèi)循環(huán),外循環(huán)
if(a[k]>aU])k=j;
if(k!=i){t=a[i];a[i]=a[k];a[k]=t;}J
}
for(i=0;ivl0;i++)printf(“%6d*a[i]);}
26
、小經(jīng)驗
■當(dāng)處理的數(shù)據(jù)很多,又希望用循環(huán)來控制
時,使用數(shù)組
■當(dāng)運算的中間結(jié)果需要保存時,使用數(shù)組
■一維數(shù)組典型用法
?排序
?查找
?插入
?刪除
?分類統(tǒng)計而
27下
一、二維數(shù)組的定義
類型定義符數(shù)組名[行數(shù)][列笠];
二維數(shù)組可看作一個二維表點由行、列組成。
例:inta[3][2];
元素個數(shù)=行數(shù)*列數(shù)
floatb[5][3];
數(shù)組元素的存放順序
?原因吶存是一維的0a[0][0]
?二維數(shù)組:按行序優(yōu)先1a[0][1]
?多維數(shù)組:最右下標(biāo)變化2a[1][0]
ra[O][O]a[0][1]i]a[1][1]
a[1][0]a[1][1]:a[2][0]
la[2][0]a[2][1]Ja[2][1]
,二維數(shù)組理解
二維數(shù)組a是由3個元素組成
例inta[3][4]:
a[0]a[0][0]a[0][1]a[0][2]a[0時
a[1]a[1][0]a[1][1]a[1][2]a[1][3
a[2]a[2][0]a[2][1]a[2][2]芷同
行/r
每個元素a[i]由包含4個
元素的一維數(shù)組組成
29
二、數(shù)組元素的引用
數(shù)組名[下標(biāo)][下標(biāo)]
注意:二維數(shù)組的行號、列號也是從0開始的。
floata[4][4]
a[0][0]a[0][1]a[0][2]a[0][3]
a[1][0]a[1][1]a[1][2]a[1][3]
a[2][0]a[2][1]a[2][2]a[2][3].
a[3][0]a[3][1]a[3][2]a[3][3]
30
輸入輸出:二層循環(huán)
for(i=0;i<4;i++)
for(j=0;j<4;j++)
scanf(“%d”,&a[i]U]);
(或用賦值語句a[i][j]=...;)
for(i=0;i<4;i++)
軍前出
{forQ=0;j<4;j++)
uM
printf(%4d5a[i][j]);
printf(u\n,J);
)
31
F武值操作:for(i=0;i<4;i++)_______
forQ=0;j<4;j++)
if(i<=j)a[i]U]=1+j-i;
elsea[i][j]=10;
■
1
234上三角:ivj
1023對角線:i==j
10102下三角:i>j
101010
32
鵬從鍵盤上輸入9個整數(shù),保存在二維數(shù)組中,按
藪索原來位置輸出第一行和第一列的所有元素。
1_2_3^^第0行
2
45_6_^^第1行
456
7_8_9第2行
III8
第第第
012
列列列
分析:
1、輸入數(shù)組。
2、輸出數(shù)組要考慮不是所有數(shù)據(jù)都輸出。
思考:應(yīng)該輸出的數(shù)據(jù)在位置關(guān)系上有何特點?(去
33
in()
ij,a[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d,J,&a[i][j]);
for(i=0;i<3;i++)
{forO=0;j<3;j++)
if(i==1||j==1)printf("%3d,5,a[i][j]);
輸
elseprintf(u出
printf(u\n,J);
)
)
34
三、二維數(shù)組的初始化
?分行初始化:
?按元素排列順序初始化
a[0][0]a[0][1]a[0][2]a[1][0]a[1][1]a[1][2]
35
程序舉例
[例]
main()
{intij,max,a[2][4]={1,3,5,7,9,2,4,6);
max=a[O][O];
for(i=0;i<2;i++)
for(j=0;j<4;j++)
if(a[i][j]>max)
max=a[i][j];
printf("%d\n”,max);
)
36
程序舉例
[例]打印楊輝三角的前10行。
main()
1{inti,ja[10][10];
11for(i=0;i<10;i++)
{a[i][i]=1;a[i][0]=1;}
121for(i=2;i<10;i++)
1331for(j=1;j<=i-1;j++)
14641a[i]U]=a[i-1][j]+a[i-1][j-1];
for(i=0;i<10;i++)
15101051{for(j=0;j<=i;j++)
printf("\rT);}
)
37
[例Ef維數(shù)組a[3][4]中#include<stdio.h>
最大元素值及其行列號。main()
{inta[3][4]={{1,2,3,4},
(9,8,7,6),
max=a[O][O]{-10,10,-5,2)};
inti,j,row=0,colum=0,max;
fori=0to2
max=a[0][0];
forj=0to3for(i=0;i<=2;i++)
for(j=0;j<=3;j++)
if(a[i][j]>max)
max=a[i][j]{max=a[i][j];
row=irow=i;
colum=jcolum=j;
)
輸出:max和row,colum
printf("max=%d,row=%d,\
colum=%d\n",max,row,colum);
38}
程序舉例
卜表中值到數(shù)組,分別求各行、各列
及表甲所有數(shù)之和。
#include<stdio.h>
main()
1246{intx[5][4],i,j;
823334for(i=0;i<4;i++)
157931for0=O;j<3;j++)
scanf("%d-,&x[i]D]);
251724forG=0;j<3;j++)
373935111x[4]U]=0;
for(i=0;i<5;i++)
x[i][3]=0;
for(i=0;i<5;i++)for(i=0;i<4;i++)
{forQ=0;j<4;j++)forQ=0;j<3;j++)
printf("%5d\t",x[i]D]);{x[i][3]+=x[i]U];
printf("\n");x[4]U]+=x[i]U];
)x[4][3]+=x[i]D];
39}}
程序舉例
tH]求矩陣的轉(zhuǎn)置矩陣。
23147
456258
789369
什么是轉(zhuǎn)置矩陣:
從上可知,
方法1:轉(zhuǎn)置矩陣是;矩陣元素按行列互換形成的。
147
4258
78369
方法2:沿主對角線
將對稱位置互換元素即可。這時可將轉(zhuǎn)置矩陣放在原數(shù)
組中。
40
程序舉例
方法1之程序:
#include<stdio.h>
main()
{intij;
inta[3H3]={1,2,3,4,5,6,7,8,9},b[3][3];
for(i=0;i<3;i++)
for0=O;j<3;j++)b[i]U]=aU][i];
for(i=0;i<3;i++)
{forQ=0;j<3;j++)
printf(u%6d,5,b[i][j]);
printf("\rT);
)
)
41
程序舉例
方法2之程序:
#include<stdio.h>
main()
{intij;
inta[3][3]={1,2,3,4,5,67,8,9};
for(i=0;i<3;i++)
forQ=i;j<3;j++)
{temp=a[i][j];
a[i]U]=aU][i];
a[j][i]=temp;}
for(i=0;i<3;i++)
{forQ=0;j<3;j++)
printf(u%6d,5,b[i][j]);
printf("\rT);
)
42)
、基本概念
尋字符數(shù)組:元素類型為字符類型的數(shù)組。
B字符串和字符串結(jié)束標(biāo)志:
-在c語言中將字符串作為字符數(shù)組來處理。
一有效長度以''0'為結(jié)束標(biāo)志。
-以字符串形式給數(shù)組賦值時,末尾自動加
'\0\
一系統(tǒng)在對字符數(shù)組操作時,如輸出時,自動
判斷(\Q\
43
二、字符數(shù)組的初始化
二維字符數(shù)組初始化
例charfruit[][7]={uApple,J,^Orange55,
“Grape?!癙ear”,"Peach"};
fruit[O]APPIe\0\0
fruit[1]0range\0
fruit[2]GraPe\0\0
fruit[3]Pear\0\0\0
fruit[4]Peach\0\0
44
三、字符串的輸入輸出
逐個輸入輸出:用格式符“%C”輸入或輸出一個字符。
整串輸入輸出:用格式符“%s”。
,用字符數(shù)組名,不要加&
例用%c,輸入串長度〈數(shù)組維數(shù)
例用%5,遇空格或回車結(jié)束
,自動加(
main()\r
{charstr[5];
scanf("%s”,str);
printf("%s'\sir);
},
pnntt5%c,struj);
用字符數(shù)組名,
}遇’\0’結(jié)束
45
例main()
{chara[5]={'H「e',T,\
01234
TJ。'};
printf(“%s”,a);
)
結(jié)果:Hello#-=*
例main()012345
{chara[]=uHello,J;heIIo\0
printf(“%s”,a);
)
結(jié)果:Hello
46
main()
,,,,1,,,,,,,,,
chara[]={h,e,l,\0,l,oJ\0};
printf("%s”,a);
)
47
運行情況:
(1)若輸入hel,正常
(2)若輸入hell,正常
(3)若輸入hell。,用%5輸出時,可能會出現(xiàn)問題
48
#include<stdio.h>運行情況:
輸入:Howareyou?
main()
輸出:a=How
{chara[15],b[5],c[5];b=are
scanf(',%s%s%s,,,a,b,c);c=you?
printf(,,a=%s\nb=%s\nc=%s\n,,,abc);
JJ輸入:Howareyou?
scanf(,,%s",a);輸出:a=How
printf(,,a=%s\n,,,a);
)
I、字符串處理函數(shù)
庫函數(shù)原型在stdio.h和string.h中
//、____?A~A~r+i4-AI]]坐J
例#include<stdio.h>
main()
{charstring[80];
printf(ulnputastring:");
gets(string);
puts(string);
)
輸入:Howareyou?
輸出:Howareyou?
50
)字符串拷貝函數(shù):strcpyQ
?調(diào)用格式:strcpy(str1,str2);
?功能:將字符串str2復(fù)制到字符數(shù)組str1中。
?返回值:返回字符數(shù)組1的首地址
?說明:
①str1的長度應(yīng)不小于str2的長度。
②str1一般寫成數(shù)組名形式。
③str2可是字符串常量或字符數(shù)組名形式。
例:chars1[10],s2[8]=ustudent,5;
strcpy(s1,s2);或strcpy(s1,^studenf5);
④不能使用賦值語句為一個字符數(shù)組賦值
例:s1=s2:1
[例]
#include<string.h>
main()
{charc[7]="abcdef\s[4]="ABC”;
strcpy(c,s);
printf("%s\rT,c);
printf(,,%c\n,i,c[5]);
}
運行結(jié)果是:ABC
52
[例]
#include<string.h>
main()
{charc[30]=,,Howdoyoudo";
strcpy(c+6,,iesshe");
',,,
printf(%s\n5c);
)
運行結(jié)果是:Howdoesshe
53
&聲符串連接函數(shù)strcat。
用格式:strcat(str1,str2);
?功能:將str2連同連接到str1的最后一個字
符(非、(T字符)后面。結(jié)果放在str1中。
?返回值:返回字符數(shù)組1的首地址
例:chars1[14]=ulama,J;
chars2[5]=uboyJ5;
strcat(s1,s2);
連接前:
連接后:
54
字符串比較函數(shù)strcmp。
調(diào)用格式:strcmp(str1,str2);
功能:若str1=str2,則函數(shù)返回值為0;
若str1>str2,則函數(shù)返回值為正整數(shù);
若str1vstr2,則函數(shù)值返回為負整數(shù)。
比較規(guī)則:
①兩個字符串自左至右逐個字符比較,直到出現(xiàn)不
同字符或遇到為止。
②字符全部相同,則兩個字符相等;
③如若出現(xiàn)不同字符,則遇到的第一對不同字符的
ASCH大者為大。
:if(strcmp(str1,str2)==0){...};
而if(str1==str2){...};是錯誤的。
55
[例]
#include<string.h>
main()
{charc[7]="abcdeF',s[4]="abc";
inta;
a=strcmp(c,s);
printf("%d\rT,a);
)
運行結(jié)果是:100
56
[例]
#include<string.h>
main()
(
",,,',,i
charc[7]=abcdefJs[4]=acb;
inta;
a=strcmp(c,s);
printf("%d\rT,a);
)
運行結(jié)果是:」
57
(6)字符長度函數(shù)strlen。
?調(diào)用格式:strlen(字符串);
?功能:求字符串的實際長度即所含
字符個數(shù)(不包括‘\0’)。
?返回值:返回字符串實際長度,不
包括在內(nèi)
例:charstr[1O]=ustudenf,;
intlength;
length=strlen(str);(=7)
strlen(uvery\Ogood,J);(=4)
chars[]=u\t\v\\\0will\n,5;(=3)
chars[]="\x69\082\n,J;(=1)
58
(7)strupr(字符串)
功能:將字符串中的小寫字母轉(zhuǎn)
換成大寫字母
(8)strlwr(字符串)
功能:將字符串中的大寫字母
轉(zhuǎn)換成小寫字母
程序舉例
#ine<string.h>
#incl<stdio,h>
main()
,,,=",
{charstr1[]='Hello!Jstr2[]Howareyou?"5str[20];
intIen1Jen2Jen3;
Ien1=strlen(str1);Ien2=strlen(str2);
if(strcmp(str1,str2)>0)
{strcpy(str,str1);strcat(str,str2);}
elseif(strcmp(str1,str2)<0)
{strcpy(str,str2);strcat(str,str1);}
elsestrcpy(str,str1);
Howareyou?Hello!
Ien3=strlen(str);
Len1=6,Len2=12,Len3=18
puts(str);
',,,
printf(Len1=%dJLen2=%dJLen3=%d\nJ
Ien1,len2,len3);
Jo
程序舉例
閱讀程序,寫出其運行結(jié)果。
#include“string.h"
main()
{chart,a[20];
inti,s;
scanf(“%s”,a);
s=strlen(a);
printf(u%s5,,a);
t=a[O];
for(i=1;i<s;i++)
t=t>a[i]?t:a[i];
printf(u\n%c,\t);
)
61
程序舉例
[礴、三個字符串,找出其中最大者
#include<stdio.h>
#include<string.h>
main()
{charstring[20],str[3][20];
inti;
for(i=0;i<3;i++)gets(str[i]);
if(strcmp(str[0],str[1])>0)strcpy(string,str[O]);
elsestrcpy(string,str[1]);
if(strcmp(str[2],string)>0)strcpy(string,str[2]);
printf(M\nThelargeststringis:\n%s\n",string);
)
程序舉例
[例輸入一行字符,統(tǒng)計其中有多少個單詞。
是
未出現(xiàn)新單詞,使word=0,num不累加
當(dāng)
刖一前一字符為空格(word==0),
字-
新單詞出現(xiàn),word=1,num++
符
否前一字符非空格(word==1),
未出現(xiàn)新單詞,num不變
當(dāng)前字符IamabOy■
是否空格否是否否是否是否否否否
word原值01011010111
未I
新單詞開始否是未是未未是未是未未
word新值10110101111
63num值11222334444
輸入一字符串給string#include<stdio.h>
main()
i=0num=Oword=0
{charstring[81];
((c=string[i])!=t\O?)
inti,num=0,word=0;
空格
真假charc;
gets(string);
真word
Xfor(i=0;(c=string[i])!=>\0,;i++)
word=0word=1
if(c==,')word=0;
num++
elseif(word==0)
i=i+1{word=1;num++;}
輸出:numprintf("Thereare%dwords\
intheline\n",num);
}
64
程序舉例
一氣,[例1]輸出一個鉆石圖形。
#include<stdio.h>
main()
{char
diamond[][5]={C;:*'},{''二
,*,,,,,,,,*,、rt,,*,,,ftJtJ,*,]、?
{,,,,\,,,J51,JJJJ
圖形:intiJ;
*for(i=0;i<5;i++)
**{
**forQ=0;j<5;j++)
',,,
**printf(%cJdiamond[i][j]);
**printfCNn");
*}
}
66
程序舉例
[例*將若干姓名由鍵盤輸入給字符型數(shù)組stjarra;
璃入’0”時,結(jié)束輸入,然后輸出數(shù)組的丙容。
#include<stdio.h>
main()
{charstr_array[100][80];
inti,j;
for(i=0;i<100;i++)
{printf(M%d:",i);
gets(str_array[i]);
if(str_array[i][0]==,0,)break;
}"
for0=O;j<i;j++)
printf(,istr_array[%d]=%s\n,i,j,str_array[j]);
}H
程序舉例
mairSf)[例3]帶統(tǒng)計功能的打字練習(xí)程序。
{intc,in_word='N,;
intchar_count=0;
intword_count=0;
intline_count=0;
while((c=getch())!=ESC)
{char_count++;/*統(tǒng)計鍵入的字符個數(shù)7
if(in_word=='N,&&isalpha(c))/*由單詞外進入
單詞中7一
in_word='Y';
word_count++;/*統(tǒng)計鍵入的單詞個數(shù)7
}I
6o
程序舉例
elsWf(in_word=='Y,&&!isalpha(c))/*退出單詞7
in_word='N';
if(c==,\r')
(
putcharOn');
line_count++;/*統(tǒng)計鍵入的行數(shù)*/
}"
putchar(c);
)
printf("\nNumberofcharactersis
%d\nM,char_count);
printf("Numberofwordsis%4d\n"Jword_count);
printff'Numberoflinesis%4d\n,,,line_count);
}"
69
程序舉例
[例布%入100個0?50的整數(shù),統(tǒng)計每個數(shù)出現(xiàn)的次
數(shù)。
分析:
①需要51個變量用于統(tǒng)計intcount[51]o
②讀一個字符,在相應(yīng)的變量上加1。
11on=0count[0]++
on=1count[1]++count[n]+
on=50count[50]++
o
nn
n[0]■■■
程序舉例
③如果用if語句,需要判斷多少次?
if(n==0)count[0]++;
if(n==1)count[1]++;
④用switch(n)
case0:count[0]++;
case1:count[1]++;...
⑤讀入的數(shù)字就是累加變量的下標(biāo)索引
count[k]++;
⑥循環(huán)多少次?100次
程序舉例
main()
{intcount[51];
inti,n;
for(i=0;i<=50;i++)
count[i]=0;
for(i=0;i<100;i++)
{scanf(u%dJ\&n);
count[n]++;4r^^計算相應(yīng)數(shù)字個數(shù)
的計數(shù)元素值加1
)
for(i=0;i<=50;i++)
printf(“%d*count[i]);
)
72
程序舉例
求Fibnacci數(shù)列[1,1,2,3,5,8,13,21,...}
初值:f[0]=1,f[1]=1
循環(huán)體:f[i]=f[i-2]+f[i-1]
循環(huán)控制:for(i=2;i〈20;i++)
Umain()
■{inti3f[20]={1J};
■for(i=2;i<20;i++)
If[i]=f[i-2]+f[i-1];
■for(i=0;i<20;i++)
I{if(i%5==0)
Iprintf”n");
I)
73
程序舉例
[例6]用起泡法對10個數(shù)排序
9854206137第0次,a[0]和a[1]比較
①8954206137第1次,和磯2]比較
②8594206137
③8549206137
第i次,a[i]和a[i+1]比較
④8542906137
⑤8542096137for(j=0;j<10-1;j++)
⑥8542069137if(a[j]>a[j+1])
⑦8542061937{temp=a[j];
⑧8542061397a[j]=a[j+1];
⑨8542061379a[j+1]=temp;}
74
@第0次循環(huán):程序舉例
林鼻1個元素開始,兩兩比較,較大的一個放在后面
for(j=0;j<9H++)
if(a[j]>a[jTL?10-1-0
{temp=a[j];a[j]=a[j+1];a[j+1]=temp;}
第0次循環(huán)后,最大的在最后.
8542061379
第1次循環(huán)10-1-1
forG=O;j<;j++)
if(aU]>aU+1])
+
{temp=a[j]3a[j]=a[j1];a[j+1]=temp;}
第1次循環(huán)后,次大的在倒數(shù)第二的位置.
5420613789
75
程序舉例
F果有n個元素,一共要比較n-1趟(外循環(huán)次數(shù))
在第i次比較時,需要從0比較到n-1-i
#include“stdio.h"
main()
{inta[10]={9,8,5,4,2,0,6,1,3J}JJJtemp,n=10;
for(i=0;i<n-1;i++)
for(j=0;j<n-1-i;j++)
if(aU]>a[j+1])
{temp=a[j],
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)內(nèi)部控制與審計實施手冊
- 小高考試卷及答案
- 地勘鉆探工春節(jié)假期安全告知書
- 風(fēng)電機組機械裝調(diào)工春節(jié)假期安全告知書
- 企業(yè)內(nèi)部信息安全宣傳手冊
- 現(xiàn)代企業(yè)管理期末考試試題及答案
- 2025年航空貨運服務(wù)規(guī)范手冊
- 風(fēng)險管理師節(jié)假日后復(fù)工安全考核試卷含答案
- 2025年企業(yè)溝通與協(xié)作手冊
- 道路貨運調(diào)度員春節(jié)假期安全告知書
- GB/T 9706.266-2025醫(yī)用電氣設(shè)備第2-66部分:助聽器及助聽器系統(tǒng)的基本安全和基本性能專用要求
- 2026年企業(yè)級云服務(wù)器采購合同
- 2026廣西桂林醫(yī)科大學(xué)人才招聘27人備考題庫(第一批)及參考答案詳解一套
- 2026年度黑龍江省生態(tài)環(huán)境廳所屬事業(yè)單位公開招聘工作人員57人備考題庫及答案詳解一套
- 2026國家國防科技工業(yè)局所屬事業(yè)單位第一批招聘62人筆試參考題庫及答案解析
- 影視文學(xué)劇本分析其文體特征
- (正式版)JTT 1218.6-2024 城市軌道交通運營設(shè)備維修與更新技術(shù)規(guī)范 第6部分:站臺門
- 高考物理一輪復(fù)習(xí)重難點逐個突破專題71旋轉(zhuǎn)圓模型放縮圓模型平移圓模型(原卷版+解析)
- 重慶市萬州區(qū)2023-2024學(xué)年七年級上學(xué)期期末數(shù)學(xué)試卷+
- 內(nèi)科質(zhì)控會議管理制度
- 美國怡口全屋水處置介紹
評論
0/150
提交評論