C语言学习日记四

本文介绍了C语言中的几种循环语句,包括while、for和dowhile,以及关系运算符在循环条件中的应用。此外,还讲解了其他赋值运算符、逗号运算符的使用,并提到了数组的基本概念,包括如何通过下标访问数组元素。文章还讨论了嵌套循环的运用,并强调了编程实践中的一些注意事项,如函数的前置声明和return语句的使用。
摘要由CSDN通过智能技术生成

C控制语句:循环

一、while语句

while循环的通用形式如下:

while( expression )
	statement
  • statement 部分可以是以分号结尾的简单语句,也可以是用花括号括起来的复合语句。
  • 如果expression 为真(非0),那么执行statement部分一次,然后再判断expression。在expression为假(0)之前,循环的判断和执行一直重复下去,每一次循环都被称为迭代
  • 在C语言中,单独的分号表示空语句。例如while(scanf("%d",&num)==1) ;//跳过整数输入。

二、用关系运算符和表达式比较

  • 关系运算符:<(小于)、<=(小于或等于)、==(等于)、>=(大于或等于)、>(大于)、!=(不等于)。
  • 可以使用关系运算符来比较浮点数,但在比较浮点数时,尽量只使用<和>。因为浮点数的舍入误差会导致在逻辑上相等的数却不相等。
  • 所有的非零值都被视为真,只有0才是假。
  • 关系表达式为真,求值为1;关系表达式为假,求值为0。例如1= 3>1;
  • 关系运算符的优先级比算术运算符的优先级低,但是比赋值运算符的优先级高。

三、for循环

示例

// sweetie2.c -- 使用for循环的计算循环
#include <stdio.h>
int main(void)
{
    const int NUMBER = 22;
    int count;
    
    for (count = 1; count <= NUMBER; count++)
        printf("Be my Valentine!\n");
    
    return 0;
}
  • for后面的圆括号中有3个表达式,分别使用分号隔开。第一个表达式是初始化,只会在for循环开始时执行一次。第二个表达式是测试条件,在执行循环之前对表达式进行求值,若为假,则循环结束。第三个表达式执行更新,每次循环后求值。
  • 可以省略一个或多个表达式,但是不能省略分号,只要在循环中包含能够结束循环的语句即可。例如for(;n<2;n++)。省略第二个表达式被视为真,如:for (; ; ) {statement} 其中statement会一直执行下去。
  • 第一个表达式不一定是给变量赋初值,也可以使用printf()。记住,在执行循环的其他部分之前,只对第一个表达式求值一次或执行一次。例如
/* for_show.c */
#include <stdio.h>
int main(void)
{
    int num = 0;
    
    for (printf("Keep entering numbers!\n"); num != 6;  )
        scanf("%d", &num);
    printf("That's the one I want!\n");
    return 0;
}

该程序打印第一行的句子一次,在用户输入6之前不断接受数字。

  • 循环体中的行为可以改变循环头中的表达式。

四、其他赋值运算符:+=、-=、*=、=、%=

  • 它们的优先级与=相同
  • scores += 20 等同于 scores = scores +20。 依次类推。

五、逗号运算符

  • 逗号运算符常用于for循环中。
  • 它保证了被它分隔的表达式从左往右求值。
  • 整个逗号表达式的值是右侧项的值。例如 sum = 20,30;等同于sum = 20;30;

六、出口条件循环: do while

  • 它保证了至少执行循环体中的内容一次。

  • 通用形式为

do
	statement
while ( expression );

值得注意的是do while 循环以分号结尾。

七、嵌套循环

  • 嵌套循环是指在一个循环内包含另一个循环。
  • 有内层循环和外层循环之分。嵌套循环中内层循环在每次外层循环迭代时都执行完所有的循环
  • 可以通过外层循环控制内层循环,在每次外层循环迭代时内层循环完成不同的任务。例如
// rows2.c -- using dependent nested loops
#include <stdio.h>
int main(void)
{
    const int ROWS = 6;
    const int CHARS = 6;
    int row;
    char ch;
    
    for (row = 0; row < ROWS; row++)
    {
        for (ch = ('A' + row);  ch < ('A' + CHARS); ch++)
            printf("%c", ch);
        printf("\n");
    }
    
    return 0;
}

八、数组简介

  • 数组是按顺序存储的一系列类型相同的值,可以通过整数下标访问数组中单独的项或元素,例如char name[20];
  • 数组下标是从0开始的。
  • 数组的类型可以是任意类型数据。

九、一些补充

  • 编程时最好把main()放在所有函数定义的前面。
  • 一般把其他函数放在其他文件中,所以必须要有前置声明。
  • 如果在含有main()的程序中定义了函数,在main()函数之前不同前置声明,如果在main()函数之后,则需要前置声明。
  • 在定义函数时要确定函数的返回类型,并使用 关键字return表明待返回的值。
  • return 2*x+2;这时return会计算表达式的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值