目录
模拟题示例
签到题:输入一个数字,假如是偶数就将该偶数除2,假如是奇数就将该奇数*3+1,直到数字为1就停止,问在变换过程中的最大数字是多少,变换到1一共花了几步?
cpp
#include <iostream>
using namespace std;
int main() {
long long n; // 使用long long以支持大数字
cout << "请输入一个正整数: ";
cin >> n;
if(n <= 0) {
cout << "请输入一个正整数。" << std::endl;
return 1;
}
int steps = 0;
long long maxNumber = n;
while (n != 1) {
if (n % 2 == 0) {
n /= 2;
} else {
n = 3 * n + 1; // 此处修正为正确的操作
}
if (n > maxNumber) {
maxNumber = n;
}
steps++;
}
cout << "变换过程中的最大数字是: " << maxNumber << endl;
cout << "变换到1共花了 " << steps << " 步。" << endl;
return 0;
}
冒泡排序
cpp
#include <iostream>
void swap(int &a, int &b){
int temp;
temp = a;
a=b;
b=temp;
}
int main(){
int a[7]={2,9,4,7,5,8,1};
for(int i =0;i<7-1;i++){ //循环n-1次,7是数组元素个数,"< 7-1"是代表循环0,1,2,3,4,5(共计6次)
for(int j =0;j<6-i;j++){ //冒泡排序每一次循环,可以确定最后一个数,那么就截止到上一次确定的数之前,这里的最大位不应该包含最后一个,
//所以这里是截止到"<6-i",实际上是"<=6-i-1",然后用j+1来表示数组最后一位,比如i=0,a[j+1]==a[6-0-1+1]=a[6]
if (a[j]>a[j+1]){
swap(a[j],a[j+1]);
}
}
}
for(int i =0;i<6;i++){
printf("%d",a[i]);
}
return 0;
}
二维数组
cpp
#include <iostream>
int main(){
int a[5][6]={};//5行六列
for(int i =0;i<5;i++){
for(int j =0;j<6;j++){
printf("%d \t",a[i][j]);
}
printf("\n");
}
return 0;
}
字符数组
cpp
#include <iostream>
int main(){
char a[11] ="hello cpp!";//字符占10个,还有一个end结束符,共计11
for(int i=0;i<10;i++){
printf("%c",a[i]);
}
return 0;
}
局部变量
cpp
#include <iostream>
void change(int &x){
x = x+1;
}
int main(){
int b =10;
change(b);
printf("%d",b);
return 0;
}
输出是 11
cpp
#include <iostream>
void change(int x){
x = x+1;
}
int main(){
int b =10;
change(b);
printf("%d",b);
return 0;
}
输出是10