1. 主页
  2. 文档
  3. Level1题解(1-10)
  4. 第7课 顺序结构

第7课 顺序结构

Q1.交换两个变量的值

三种方法交换两个变量的值:

1.定义一个临时变量(借助第三个变量)

int a = 4, b = 6;
int temp = a;         //借助临时变量temp进行数据交换
a = b;
b = temp;

2.无需定义临时变量(使用加法)

int a = 4, b = 6;
a = a + b;        // a = 10
b = a - b;        // b = 4
a = a - b;        // a = 6

3.使用异或运算(相同的异或之后则为0,不相同的异或之后则为1)。当前还没有学习异或运算,可以作为扩展学习。

int a = 4, b = 6;
a = a ^ b;         //第一步
b = a ^ b;         //第二步
a = a ^ b;         //第三步
理解:
a: 0100
b: 0110
第一步:
a = a ^ b; //a: 0010
最后a存储的是a与b,哪一位是相同的,哪一位是不同的,作为标记.
这个标记很重要,因为二进制只有0和1,相同不用变,不相同取反
第二步:
b = a ^ b; //b: 0100
此时a只是一个标记,a(标记)与b异或运算,如果a第i位是0,新的b的i位则与右边的(原来的)b,是相同的,如果a的第i位是1,新的b的i位则与右边的(原来的)b,是不相同的,最后为0100.
第三步:
a = a ^ b; //a: 0110
同理可得(燃鸭)
记结论吧:
异或结论:对m连续异或n两次,返回的结果依旧为m。
n^ m ^n --> m
m ^ n ^n --> m

Q2.输入输出一串字符

定义单个字符是char,而下面代码中的char s[20]定义了一个包含20个字符的字符数组,也就是我们常说的字符串。

#include <cstdio>
using namespace std;
int main(){
	char s[20];       //定义了一个包含20个字符的字符数组,也就是我们常说的字符串
	scanf("%s",s);     //输入字符串s,注意这个字符串不能带空格,带空格就只能读到前面一部分
	printf("%s",s);    //输出字符串s
	
	return 0;
}
#include <cstdio>
using namespace std;
int main(){
	char s[20];       //定义了一个包含20个字符的字符数组,也就是我们常说的字符串
	gets(s);     //输入字符串s,这个可以带空格,直到回车才结束输入
	puts(s);    //输出字符串s
	
	return 0;
}

Q3.圆柱体的表面积

输入圆柱体的底面半径r和高h,输出圆柱体的表面积,假设π=3.1415926。
圆柱体表面积=侧面面积+上底面面积+下底面面积=2πrh+πr2+πr2

const double PI=3.1415926;                    //关键字const ,定义一个常量
	
s=2*PI*r*h+PI*r*r*2;          //圆柱体表面积s=2*PI*r*h+PI*r*r*2

Q4.三位数三个数字之和

运用除法运算和模运算分别取得一个三位数的个位、十位和百位的三个数字,然后将三个数字相加。

	bai=n/100;                  //n为输入的数字,变量bai表示百位,shi表示十位,ge表示个位
	shi=(n%100)/10;
	ge=n%10;
	printf("%d",bai+shi+ge);

Q5.反向输出一个三位数

与第4题类似,分别取得百位、十位、个位以后,逐个输出变量个位、十位、百位的值即可。