• 实验四


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

          

    #include<stdio.h>
    int main() 
    {
        int x,y=0,i;
        printf("请输入一个整数x");
        scanf("%d",&x);
         if(x%2==0)
         {
             for(i=2;i<=x;i=i+2)
             {
                 y=y+i;
             }
             printf("%d",y);
         }
         else if(x%2==1)
         {
             for(i=1;i<=x;i=i+2)
             {
                 y=y+i;
             }
             printf("%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,n;
        float y=1;
        for(i=2;i<=100;i=i+2)
        {
            y=y-1.00/i;
        }
        for(n=3;n<=100;n=n+2)
        {
            y=y+1.00/n;
        }
        printf("%.2f",y);
        return 0;
    }

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

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

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

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

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

    #include<stdio.h>
    int main()
    {
        char c1;
        int num=0,konggenum=0,intnum=0,othernum=0;
        while((c1=getchar())!='\n')
        {
            if(c1>='a'&&c1<='z'||c1>='A'&&c1<='Z')
            {
                num++;
            }
            else if(c1==' ')
            {
                konggenum++;
            }
            else if(c1>='0'&&c1<='9')
            {
                intnum++;
            }
            else
            {
                othernum++;
            }
        }
        printf("字母有%d个,空格有%d个,数字有%d个,其他有%d个",num,konggenum,intnum,othernum);
        return 0;
    }

     

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

    #include<stdio.h>
    int main()
    {
        int a,b,c,d,e,f,g;
        a=0;
        b=0;
        d=0;
        e=0;
        while(1)
        {
            scanf("%d",&c);
            if(c<0)
            {
                a+=c;
                d++;
            }
            else if(c>0)
            {
                b+=c;
                e++;
            }
            else if(c==0)
                break;
        }
        if(e==0)
        {
            printf("没有正数的平均数");
        }
        else
        {
            printf("正数的平均数为%f",(float)b/e);
        }
        if(d==0)
        {
            printf("没有负数的平均数");
        }
        else
        {
            printf("负数的平均数为%f",(float)a/d);
        }
        return 0;
    }

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

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

     

     8.打印下列图形

                 

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

    实验总结:

    (1)for,if,while后面没有分号

    (2)每条语句后面都有分号

    (3)一开始没有附初始值

    (4)素数不包括1

    (5)printf里没有&

    知识点总结:

    (1)在循环语句中,break语句一般与if语句一起使用

    (2)break只能终止并跳出最近一层的结构

    (3)累乘初始值为1

    (4)有明确的循环次数是用for比较好

  • 相关阅读:
    J2SE-反射
    c3p0 连接数据库失败的问题
    c# 调用存储过程
    存储过程使用truncate时
    Parcelable intent传递对象时,需要将该对象实现Parcelable 或者Serializable
    android intent 在打开设置activity的时候在监听事件的内部 适用setclass()方法时 不是直接适用this 关键字
    c# 读取appconfig文件
    Oracle 连接数据库的几种方式
    通过反射获得方法,和绑定事件
    js 验证
  • 原文地址:https://www.cnblogs.com/lr97/p/5982443.html
Copyright © 2020-2023  润新知