C++第一阶段测试题

C++第一阶段测试题


一、选择题
(1)下列数据类型不是 C++语言基本数据类型的是(D )
A、字符型 B、整型 C、浮点型 D、数组
解析:数组是复合数据类型。
(2)下列字符列中,可作为 C++语言程序自定义标识符是(A )
A、x B、-var C、new D、3i
解析:标识符不能以-和数字开头,new是关键字,不能作为标识符。
(3)已知 a=1,b=2,c=3 ,则表达是 ++a||-b&&++c 的值为( B)
A、0 B、1 C、2 D、3
解析:这个看优先级啦!
(4)若 char x=97;, 则变量 x 包含几个字符(A )
A、1 个 B、2 个 C、4 个 D、8 个
二、填空题
(1)C++语言标示符是以字母或下划线开头的,由字母、数字、下划线组成。
(2)在 C++语言中,char 型数据在内存中的存储形式是ASCII。
(3)在内存中,存储字符‘ x’占用 1 个字节,存储字符串“ x”要占用2个字节。
(4)符号常量可以用宏定义 define 和const表示。
(5)转义字符序列中的首字符是\。
(6)表达式 cout<< ’\n ’ ; 还可以表示为 cout<<endl;。
三、解答题
(1)有 a、b、c、max四个变量 a、b、c 中的最大值,并将结果放入 max中。
解答max = (a > b) ? (a > c ? a : c) : (b > c ? b : c);

#include<iostream>
using namespace std;
int main()
{
	int a,b,c;
	int max;
	cin>>a>>b>>c;
    max = (a > b) ? (a > c ? a : c) : (b > c ? b : c);
	cout << max ;
	return 0;
}

(2)下列程序的运行结果为

#include<iostream>
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;
}

X=? i=?
解答:对于表达式中的“与”运算而言,只要有一个操作数为假,结果为假。所以当第一个操作数为假时,不在求解其它操作数。对于表达式中的“或”运算而言,只要有一个操作数为真,则结果为真。所以当第一个操作数为真时,不在求解其它操作数。本题中 a>b 为假,所以表达式 a>b&&++i 为假,而++i 没有执行。故i:0,x:0。

(3)a=1|3<<5
a=?
解答:<<运算符的优先级高于 | 运算符,所以先算 3<<5 结果为96(二进制 1100000),然后与 1 做按位与运算则结果为 97(二进制 1100001)。答案为:a= 97

#include<iostream>
using namespace std;
int main()
{
	int a;
    a=1|3<<5; 
	cout << a ;
	return 0;
}

四、程序编写题
(1)请编写程序不借助第 3 个变量实现 a,b 值得交换。
方法一

#include<iostream>
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;
}

方法二

#include<iostream>
#include<bitset>
using namespace std;
int main() {
	int a,b;
	a = 103;
	b = 53; 
    cout << "a=" <<(bitset<8>)a << endl;
    cout << "b=" <<(bitset<8>)b << endl;
    a=a^b;
    cout << "a^b=" <<(bitset<8>)a << endl;   
    b=a^b;
    a=a^b;
    cout << "a=" <<(bitset<8>)a << endl; 
    cout << "b=" <<(bitset<8>)b << endl; 
	return 0;
}

(2)编写一个程序,输入一个三位数,分别输出该数的百位、十位和个位。

#include<iostream>
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;
}

(3)改变灯的状态,灯的编号顺序 8 7 6 5 4 3 2 1,进行如下操作。

  1. 有8个led灯,分别在8个不同的教室
  2. 8个灯初始状态未知
  3. 点亮第 1 3 5 7 号灯
  4. 把5号灯熄灭
  5. 把4号灯点亮
  6. 把除了4号灯的其他灯全熄灭
#include<iostream>
#include<bitset>
using namespace std;
int main() {
	 unsigned char led = 0; //使用无符号char(1个字节= 8bit)类型来表示八个灯的状态
    cout <<"led=0时二进制的值:    "<< (bitset<8>)led << endl; //查看当前led的二进制的值 
	//led = 0x55;
	//cout <<"led=55时二进制的值: "<< (bitset<8>)led << endl;//查看当前led的二进制的值 
    //点亮第1 3 5 7号灯
    led = led | 0x55;  //这样不会影响2 4 6 8 原有的状态
                       //若直接赋值,把1 3 5 7 点亮的同时,把其他灯熄灭了
  	cout <<"led | 0x55时二进制的值:   "<< (bitset<8>)led <<"  点亮第1 3 5 7号灯" <<endl;//查看当前led的二进制的值                      
    //把5号灯熄灭
    led = led & ~(1<<4);
    cout <<"led & ~(1<<4)时二进制的值:"<< (bitset<8>)led <<"  把5号灯熄灭" << endl; //查看当前led的二进制的值 
    //把4号灯点亮
    led = led | (1<<3);
    cout <<"led | (1<<3)时二进制的值: "<< (bitset<8>)led <<"  把4号灯点亮" << endl; //查看当前led的二进制的值 
    //把除了4号灯的其他灯全熄灭
    led = led & (1<<3);
    cout <<"led & (1<<3)时二进制的值: "<< (bitset<8>)led <<"  把除了4号灯的其他灯全熄灭" << endl; //查看当前led的二进制的值    
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秃突兔兔突秃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值