• C 控制语句:循环


    1.前导程序

    /对用户输入的整数求和
    #include<stdio.h>
    int main(void)
    {
        long num;
        long sum=0L;//把sum初始化为0
        int status;
    
        printf("please enter an integer to be summed.");
        printf("q to quit!
    ");
    //    status=scanf("%ld",&num);//注意有这句和没有这一句的区别。
    //    while(status==1)//每次循环都为num获取一个新值,并重置status
        while((status=scanf("%ld",&num))==1)
        {
            sum=sum+num;//累加和
            printf("please enter next integer (q to quit)");
        //    status=scanf("%ld",&num);
        }
        printf("Those integers sum to %ld.
    ",sum);
        return 0;
    }
    对用户输入的整数求和

    C风格的读循环:status=scanf("%ld",&num);while(status==1){..status=scanf("%ld",&num);}   ----->【while(scanf("%ld",&num)==1){...}】
    2.while循环

    (1)是使用入口条件的有条件循环,只有位于判断条件之后的单个语句才是循环的部分(一个单独的分号也算作一个语句)。

    关于什么时候退出循环
    //关于什么时候退出循环
    #include<stdio.h>
    int main(void)
    {
        int n=5;
        while(n<7)
        {
            printf("n=%d
    ",n);
            n++;
            printf("Now n=%d
    ",n);
        }
        printf("The loop has finished.
    ");
        return 0;
    }
    关于什么时候退出循环

    (2)使用关系运算符和表达式  如:<、>、<=、>=、!=、==(关系运算符可以用于字符的比较,但是不能比较字符串,可以比较浮点数,但要小心)

    浮点数大小的比较,利用fabs()函数
    //浮点数大小的比较,利用fabs()函数。
    //不能使用关系运算符来比较字符串
    //浮点数比较重只能使用<和>,但舍入误差可能造成两个逻辑上相等的数不等
    #include<stdio.h>
    #include<math.h>//包含fabs()原型
    int main(void)
    {
        const double ANSWER=3.14159;//定义一个常量
        double response;
        printf("What's is the value of pi?
    ");
        scanf("%lf",&response);
        while(fabs(response-ANSWER)>0.0001)
        {
            printf("Try again!
    ");
            scanf("%lf",&response);
        }
        printf("Close enough!
    ");
        return 0;
    }
    浮点数大小的比较,利用fabs()函数

    3.真值问题

    • 对于C来说一个真表达式的值为1,一个假表达式的为为0。更一般的,所有的非零值都被认为是真,只有0被认为是假。
    • 表达式实际上是数值的。
    哪些值为真?
    //哪些值为真?
    #include<stdio.h>
    int main(void)
    {
        int n=3;
        while(n)
            printf("%2d is true
    ",n--);
        printf("%2d is flase.
    ",n);
        n=-3;
        while(n)
            printf("%2d is true.
    ",n++);
        printf("%2d is flase.
    ",n);
        return 0;
    }
    //所有的非零值都被认为是真,只有0被认为是假。表达式实际上是数
    哪些值为真?

    4.关于运算符

    • =和==   a=5;(把a的值赋为5)a==5;(检查a的值是否等于5,它的结果为0或1),【5=a;】这样的形式,便于编译器发现错误
    • 赋值运算符(=)<关系运算符优先级 <算数运算符如(+、—等)
    • 关系表达式的值为1或为0。
    • +=、-=、*=、/=和%=     (x*=3*y+12   等于   x=x*(3*y+12)
    • 逗号运算符【,】a、保证了呗分开的表达式按照从左到右的次序计算;b、整个逗号表达式的值是右边成员的值。x=(y=3,(z=++y+2)+5);的效果是首先把Y赋值给3,把Y递增为4,然后把4加上2,再把结果6赋值给z,接下来把z加5,最后把x赋为结果值11。

    5.for循环

    使用for循环实现一个立方表
    //使用for循环实现一个立方表
    #include<stdio.h>
    #define  MAX  20
    int main(void)
    {
        int n,m;
        printf("n	 n*n*n
    ");
        for(n=0;n<=MAX;n++)
            printf("%5d	%5d
    ",n,n*n*n);
        return 0;
    }
    使用for循环实现一个立方表
    • for循环把初始化、测试、更新三个动作都放在了一起。如(:  for(secs=5;secs>0;secs--)  //注意,secs--是在单次循环结束之后才执行的。如果中间的控制表达式为空,则会被认为是真,则这个循环成为死循环。

    6.do while循环

    • do{....}while(判断条件); 
    • 退出条件循环,循环体内的语句至少执行一次,do while循环本身是一个语句,因此需要一个结束的分号。
    入口条件循环
    //入口条件循环
    //应该把do while循环体仅仅用于那些至少需要执行一次循环的情况
    #include<stdio.h>
    int main(void)
    {
        const int secret_code=13;
        int code_entered;
    
        printf("To enter the triskaidekaphobia therapy club,
    ");
        printf("please enter the secret code number:");
        scanf("%d",&code_entered);
        while(code_entered!=secret_code){
    
            printf("To enter the triskaidekaphobia therapy club,
    ");
            printf("please enter the secret code number:");
            scanf("%d",&code_entered);
        }
        
        printf("Congratulations! You are cured!
    ");
        return 0;
    }
    入口条件循环

    7.数组
    (1)一个数组就是线性存储的一系列相同类型的值,数组元素编号是从0开始的。

    (2)数组可以使任意数据类型的数组。

    (3)如果字符数组包含了空字符,那么字符数组的内容就构成一个字符串。

    使用循环进行数组的处理
    //使用循环进行数组的处理
    #include<stdio.h>
    #define SIZE  10
    #define PAR   72
    int main(void)
    {
        int index,score[SIZE];
        int sum=0;
        float average;
    
        printf("Enter %d golf scores:
    ",SIZE);
        for(index=0;index<SIZE;index++)
            scanf("%d",score[index]);//输入10个分数 注意这里没有用&
        printf("The scores read in are as follows:
    ");
        for(index=0;index<SIZE;index++)
            scanf("5%d",score[index]);//验证输入
        printf("
    ");
        for(index=0;index<SIZE;index++)
            sum+=score[index];//求他们的和
        average=(float)sum/SIZE;
        printf("sum of scores=%d,average=%.2f
    ",sum,average);
        printf("That's a handicap of %.0f.
    ",average-PAR);
        return 0;
    }
    使用循环进行数组的处理

    8.使用函数返回值的循环

    (1)在调用函数中,可以把返回值赋给另一个变量;可以把他作为一个表达式的值;可以把它作为另一个数的参数,例如printf("%f",power(6.28,3));也可以直接忽略。

    (2)使用具有返回值函数的基本要素:声明函数、调用函数、定义函数和使用return关键字。函数的前向声明是必不可少的。

    (3)scanf()函数返回接受输入的项目个数,printf()函数返回打印字符的数目。

    计算数值的整数次幂
    //计算数值的整数次幂
    #include<stdio.h>
    double power(double n,int p);
    int main(void)
    {
        double x,xpow;
        int exp;
    
        printf("Enter a number and the positive integer power");
        printf("to witch.
     the number will be raised,Enter q.");
        printf("to quit.
    ");
    
        while(scanf("%lf%d",&x,&exp)==2)
        {
            xpow=power(x,exp);//函数调用
            printf("%.3g to the power %d is %.5g
    ",x,exp,xpow);
            printf("Enter next pair of number or q to quit.
    ");
        }
        printf("Hope you enjoyed this power trip--bye!
    ");
        return 0;
    }
    //求n的p次幂的函数
    double power(double n,int p)//函数定义
    {
        double pow=1;
        int i;
    
        for(i=1;i<=p;i++)
            pow*=n;
        return pow;//返回Pow的值
    }
    计算数值的整数次幂
  • 相关阅读:
    希腊字母写法
    The ASP.NET MVC request processing line
    lambda aggregation
    UVA 10763 Foreign Exchange
    UVA 10624 Super Number
    UVA 10041 Vito's Family
    UVA 10340 All in All
    UVA 10026 Shoemaker's Problem
    HDU 3683 Gomoku
    UVA 11210 Chinese Mahjong
  • 原文地址:https://www.cnblogs.com/dondre/p/4089740.html
Copyright © 2020-2023  润新知