网站首页 > 基础教程 正文
1966 年 Bohm和Jacpini用数学方法证明了只用三个结构和任意数量的布尔型标志就能表示任何算法。这三种结构是
1 顺序;
2 选择(例如,if-else,switch);
3 循环(例如,whuile,for,do)。
其中循环是代码优化的重点。
循环三要素:循环变量初始化,循环变量的变化(趋向终止条件),循环终止条件。
要做到循环可控,三个条件缺一不可。
1 while循环
break用于终止整个while循环,continue用于终止一次循环:
demo:
#include <stdio.h>
#include <string.h>
int main()
{
char username[30],pwd[30];
int flag = 0;
int count = 0;
while(1)
{
printf("\n 请输入用户名: " );
gets(username);
printf("\n 请输入密码: ");
gets(pwd);
if(strcmp(username,"wwu") == 0 &&
strcmp(pwd,"123") == 0)
{
flag = 1;
break;
}
else
{
printf("\n 用户名和/或密码无效\n ");
}
count++;
if(count == 3)
break;
}
if(flag == 1)
printf("\n 您已成功登录\n ");
else
printf("\n 请三天以后再次尝试\n");
return 0;
}
写成下面这样合适一点:
#include <stdio.h>
#include <string.h>
void login(int n) // 实现一个用户名、密码登录并限制输入次数的函数
{
char username[30],pwd[30];
int count = 1;
printf("\n [提示:如果%d次输入用户名和/或密码错误,程序退出!]\n",n);
while(1)
{
printf("\n 请第%d次输入用户名: ",count);
gets(username);
printf("\n 请第%d输入密码: ",count);
gets(pwd);
if(strcmp(username,"wwu") == 0 &&
strcmp(pwd,"123") == 0)
{
printf("\n 您已成功登录\n ");
// …… //可以执行一个显示主窗口的函数
break;
}
else
{
if(count==n)
{
printf("你已达到%d次,程序退出!",n);
break;
}
else
printf("\n 用户名和/或密码无效,请重新输入:\n ");
}
count++;
}
}
int main()
{
login(3);
getchar();
return 0;
}
2 for循环
for将三要素集中到了一起,易读易写易维护。理解for循环的执行顺序形成while循环的替代顺序就好了。
break用于终止整个for循环,continue用于终止一次循环:
3 do while语句
用于先执行一次循环再做判断是否需要继承循环的结构。
在界面与用户交互的情形下,根据用户的输入来判断是否继续循环的情形下用得比较多:
#include <stdio.h>
#include <string.h>
int main()
{
char rsp;
do {
printf("please enter two values: ");
int val1, val2;
scanf("%d %d",&val1,&val2);
printf("%d + %d = %d\n",val1,val2,val1+val2);
printf("More? [y][n] ");
getchar(); // 接收\n字符
scanf("%c",&rsp);
} while (rsp == 'y' || rsp == 'Y');
}
4 常见循环终止条件
5 循环代码的优化
-End-
猜你喜欢
- 2024-10-19 C语言中的`for`关键字是一种循环控制结构
- 2024-10-19 写给所有人的编程思维-循环篇(for循环)
- 2024-10-19 在PLC编程中,循环语句FOR和WHILE怎么选?
- 2024-10-19 C语言for循环基本流程 c语言for循环程序
- 2024-10-19 C++20尝鲜:基于范围for c++ 范围for
- 2024-10-19 BAT批处理命令之for bat文件中for用法
- 2024-10-19 C语言for循环解析 c语言中for循环
- 2024-10-19 Java Web实战篇:增强for循环实现原理及for循环实战性能优化
- 2024-10-19 1分钟教你学会for循环 for循环教程
- 2024-10-19 C++阶乘:一个数的阶乘和一个范围的阶乘之和
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)