C基础

条件运算符

()?():()

A?B:C

表达式A成立就执行B否则执行C

printf("%d",(3<5)?8:9);  结果是:8

 

逗号运算符

(),()

逗号运算符的结果是后边表达式的结果

printf("%d",(5,6));   结果是:6

 

选择控制语句

if语句

if(条件表达式){

复合语句,语句块;

}

int a = 9;
if(a>6){
   printf("a>6\n");    结果是:a>6
}
/*****************************************************/
int a = 8;
if(a<6)
   printf("a<6");
   printf("上面的语句不会执行\n"); 结果是:上面的语句不会执行

 

if(条件表达式){

复合语句,语句块;

}else{

复合语句,语句块;

}

int a = 3;
if(a>5){
   printf("a>5\n");    
}else{
   printf("a<5\n");  结果是:a<5
}

 

注意if和else之间只能有一条语句,或者有一个复合语句,否则编译会出错。

//eg:
int a = 3;
if(a>5)
   printf("a>5\n");
   printf("我是bug");
else{
   printf("a<5\n");  结果是:编译报错
}

 

if(条件表达式1)

{

}

else if(条件表达式2)

{

}

else if(条件表达式3)

{

}

.

.

.

else

{

}

在判断条件表达式时是从上往下判断,一旦有成立的表达式,执行对应的复合语句,下边的就不再判断了,各个条件判断是互斥的。

    int N = 0;
   float score;
 

       
   printf("please input a score:\n");
   scanf("%f",&score);
   if(score < 0 || score > 100)
  {
       printf("请输入1`100之间的成绩\n");

  }
    else if ((N++),(score < 60))
  {
       printf("E\n");
     
  }
    else if ((N++),(score < 70))
  {
       printf("D\n");
       
  }
    else if ((N++),(score < 80))
  {
       printf("B\n");
     
  }
   else
  {
       printf("A\n");
       N++;
  }
   printf("N:%d",N);
   
//eg:输入79 结果是:B
 N:3
   

switch语句

switch(表达式)//表达式只能是字符型或整型(short int int long int)

{

case 常量表达式1:

语句1;

break;

case 常量表达式2:

语句2;

break;

.

.

.

default:语句3;break;

 

}

#include<stdio.h>

int main()
{
   int n = 0;
   printf("请输入1`7的一个数\n");
   scanf("%d",&n);
   switch (n)
  {
   case 1:
       printf("星期一\n");
       break;
   case 2:
       printf("星期二\n");
       break;
   case 3:
       printf("星期三\n");
       break;
   case 4:
       printf("星期四\n");
       break;
   case 5:
       printf("星期五\n");
       break;
   case 6:
       printf("星期六\n");
       break;
   case 7:
       printf("星期七\n");
       break;
   
   
   default:
   printf("输入错误请输入1`7的一个数\n");
       break;
  }
   return 0;
}

循环控制语句

for循环

for(表达式1:表达式2:表达式3)

{

//复合语句,循环体

}

第一次进入for循环的时候执行表达式1,表达式1只执行一次

表达式2,是循环的条件,只有表达式2为真了,才执行循环体,每次进入循环体之前要判断表达式2是否为真。

每次执行完循环体后,首次执行表达式3

for (初始化表达式; 循环条件表达式; 迭代表达式)
{
   // 循环体代码块
}
/*初始化表达式:在循环开始之前执行一次,并且用于初始化循环变量或设置其他必要的变量。这个表达式通常用来声明并初始化一个计数器。
循环条件表达式:在每次循环迭代之前进行检查,如果条件为真(非零),则继续执行循环体;如果条件为假(零),则跳出循环。
迭代表达式:在每次循环迭代结束后执行,用于更新循环变量或进行其他迭代操作。*/

以下是一个示例,展示如何使用 for 循环计算从 1 到 10 的整数之和:


int main() {
   int sum = 0;

   for (int i = 1; i <= 10; i++) {
       sum += i;
  }

   printf("Sum: %d\n", sum);

   return 0;
}

while循环

while (循环条件表达式) { // 循环体代码块 }

while 循环会在每次循环迭代之前检查循环条件,如果条件为真(非零),则会执行循环体内的代码块;如果条件为假(零),则跳出循环。



int main() {
   int sum = 0;
   int i = 1;

   while (i <= 10) {
       sum += i;
       i++;
  }

   printf("Sum: %d\n", sum);

   return 0;
}

do { // 循环体代码块 } while (循环条件表达式);

C 语言中的 do-while 循环是一种先执行循环体,然后再检查循环条件的循环结构。也就是说,无论循环条件是否为真,循环体至少会执行一次。do-while 循环适用于需要至少执行一次循环的情况。

 do
{
     printf("I love you\n");
}while(0);

 


int main() {
   int sum = 0;
   int i = 1;

   do {
       sum += i;
       i++;
  } while (i <= 10);

   printf("Sum: %d\n", sum);

   return 0;
}

在 C 语言中,breakcontinue 是用于控制循环的关键字。

  1. break:

    • 当遇到 break 关键字时,会立即终止当前所在的循环(forwhiledo-while),然后跳出循环,继续执行循环体之后的代码。

    • break 主要用于提前结束循环,即使循环条件还未达到终止的条件。

       

2.continue:

  • 当遇到 continue 关键字时,会立即跳过当前迭代的剩余代码,并开始下一次循环迭代。

  • continue 主要用于越过某些特定条件不满足的迭代,但并不终止整个循环。

goto语句:

goto 是一个用于无条件转移到程序中指定标签位置的关键字。它可以使程序跳过中间步骤直接转移到目标位置。

goto 标签;
// ... 其他代码 ...
标签:
// 标签处的代码
  • goto:关键字用于指示程序转移的目标位置。

  • 标签:用户定义的标识符,用于标记指定位置的代码段。


    int main() {
       int num;

       printf("请输入一个数字:");
       scanf("%d", &num);

       if (num < 0) {
           goto error;
      }

       printf("输入的数字是:%d\n", num);

       return 0;

    error:
       printf("错误:输入的数字不能是负数。\n");
       return 1;
    }

     

  •  

 

posted @ 2023-07-08 21:05  r7ftf  阅读(16)  评论(0)    收藏  举报