日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

c13--数组

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c13--数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
// // main.c // 進制查表法 // // Created by xiaomage on 15/6/10. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include <stdio.h> void printfBinary(int value); void printfBinary2(int value); void printOct(int value); void printfHex(int value);void printfHex2(int value); void printfOct2(int value); void printfBinary3(int value);int main(int argc, const char * argv[]) {/*000000000000000000000000000000000000000000000000000000000111*/int num = 10;// 1010; // printfBinary2(num); // printOct(num); // printfHex2(num); // printfOct2(num); printfBinary3(num);return 0; }void printfBinary3(int value) {// 1.定義一個數組, 用于保存二進制中所有的取值char charValues[] = {'0', '1'};// 2.定義一個數組, 用于保存查詢后的結果char results[32] = {'0'};// 3.定義一個變量, 用于記錄當前需要存儲到查詢結果數組的索引int pos = 32;while (value != 0) {// 1.取出1位的值int res = value & 1;// 2.利用取出來得值到表中查詢對應的結果char c = charValues[res];// 3.存儲查詢的結果results[--pos] = c;// 4.移除二進制被取過的1位value = value >> 1;}// 4.打印結果for (int i = pos; i < 32; i++) {printf("%c", results[i]);}printf("\n");}void printfOct2(int value) {// 1.定義一個數組, 用于保存八進制中所有的取值char charValues[] = {'0', '1', '2', '3', '4', '5', '6', '7'};// 2.定義一個數組, 用于保存查詢后的結果char results[11] = {'0'};// 3.定義一個變量, 用于記錄當前需要存儲到查詢結果數組的索引int pos = 11;while (value != 0) {// 1.取出3位的值int res = value & 7;// 2.利用取出來得值到表中查詢對應的結果char c = charValues[res];// 3.存儲查詢的結果results[--pos] = c;// 4.移除二進制被取過的三位value = value >> 3;}// 4.打印結果for (int i = pos; i < 11; i++) {printf("%c", results[i]);}printf("\n");}void printfHex2(int value) {// 1.定義一個數組, 用于保存十六進制中所有的取值// 規律: 取出的4個二進制位得到的值, 正好是數組中角標對應的值char charValues[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; // '', '', '', '', '', '', '', ''char results[8] = {'0'};int pos = 8;while (value != 0) {// 取出4位的值int res = value & 15;// 利用這個值作為索引去數組中查詢對應的十六進制的值char c = charValues[res]; // printf("%c", c);// 將取出來得值放到用于存儲結果數組中results[--pos] = c;// 每取完一次就干掉它最低的4位value = value >> 4; // printf("pos = %i\n", pos); }for (int i = pos; i < 8; i++) {printf("%c", results[i]);}printf("\n"); }void printfHex(int value) {for (int i = 0; i <= 8; i++) {int res = value & 15; // 1111// 對十六進制進行特殊處理if (res > 9) {// 11 - 10 1 + achar c = res - 10 + 'a';printf("%c", c);}else{printf("%i", res);}value = value >> 4;} }void printOct(int value) {for (int i = 0; i <= 11; i++) {int res = value & 7; // 111printf("%i", res);value = value >> 3;} }void printfBinary2(int value) {for (int i = 0; i <= 32; i++) {int res = value & 1;printf("%i", res);value = value >> 1;}printf("\n"); }void printfBinary(int value) { // int offset = sizeof(value) * 8 - 1;int offset = (sizeof(value) << 3) - 1;while (offset >= 0) {int res = (value >> offset) & 1;printf("%i", res);offset--;}printf("\n"); } // // main.c // 進制查表法優化 // // Created by xiaomage on 15/6/10. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include <stdio.h> void total(int value, int base, int offset); void ptintBinary(int num); void printfOct(int num); void printfHex(int num);int main(int argc, const char * argv[]) {// insert code here... // ptintBinary(10); // printfOct(10);printfHex(10);return 0; }void printfHex(int num) {total(num, 15, 4); }void printfOct(int num) {total(num, 7, 3); }void ptintBinary(int num) {total(num, 1, 1); }// 轉換所有的進制 // value就是需要轉換的數值 // base就是需要&上的數 // offset就是需要右移的位數 void total(int value, int base, int offset) {// 1.定義一個數組, 用于保存十六進制中所有的取值char charValues[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};// 2.定義一個數組, 用于保存查詢后的結果char results[32] = {'0'};// 3.定義一個變量, 用于記錄當前需要存儲到查詢結果數組的索引int pos = sizeof(results)/ sizeof(results[0]);while (value != 0) {// 1.取出1位的值int res = value & base;// 1 7 15// 2.利用取出來得值到表中查詢對應的結果char c = charValues[res];// 3.存儲查詢的結果results[--pos] = c;// 4.移除二進制被取過的1位value = value >> offset;// 1 3 4 }// 4.打印結果for (int i = pos; i < 32; i++) {printf("%c", results[i]);}printf("\n");} // // main.c // 練習4 // // Created by xiaomage on 15/6/10. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include <stdio.h>int main(int argc, const char * argv[]) {// 要求從鍵盤輸入6個0~9的數字,排序后輸出// 0~9999// 1.定義數組保存用戶輸入的數據int nums[10] = {0};// 2.接收用戶的數據int value = -1;for (int i = 0; i < 6; i++) {printf("請輸入第%i個數據\n", i + 1);scanf("%i", &value); // 2, 2, 1, 2// 7, 3, 6, 1 // nums[value] = 1;nums[value] = nums[value] + 1;}for (int i = 0; i < 10; i++) { // i == 7 // printf("nums[%i] = %i\n", i , nums[i]);/*if (nums[i] != 0) {printf("%i\n", i); // 1, 2, 2, 2}*/for (int j = 0; j < nums[i]; j++) { // j == 1printf("%i\n", i); // 1, 1, 2, 3, 3, 6 }}return 0; } // // main.c // 數組的注意點 // // Created by xiaomage on 15/6/10. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include <stdio.h>int main(int argc, const char * argv[]) {char nums[2] = {1, 5}; // 0 , 1 , 2char values[3] = {7, 8, 9};// 注意點: 在使用數組的時候, 一定不要訪問不屬于字節的存儲空間, 這樣會導致數據混亂// 有時候如果訪問了不屬于自己的存儲空間, 程序會報錯 // values[3] = 44; // printf("values[3] = %i\n", values[3]); // printf("nums[0] = %i\n", nums[0]); nums[-1] = 88;printf("values[2] = %i\n", values[2]);return 0; } // // main.c // day07 // // Created by xiaomage on 15/6/10. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include <stdio.h>int main(int argc, const char * argv[]) {// 變量在內存中的存儲// 由于變量的內存尋址是從大到小, 所以存儲數據時會從高字節開始存儲int num = 10; // 0000 0000 0000 0000 0000 0000 0000 1010// 注意: 數組的存儲和變量有點不一樣, 數組存儲元素, 是從所占用的低字節開始存儲char charValues[4] = {'l', 'u', 'c', 'k'};printf("charValues[0] = %p\n", &charValues[0]);printf("charValues[1] = %p\n", &charValues[1]);printf("charValues[2] = %p\n", &charValues[2]);printf("charValues[3] = %p\n", &charValues[3]);/*charValues[0] = 0x7fff5fbff7c8charValues[1] = 0x7fff5fbff7c9charValues[2] = 0x7fff5fbff7cacharValues[3] = 0x7fff5fbff7cb*/// &charValues == &charValues[0] == charValuesprintf("&charValues = %p\n", &charValues);// 數組名,保存的是數組的首地址,是第0個元素的地址,printf("charValues = %p\n", charValues);// 00000000 00000000 00000000 00000101 // 00000000 00000000 00000000 00000110int nums[2] = {5, 6};return 0; } // // main.c // 數組練習1 // // Created by xiaomage on 15/6/10. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include <stdio.h>int main(int argc, const char * argv[]) {// 從鍵盤錄入當天出售BTC的價格并計算出售的BTC的總價和平均價(比如說一天出售了3個比特幣)// 1.接收數據 printf("請輸入第1個比特幣的價格\n");int value1 = -1;scanf("%i", &value1);printf("請輸入第2個比特幣的價格\n");int value2 = -1;scanf("%i", &value2);printf("請輸入第3個比特幣的價格\n");int value3 = -1;scanf("%i", &value3);// int value3 = -1;int sum = 0;int value = -1;for (int i = 0; i < 3; i++) {printf("請輸入第3個比特幣的價格\n");scanf("%i", &value);sum += value;}// 1.1定義數組保存每個比特幣的價格int values[4] = {-1};// 1.2動態計算數組的元素個數int length = sizeof(values) / sizeof(values[0]);// 1.3定義變量保存總和int sum = 0;for (int i = 0; i < length; i++) {printf("請輸入第%i個比特幣的價格\n", i + 1);scanf("%i", &values[i]);sum += values[i];}// 2.計算總和 // int sum = value1 + value2 + value3;int sum = 0;for (int i = 0; i < length; i++) {sum += values[i];}// 3.計算平局值int average = sum / length;// 4.輸出結果printf("sum = %i, average = %i\n", sum, average);return 0; } // // main.c // 數組和函數 // // Created by xiaomage on 15/6/10. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include <stdio.h>// 基本數據類型作為函數的參數是值傳遞 // 如果形參是基本數據類型, 在函數中修改形參的值不會影響到實參的值 void change(int value) {value = 55; }// 注意: 數組名作為函數的參數傳遞, 是傳遞的數組的地址 // 因為數組名就是數組的地址 &number = &number[0] == number // 注意: 如果數組作為函數的形參, 元素的個數可以省略 // 如果形參是數組, 那么在函數中修改形參的值, 會影響到實參的值 //void change2(int values[2]) void change2(int values[]) {values[0] = 88;values[1] = 99; } int main(int argc, const char * argv[]) {/*int num = 10;change(num);printf("num = %i\n", num);*/int nums[2] = {1, 5};change2(nums); // 相當于傳遞了數組的地址printf("nums[1] = %i\n", nums[1]);change(nums[0]);printf("nums[0] = %i\n", nums[0]);return 0; } // // main.c // 數組和函數2 // // Created by xiaomage on 15/6/10. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include <stdio.h> //void printArray(int values[5]); void printArray(int values[5], int length);int main(int argc, const char * argv[]) {// 要求定義一個函數, 實現遍歷數組. (只要別人傳遞數組給函數, 就要求輸出數組中所有元素的值)int nums[3] = {1 , 3 , 5};printf("size = %i\n", sizeof(nums));int length = sizeof(nums) / sizeof(nums[0]);printArray(nums, length); // 數組名稱保存的是數組的地址return 0; }// 如果傳遞的數組的名稱, 其實傳遞的是地址 // 如果傳遞的是地址, 其實傳遞的是指針 // 指針在64位編譯環境占8個字節// 注意: 如果數組作為形參, 那么在函數中就不能通過數組的名稱計算出數組元素的個數 // 因為系統會自動將數組形參轉換為指針, 指針占用8個字節 void printArray(int values[5], int length) {printf("size = %i\n", sizeof(values));//8,指針類型// 1.動態計算數組的元素個數,sizeof(values)獲取的是字節的大小,int length1 = sizeof(values) / sizeof(values[0]);//8/4=2// 永遠只有2個for (int i = 0; i < length; i++) {printf("values[%i] = %i\n", i,values[i]);} } // // main.c // 數組練習2 // // Created by xiaomage on 15/6/10. // Copyright (c) 2015年 xiaomage. All rights reserved. // #include <stdio.h>int arrayMax(int values[], int length); int arrayMax2(int values[], int length);int main(int argc, const char * argv[]) {// 設計一個函數int arrayMax(int a[], int count)找出數組元素的最大值int nums[5] = {-99, -188, -5, -100, -77};int length = sizeof(nums) / sizeof(nums[0]);int max1 = arrayMax(nums, length);int max = arrayMax2(nums, length);printf("max = %i\n", max);return 0; }int arrayMax2(int values[], int length) {// 1.定義變量, 保存數組中最大值的角標(索引)int max = 0;// 2.遍歷數組for (int i = 1; i < length; i++) {// 3.取出數組中對應角標的元素的值進行比較if (values[max] < values[i]) {// 如果當前遍歷到的角標對應的元素的值大于max這個角標對應元素的值// 那么就將當前的角標最為最大值的角標max = i;}}return values[max]; }int arrayMax(int nums[], int length) {// 1.定義一個變量, 假設為最大值 // int max = 0; // 注意: 不能假設一個不是數組中的值最為最大int max = nums[0];// 2.遍歷數組for (int i = 1; i < length; i++) {// 3.依次取出數組中每一個元素的值, 和假設的最大值進行比較// 如果數組的元素大于假設的最大值, 就讓當前元素的值作為最大值if (max < nums[i]) {max = nums[i];}}return max; }

?

總結

以上是生活随笔為你收集整理的c13--数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。