首页 > 代码库 > 第四次作业

第四次作业

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

      技术分享

#include<stdio.h>
int main()
{
    int x,y,i;
    char z;
    while(1)
    {
    printf("请输入一个正整数\n");
    scanf("%d",&x);
    for(y=0,i=0;i<=x;i+=2)
    {
        if(x%2==0)
        {
            y=y+i;
        }
        else
        {
            if(i==0)
            {
                y+=1;
                i=1;
            }
            else
            {
                y=y+i;
            }
        }
    }
    printf("%d\n",y);
    scanf(" %c",&z);
    if(z==y)
    {
        continue;
    }
    else
    {
        break;
    }
    }
}

技术分享

第一个实验,主要运用的是continue和break的区别。

continue是结束循环之后重新循环,break则是跳出。

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

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

技术分享

这个实验主要注意整形和实数的转换。

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

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

技术分享

注意换行指令的位置。

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

#include<stdio.h>
int main()
{
    int m,i;
    float x,y;
    scanf("%f %d",&x,&m);
    i=0,y=1;
    while(i<m)
    {
        y=y*x;
        i++;
    }
    printf("%f",y);
 } 

技术分享

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

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

技术分享

注意缓存区的空格。

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

#include<stdio.h>
int main()
{
    int a,b,c,d,e;
    float m,n;
    b=0,c=0,d=1,e=1;
    while(1)
    {
        scanf("%d",&a);
        if(a==0)
        {
            break;
        }
        else
        {
            if(a>0)
            {
                b=b+a;
                d++;
            }
            else
            {
                c=c+a;
                e++;
            }
        }
    }
    if(d-1==0)
    {
        printf("没有正数");
    }
    else
    {
        m=(float)b/(d-1); 
        printf("%.2f\n",m);
    }
    if(e-1==0)
    {
        printf("没有负数");
    }
    else
    {
        n=(float)c/(e-1);
        printf("%.2f\n",n);
    }
    
}

技术分享

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

#include<stdio.h>
int main()
{
    int i,n,flag,m=0;
    printf("将列出一千以内的所有素数。\n");
    for(i=2;i<=1000;i++)
    {
        for(n=2;n<=i-1;n++)
        {
            if(i%n==0)
            {
                flag=1;
                break;
            }
            else
            {
                flag=0;
        } 
        }
        if(flag==0)
        {
            printf("%3d   ",i);
            m++;
            if(m%10==0)
            {
                printf("\n");
            }
        }
    }
    return 0;
} 

技术分享

8.打印下列图形

             技术分享

#include<stdio.h>
int main()
{
    int a,b;
    for(a=9;a>=1;a-=2)
    {
        for(b=9;b>a;b--)
        {
            printf(" ");
        }
        for(b=1;b<=a;b++)
        {
            printf("* ");
        }
        printf("\n");
    }
}

技术分享

说真的,一开始是图例的图形,嫌不正给改成这样了,再一看题......

二、知识点总结

1、continue和break的运用。两个语句的特点已经在上面提到了。灵活的运用可以实现对程序及循环是否终止的控制。

2、显示排版“外行内列”思想。

三、实验总结

1、好好审题......以及下次早点做(各位对不起)

2、注意字符型变量“一个个读”的特点。

3、注意缓存区。

第四次作业