04-判断循环控制语句

plana_lab 发布于 2026-08-30 74 次阅读



判断

用if做判断

if语句

使用例

#include <stdio.h>
int main(){
  if(表达式){
    //语句
  }else{
    //语句
  }
  return 0;
}

流程图是

if

还有一个是switch case语句(但是更多是去做多路分支这里先不讲)


循环

while 语句

和if相似,当条件满足就不断做后面大括号的句子

使用例

#include <stdio.h>
int main(){
  while(表达式){
    //语句
  }
  return 0;
}

流程图是

while

要有调整才能跳出循环,否则会进入死循环(条件成立会进入条件循环)

do-while 语句

先做循环然后再去判断

使用例

#include <stdio.h>
int main(){
  do{
    //语句
  }while(表达式);
  return 0;
}

流程图是

do-while

do-while会先执行循环代码后去判断条件

for 循环

for循环像一个计数循环:设定一个计算器,初始化它,然后在计算器到达某值之前,重复执行循环体,而每执行一轮循环,计算器值以一定步进进行调整

使用例

#include <stdio.h>
int main(){
  for(初始条件;循环条件;循环动作){
    //语句
  }
  return 0;
}

流程图是

for

switch-case 多路分支

Switch 可看作一种基于计算的跳转,计算控制表达式的值后,程序会跳转相匹配的 case(分支标号)处,在执行完最后一条语句后,如果后方无 break,则会顺序执行到下面的 case 里去,直到遇到一个 break 或 switch 结束为止。

在 switch 里的所有句子它们处在同一空间中,可无视所有 case,将其认作是一个连续执行的语句的序列,只是当出现 break 时会打断当前语句的序列。 case 则是决定从哪里开始做事(执行)的位置。

使用例

#include <stdio.h>
int main(){
  switch(控制表达式){
    case 常量1:
      //语句
    case 常量2:
      //语句
    default:
      //语句
  }
  return 0;
}

控制

break

永久停止当前循环

continue

在循环中意味着继续执行下一次循环

它们的流程图是

breakvscontinue

练习

随机数的生成-猜数字

rand(void) 使用例 int = rand() 生成一个随机数 如何限制它的范围:

例如:生成一个1-100之间(不包括100) int a = rand() % 100

用a去承接生成的随机数 可以用这个来写猜数字的小游戏练手了

平均数

每读入一个数,将它加入到累加的和的变量,之后把输入的值相加,读到个负数代表输入完毕,之后计算

流程图

game1

整数逆序

一个数是由多位数字组成的, 如何分解出整数的各个位上的数字,后加以计算

个位:对整数做 %10 对整数做 /10 十位:对对整数做 /10 做 %10 依此类推。

输入数字(整数)整型①变量 先取模得到个位(1234%10=1234/10的余数) 用一个变量存下个位的值②=0 将①后除10来减少1位数(1234/10→123,因为是取整数,所以4被舍弃了) 然后把减少的1位数字的那个数存回①变量里(123→x)x=123 将①的值再%10得到个位,(123%10)→3 此时第1次存下的之前的值乘10来变十位,此次的值加入,成为个位(4×10+3)→43 将①/10减一位数(123%10=12) 依次类推

猜数字答案

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <windows.h>

int main(void){
    srand(time(NULL));
    int numb = rand()%100+1;
    unsigned int times =0;
    int enternumber =0;
    const int yuqi =7;
    printf("这是一个猜数字游戏\n");
    Sleep(1000);
    printf("范围是1-100\n");
    Sleep(1000);
    printf("准备好了吗\n");
    Sleep(1000);
    printf("3\n");
    Sleep(1000);
    printf("2\n");
    Sleep(1000);
    printf("1\n");
    Sleep(1000);
    printf("游戏开始了\n");
    printf("请输入这个数字\n");
    scanf("%d",&enternumber);
    times++;
    do
    {
        
    if(enternumber!=numb){
    
    if(enternumber>numb){
        printf("你输入的数字大了\n");
        times++;
        printf("请再次输入这个数字\n");
        scanf("%d",&enternumber);
    }
    
    if (enternumber<numb)
    {
         printf("你输入的数小了\n");
         times++;
         printf("请再次输入这个数字\n");
         scanf("%d",&enternumber);
    }
    }
    
} while (enternumber!=numb);
    Sleep(1000);
    printf("恭喜你猜对了,数字是%d,你用了%u次\n",numb,times);
    if (yuqi<times)
{
    printf("但是比预期慢");
};   
    if(yuqi>times){
    printf("比预想的更好呢,继续加油");
};
    if(yuqi==times){
    printf("和预期一样的完美");
};
    printf("游戏将会在10s后自动关闭");
    Sleep(10000);
    return 0;
}

平均数答案

#include <stdio.h>

int main() {
    
    int sum = 0;
    int count = 0;
    int num =0;
    
    while (1)
    {    
        printf("Enter a number (enter -1 to stop):\n ");      
        scanf("%d",&num);       
        if(num==-1)
        {
            break;
        }
        count++;
        sum=num+sum;
    }
    if(count>0){
             double avg;
             avg = (double)sum / count;
             printf("average is %f  \n",avg);
             printf("your enter %d times\n",count);
            }else{
                printf("no enter the number");
            }
    return 0;
}

整数逆序答案

#include <stdio.h>

int main(){
    int x;
    int num;
    int returnd =0;
    scanf("%d",&x);
    
    while(x>0){
        num =x%10; //取个位
        //printf("%d",num); //输出个位数
        returnd=returnd*10+num;
        printf("x=%d\nnum=%d\nreturnd=%d\n",x,num,returnd);
        x /= 10;

    }
    printf ("%d\n",returnd);
}
此作者没有提供个人介绍。
最后更新于 2026-09-12