代码+运行图,需要注意的地方在代码图上有批注
目录:
一、求一个数的阶乘
二、求一个数的阶乘和
三、二分查找(折半查找):但前提条件是数组必须有序,不可以无序
四、覆盖输出:多个字符从两侧移动,向中间汇聚
五、判断密码正误:只允许输入三次密码判断对错
六、猜数字小游戏:生成100以内随机数猜这个数是多少
七、打印素数:用sqrt()函数
一、求一个数的阶乘
#include<iostream>
using namespace std;
int main()
{
int n = 0;
int ret = 1;//ret=retain保留的意思
cin >> n;
for (int i = 1; i <= n; i++)
{
ret = ret * i;//这里的运算别再写错了
}
cout << n << "的阶乘是" << ret << endl;
return 0;
}
二、求一个数的阶乘和
#include<iostream>
using namespace std;
int main()
{
int n = 0, ret = 1, sum = 0;
cin >> n;
for (int i = 1; i <= n; i++)
{
ret = ret * i;
sum += ret;
}
cout << n << "的阶乘相加是" << sum;
return 0;
}
三、二分查找(折半查找):但前提条件是数组必须有序,不可以无序
分析:
#include<iostream>
using namespace std;
int main()
{
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
int k = 8;//k是要查找的数
int sz = sizeof(arr) / sizeof(arr[0]);//数组的元素个数
int lift = 0, right = sz - 1;//最左边和最右边的元素位置
while (lift <= right)
{
int mid = (lift + right) / 2;;//这个要放里面!!!!!!!!!
if (arr[mid] < k)
{
lift = mid + 1;
}
else if (arr[mid] > k)
{
right = mid - 1;
}
else//这里不可以跟(arr[mid]=k)
{
cout << "找到了,下标是" << mid << endl;
break;
}
}
if (lift > right)
cout << "找不到了" << endl;
return 0;
}
运行截图:
#include<iostream>
#include<windows.h>//Sleep函数头文件
using namespace std;
int main()
{
char arr1[] = "Happy New Year 2023!!!!";//注意这里使用的是双引号!!
char arr2[] = "#####################";
int sz = sizeof(arr1) / sizeof(arr1[0]) - 2;//注意字符串元素位置要减2!!因为还有/0算在里面要减掉
int lift = 0, right = sz - 2;
//sz=strlen(arr1)
while (lift <= right)//这里有=!!!
{
arr2[lift] = arr1[lift];
arr2[right] = arr1[right];
cout << arr2 << endl;
Sleep(1000);//单位是毫秒,S大写!!!!
system("cls");//有这个,他们都会在同一行,后面覆盖前面,没有就会换行。
lift++, right--;
}
return 0;
}
#include<iostream>
using namespace std;
int main()
{
int i = 0;
char password[30] = { 0 };
for (i = 0; i < 3; i++)
{
cout << "输入密码:";
cin >> password;
if (strcmp(password, "goodafternoon") == 0)
{
cout << "密码正确";
break;
}
else
{
cout << "密码错误";
}
}
if (i == 3)
{
cout << "三次密码都输入错误,退出程序" << endl;
}
return 0;
}
void mima()
{
char arr1[] = "January";
char arr2[20] = {0};
int i = 0;
for (i = 0; i < 3; i++)
{
cin >> arr2;//这个要放里面!!!!!!!!!!!!!!!!!!!!!!
if (strcmp(arr1, arr2) == 0)//这个是==0!!!!!!!!!!!!!!!
{
cout << "right";
break;//这里一点一点要加!!!!!!!!!!!!!!!!!!!!!
}
else
{
cout << "np";
}
}
if (i == 0)
{
cout << "三次密码都输错了";
}
}
运行结果:
#include<iostream>
#include<time.h>//时间戳头文件
using namespace std;
void menu()
{
cout << "#######1.paly########" << endl;
cout << "#######0.exit########" << endl;
}
void game2()
{
int random_num = rand() % 100 + 1;//生产一个一百以内的随机数
int guess = 0;
while (1)//这里的1一定要注意!!!!!!!!!!
{
cout << "猜数字";
cin >> guess;
if (guess < random_num)
{
cout << "猜小了" << endl;
}
else if (guess > random_num)
{
cout << "猜大了" << endl;
}
else
{
cout << "好耶,猜对了" << endl;
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned)time(NULL));
do
{
menu();
cout << "请选择:";
cin >> input;
switch (input)
{
case 1:
game2();
break;
case 0:
break;
default:
cout << "选择错误,请重新输入:";
break;//这里的break好像有没有都可以
}
}
while (input);
return 0;
}
while(1)这里的疑惑解答:0为假 非0为真,这里只要是非0 那就表示条件为真,就是死循环
,肯定是不能去掉的,这是while循环的条件,但是一般我们表示真就是使用1
为什么使用1呢,因为bool类型出来之后,有了true和false true其实就是1while循环去写死循环,一般都是true或者1 作为while循环的条件
运行结果:
#include<iostream>
using namespace std;
int main()
{
int a = 100, b = 200;
for (int i = a; i <= b; i++)
{
int x = 1;//这里放x,位置别乱喽
for (int j = 2; j <= sqrt(i); j++)/这里有没有等号都可以
{
if (i % j == 0)
{
x=0;
}
}
if (x == 1)
cout << i << " ";
}
return 0;
}