• 第四次作业


    1实验要求:

    编写程序,输入一个整数x,按照下式输出对应的y值。

       

    #include<stdio.h>
    int main()
    {
        int x,y,sum,i;
        printf("请输入一个大于零的整数,若是奇数将求出它之内的所有奇数和,若是偶数则亦然。
    ");
        scanf("%d",&x);
        sum=0;
        if(x%2==0&&x>0)
        {
            
            for(i=2;i<=x;i=i+2)
            {
                sum=sum+i;
                
            }
            printf("偶数和为%d
    ",sum);
        }
        else if(x%2!=0&&x>0)
        {
            for(i=1;i<=x;i=i+2)
            {
                sum=sum+i;
                
            }
            printf("奇数和为%d
    ",sum);
        }
        else
        {
            printf("输入错误。
    ");
        }
        return 0; 
    }

    2实验要求:

    编程求1-1/2+1/3-1/4+1/5- … +1/99-1/100,结果保留两位小数。

    #include<stdio.h>
    int main ()
    {
        float i,sum,a;
        sum=0;
        a=1;
        for(i=1;i<=100;i++)
        {
            sum=sum+(1/i)*a;
            a=a*-1;       /*要设一个符号变量。*/ 
        }
        printf("和为%0.2f。
    ",sum);
        return 0;
    }

    3实验要求:

    输出2000年至3000年所有闰年的年号,每输出10个年号换一行。最后统计一共有多少个闰年。

    #include<stdio.h>
    int main()
    {
        int a,b;
        b=0; 
        for(a=2000;a<=3000;a++)
        {
            if(a%4==0&&a%100!=0||a%400==0)
            {
                printf("%d  ",a);
                b++;
                if(b%10==0)
                {
                    printf("
    ");
                }
            }
        }
        printf("一共有%d个闰年。
    ",b);
        return 0;
    }

    4实验要求:

    输入一个实数x和一个整数m,计算xm,不允许调用pow()函数。

    #include<stdio.h>
    int main()
    {
        int m,i;
        float x,sum;
        sum=1;                /*sum=1,不能等于0*/ 
        printf("请输入一个实数x和一个整数m,将求出x的m次方。
    ");
        scanf("%f%d",&x,&m);
        if(m>0)
        {
            for(i=1;i<=m;i++)
            {
                sum=sum*x;
            }
                printf("%.2f的%d次方为%.2f。
    ",x,m,sum);
        }
        else if(m==0)
        {
            printf("%.2f的%d次方为1。
    ",x,m);
        }
        else
        {
            for(i=0;i>m;i--)
            {
                sum=sum*(1.0/x);
            }    
            printf("%.2f的%d次方为%.2f。
    ",x,m,sum);
        }
        return 0;
    }

    5实验要求:

    输入一串字符,分别统计其中字母、空格、数字和其他字符的个数。

    #include<stdio.h>
    int main()
    {
        int a,b,c,d;
        char e;
        a=0;
        b=0;
        c=0;
        d=0;
        printf("请输入任意一串字符。
    ");
        do
        {
            scanf("%c",&e);
            if(e>='1'&&e<='9')
            {
                a++;
            }
            else if(e>='A'&&e<='Z'||e>='a'&&e<='z')
            {
                b++;
            }
            else if(e==' ')
            {
                c++;
            }
            else 
            {
                d++;
            }
        }while(e!='
    ');
        printf("数字有%d个,字母有%d个,空格有%d个,其他字符有%d个。
    ",a,b,c,d-1);
        return 0;
    }

    6实验要求:

    输入一批数(正数和负数),输入0结束,分别计算其中正数的平均值和负数的平均值。

    #include<stdio.h>
    int main()
    {
        int a,i=1,e=1,sum1=0,sum2=0;
        float average1,average2;
        printf("请输入一批数(正数和负数),输入0时结束,将分别计算出正数的平均值和负数的平均值。
    ");
        while(1)
        {
            scanf("%d",&a);
            if(a==0)
            {    
                break;
            }
            else if(a>0)
            {
                sum1=sum1+a;
                i++; 
            }
            else
            {
                sum2=sum2+a;
                e++;
            }
        }
        if(i-1==0)
        {
            printf("无正数。
    ");
        }
        else
        {
            average1=(float)sum1/(i-1);
            printf("正数的平均数为%f。
    ",average1);
        }
        if(e-1==0)
        {
            printf("无负数。
    ");
        }
        else
        {
            average2=(float)sum2/(e-1);
            printf("负数的平均数为%f。
    ",average2);
        }
        return 0; 
    } 

    7实验要求:

    输出1000以内的所有素数,每行10个,最后输出一共有多少个素数。(每列对齐)

    #include<stdio.h>
    #include<math.h> 
    int main()
    {
        int i,n,flag=0,m=0,a;
        printf("将列出一千以内的所有素数。
    ");
        for(i=2;i<=1000;i++,flag=0)   /*使flag重新为零*/ 
        {
            a=sqrt(i);
            for(n=2;n<=a;n++)
            {
                if(i%n==0)
                {
                    flag=1;
                    break;
                }
                
            }
            if(flag==0)
            {
                printf("%3d ",i);
                m++;
                if(m%10==0)
                {
                    printf("
    ");
                }
            }
        }
        printf("总数为%d个。
     ",m);
        return 0;
    } 

    8实验要求:

    打印下列图形

                 

    #include<stdio.h>
    int main()
    {
        int a,b,i;
        for(a=1,i=1;a<=5;a++)
        {
            for(b=1;b<=a-1;b++)
            {
                printf(" ");
            }
            for(b=1;b<=10-i;b++)
            {
                printf("*");
            }
            i=i+2;
            printf("
    ");
        }
        return 0;
    }

    知识点总结:1.选择循环的一般原则:如果循环次数已知,那么选择计数控制的循环for语句;如果循环次数未知,由给定条件控制,那么选择条件控制的循                      环while语句;如果循环体至少要执行一次,那么选择do...while语句。

          2.i++(后缀)先使用后加,++i(前缀)先加后使用;

          3.do...while语句中while语句后要加分号,其他不加。

          4.break只能用于循环语句和switch语句,continue只能用于循环体中。

          5.在循环体中,break从循环体中途跳出,提前结束循环体,执行循环体后面的语句,而continue是跳过循环体中剩余的语句,强制执行下一                       次循环。

          6.goto语句,一般形式:goto 语句标号,无条件转向语句标号处执行(不推荐使用)。

          7.在循环体中镶嵌循环体,一般为外行内列。

          8.在累加累乘中不要忘记对求和变量赋初始值。

    实验总结:  累乘是sum初始值应该为一而不是零。

                        外循环体和内循环体尽量不要使用同一变量,或者再对变量初赋值。

                         输入字符型时考虑缓存,用空格接触缓存的影响。

  • 相关阅读:
    未格式化的输入/输出操作
    格式化输入与输出
    随机数
    正则表达式
    bitset
    tuple
    servlet笔记
    springside
    maven
    Lua简易入门教程
  • 原文地址:https://www.cnblogs.com/TX980502/p/5997993.html
Copyright © 2020-2023  润新知