目錄
一.選擇題
第一題:
第二題:
?第三題:
?第四題:
第五題:
?編輯
二.編程題
?第一題:
?第二題:
1.暴力方法:?
2.數組法:
一.選擇題
第一題:
?解析:
首先在main函數中定義了一個新的局部變量
x
和y
,分別賦值為3和8。然后調用了swap()
函數,該函數通過交換兩個全局變量x
和y
的值來實現交換。但是,在swap()
函數中,交換的是全局變量x
和y
的值,而不是main
函數中的局部變量x
和y
。因此,在swap()
函數執行完畢后,全局變量x
和y
的值仍然保持原來的值,即5和7。最后,在main()
函數中輸出全局變量x
和y
的值,所以結果是3和8。答案選擇C
第二題:
答案選擇B
?第三題:
在C語言中,typedef是用于給復雜聲明定義別名的關鍵字。它可以用來定義自己習慣的數據類型名稱,來替代系統默認的基本類型名稱、數組類型名稱、指針類型名稱與用戶自定義的結構型名稱、共用型名稱、枚舉型名稱等。該題給int*類型定義了一個別名叫做 int_ptr 因此本題答案為:C,D
?第四題:
C語言中三目運算(M)?:(a++):(b--)中與(M!=0)?:(a++):(b--)等價,因此答案為C
第五題:
輸入函數中int類型變量b要用&符號,而數組名本身是數組首地址不需要用&符號,因此本題答案為B
二.編程題
?第一題:
算法題:
/*** 代碼中的類名、方法名、參數名已經指定,請勿修改,直接返回方法規定的值即可*** @param n int整型 最大位數* @return int整型一維數組* @return int* returnSize 返回數組行數*/
#include <stdio.h>static int arr[100000];int* printNumbers(int n, int* returnSize)
{int j = 0;int i = 1;if (n > 0 && n <= 5){if (n == 1){for (i = 1; i <= 9; i++){arr[j++] = i;}}if (n == 2){for (i = 1; i <= 99; i++){arr[j++] = i;}}if (n == 3){for (i = 1; i <= 999; i++){arr[j++] = i;}}if (n == 4){for (i = 1; i <= 9999; i++){arr[j++] = i;}}if (n == 5){for (i = 1; i <= 99999; i++){arr[j++] = i;}}}*returnSize = i - 1;//得到數組最終元素個數return arr;//返回數組首元素地址
}
?第二題:
一道華為機試題:
1.暴力方法:?
//暴力求解法
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{int year;int month;int day;scanf("%d %d %d", &year, &month, &day);int sum = 0;//1 3 5 7 8 10 12 ——31天//4 6 9 11 ——30天//閏年2月 ——29天//平年2月 ——28天//如果year是閏年 2000 11 15if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){switch (month){case 1:sum = day;break;case 2:sum = 31 + day;break;case 3:sum = 31 + 29 + day;break;case 4:sum = 31 + 29 + 31 + day;break;case 5:sum = 31 + 29 + 31 + 30 + day;break;case 6:sum = 31 + 29 + 31 + 30 + 31 + day;break;case 7:sum = 31 + 29 + 31 + 30 + 31 + 30 + day;break;case 8:sum = 31 + 29 + 31 + 30 + 31 + 30 + 31 + day;break;case 9:sum = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + day;break;case 10:sum = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day;break;case 11:sum = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;break;case 12:sum = 31 + 29 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day;break;}}else{switch (month){case 1:sum = day;break;case 2:sum = 31 + day;break;case 3:sum = 31 + 28 + day;break;case 4:sum = 31 + 28 + 31 + day;break;case 5:sum = 31 + 28 + 31 + 30 + day;break;case 6:sum = 31 + 28 + 31 + 30 + 31 + day;break;case 7:sum = 31 + 28 + 31 + 30 + 31 + 30 + day;break;case 8:sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + day;break;case 9:sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + day;break;case 10:sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + day;break;case 11:sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + day;break;case 12:sum = 31 + 28 + 31 + 30 + 31 + 30 + 31 + 31 + 30 + 31 + 30 + day;break;}}printf("%d", sum);return 0;
}
2.數組法:
int main()
{int year;int month;int day;scanf("%d %d %d", &year, &month, &day);int sum = day;//閏年數組:int leap_year[12] = { 31,29,31,30,31,30,31,31,30,31,30,31 };// 1 2 3 4 5 6 7 8 9 10 11 12//平年數組:int common_year[12] = { 31,28,31,30,31,30,31,31,30,31,30,31 };// 1 2 3 4 5 6 7 8 9 10 11 12
//閏年情況:if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)){if (month == 1){sum = day;}else{int j = 0;for (int i = 1; i < month; i++){sum = sum + leap_year[j++];}}}
//平年情況:else{if (month == 1){sum = day;}else{int j = 0;for (int i = 1; i < month; i++){sum = sum + common_year[j++];}}}printf("%d", sum);return 0;
}
感謝您的支持。