pat复习
1.continue和break
continue 语句
-
作用:
continue
语句用于跳过当前循环中剩余的代码,直接进入下一次循环的迭代。也就是说,当循环执行到continue
语句时,会立即停止当前这次循环中 continue 之后的语句执行,然后重新判断循环条件,若条件满足则开始下一次循环。 -
使用场景:通常在需要根据特定条件跳过某些循环步骤,但又不希望完全终止整个循环的情况下使用。
-
for i in range(1, 6): if i == 3: continue print(i) #这段代码会输出 `1`、`2`、`4`、`5`。当 `i` 等于 `3` 时,遇到 `continue` 语句,会跳过 `print(i)` 这行代码,直接进入下一次循环,所以不会输出 `3`。
break 语句
-
作用:
break
语句用于立即终止整个循环的执行,无论循环条件是否仍然满足。一旦执行到break
语句,循环将完全停止,程序将继续执行循环结构之后的下一条语句。 -
使用场景:一般在满足某个特定条件时,需要提前结束循环的情况下使用。
while True: num = int(input("请输入一个正整数:")) if num <= 0: break print(f"你输入的正整数是:{num}") #在这个示例中,程序会不断要求用户输入一个正整数,直到用户输入的数小于等于 0 时,执行 break 语句,循环结束。
两者的区别
-
对循环执行流程的影响:
continue
只是跳过当前循环的剩余部分,继续下一次循环;而break
则是直接终止整个循环。 -
使用目的:
continue
主要用于在特定条件下跳过某些不必要的循环操作,使循环能够继续进行下一次迭代,以更高效地处理数据;break
则是用于在满足特定条件时,提前结束循环,避免不必要的循环执行,节省时间和资源。
-
-
2.%0nd
printf("%03d",n-1); //按照三位的格式输出,比如说1,输出就是001
3.输出每位之间空一格,最后一位输出换行(2)
//情况一:已知最后一位 //判断是不是最后一位,是则输出换行,不是则输出空格 printf("%03d%c",d[i][j],j==n-1?'\n':' '); //情况二:不知最后一位 //第一个直接输出,从第二个开始输出空格第N位。
4.getchar(), getline(cin,a)(1)
getchar()使用场景: 处理单个字符的输入。例如,在一些简单的文本处理程序中,需要逐个字符地读取用户输入的文本,或者用于跳过输入缓冲区中的不需要的单个字符(如在本题代码中,用于处理cin读取后遗留的换行符)。 getline()使用场景: 当需要读取用户输入的一整行内容(如命令行参数、文本段落等)时非常有用。在本题的代码中,用于读取用户尝试输入的密码,因为密码可能是包含多个字符的字符串,并且是以回车键结束输入的,getline()能够很好地满足这种需求,完整地获取用户输入的密码字符串。
5.判断质数
int IsPrime(int num) { // 从2开始到num的平方根依次检查能否整除num // 因为如果一个数不是质数,那么它一定可以分解成两个因数,其中至少一个小于等于它的平方根 for (int i = 2; i <= sqrt(num); i++) { if (num % i == 0) { // 如果num能被i整除,说明num不是质数,直接返回0 return 0; } } // 如果上面的循环中没有发现能整除num的数,说明num是质数,返回1 return 1; }
6.最大公约数(1)
// 计算两个整数的最大公约数的函数,使用辗转相除法(欧几里得算法):// 辗转相除法的基本原理是:两个整数的最大公约数等于其中较小的数和两数相除余数的最大公约数 int gcd(int a, int b) { return a % b == 0? b : gcd(b, a % b); }
7.在二维数组里面算列和
c[j]+=a[i][j];
8.求字符串长度c.length()
string c; getline(cin,c); for(int i=0;i<c.lenth();i++) { }