您好,登錄后才能下訂單哦!
1、數(shù)組轉(zhuǎn)置問題
思想:關(guān)鍵就是找2個指針變量,和第三個交換空間變量,一個指針指向頭,一個指針指向尾,都向中間靠攏,進(jìn)行數(shù)組的轉(zhuǎn)置,數(shù)字的交換;
(1)、代碼如下:
#include<stdio.h> void arrayRev(int *a, int count); void printT(int *a, int count); void printT(int *a, int count){ int i; for(i = 0; i < count; i++){ printf("%d ", a[i]); } } void arrayRev(int *a, int count){ int low = 0; int high = count-1; int tmp; while(low < high){ tmp = a[low]; a[low] = a[high]; a[high] = tmp; low++; high--; } } int main(void){ int a[] = {1, 4, 2, 6, 8, 9, 11, 43, 12, 55,}; int len; len = sizeof(a)/sizeof(a[0]); printf("轉(zhuǎn)置前:\n"); printT(a, len); arrayRev(a, len); printf("\n轉(zhuǎn)置后:\n"); printT(a, len); printf("\n"); return 0; }
(2)、運(yùn)行結(jié)果:
2、尋找一個數(shù)組中的第二大數(shù)字
無序數(shù)組中的一堆數(shù)字,尋找第二個大的數(shù)字?
思想:一次for循環(huán)就可以搞定了,開始給出一個默認(rèn)最大和第二大的數(shù)字,然后對其后的每個數(shù)字通過if比較就可以了;
(1)、代碼如下:
#include<stdio.h> int secondMax(int *a, int len); void printT(int *a, int count); void printT(int *a, int count){ int i; for(i = 0; i < count; i++){ printf("%d ", a[i]); } printf("\n"); } int secondMax(int *a, int len){ int max = a[0] > a[1] ? a[0] : a[1]; int second = a[0] > a[1] ? a[1] : a[0]; int i; for(i = 2; i < len; i++){ if(a[i] > max){ second = max; max = a[i]; }else if(a[i] > second){ second = a[i]; }else{ ; } } return second; } int main(void){ int a[] = {44, 4, 66, 6, 8, 33, 22, 2 ,55 ,1}; int len = sizeof(a)/sizeof(a[0]); int num; num = secondMax(a, len); printT(a, len); printf("%d\n", num); return 0; }
(2)、運(yùn)行結(jié)果:
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。