• 第四次作业


     一、实验内容

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

          

    #include<stdio.h>
    int main()
    {
        int x,i,y=0;
        printf("输入一个整数x:
    ");
        scanf("%d",&x);
        if(x%2!=0)
        {
            for(i=1;i<=x;i=i+2)
            {
                y=y+i;
            }
        }
        else
        {
            for(i=2;i<=x;i=i+2)
            {
                y=y+i;
            }
        }
        printf("y=%d",y);
        return 0;
    }

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

    #include<stdio.h>
    int main()
    {
    int i;
    float y=0,t;
        for(i=1;i<100;i=i+2)
        {    
            t=(float)1/i-(float)1/(i+1);
            y=y+t;
    
        }
        printf("y=%.2f",y);
        return 0;
    }

     

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

    #include<stdio.h>
    int main()
    {
        int i,y=0;
        for(i=2000;i<=3000;i++)
            {
                if(i%400==0||i%4==0&&i%100!=0)
                {
                    printf(" %d ",i);
                    y++;
                    if(y%10==0)
                    {
                        printf("
    ");
                    }
                }
            }
            printf("%d",y);
            return 0;
    }

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

    #include<stdio.h>
    int main()
    {
        int i,m;
        float x,y=1; 
        printf("输入一个实数x和一个整数m");
        scanf("%f%d",&x,&m);
        for(i=1;i<=m;i++)
            {
                y=y*x;    
            }
        printf("%.2f",y);
        return 0;
    }

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

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

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

    #include<stdio.h>
    int main()
    {
        int sum1=0,sum2=0,n1=0,n2=0,y1,y2,x;
        printf("输入一批数(正数和负数),输入0结束");
        scanf("%d",&x);
        if(x==0)
        {
            printf("error");
        }
        else
        {
            while(x!=0)
            {
                if(x>0)
                {
                    n1=n1+1;
                    sum1=sum1+x;
                }
                else
                {
                    n2=n2+1;
                    sum2=sum2+x;
                }
                scanf("%d",&x);
            }
        }
        y1=(float)sum1/n1;
        y2=(float)sum2/n2;
        printf("正数的平均数为%d,负数的平均数为%d",y1,y2);
        return 0;
    
    }

     

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

    #include<stdio.h>
    int main()
    {
        int i,m,num=0,flag;
        for(i=2;i<=1000;i++)
        {
            flag=0;
            for(m=2;m<=i-1;m++)
            {
                if(i%m==0)
                {
                    flag=1;
                    break;
                }
            }
            if(flag==0)
            {
                printf(" %03d ",i);
                num++;
                if(num%10==0)
                {
                    printf("
    ");
                }
            }
            
        }
        printf("共有%d个素数",num);
        return 0;
    }

      8.打印下列图形

                 

    #include<stdio.h>
    int main()
    {
        int i,j,h;
        for(i=1;i<=6;i=i+1)
        {
            for(h=5;h>=(6-i);h--)
            {printf(" ");}
            for(j=9;j>=(i*2-1);j--)
            {printf("*");}
            printf("
    ");
        }
    }

    二、本次课知识点总结

    1·循环次数已知:计数控制的for循环语句;

    循环次数未知,由给定条件控制:条件控制的while循环语句;

    循环次数至少要执行一次:do...while循环语句。

    2·break结束整个循环过程,不在判断循环条件是否成立,continue结束本次循环。

    3·循环嵌套时外层执行一次,内层循环要完成所有的循环。

    4·自增自无条件转移语句用goto减运算符以及区分使用前缀及后缀。(++、--不能用于常量和表达式

    三、实验总结(实验中遇到的问题及解决方法)

    1·输出的结果不唯一确定,需要给变量赋初值。

    2·计算分数的四则运算时,运行结果错误,应该在分数前进行强制类型转换,从而避免出现“1/2等于0”的情况。

    3·“for循环语序”中的第二表达式为判断条件,当条件成立时执行循环体,所以分清第二表达式应该为“>”或“>=”,避免出现多执行一次循环体的情况发生。

    4·当用“while循环语序”时,跳出循环用到break。

    5·遇到阶乘问题时,乘积要初始化为1。

    6·使用while循环语序时while后面的括号后不应加分号,且循环体外的大括号不能丢失。

  • 相关阅读:
    Java59道常见面试题,内附答案
    2020年一个月时间面试字节跳动,面试经历分享(已拿offer)
    阿里总结的《Java成神之路》 PDF 火了,完整版开放下载!
    Github14k堪称神级的Spring Boot手册,从基础入门到实战进阶
    三面阿里(支付宝)Java高开岗,复习两月有幸拿到offer
    Java 最常见的 200+ 面试题:面试必备
    【面试总结】终于拿到了美团offer了,没有辜负了这三个月的努力啊
    阿里P9都赞不绝口的面试宝典!半月看完25大专题,居然斩获阿里P7offer
    Integer是int
    抽象类和接口
  • 原文地址:https://www.cnblogs.com/0000-beauty/p/6010865.html
Copyright © 2020-2023  润新知