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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C相关练习题

發布時間:2023/11/30 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C相关练习题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.調整數組使奇數全部都位于偶數前面。

???輸入一個整數數組,實現一個函數,來調整該數組中數字的順序使得數組中所有的奇數位于數組的前半部分,所有偶數位于數組的后半部分。
#include<stdio.h> void range(int arr[], int sz) {int left = 0;int right = sz - 1;int tmp = 0;for (left = 0; left <= right; left++){if (arr[left] % 2 != 0)//左邊是奇數{continue;}else if(arr[right] % 2 != 0)//左邊是偶數右邊是奇數{tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;right--;}else if (arr[right] % 2 == 0){right --;left --;}} } int main() {int arr[] = {8,7,9,5,4,3,6,0,9,8};int i = 0;int sz = sizeof(arr) / sizeof(arr[0]);printf(" 原數組:");for (i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");range(arr, sz);printf("交換后的數組:");for (i = 0; i < sz; i++){printf("%d ", arr[i]);}printf("\n");return 0; }
???楊氏矩陣 :個二維數組,數組的每行從左到右是遞增的,每列從上到下是遞增的.在這樣的數組中查找一個數字是否存在。時間復雜度小于O(N);
#include<stdio.h> int search(int arr[][3], int cols, int rows, int key) {int i = 0;int j = cols - 1;while (i >= 0 && i <= rows && j >= 0 && j <= cols){if (arr[i][j] == key){return 1;//找到}else if (arr[i][j] > key){j --;}else{i ++;}}return 0;//沒找到 } int main() {int arr[][3] = { 1, 3, 4, 2, 4, 5, 4, 5, 6 };int key = 0;int cols = sizeof(arr[0]) / sizeof(arr[0][0]); int rows = sizeof(arr) / sizeof(arr[0]);printf("請輸入要查找的數:\n");scanf("%d", &key);if (search(arr, cols, rows, key)){printf("不存在!\n");}else{printf("存在!\n");}return 0; }
???3.一個二進制數//1.編寫函數:unsigned int reverse_bit(unsigned int value);這個函數的返回值value的二進制位模式從左到右翻轉后的值。
#include<stdio.h> #include<math.h> unsigned int reverse_bit(unsigned int value) {int i = 0;int sum = 0;int num = 0;while (value != 0){num = value & 1;value = value >> 1;sum = sum + num * pow(2, (31 - i));i++;}return sum; } int main() {int num = 0;unsigned int tmp = 0;printf("請輸入一個數字:\n");scanf("%d", &num);tmp = reverse_bit(num);printf("%d的二進制反轉后對應的十進制數字是%u", num, tmp);return 0; }
???4.一組數據中只有一個數字出現了一次。其他所有數字都是成對出現的。請找出這個數字。(使用位運算)
int only_one(int* arr, int sz) {int i = 0;int tmp = 0;for (i = 0; i < sz; i++){tmp = tmp ^ arr[i];}return tmp; } int main() {int arr[] = { 2,4,5,2,4,6,6};int flag = 0;int sz = 0;sz = sizeof(arr) / sizeof(arr[0]);printf("%d只出現了一次\n", only_one(arr, sz));return 0; }
???4.有一個字符數組的內容為:”student a am i”, 請你將數組的內容改為”i am a student”.要求:不能使用庫函數。只能開辟有限個空間(空間個數和字符串的長度無關)。
#include<stdio.h> #include<assert.h> int my_strlen(const char* ch) {assert(ch);int count = 0;while (*ch){count++;ch++;}return count; } void reverse(char ch[], int left, int right) {while (left < right){char tmp = 0;tmp = ch[left];ch[left] = ch[right];ch[right] = tmp;left++;right--;} } void change(char* ch) {assert(ch);int right = 0;right = my_strlen(ch) - 1;int left = 0;reverse(ch, left, right);int i = 0;while (ch[i] != '\0'){left = i;while (ch[i] != ' ' && ch[i] != '\0'){i++;}right = i - 1;reverse(ch, left, right);if (ch[i] == ' '){i++;}} } int main() {char ch[] = "student a am i";change(ch);printf("%s", ch);return 0; }

總結

以上是生活随笔為你收集整理的C相关练习题的全部內容,希望文章能夠幫你解決所遇到的問題。

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