程式設計入門——C語言 翁愷 期末考試測試
阿新 • • 發佈:2019-01-05
期末試卷返回 本次得分為:87.00/90.00, 本次測試的提交時間為:2018-05-20。 1單選(3分) 若變數已正確定義,執行 scanf("%d%c%f", &op1, &op, &op2); 輸入什麼之後,op1的值為1,op的值為’*’,op2的值為2.0. 得分/總分 A. 1 *2.0 B. 1 *2 C. 1* 2. 3.00/3.00 D. 1 * 2 正確答案:C你選對了 2單選(3分) 以下哪個迴圈並非重複5次? 得分/總分 A. int i; for (i=1; i<=5; i++) {} B. int i; for (i=1; i<6; i++) {} C. int i; for (i=0; i<5; i++) {} D. int i; for (i=0; i<=5; i++) {} 3.00/3.00 正確答案:D你選對了 3單選(3分) 對於 int x, y; 語句 if (x < 0) y = -1; else if (!x) y = 0; else y = 1; 等價於 得分/總分 A. y=0; if (x!=0) if(x>0) y=1; else y=-1; 3.00/3.00 B. y=0; if (x>=0) if(x) y=1; else y=-1; C. if (x>=0) y=0; if(x) y=1; else y=-1; D. if (x != 0) if (x > 0) y = 1; else y = -1; 正確答案:A你選對了 4單選(3分) 對於以下程式碼: int i=6; do { printf("%d", i--); } while (0); 哪句話是對的? 得分/總分 A. 打印出5 B. 打印出6 3.00/3.00 C. 打印不出東西 D. 通不過編譯 正確答案:B你選對了 5單選(3分) 要求函式的功能是交換x和y中的值,且通過正確呼叫返回交換結果。能正確實現此功能的函式是 得分/總分 A. void funa(int *x , int *y) { int *p; *p=*x;*x=*y;*y=*p; } B. void funa(int x , int y) { int t; t=x;x=y;y=t; } 0.00/3.00 C. int funa(int *x , int *y) { *x=*y;*y=*x; } D. void funa(int *x , int *y) { int t = *x; *x = *y; *y = t; } 正確答案:D你錯選為B 6單選(3分) 語句 while(x%3) a++; 中的表示式 x%3 等價於_______. 得分/總分 A. x%3==0 B. x%3==2 C. x%3==1 D. x%3!=0 3.00/3.00 正確答案:D你選對了 7單選(3分) 對 for(表示式1;;表示式3) 可理解為_______. 得分/總分 A. for(表示式1;0;表示式3) B. for(表示式1; 表示式1;表示式3) C. for(表示式1;1;表示式3) 3.00/3.00 D. for(表示式1; 表示式3;表示式3) 正確答案:C你選對了 8單選(3分) 以下哪句不是正確的函式原型? 得分/總分 A. int f(void); B. int f(int i) {}; 3.00/3.00 C. int f(); D. int f(int i); 正確答案:B你選對了 9單選(3分) 以下哪個不是C語言的關鍵字? 得分/總分 A. while B. goto C. main 3.00/3.00 D. else 正確答案:C你選對了 10單選(3分) 對於以下程式碼: int i; for ( i=0; i<10; i++) printf("%d", i); for迴圈後,i的值是多少? 得分/總分 A. 11 B. 9 C. 10 3.00/3.00 D. i不再存在了 正確答案:C你選對了 11單選(3分) 以下哪個for語句是不能編譯的? 得分/總分 A. for (); 3.00/3.00 B. for ( i=0; j<10; j++ ); C. for (i=0; i<10, j<10; i++); D. for (;;); 正確答案:A你選對了 12單選(3分) 假設字元變數ch中存放有大寫英文字母,將其轉換為相應的小寫英文字母的表示式是 得分/總分 A. ch=ch-32 B. ch=ch-'A'+'a' 3.00/3.00 C. ch-=32 D. ch = ch-'a'-'A' 正確答案:B你選對了 13單選(3分) 有以下定義: double a,b,c; 則以下哪個表示式與a/b/c不等價? 得分/總分 A. a/c/b B. a/(b/c) 3.00/3.00 C. a/(b*c) D. (a/b)/c 正確答案:B你選對了 14單選(3分) 以下哪個迴圈能編譯? 得分/總分 A. for ( i=10 ; i++; ) {} 3.00/3.00 B. for ( i=10 ,i<100, i++ ) {} C. for ( i=10 ; i<100 ) {} D. for ( i=10 ; i++ ) {} 正確答案:A你選對了 15單選(3分) 有函式原型為 void f(int, int *); ,主函式中有變數定義: int a=2, *p=&a; 則下列函式呼叫正確的是 得分/總分 A. f(*p, p); 3.00/3.00 B. f(*p, a); C. f(a, &p); D. f(p,a); 正確答案:A你選對了 16單選(3分) 以下哪個是無效的C語言變數名? 得分/總分 A. 4ever 3.00/3.00 B. _a C. printf D. main 正確答案:A你選對了 17單選(3分) 以下哪個函式是不能編譯的? 得分/總分 A. int f(void) { return 0; } B. void f() { } C. void f(int i) { return i; } 3.00/3.00 D. int f() { return 0; } 正確答案:C你選對了 18單選(3分) 給定函式原型如下: int* f(int *p); 而另有變數定義如下: int i; 哪個對函式的呼叫是錯誤的? 得分/總分 A. f(&i); B. f(&(i+6)); 3.00/3.00 C. *f(&i) = 6; D. int* p = f(&i); 正確答案:B你選對了 19單選(3分) 對於以下程式碼: char ch = -1; printf("%d\n", ch); 輸出結果是? 得分/總分 A. 編譯錯誤 B. 255 C. 執行時刻異常 D. -1 3.00/3.00 正確答案:D你選對了 20單選(3分) 對於以下程式碼: int i=6; if ( i<= 6 ) printf("hello\n");; else printf("bye-bye\n");; 哪句話是對的? 得分/總分 A. 打印出"hello bye-bye" B. 通不過編譯 3.00/3.00 C. 打印出"bye-bye" D. 打印出"hello" 正確答案:B你選對了 21填空(3分) 語句 if (4/5 > 3/4) a=1; else a=0; 執行後,a的值是 得分/總分 0 3.00/3.00 正確答案:0 22填空(3分) 表示式 !!"2010-01-27" 的值為(以1表示真,0表示假) 得分/總分 1 3.00/3.00 正確答案:1 23填空(3分) 表示式 (double)(10/4*4) 的結果是: (如果認為結果是浮點數,請以小數點後一位小數來表示) 得分/總分 8.0 3.00/3.00 正確答案:8.0 24填空(3分) 若變數已正確定義並賦值,則表示式(-10<x<0)的值為 得分/總分 0 3.00/3.00 正確答案:0 25填空(3分) 表示式 (double)(10/4) 的值為 (如果認為結果是浮點數,請以小數點後一位小數來表示) 得分/總分 2.0 3.00/3.00 正確答案:2.0 26填空(3分) 假設sizeof(int)的值為4,對陣列定義: int a[3][6]; 則sizeof( a[0] )的值為______。 得分/總分 24 3.00/3.00 正確答案:24 27填空(3分) 若 int a = 6, b = 0, c = 3; ,則表示式 a && b || b - c 的結果是(以1表示真,0表示假) 得分/總分 1 3.00/3.00 正確答案:1 28填空(3分) 以下程式碼段的輸出是: int number, right_digit; number = 15292; if ( number ==0 ) { printf("0"); } else while ( number != 0 ) { right_digit = number % 10; printf("%i", right_digit); number /= 10; } 得分/總分 29251 3.00/3.00 正確答案:29251 29填空(3分) 表示式 'B'+'8'-'3' 表示的字元是(請僅輸入單個字元,不要加前後的引號等其他符號) 得分/總分 G 3.00/3.00 正確答案:G 或 'G' 30填空(3分) 現有 int x=0,y=4; 表示式 -10<x & y<0 的結果是 得分/總分 0 3.00/3.00 正確答案:0