文章目錄
-
- 1、輸出各種資料類型所占用存儲空間的大小
- 2、下列哪一項能用作使用者自定義的辨別符
- 3、指出下列程式中的錯誤
- 4、給下清單達式加上全部的括号 (假設所用變量均已定義)
- 5、請根據下列題意寫出相應的表達式
- 6、下列選項中兩個表達式的運算結果相同的是
- 7、下列程式的運作結果為
- 8、求解下列各表達式的值(其中 x 的值為 100)
- 9、下列程式運作結果為
- 10、小型選擇題
1、輸出各種資料類型所占用存儲空間的大小
#include<bits/stdc++.h>
using namespace std;
//名額識符的各種可見範圍
//C++标準程式庫中的所有辨別符都被定義于一個名為std的namespace中
/*
使用 C++ sizeof 運算符來計算 int, float, double 和 char
變量占用的空間大小。
*/
int main()
{
cout << "int 變量占用的空間大小為:" << sizeof(int) << endl;
cout << "float:" << sizeof(float) << endl;
cout << "char:" << sizeof(char) << endl;
cout << "double:" << sizeof(double) << endl;
cout << "bool:" << sizeof(bool) << endl;
cout << "long long:" << sizeof(long long) << endl;
}
2、下列哪一項能用作使用者自定義的辨別符
(a)const (b)2var (c)my name (d)var2
(a) 中 const 是關鍵字,C++關鍵字不能用于使用者自定義辨別符;
(b) 中 2var 是以數字開頭,第一個字元必須是字母或下劃線;
© 中 my name含有空格,辨別符不能含有空格。
3、指出下列程式中的錯誤
#include<bits/stdc++.h>
using namespace std;
int main()
{
const int x;
x = 100;
return 0;
}
const 定義的符号常量必須初始化 , 由 const 定義的常量的值不可以改變。
是以本題有兩處錯誤:
第一、沒有對符号常量 x 進行初始化;
第二、給符号常量指派是錯誤的。
vs都指出來了,yyds!
4、給下清單達式加上全部的括号 (假設所用變量均已定義)
(1) a+b-c–%b
(2) a>b?b:c>d?a:c<a?c:d
(3) a+=a+b||e
(4) a&b+c++
(5) -a&&b-c
(6) k=b=c=a
考察運算符的優先級
解答:
(1) (a+b)-((c–)%b)
(2) a>b?b:(c>d?a:(c<a?c:d))
(3) a+=((a+b)||e)
(4) a&(b+(c++))
(5) (-a)&&(b-c)
(6) k=(b=(c=a))
5、請根據下列題意寫出相應的表達式
(1) 有 a、b、c、max四個變量 a、b、c 中的最大值,并将結果放入 max中。
(2) 年齡在 1 到 100 之間(包含 1 和 100,年齡用變量 age 表示)。
(3) 判斷一年是否為閏年,年用 year 表示。滿足下列兩個條件之一即為閏年:①能被 4 整除但不能被 100 整除 ②能被 400 整除。
4、
解答:
(1)
max = (a > b) ? (a > c ? a : c) : (b > c ? b : c);
原諒我忘記return 0;了~
(2)
(age >= 1 && age <= 100)
原諒我忘記return 0;了~
(3)
(a+b)*h/2
(4)
(year%4==0&&year%100!=0)||(year%400==0)
這次沒有忘記return 0;嗚嗚
6、下列選項中兩個表達式的運算結果相同的是
(a)3/2 和 3.0/2.0 (b)3/2 和 3.0/2 (c)3/2.0 和 3.0/2.0 (d) 3/2.0 和 3/2
考查資料類型及表達式中資料類型的隐式轉換
3/2 中兩個操作數都為整型,運算結果仍為整型即 1;
3.0/2 和 3/2.0 中一個操作數為整型另一個為浮點型,運算時整型隐式轉換為浮點型,運算結果也為浮點型即 1.5 ;
3.0/2.0 兩個操作數均為浮點型,結果也為浮點型即 1.5 。
7、下列程式的運作結果為
#include<bits/stdc++.h>
using namespace std;
void main()
{
int a = 2, b = 4, i = 0, x;
x = a > b && ++i;
cout << "x :" << x << endl;
cout << "i :" << i << endl;
}
考查“短路”表達式
對于表達式中的“與”運算而言,隻要有一個操作數為假,結果為假。是以當第一個操作數為假時,不在求解其它操作數。對于表達式中的“或”運算而言,隻要有一個操作數為真,則結果為真。是以當第一個操作數為真時,不在求解其它操作數。本題中 a>b 為假,是以表達式 a>b&&++i 為假,而++i 沒有執行。故i:0,x:0。
8、求解下列各表達式的值(其中 x 的值為 100)
(1) (a=1,b=2,c=3)
(2) 1|3<<5
(3) ‘a’+3&&!0%1
(4) x%2?“ odd”: ” even ”
解答:
(1)逗号表達式的值是其最後一個表達式的值。
(2)<<運算符的優先級高于 | 運算符,是以先算 3<<5 結果為96(二進制 1100000),然後與 1 做按位與運算則結果為 97(二進制 1100001)。答案為: 97
(3)按優先級由高到低依次是: ! 運算符、算術運算符、邏輯運算符。 !0%1 即 1%1結果為 0,‘a’+3 時字元型首先隐式轉換成整型然後相加結果為 100,100&&0結果為 0。答案為: 0
(4)害,卡出了
vs嗚嗚,之前顯示的錯誤後來改了,可能下面還是會顯示錯誤,需要重新運作才不顯示。
考英語~odd奇數,even偶數
9、下列程式運作結果為
#include<bits/stdc++.h>
void main()
{
int a=23;
double b=23.123456789;
cout<<a<<'\t'<<b<<endl;
cout<<setprecision(0)<<b<<endl;
cout<<setiosflags(ios::fixed)<<setprecision(7)<<b<<endl;
cout<<setiosflags(ios::scientific)<<b<<endl;
cout<<setprecision(6);
cout<<setiosflags(ios::showbase);
cout<<hex<<a<<'\t'<<a<<endl;
cout<<dec;
cout<<setw(10)<<setfill('*')<<setiosflags(ios::left)<<a<<endl;
cout<<setfill(' ');
}
解答:
10、小型選擇題
(1)下列資料類型不是 C++語言基本資料類型的是( )
A、字元型 B、整型 C、浮點型 D、數組
解析:數組是複合資料類型。
(2) 下列字元列中,可作為 C++語言程式自定義辨別符是( )
A、x B、-var C、new D、3i
解析:辨別符不能以-和數字開頭,new是關鍵字,不能作為辨別符。
(3)下列數中哪一個是 8 進制數( )
A、0x1g B、010 C、080 D、01b
(4)已知 a=1,b=2,c=3 ,則表達是 ++a||-b&&++c 的值為( )
A、0 B、1 C、2 D、3
解析:這個看優先級啦!
(5)下清單達式選項中, ( )是正确的
A、++(a++) B、a++b C、a+++b D、a++++b
解析:(a++)+b 和a+++b兩個表達式概念是一樣的,a++,++在後面的時候,先保留a的運算,a全部運算完後a才自加。(雖然++的優先級比+的高)(有點坑)
(6)已知枚舉類型定義語句為: ( )
enum color{RED,BLUE,PINK=6,YELLOW,GREEN,PURPLE=15};
則下列叙述中錯誤的是( )。
A、枚舉常量 RED的值為 1 B、枚舉常量 BLUE的值為 1
C、 枚舉常量 YELLOW的值為 7 D、枚舉常量 PURPLE的值為15
解析:預設情況下,第一個名稱的值為 0,第二個名稱的值為 1,第三個名稱的值為 2,以此類推。但是,您也可以給名稱賦予一個特殊的值,隻需要添加一個初始值即可。但在第6題的情況下RED仍然為0,YELLOW的值為 7,GREEN的值為8。