实验四

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比较好

 

posted @ 2016-10-25 21:57  计科李茹  阅读(363)  评论(3编辑  收藏  举报