一.選擇題
第一題:
?函數傳參的兩個變量都是傳的地址,而數組名c本身就是地址,int型變量b需要使用&符號,因此答案為A
第二題:
?本題考察const修飾指針變量,答案為A,B,C,D
第三題:
注意int 型變量 i 是全局變量,本題答案為=D
第四題:
?考察運算符優先級和結合性:我們需要分析這個代碼中的賦值運算符和算術運算符的優先級和結合性。賦值運算符是用來給變量賦值的符號,例如等號(=),加等(+=),減等(-=),等等。算術運算符是用來進行數值計算的符號,例如加法(+),減法(-),乘法(*),除法(/),取模(%),等等。賦值運算符和算術運算符有不同的優先級,表示它們的執行順序。優先級高的運算符先執行,優先級低的運算符后執行。如果有多個相同優先級的運算符,那么就要看它們的結合性,表示它們的執行方向。結合性可以是從左到右(L->R),也可以是從右到左(R->L)。
為了得到結果,我們需要按照賦值運算符和算術運算符的優先級和結合性來計算表達式
(a+=a-=a*a)
的值。根據C語言中的規則 ,賦值運算符和算術運算符的優先級和結合性如下:
因此表達式求值順序為:(a+=(a-=(a*a))) ,最終得到表達式結果為-12,最終答案為B
?
第五題:
?本題簡單,D選項中循環判斷條件始終為假因此不會進入for循環,答案為D
二.編程題:
第一題:
?
#include<stdio.h>
int main() {//輸入要輸入的整數個數:int n;scanf("%d", &n);int i = 0;//負數個數int negative_number = 0;//正數個數int positive_number = 0;//正數的和int sum = 0;//正數平均值int average;//輸入整數并放入數組int arr[n];for (i = 0; i < n; i++){scanf("%d", &arr[i]);}int j = 0;for (j = 0; j < n; j++){if (arr[j] < 0){negative_number++;}if (arr[j] > 0){sum = sum + arr[j];positive_number++;}}printf("%d ", negative_number);//判斷是否除負數意外全為0if (positive_number != 0)printf("%.1f", (float)sum / positive_number);elseprintf("%.1f", 0);}
?
以上便是今日練習心得,感謝大家三連支持