分支与循环(二)

1.for循环基础

int main()
{
    int i = 0;
    for (i = 1; i <= 10; i++)//1.最好不在for循环体内改变变量  2.控制变量的区间最好“前闭后开”  

                                     3.初始化,判断,调整部分都可省略;若判断部分被省略,则结果为恒     为真;若被赋值,则恒为假
    {  
        printf("%d", i);
    }
    return 0;
}

2.省略for循环内初始值

int main()
{
    int i = 0;
    int j = 0;
    for (; i < 10; i++)
    {
        for (; j < 10; j++)
        {
            printf("haha\n");//省略初始值j=0,j=10时循环停止且最外层的for不再循环
        }
    }
    return 0;
    }

3.利用getchar()提取无用字符

int main()
{
    int ret = 0;
    int ch = 0;
    char pass[20]= { 0 };
    printf("请输入密码:>");
    scanf("%s", pass);
    while((ch=getchar())!='\n')//利用getchar提取字符的循环将不需要的字符取走,直到取完为止
    {
        ;//空指令
    }
    printf("请确认(Y/N):>");
    ret = getchar();
    if (ret == 'Y')
    {
        printf("确认成功\n");
    }
    else
        printf("失败\n");
    

    
    return 0;
}

4.求循环次数(0次)


int main()
{
    int k = 0;
    int j = 0;
    for (k = 0, j = 0; k = 0; k++, j++)//循环次数为0
        //因为k被赋值后表达式结果为假,不进行循环

        k++;
    return 0;

}

5.do while语句

int main()
{int i = 1;
  do//声明做什么
{
    printf("%d\n", i);
    i++;
} while (i <= 10);//循环次数
return 0;
}

6.计算n个数的阶乘(输入n)

int main()
{
    int i = 0;
    int n = 0;
    scanf("%d", &n);
    int ret = 1;
    for (i = 1; i <= n; i++)
    {
        ret = ret * i;
    }
        printf("%d\n", ret);
    
    return 0;
}

7.题目:计算1!+2!+...+10!的值

int main()
{
    int i = 0;
    int n = 0;
    int ret = 1;
    int sum = 0;
    for (n = 1; n <= 10; n++)
    {
        ret = ret * n;
        sum = sum + ret;
    }
        printf("%d\n", sum);
    
    return 0;
}

8.从数组中打印数字(打印7)

int main()
{
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    char ch = &arr[10];
    for(ch=1;ch<=7;ch++)
    {if(ch==7)
        printf("%d\n", ch);
    }

    return 0;
}

9.二分查找法打印数组中数字(有序数组)

int main()
{
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
    int k = 8;
    int sz = sizeof(arr) / sizeof(arr[0]);//计算元素个数
    int left = 0;//求左下标
    int right = sz-1;//求右下标
    int mid = (left + right) / 2;
    while (left<=right)//在区间内
    {
        if (arr[mid] > k)//判断中间坐标位置
        {
            right = mid - 1;
        }
        else if (arr[mid] < k)
        {
            left = mid + 1;
        }
        else
        {
            printf("%d\n", mid);
            break;
        }
    }
    if (left > right)
    {
        printf("找不到");
    }
    return 0;
}

10.演示代码从两端向中间打印(welcome to China)

#include
#include
#include
#include

int main()
{
    char arr1[] = "Welcome to China";
    char arr2[] = "################";
    int left = 0;
    int right = strlen(arr1)-1;//strlen计算字符串长度且会自动停止
    while (left<=right)
    {
        arr2[left] = arr1[left];
        arr2[right] = arr1[right];
        printf("%s\n", arr2);
        Sleep(1000);//等待1000ms
        system("cls");//清空屏幕
        left++;
        right--;
    }
    return 0;
}

11.模拟输入密码,三次错误即退出程序

#include
#include
#include
#include 

int main()
{
    char password[20]={0};
    int i = 0;
    for (i = 0; i < 3; i++)
    {
        printf("请输入密码:>");
        scanf("%s", &password);
        if (strcmp(password,"123456") == 0)//比较字符串长度用strcmp函数,不能直接“==”
        {
            printf("登陆成功\n");
            break;
        }
    }
    if(i==3)
        printf("登陆失败\n");
    

    return 0;
}

你可能感兴趣的:(c#,c语言)