文章目录
前言
提示:这里可以添加本文要记录的大概内容:
提示:以下是本篇文章正文内容,下面案例可供参考
1.重复输入用户名和密码
1.1 项目需求
在上一个项目的基础上允许多次输入用户名和密码
1.2 项目实现
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
int main005(void) {
string loginName;
string pwd;
while (true)
{
cout << "请输入用户名:";
cin >> loginName;
cout << "请输入密码:";
cin >> pwd;
if (loginName == "54hk" && pwd == "123456")
{
break;
}
else
{
cout << "用户名或密码错误!" << endl;
system("pause");
system("cls");
}
}
system("cls");
cout << "1.网站404攻击" << endl;
cout << "2.网站篡改攻击" << endl;
cout << "3.网站攻击记录" << endl;
cout << "4.DNS攻击" << endl;
cout << "5.服务器重启攻击" << endl;
cout << "6.退出" << endl;
system("pause");
return 0;
}
2.while 循环、for 循环和do while循环
2.1 while循环
;while 循环的使用:
#include <iostream>
#include <Windows.h>
using namespace std;
int main(void) {
//计算1+...+100
//while循环
int i = 1;
int sum = 0;
while (i <= 100)
{
sum += i;
i++;
}
cout << sum << endl;
system("pause");
return 0;
}
2.2 for 循环
for循环的使用:
#include <iostream>
#include <Windows.h>
using namespace std;
int main(void) {
//for循环 已经确定循环次数时建议使用for循环
sum = 0;
for (size_t i = 1; i <= 100; i++)//在c89标准中,表达式1不能定义变量,需要提前定义
{
sum += i;
}
cout << sum << endl;
system("pause");
return 0;
}
2.3 do while循环
do while 的使用
#include <iostream>
#include <Windows.h>
using namespace std;
int main(void) {
//do while循环
sum = 0;
i = 1;
do
{
sum += i;
i++;
} while (i <= 100); //满足条件则继续循环
cout << sum << endl;
system("pause");
return 0;
}
2.4 continue 与 break循环控制
2.4.1continue
continue 跳出本次循环接着执行下一次循环
(1)for中的continue
(2)while中的continue
2.4.2 break
break 结束本层循环
2.5 循环的嵌套
使用嵌套的循环简单的模拟时钟
while (true)
{
for (size_t i = 0; i < 24; i++)
{
for (size_t j = 0; j < 60; j++)
{
for (size_t k = 0; k < 60; k++)
{
system("cls");
cout << i << "时" << j << "分" << k << "秒" << endl;
Sleep(1000); //休眠一秒
}
}
}
}
3.goto语句
无条件转移语句:goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的前面,标号后加半角冒号“:”。语句标号起标识语句的作用,与 goto 语句配合使用。
但在在普通的开发中并不推荐使用。
#include <iostream>
#include <string>
#include <Windows.h>
using namespace std;
int main0502(void) {
string say;
for (size_t i = 0; i < 3; i++)
{
cout << "开启第" << i+1 << "次相亲" << endl;
cout << "你喜欢打LOL吗?" << endl;
cin >> say;
if (say.find("no") == say.npos && say.find("不") == say.npos)
{
cout << "我喜欢打ADC,KD9.9,你觉得我怎么样?" << endl;
cin >> say;
if (say.find("不怎么样") == say.npos && say.find("你是个好人") == say.npos)
{
goto Happy; //goto 语句的使用
}
else
{
continue;
}
}
else
{
continue;
}
}
system("pause");
return 0;
Happy: //这里设置goto语句的标志为Happy
cout << "一起撸去吧!" << endl;
system("pause");
return 0;
}
4.练习
4.1 输入函数打印*号三角形
(1)项目需求:
在控制台输入整形的行数,根据行数打印*号三角形
(2)项目实现:
/*
*
***
*****
分析:
最外层循环循环 rows 次
第1行需要循环 rows 次,rows前的位置打印空格,rows位置打印 *
第2行需要循环 rows + 1次,rows-1前的位置打印空格,rows-1及以后的位置打印 *
.
.
.
第rows行则需要循环 rows + (rows-1)次,rows - (rows-1)前的位置打印空格(没有空格),1及之后的位置打印*
索引位置从0开始,则内层循环的次数为 j <= rows + i 次
判断打印空格的条件为 j < rows - i
*/
cout << "打印三角形的*" << endl;
cout << "请输入行数:";
cin >> rows;
for (size_t i = 0; i < rows; i++)
{
for (size_t j = 0; j <= rows + i; j++)
{
if (j < rows - i)
{
cout << " ";
}
else
{
cout << "*";
}
}
cout << endl;
}
4.2 打印九九乘法表
(1)项目需求:
在控制台打印九九乘法表
(2)项目实现:
//打印乘法表
/*
setw(width) 是下一个数据的输出宽度为width,
仅对下一个数据的输出有效, 即只有一次效果
std::left 使数据在自己规定的宽度内左对齐,默认是右对齐, 持续有效
*/
//int width;
cout << "打印九九乘法表" << endl;
for (size_t i = 1; i < 10; i++)
{
for (size_t j = 1; j <= i; j++)
{
cout << j << "*" << i << "=" << i * j << "\t";
/*width = (j == 1) ? 1 : 2;
cout << j << "*" << i<< "=" << i * j << setw(width) << left << " ";*/
}
cout << endl;
}
4.3 十进制与二进制的相互转换
(1)项目需求:
<1>输入10进制数转换为2进制数输出
<2>输入2进制数转换为10进制数输出
(2)项目实现:
//输入一个10进制的正整数,把它转换为2进制输出。
/*
除2取余存储,逆序输出
循环结束条件为num = 0
*/
int num;
int bit[255];
int i = 0;
cout << "请输入一个正整数:";
cin >> num;
while (num)
{
bit[i] = num % 2;
num = num / 2;
i++;
}
for (int j = i - 1; j >= 0; j--)
{
cout << bit[j];
}
//二进制转十进制
//存储在字符串中,通过字符串位数来计算
string bNum;
int dNum = 0;
int mul = 1;
cout << "请输入一个二进制数:";
cin >> bNum;
for (int i = 0; i < bNum.length(); i++)
{
int temp = bNum[bNum.length() - i - 1] - '0';// '1'-'0' = 1 '0'-'0' = 0
dNum += temp * mul;
mul *= 2;
}
cout << dNum << endl;