第四次实验作业

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

      

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

 

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

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

 

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

 

#include<stdio.h>
int main()
{
    int m,i;
    float x,y=1;
    printf("请输入一个实数x和整数m\n");
    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\n",y);
    return 0;
}

 

 

 

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

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

 

 

 

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

 

#include<stdio.h>
int main()
{
    int a,b,c,d,e;
    b=0;
    c=0;
    d=0;
    e=0;
    printf("请输入一批数\n");
    scanf("%d",&a);
    while(1)
    {
        if(a>0)
        {
            b+=a;
            e++;
        }
        else if(a<0)
        {
            d+=a;
            c++;
        }
        else if(a==0)
        break;
    scanf("%d",&a);
    }
    if(e==0&&c==0)
    {
        printf("没有结果\n"); 
    }
    else if(e==0&&c!=0)
    {
        printf("正数的平均值为0,负数的平均数为%f\n",(float)b/e);
    }
    else if(e!=0&&c==0)
    {
        printf("正数的平均值为%f,负数的平均值为0\n",(float)d/c);
    }
    else if(e!=0&&c!=0)
    {
          printf("正整数的平均数为%f,负数的平均数是%f",(float)d/c,(float)b/e);
    }
    return 0;
} 

 

 

 

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

#include<stdio.h>
int main()
{
    int i,n,z=0,flag=0;
    for(i=2;i<=1000;i++)
    {
        for(n=2,flag=0;n<=i-1;n++)
        {
            if(i%n==0)
            {
                flag=1;
                break;
            }
        }
        if(flag!=1)
        {
            printf("%4d ",i);
            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语句,循环次数未知的时候用whlie语句。

2.break在循环语句和switch语句中,终止并跳出循环体或开关体。

3.break只能终止并跳出最近一层的结构。

4.continue语句只结束本次循环,而不是终止整个的执行。而break语句则是结束整个循环过程,不在判断执行循环的条件是否成立。

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

1.记住开始时要附初始值。

2.for和whlie语句后边没有分号。

3.明确每个值所代表的意义。

4.循环体中应有是循环趋向结束的语句。

5.写代码前可以先写一个执行流程。

 

posted @ 2016-10-25 22:11  计科1601王瑶  阅读(315)  评论(3编辑  收藏  举报