#1.1 編程題
判斷101-500之間有多少個素數,放入數組中,遍歷數組輸出所有素數,
素數: 除了1和它本身以外不再有其他的因數。
具體實現 就用DeepSeek了 以下是AI生成代碼:
#include <stdio.h>
#include <math.h>// 函數聲明
int isPrime(int num);int main() {int primes[100]; // 假設最多有100個素數(實際在101-500之間有少于100個素數)int count = 0;// 遍歷101到500之間的所有數字for (int i = 101; i <= 500; i++) {if (isPrime(i)) {primes[count] = i; // 將素數存入數組count++;}}// 輸出結果printf("101到500之間的素數共有%d個,分別是:\n", count);for (int i = 0; i < count; i++) {printf("%d ", primes[i]);if ((i + 1) % 10 == 0) { // 每行輸出10個素數printf("\n");}}printf("\n");return 0;
}// 判斷一個數是否為素數的函數
int isPrime(int num) {if (num <= 1) {return 0;}if (num == 2) {return 1;}if (num % 2 == 0) {return 0;}// 檢查從3到sqrt(num)的所有奇數for (int i = 3; i <= sqrt(num); i += 2) {if (num % i == 0) {return 0;}}return 1;
}
1.2 從鍵盤輸入10個數據,存入數組當中,程序實現,統計數組當中出現次數最多的數以及是哪一個數。(如果有次數相同則輸出第一個出現數字).
#include <stdio.h>#define SIZE 10int main() {int arr[SIZE];int i, j;// 從鍵盤輸入10個數據printf("請輸入10個整數:\n");for (i = 0; i < SIZE; i++) {scanf("%d", &arr[i]);}int maxCount = 0; // 最大出現次數int mostFrequent = arr[0]; // 出現次數最多的數,初始為第一個元素// 遍歷數組統計每個數的出現次數for (i = 0; i < SIZE; i++) {int currentCount = 1; // 當前數字的出現次數// 檢查當前數字在數組中出現的次數for (j = i + 1; j < SIZE; j++) {if (arr[i] == arr[j]) {currentCount++;}}// 如果當前數字出現次數更多,更新最大值if (currentCount > maxCount) {maxCount = currentCount;mostFrequent = arr[i];}}// 輸出結果printf("\n數組中出現次數最多的數是:%d\n", mostFrequent);printf("它出現了%d次。\n", maxCount);return 0;
}
- 有一個3×4的矩陣,要求輸出其中最大的值以及它的行號和列號。
int a[3][4] = {
{123, 94, -10, 218},
{3, 9, 10, -83},
{45, 16, 44, -99}
};
#include <stdio.h>int main() {int a[3][4] = {{123, 94, -10, 218},{3, 9, 10, -83},{45, 16, 44, -99}};int max = a[0][0]; // 初始化最大值為矩陣第一個元素int row = 0, col = 0; // 初始化最大值的位置// 遍歷矩陣尋找最大值for (int i = 0; i < 3; i++) {for (int j = 0; j < 4; j++) {if (a[i][j] > max) {max = a[i][j];row = i;col = j;}}}// 輸出結果printf("矩陣中的最大值是:%d\n", max);printf("它位于第%d行,第%d列\n", row + 1, col + 1); // 行號和列號從1開始計數return 0;
}
4 寫一個函數,統計一個int類型(32)的數中有多少位二進制數1?
#include <stdio.h>int countBits(int num) {int count = 0;unsigned int unum = (unsigned int)num; // 處理負數情況for (int i = 0; i < 32; i++) {if (unum & 1) { // 檢查最低位是否為1count++;}unum >>= 1; // 右移一位}return count;
}int main() {int number;printf("請輸入一個整數: ");scanf("%d", &number);printf("數字 %d 的二進制表示中有 %d 個1\n", number, countBits(number));return 0;
}
請實現類似atoi函數,
把字符串“123456”轉換成數值123456 int atoi(char *str);
#include <stdio.h>
int atoi(char* str);
int main(int argc, char *argv[])
{ char a[10]="12345678";printf("%d\n",atoi(a));return 0;
}
int atoi(char* str)
{int result=0;while(*str){result=result*10+(*str)-'0';str++;}return result;
}
選擇題和答案解析
//這題注意 宏定義特別小心
不是原創,我只是個搬運工 記錄下錯題,重要的事情說三遍
不是原創,我只是個搬運工 記錄下錯題,重要的事情說三遍
不是原創,我只是個搬運工 記錄下錯題,重要的事情說三遍