专业编程基础技术教程

网站首页 > 基础教程 正文

C|图文简单理解循环结构 c++循环结构例题解析

ccvgpt 2024-10-19 03:28:08 基础教程 9 ℃

1966 年 Bohm和Jacpini用数学方法证明了只用三个结构和任意数量的布尔型标志就能表示任何算法。这三种结构是

1 顺序;

C|图文简单理解循环结构 c++循环结构例题解析

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 常见循环终止条件

C++|循环的结束条件与内存单元地址(或指针)的移动

5 循环代码的优化

C|代码优化:减少函数调用、内存引用,循环展开及提高并行度

-End-

Tags:

最近发表
标签列表