PTA 2019-1-11
一、判斷題
1.在所有的關係運算子(>=、>、= =、!=、<=、<)中,優先順序最低的運算子是“= =、!=”。
【思想】:
運算子優先順序:
其中 一元運算子中+ -為正或負;
^(異或)
1.可以交換兩個數的值。
2. 兩個值不相同,則異或結果為真。反之,為假。
(0異或0=0,1異或0=1,0異或1=1,1異或1=0)
||(或)
(0或0=0,1或0=1,0或1=1,1或1=0)
|與|| &與&&的區別:結果無區別 但雙的話計算步驟少;
2.八進位制和十六進位制如何表示
【思想】8進位制前面有0 十六進位制前面有0X
在轉義字元中 8進位制\ 十六進位制\x
3.switch語句中default時必須的嗎
【思想】否
二、選擇題
1.以下正確的字元常量是______。
A.’\412’
B.255
C.’\08’
D.’'
自己疑問:什麼是正確的字元常量
【思想】
字元常量是括在單引號中,例如,‘x’ 可以儲存在 char 型別的簡單變數中。
注意:
1.字元常量只能用單引號,雙引號則代表是字串
2.單引號內只能包含一個字元,多個字元時,出最後一個外前面會自動失效
3.字元常量的值,就是它在ASCII編碼表中的值。是個從0-255之間的整數。因此字元常量可以作為整型資料來進行運算。
4.單引號括起來的字元包括英文字母大、小寫字元各26個、數字字元10個,以及空白符(空格符、製表符、換行符),標點和特殊符號(鍵盤上的共30個)
如 ‘Y’+32的值為121,‘7’+‘6’的值為109。
【補充】在 C 程式中,9ab是非法的使用者識別符號
自己:F
有效使用者識別符號:不能以數字開頭!
2.對下列程式碼的描述:
#include "stdio.h"
int main(){
long num=1;
while(num++ > 0) for(long i=num; i >=0; i--)printf("i :=\n \t %ld \n" , i);
return 0;
}
正確的是:
A.程式有編譯錯誤,不能執行
B.迴圈條件永為真,迴圈無限次,程式根本停不下來,列印輸出無限行
C.迴圈有限次,程式正常結束,列印輸出有限行
D.程式執行過程必定會出錯(崩潰),結果列印輸出有限行
自己:B
正確:D
【思想】
1.你在死迴圈中包含了break語句或return,比如if滿足某個條件就執行break或者return。
2.你在迴圈中或呼叫的函式中,執行了exit函式,直接結束了整個程式。
3.你的程式碼有錯,比如使用野指標,越界訪問陣列等不可控行為。
4.記憶體不足,程式終止,比如迴圈malloc申請記憶體,但沒有釋放,又或者呼叫遞迴函式造成記憶體溢位。**==
3.下列語句中, 可輸出“☼”字元(ASCII 碼為 15)。
A) putchar(‘☼’);
B) putchar(15);
C) putchar(’\17’);
D) printf("%c", ‘\Xf’);
自己:BCD
正確:BC
【錯因】:‘\x’才為16進位制轉義符 '\X’不是
4.下列程式執行後的輸出結果是
int a=10, b=20,c;
c=(a%b<1)‖(a/b>1);
printf("%d %d %d\n", a, b, c);
【思想】:小的數餘大的數,結果為小的數!
三、填空題
1.執行以下程式後,如果從鍵盤上輸入china#<回車>,則輸出結果為
#include <stdio.h>
int main(void)
{
int c1=0,c2=0;
char ch;
while((ch=getchar()) !='#')
switch(ch)
{ case 'a':
case 'h':c1++;
default:c2++;
}
printf("c1=%d,c2=%d\n",c1,c2);
return 0;
}
正確:c1=2 c2=5
【思想】
1.switch並不是按順序來的 哪個符合就執行哪個
2.getchar()函式只能接收一個字元,其函式值就是從輸入裝置獲取到的字元。
【難點】
1.這題為什麼可以輸入一大串還讀出一大串,輸入又不一定全讀了,這題輸入多個 由於是個迴圈所以一個一個判斷
2.getchar可以讀取哪些字元:除\n其餘全部可以
2.在計算機系統中,符號整數採用 ___
來表示和儲存。
正確:補碼
補充:char用什麼儲存:ASCII碼 所以字元型與數值型儲存不一樣
**【難點】**什麼是某某碼
計算機系統儲存有符號整數
下列語句中,可輸出“☼”字元(ASCII 碼為 15)
A) putchar('☼');
B) putchar(15);
C) putchar('\17');
D) printf("%c", '\Xf');
自己難點:
1.char定義後 值為 什麼?
ASCII碼 且定義時要用數字來定義,若不用數字那就是變數
2.為什麼int 和char 分別定義同一個值後putchar()
輸出一樣
因為定義的都是相同的數字,故輸出一樣;
3.putchar與printf
**如printf("%c",‘A’) 相當於 putchar(‘A’) **
注意,無論哪個要輸出一個字元的時候 用的是對應的ASCII碼
putchar(c )中c可以是字元常量 整形常量 字元變數或整形變數(其值在字元的ASCII程式碼範圍內)
putchar(c )的擴充套件:
{1.putchar輸出換行(‘\n’)
2.putchar輸出轉義字元(‘\101’)=A(八進位制)八進位制只用斜槓就可以了!
3.輸出一個單撇號 (‘\'')}
4.分析實際問題
#include <stdio.h>
int main ()
{
int a;
scanf("%c",&a);
putchar(a);
printf("\n");
printf("%c\n",a);
printf("%d",a);
}
此題自己【難點】:
int a後 scanf的是%c 那麼在記憶體中儲存的是什麼?
經過試驗後 得出結論:
儲存為%c 即ASCII碼。(int與char相同的結果)
自己思考:char與int是整型 但char只能儲存ASCII中的數字 int的範圍大得多。
佐證:整型和字元型是互通的,他們是在記憶體中儲存的本質是相同的,只是儲存的範圍不同而已,整型可以是2位元組,4位元組,8位元組,而字元型只佔1位元組(8位)。
換做是float 則只有最後一步出結果 輸字母出0
- 補充
字元'0':char c = '0'; 它的ASCII碼實際上是48。記憶體中存放表示:00110000
字元'\0' : ASCII碼為0,表示一個字串結束的標誌。這是轉義字元。
整數0 :ASCII碼為0,字元表示為空字元,NULL;數值表示為0;記憶體中表示為:00000000
四、程式填空題
5-1
語句填空:下列 for迴圈語句將輸出:
0 1 2 0 1 2 0 1 2
for( i=1; i<=9; i++ ) printf("%2d",_ )
自己 :無思路
正確:(i-1)%3
【思想】:
1%3表示將1除以3,結果為0,餘數為1,所以1%3等於1.
5-2
用陣列來求fibonacci數列問題,列印前20項數列,每行列印4個數。
#include<stdio.h>
int main()
{
int i;
int f[20]={1,1};
for (i=2;i<20;i++)
f[i]=___;
for ( ___ ;i<20;i++)
{if( ___)printf("\n");
printf("%d ",f[i]);
}
return 0;
}
前提:fibonacci數列特點:從第三項起
每一項都是前兩項的和
正確
1.f[i-1]+f[i-2]
2.i=0
3.i%4==0
相關文章
- pta
- PTA出租
- pta檢索
- [PTA]day 2
- [PTA]day 3
- [PTA]day 5
- [PTA]day 9
- [PTA]day 7
- [PTA]day 1
- PTA習題
- PTA Hashing (25分)
- PTA甲級——Be Unique
- [PTA] day7
- PTA——看電影
- pta兩次大作業
- pta大作業總結
- PTA題目總結
- 【PTA】查驗身份證
- PTA三次作業
- PTA-1006—— Sign In and Sign Out
- 第二輪PTA作業
- PTA7-8總結
- PTA-7-82 列印沙漏
- PTA提交node.js程式碼Node.js
- 23201814 第一輪PTA作業
- 對前三週pta總結
- PTA乙級 1004 成績排名
- PTA 檢查密碼 (15分)密碼
- 兩次pta題目總結
- 南昌航空大學pta總結
- 4~6次pta心得體會
- PTA4-6次作業
- 7-8次PTA總結
- PTA作業7~8總結
- PTA 7-1 老師生日
- 2024PTA成信大遊記
- PTA第1~3次作業blog
- PTA 狼人殺-簡單版 (20分)