你好
創(chuàng)新互聯(lián)專注于長(zhǎng)寧企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站建設(shè),電子商務(wù)商城網(wǎng)站建設(shè)。長(zhǎng)寧網(wǎng)站建設(shè)公司,為長(zhǎng)寧等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站制作,專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
一維數(shù)組
一維數(shù)組的聲明包括如下結(jié)構(gòu):類型 變量名[N],其中N是你要定義的一維數(shù)組長(zhǎng)度。
下面我們就通過(guò)一個(gè)例子聲明一個(gè)int類型的數(shù)組,并且進(jìn)行數(shù)組的賦值以及輸出。
在cpp文件main()函數(shù)中輸入以下語(yǔ)句
int a[10];//聲明一維整形數(shù)組,數(shù)組長(zhǎng)度為10
for (int i =0;i10;i++)
{
a[i]=i;
coutiendl;
}
return 0;
然后ctrl+F5運(yùn)行
我們可以看到如下結(jié)果:在i行輸出的是a[i]
二維數(shù)組
二維數(shù)組的聲明結(jié)構(gòu):類型 變量名[M][N],其中M代表行數(shù),N代表列數(shù),下面我們也通過(guò)一個(gè)例子聲明一個(gè)整形(int)的二維數(shù)組,并且進(jìn)行相應(yīng)的 賦值與輸出。
在main()函數(shù)中輸入以下代碼
int a[4][5];//二維數(shù)組聲明
int i,j;
for ( i =0;i4;i++)
{
for (j=0;j5;j++)
{
a[i][j]=(i+1)+(j+1);
couta[i][j]" ?";
}
coutendl;
}
return 0;
然后ctrl+F5運(yùn)行
結(jié)果輸出的內(nèi)容是二維數(shù)組的每個(gè)元素,二維數(shù)組就是矩陣,數(shù)組的每個(gè)元素是相應(yīng)的行號(hào)和列號(hào)的和
滿意請(qǐng)采納
#include?stdio.h
/*比較兩個(gè)字符串*/
/*src、dst相等?return?1*/
/*src比dst短?return?-2*/
/*src比dst長(zhǎng)?return?2*/
/*src、dst長(zhǎng)度一致但不相等?return?-1*/
int?stringCmp?(char?*src,?char?*dst)?{??
if?(strlen?(src)??strlen?(dst))
return?-2;
else?if?(strlen?(src)??strlen?(dst))
return?2;
else?{
while?(*src??*dst)?{
if?(*src?!=?*dst)
return?-1;
src++;
dst++;
}
return?1;
}
}
/*合并兩個(gè)字符串*/
void?mergeString(char*?str1,?char*?str2,?char*?merge)?{
while?(*merge++?=?*str1++);?/*復(fù)制str1并將指針移動(dòng)到字符串的末尾的下一個(gè)位置*/
merge--;?/*退到字符串的末尾*/
while?(*merge++?=?*str2++);?/*從末尾(\0)的位置開(kāi)始將str2拷貝進(jìn)來(lái)*/
*merge?=?'\0';
}
int?main(void)?{
char?*str1_1="hel",*str1_2="lo",?*merge1;
char?*str2_1="ness",*str2_2="happy",?*merge2;
char?*str3_1="hi",*str3_2="hi",?*merge3;
char?*str4_1="hello",*str4_2="world",?*merge4;
puts?("第1組字符串:");
puts?(str1_1);
puts?(str1_2);
if?(stringCmp?(str1_1,?str1_2)?==?1)
puts?(str1_1);
else?if?(stringCmp?(str1_1,?str1_2)?==?-2)?{
mergeString?(str1_2,?str1_1,?merge1);
puts?(merge1);
}
else?if?(stringCmp?(str1_1,?str1_2)?==?2?||?stringCmp?(str1_1,?str1_2)?==?-1)?{
mergeString?(str1_1,?str1_2,?merge1);
puts?(merge1);
}
putchar?('\n');
puts?("======================================================");
putchar?('\n');
puts?("第2組字符串:");
puts?(str2_1);
puts?(str2_2);
if?(stringCmp?(str2_1,?str2_2)?==?1)
puts?(str2_1);
else?if?(stringCmp?(str2_1,?str2_2)?==?-2)?{
mergeString?(str2_2,?str2_1,?merge2);
puts?(merge2);
}
else?if?(stringCmp?(str2_1,?str2_2)?==?2?||?stringCmp?(str2_1,?str2_2)?==?-1)?{
mergeString?(str2_1,?str2_2,?merge2);
puts?(merge2);
}
putchar?('\n');
puts?("======================================================");
putchar?('\n');
puts?("第3組字符串:");
puts?(str3_1);
puts?(str3_2);
if?(stringCmp?(str3_1,?str3_2)?==?1)
puts?(str3_1);
else?if?(stringCmp?(str3_1,?str3_2)?==?-2)?{
mergeString?(str3_2,?str3_1,?merge3);
puts?(merge3);
}
else?if?(stringCmp?(str3_1,?str3_2)?==?2?||?stringCmp?(str3_1,?str3_2)?==?-1)?{
mergeString?(str3_1,?str3_2,?merge3);
puts?(merge3);
}
putchar?('\n');
puts?("======================================================");
putchar?('\n');
puts?("第4組字符串:");
puts?(str4_1);
puts?(str4_2);
if?(stringCmp?(str4_1,?str4_2)?==?1)
puts?(str4_1);
else?if?(stringCmp?(str4_1,?str4_2)?==?-2)?{
mergeString?(str4_2,?str4_1,?merge4);
puts?(merge4);
}
else?if?(stringCmp?(str4_1,?str4_2)?==?2?||?stringCmp?(str4_1,?str4_2)?==?-1)?{
mergeString?(str4_1,?str4_2,?merge4);
puts?(merge4);
}
putchar?('\n');
puts?("======================================================");
putchar?('\n');
getch?();?/*屏幕暫留*/
return?0;
}
運(yùn)行結(jié)果
沒(méi)有這樣的庫(kù)函數(shù),都比較簡(jiǎn)單的,自己寫個(gè)好了
如果是字符串?dāng)?shù)組,strchrstring.h可以查找某個(gè)字符是否在這個(gè)字符串?dāng)?shù)組中
給你看一下我的代碼
#includestdio.h
void main(){
int a[10],b[10],i,j,temp;
for(i=0;i10;i++){
printf("請(qǐng)輸入第%d個(gè)數(shù):",(i+1));
scanf("%d",a[i]);
//保存數(shù)組,因?yàn)檩斎胪陻?shù)組要冒泡排序,排序后的元素順序可能和原數(shù)組不一樣
b[i]=a[i];
}
//冒泡排序,求最大值
for(i=0;i9;i++){
for(j=0;j9-i;j++){
if(a[j]a[j+1]){ //這里控制的升序還是降序,我這是降序
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
//查找最大值在原數(shù)組的位置
for(i=0;i10;i++){
if(b[i]==a[0]){ //降序的話最大值是a[0],升序的話最大值是a[9]
break; //一旦找到最大值,馬上跳出循環(huán)
}
}
printf("最大值是%d,它在原數(shù)組中是第%d個(gè)元素!\n",a[0],(i+1));
}
你的程序:
main()
{
int b[3];
b=pop();
}
int * pop()
{
int a[3],i;//定義的局部變量a[3]在調(diào)用完之后自動(dòng)釋放其空間
for(i=0;i3;i++)
a[i]=i;
return a;//返回的是指向數(shù)組a[3]的地址而不是數(shù)組a[3]本身
}
注:既然上面說(shuō)到調(diào)用的方法返回的是指向數(shù)組a[3]的地址,所以主函數(shù)中b接收的應(yīng)該是指向數(shù)組a[3]的地址,而數(shù)組a[3]在方法調(diào)用完后又被釋放了,所以b接收不到數(shù)組a[3],故出錯(cuò)。
正確的程序:
#includestdio.h
main()
{
int b[3];
pop(b,3);
}
void pop(int a[],int n)//該方法傳入兩個(gè)參數(shù),第一個(gè)是傳入指向數(shù)組的地址,第二個(gè)參數(shù)是傳入數(shù)組的長(zhǎng)度,不需寫返回語(yǔ)句return,只需通過(guò)指向數(shù)組的地址的傳入就可以直接將數(shù)組b[]的值改變
{
int i;
for(i=0;in;i++)
a[i]=i;
}
#include
"stdio.h"
void
input(int
a[10])
//給一維數(shù)組輸入數(shù)據(jù)
{
int
i;
for(i=0;i10;i++)
scanf("%d",a[i]);
}
void
output(int
a[10])
//輸出一維數(shù)組輸入數(shù)據(jù)
{
int
i;
for(i=0;i10;i++)
printf("%d
",a[i]);
}
int
main()
{
int
b[10];
input(b);
//調(diào)用input函數(shù)給數(shù)組b賦值
output(b);//調(diào)用output函數(shù)輸出數(shù)組b中的值
}
本文標(biāo)題:c語(yǔ)言數(shù)組函數(shù)大全及詳解 c語(yǔ)言函數(shù)與數(shù)組
轉(zhuǎn)載源于:http://chinadenli.net/article38/doddssp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、全網(wǎng)營(yíng)銷推廣、做網(wǎng)站、自適應(yīng)網(wǎng)站、商城網(wǎng)站、網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容