第四次作业

1实验要求:

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

   

#include<stdio.h>
int main()
{
    int x,y,sum,i;
    printf("请输入一个大于零的整数,若是奇数将求出它之内的所有奇数和,若是偶数则亦然。
");
    scanf("%d",&x);
    sum=0;
    if(x%2==0&&x>0)
    {
        
        for(i=2;i<=x;i=i+2)
        {
            sum=sum+i;
            
        }
        printf("偶数和为%d
",sum);
    }
    else if(x%2!=0&&x>0)
    {
        for(i=1;i<=x;i=i+2)
        {
            sum=sum+i;
            
        }
        printf("奇数和为%d
",sum);
    }
    else
    {
        printf("输入错误。
");
    }
    return 0; 
}

2实验要求:

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

#include<stdio.h>
int main ()
{
    float i,sum,a;
    sum=0;
    a=1;
    for(i=1;i<=100;i++)
    {
        sum=sum+(1/i)*a;
        a=a*-1;       /*要设一个符号变量。*/ 
    }
    printf("和为%0.2f。
",sum);
    return 0;
}

3实验要求:

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

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

4实验要求:

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

#include<stdio.h>
int main()
{
    int m,i;
    float x,sum;
    sum=1;                /*sum=1,不能等于0*/ 
    printf("请输入一个实数x和一个整数m,将求出x的m次方。
");
    scanf("%f%d",&x,&m);
    if(m>0)
    {
        for(i=1;i<=m;i++)
        {
            sum=sum*x;
        }
            printf("%.2f的%d次方为%.2f。
",x,m,sum);
    }
    else if(m==0)
    {
        printf("%.2f的%d次方为1。
",x,m);
    }
    else
    {
        for(i=0;i>m;i--)
        {
            sum=sum*(1.0/x);
        }    
        printf("%.2f的%d次方为%.2f。
",x,m,sum);
    }
    return 0;
}

5实验要求:

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

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

6实验要求:

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

#include<stdio.h>
int main()
{
    int a,i=1,e=1,sum1=0,sum2=0;
    float average1,average2;
    printf("请输入一批数(正数和负数),输入0时结束,将分别计算出正数的平均值和负数的平均值。
");
    while(1)
    {
        scanf("%d",&a);
        if(a==0)
        {    
            break;
        }
        else if(a>0)
        {
            sum1=sum1+a;
            i++; 
        }
        else
        {
            sum2=sum2+a;
            e++;
        }
    }
    if(i-1==0)
    {
        printf("无正数。
");
    }
    else
    {
        average1=(float)sum1/(i-1);
        printf("正数的平均数为%f。
",average1);
    }
    if(e-1==0)
    {
        printf("无负数。
");
    }
    else
    {
        average2=(float)sum2/(e-1);
        printf("负数的平均数为%f。
",average2);
    }
    return 0; 
} 

7实验要求:

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

#include<stdio.h>
#include<math.h> 
int main()
{
    int i,n,flag=0,m=0,a;
    printf("将列出一千以内的所有素数。
");
    for(i=2;i<=1000;i++,flag=0)   /*使flag重新为零*/ 
    {
        a=sqrt(i);
        for(n=2;n<=a;n++)
        {
            if(i%n==0)
            {
                flag=1;
                break;
            }
            
        }
        if(flag==0)
        {
            printf("%3d ",i);
            m++;
            if(m%10==0)
            {
                printf("
");
            }
        }
    }
    printf("总数为%d个。
 ",m);
    return 0;
} 

8实验要求:

打印下列图形

             

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

知识点总结:1.选择循环的一般原则:如果循环次数已知,那么选择计数控制的循环for语句;如果循环次数未知,由给定条件控制,那么选择条件控制的循                      环while语句;如果循环体至少要执行一次,那么选择do...while语句。

      2.i++(后缀)先使用后加,++i(前缀)先加后使用;

      3.do...while语句中while语句后要加分号,其他不加。

      4.break只能用于循环语句和switch语句,continue只能用于循环体中。

      5.在循环体中,break从循环体中途跳出,提前结束循环体,执行循环体后面的语句,而continue是跳过循环体中剩余的语句,强制执行下一                       次循环。

      6.goto语句,一般形式:goto 语句标号,无条件转向语句标号处执行(不推荐使用)。

      7.在循环体中镶嵌循环体,一般为外行内列。

      8.在累加累乘中不要忘记对求和变量赋初始值。

实验总结:  累乘是sum初始值应该为一而不是零。

                    外循环体和内循环体尽量不要使用同一变量,或者再对变量初赋值。

                     输入字符型时考虑缓存,用空格接触缓存的影响。

原文地址:https://www.cnblogs.com/TX980502/p/5997993.html