·
成都創(chuàng)新互聯(lián)公司是一家專(zhuān)注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),哈密網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)公司做網(wǎng)站,專(zhuān)注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專(zhuān)業(yè)建站公司;建站業(yè)務(wù)涵蓋:哈密等地區(qū)。哈密做網(wǎng)站價(jià)格咨詢(xún):189820811081、一維數(shù)組 ----------(1)、鍵盤(pán)輸入 10 個(gè)數(shù),求大值和最小值(最簡(jiǎn)單的方法)#includevoid test01() {int arr[10] = {0 };
int n = sizeof(arr) / sizeof(arr[0]);
int i;
printf("請(qǐng)輸入 %d 個(gè)數(shù):", n);
for (i = 0; i< n; i++) {scanf_s("%d", &arr[i]);
}
int low = 0;
int high = n - 1;
int temp; //中間變量
while (low< high) { //交換數(shù)組
temp = arr[low];
arr[low] = arr[high];
arr[high] = temp;
low++;
high--;
}
printf("交換后的數(shù)組打印如下:");
for (i = 0; i< n; i++) {printf("%d\t", arr[i]);
}
}
int main() {test01();
return 0;
}
二維數(shù)組本身就是數(shù)組的數(shù)組(站在編譯器的角度分析問(wèn)題)
int arr[3][4]
二維數(shù)組的總大?。盒袛?shù) * 列數(shù) * 每個(gè)元素的大小
數(shù)組的總大?。簊izeof(arr)
行數(shù):sizeof(arr)/sizeof(arr[0]) //總大小除以每一行的大小就是行數(shù),sizeof(arr[0]) 每一行的大小,arr[0]行的數(shù)組名
列數(shù):sizeof(arr[0)/sizeof(arr[0][0]) //一行的大小,除以每一個(gè)元素的大小,就是列數(shù)
----------(2)、二維數(shù)值數(shù)組的初始化
------------------、分段初始化//完全初始化
int arr[3][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
//如果完全初始化。,可以省略行數(shù)
int arr[][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12}};
//部分初始化
int arr[3][4] = {{1,2},{5,6},{9,10,11}};
------------------、連續(xù)初始化//完全初始化
int arr[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
//如果完全初始化。,可以省略行數(shù)
int arr[][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
//部分初始化
int arr[3][4] = {1,2,5,6,9,10,11};
3、一維字符數(shù)組
----------(1)、一維字符數(shù)組初始化
------------------、追個(gè)元素初始化(不推薦)int arr[5] = {'h','e','l','l','o'}; //使用這種方式系統(tǒng)在編譯的時(shí)候不會(huì)自動(dòng)加'\0'
------------------、使用字符串的方式初始化一維數(shù)組(推薦)int arr[6] = "hello"; //使用這種方式,數(shù)組的長(zhǎng)度一定要大于字符串的長(zhǎng)度,因?yàn)槭褂眠@種方式系統(tǒng)會(huì)自動(dòng)在字符串后面加入 '\0',若數(shù)組的長(zhǎng)度等于字符串的長(zhǎng)度,那么編譯的時(shí)候系統(tǒng)自動(dòng)加入 '\0'會(huì)導(dǎo)致溢出
int arr[6] = "hello"; //使用這種方式,數(shù)組的長(zhǎng)度一定要大于字符串的長(zhǎng)度,因?yàn)槭褂眠@種方式系統(tǒng)會(huì)自動(dòng)在字符串后面加入 '\0',若數(shù)組的長(zhǎng)度等于字符串的長(zhǎng)度,那么編譯的時(shí)候系統(tǒng)自動(dòng)加入 '\0'會(huì)導(dǎo)致溢出
int i;
for(i = 0;iprintf("%c",arr[i]);
}
------------------、直接使用 %s 輸出字符串,需要字符串的首元地址,遇見(jiàn) '\0’會(huì)停止int arr[6] = "hello"; //使用這種方式,數(shù)組的長(zhǎng)度一定要大于字符串的長(zhǎng)度,因?yàn)槭褂眠@種方式系統(tǒng)會(huì)自動(dòng)在字符串后面加入 '\0',若數(shù)組的長(zhǎng)度等于字符串的長(zhǎng)度,那么編譯的時(shí)候系統(tǒng)自動(dòng)加入 '\0'會(huì)導(dǎo)致溢出
printf("%s",arr); //arr是數(shù)組名,代表的是首元地址,一個(gè)一個(gè)輸出直到遇見(jiàn) '\0'停止
------------------、使用printf(“%s”,arr)可以輸出int arr[5] = {‘h’,‘e’,‘l’,‘l’,‘o’}; 定義的數(shù)組嘛?(面試問(wèn)題)不能,由于逐個(gè)元素初始化沒(méi)有’\0’,所以使用 %s 容易造成非法訪(fǎng)問(wèn)內(nèi)存!?。。。。。。。?!
解決方法是:如果硬要使用printf(“%s”,arr)輸出int arr[5] = {‘h’,‘e’,‘l’,‘l’,‘o’}; 定義的數(shù)組,就要這樣定義:int arr[6] = {‘h’,‘e’,‘l’,‘l’,‘o’};,使用這種方式定義字符數(shù)組(數(shù)組的長(zhǎng)度大于字符串的長(zhǎng)度),那么arr[5] = 0,等價(jià)于 arr[5] = ‘\0’,因?yàn)椤甛0’的ASCII值就是 0,所以就不會(huì)造成非法訪(fǎng)問(wèn)?。。。。。。。。。?!
gets可以看獲取字符串的空格 ,但是不會(huì)獲取回車(chē)
char str[128] = "";
printf("請(qǐng)輸入字符串:");
fgets(str, sizeof(str),stdin); //stdin終端輸入
str[strlen(str) - 1] = 0; //消除回車(chē),將回車(chē)的地方獲取回車(chē)元素并且賦值為'\0'
printf("輸出結(jié)果:##%s##", str);
void test06() {char str1[128] = "hello";
char str2[128] = "world";
int i = 0;
while(str1[i] && ++i); //str[i] == '\0'的話(huà),即為 str[i] == 0 是假,i++的時(shí)候當(dāng) i = 0的時(shí)候 i++為false,所以要為++i修改值為1,再判斷循循環(huán)
//將str2的每一個(gè)字符復(fù)制到
int j = 0;
while (str2[j] != '\0') {str1[i] = str2[j];
i++;
j++;
}
str2[i] = '\0'; //str2[i] = '\0';是賦值結(jié)束符
printf("將str2復(fù)制str1的末尾是:%s", str1);
}
int main() {test06();
return 0;
}
void test09() {char str[128] = "";
printf("請(qǐng)輸入字符串:");
fgets(str, sizeof(str), stdin); //stdin終端輸入
str[strlen(str) - 1] = 0; //消除回車(chē),將回車(chē)的地方獲取回車(chē)元素并且賦值為'\0'
printf("請(qǐng)輸入要查找的字符串:");
char ch = getchar();
int i = 0;
while (str[i] != '\0') {if (str[i] == ch) { printf("查找成功:%d", i);
break;
}
i++;
}
if (str[i] == '\0') {printf("查找失?。。?!\n");
}
}
int main() {test09();
return 0;
}
#include#includevoid test10() {char str1[128] = "";
printf("請(qǐng)輸入字符串str1:");
fgets(str1, sizeof(str1), stdin); //stdin終端輸入
str1[strlen(str1) - 1] = 0; //消除回車(chē),將回車(chē)的地方獲取回車(chē)元素并且賦值為'\0'
char str2[128] = "";
printf("請(qǐng)輸入字符串str2:");
fgets(str2, sizeof(str2), stdin); //stdin終端輸入
str2[strlen(str2) - 1] = 0; //消除回車(chē),將回車(chē)的地方獲取回車(chē)元素并且賦值為'\0'
int pos = 0; //插入位置
printf("請(qǐng)輸入要插入的位置:");
scanf_s("%d", &pos);
int str2_len = 0; //定義str2字符串的長(zhǎng)度標(biāo)識(shí)符
while(str2[str2_len] && ++str2_len);//計(jì)算str2的長(zhǎng)度
int i = 0; //將 i 定位到str1的尾部
while (str1[i] && ++i);
int j = 0; //str2的下標(biāo)
if (pos< 0 || pos >i) {printf("輸入插入位置 %d 不合法\n",pos);
return; //結(jié)束函數(shù)
}
else {while (i >= pos)
{ str1[i + str2_len] = str1[i]; //從pos位置移動(dòng)str2長(zhǎng)度的字符串1
i--;
}
while (str2[j] != '\0') { //從pos位置將str2插入到str1中
str1[pos] = str2[j];
pos++;
j++;
}
}
printf("將str2插入到str1之后的結(jié)果是:%s", str1);
}
int main() {test10();
return 0;
}
#include#includevoid test00()
{char arr[5][128] = {"hello", "ml", "hhh", "nnn", "tttt"};
int row = sizeof(arr) / sizeof(arr[0]);
int i = 0;
// 遍歷二維數(shù)組
for (i = 0; i< row; i++)
{// 其中arr[row]代表的是每一行字符串的首地址
printf("打印的字符串如下:%s\n", arr[i]);
}
}
int main()
{test00();
return 0;
}
void test01()
{char arr[5][128] = {""}; // 第一個(gè)賦值為'\0,其余為0
int row = sizeof(arr) / sizeof(arr[0]);
int col = sizeof(arr[0]) / sizeof(arr[0][0]);
// 控制臺(tái)輸入二維字符數(shù)組
int i = 0;
printf("請(qǐng)輸入 %d 字符串:", row);
for (i = 0; i< row; i++)
{scanf("%s", arr[i]);
}
// 遍歷二維數(shù)組
for (i = 0; i< row; i++)
{// 其中arr[row]代表的是每一行字符串的首地址
printf("打印的字符串如下:%s\n", arr[i]);
}
}
int main()
{test01();
return 0;
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧
標(biāo)題名稱(chēng):c語(yǔ)言數(shù)組復(fù)習(xí)-創(chuàng)新互聯(lián)
本文地址:http://chinadenli.net/article2/dhpjoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供企業(yè)網(wǎng)站制作、App開(kāi)發(fā)、全網(wǎng)營(yíng)銷(xiāo)推廣、微信小程序、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容