文章目录
#include<bits/stdc++.h> //万能文件头!!!用了它就可以不用敲其他头文件了,yyds!!!
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。
(7)下列程序运行的结果是?
#include<bits/stdc++.h>
using namespace std;
int main()
{
const double pi = 3.1415926;
cout << setprecision(3) << pi << endl
<< setiosflags(ios::fixed) << pi << endl
<< setprecision(8) << setfill('*') << setw(12) << pi << endl;
return 0;
}
解答:
(8) 若 int x=3,y=5; 则表达式 x&y++%3的值为( )
A、0 B、1 C、2 D、3
(9)下列常量正确的是( )
A、”hello World ” B、1FL C、 3.14UL D、1.8E-3
(10)若 char x=97;, 则变量 x 包含几个字符( )
A、1 个 B、2 个 C、4 个 D、8 个
11、填空题
(1)C++语言标示符是以字母或下划线开头的,由字母、数字、下划线组成。
(2)在 C++语言中,char 型数据在内存中的存储形式是ASCII。
(3)在内存中,存储字符‘ x’占用 1 个字节,存储字符串“ x”要占用2个字节。
(4)符号常量可以用宏定义 define 和const表示。
(5)转义字符序列中的首字符是\。
(6)空字符串的长度是 0。
(7)表达式 cout<< ’\n ’ ; 还可以表示为 cout<<endl;。
(8)若要为 unsigned int 定义一个新的名字 UINT 应采用的语句是 typedef unsigned int UINT;。
(9)请编写程序不借助第 3 个变量实现 a,b 值得交换。
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a, b;
cout << "请输入需要交换的a和b:";
cin >> a >> b;
a = a + b;
b = a - b;
a = a - b;
cout << "交换后的a和b分别为:" << a << '\t' << b;
return 0;
}
(10)大多数 C++程序都要包含头文件 iomanip.h。该文件中包含了所有输入 / 输出流操作所需的基本信息。当使用带参数的操作时,程序中必须包含头文件iostream.h。
12、编程题
(1)编写一个程序,输入一个三位数,分别输出该数的百位、十位和个位。
(2) 编写一个程序打印出各种基本数据类型、几个你自己定义的复合数据类型的大小。使用 sizeof 运算符。
解答:
(1)
//编写一个程序,输入一个三位数,分别输出该数的百位、十位和个位
#include<bits/stdc++.h>
using namespace std;
int main()
{
int count, hundred, ten, one;
cout << "请输入一个三位数:";
cin >> count;
hundred = count / 100;
ten = (count % 100) / 10;
one = (count % 100) % 10;
cout << "这个数字的百位、十位、个位分别为:" << hundred << '\t' << ten << '\t' << one << endl;
return 0;
}
(2)
//编写一个程序打印出各种基本数据类型、几个你自己定义的复合数据类型的大小。
//使用 sizeof 运算符
#include<bits/stdc++.h>
using namespace std;
void main()
{
int array[10];
enum month { Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec };
char* p;
cout << "The size of char is:" << sizeof(char) << endl
<< "The size of int is:" << sizeof(int) << endl
<< "The size of short int is:" << sizeof(short int) << endl
<< "The size of long int is:" << sizeof(long int) << endl
<< "The size of float is:" << sizeof(float) << endl
<< "The size of double is:" << sizeof(double) << endl
<< "The size of long double is:" << sizeof(long double) << endl
<< "The size of signed int is:" << sizeof(int) << endl
<< "The size of unsigned int is:" << sizeof(unsigned) << endl
<< "The size of array is:" << sizeof(array) << endl
<< "The size of month is:" << sizeof(month) << endl
<< "The size of p is:" << sizeof(p) << endl;
}