第四次作业

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

      

#include <stdio.h>
int main()
{
    int x,y,z;
    printf("请输入一个数值\n");
    scanf("%d",&x);
    y=0;
    if(x%2==0)
    {
        for(z=2;z<=x;z=z+2)
        y=y+z;
        printf("偶数的和为%d",y);
    }
    else
    {
        for(z=1;z<=x;z=z+2)
        y=y+z;
        printf("奇数的和为%d",y);
    }
    return 0;
}

1、注意for循环语句的正确使用

2、else前边必须有if

3.a++与++a作用不同。

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

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

 

注意float型数据与int型数据的差别。

 

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

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

 

 

 

当要求几个数据一行时,可以新定义一个量,在用量与每行的个数取余,当余数为0时,输出“\n”

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

#include <stdio.h>
int main()
{
    int a,b,c,d;
    d=1;
    printf("请输入两个整数\n");
    scanf("%d%d",&a,&b);
    for(c=1;c<=b;c++)
    {
        d=d*a;
    }
    printf("最后的值为%d",d);
    return 0;
 } 

 

应把变量赋初值,否则会输出一个负数。

 

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

    char a;
    int b=0,c=0,d=0,e=0,other=0;
    printf("输入一串字符,以回车为结束标志\n"); 
    scanf("%c",&a);
    while(a!='\n')
    {    
        if(a>='A'&&a<='Z')
        {
            b=b+1;
        }
        else if(a>='a'&&a<='z')
        {
            c=c+1;
        }
        else if(a==' ')
        {
            d=d+1;
        }
        else if(a>='0'&&a<='9')
        {
            e=e+1;
        }
        else
        {
            other=other+1;
        }
        scanf("%c",&a);
    }
    printf("一共有%d个大写字母,%d个小写字母,%d个空格,%d个数字,有%d个其他字符",b,c,d,e,other); 
    return 0;
}

while()后不能加分号;

‘A’   ‘a’  '0',代表不同的数据,并不等同于其本身;

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

#include <stdio.h>
int main()
{
    int a,s,d=0,f,g=0,h;
    float j,k;
    printf("请输入一串数字,输入0时结束\n");
    scanf("%d",&a);
    if(a==0)
    {
        printf("输入数据错误"); 
    }
    else
    {
        while(a!=0)
        { 
        if(a>0)
        {
            s=s+a;
            d++;
        }
        else
        {
            f=f+a;
            g++;
        }
        scanf("%d",&a);
        }
        j=(float)s/d;
        k=(float)f/g;
        if(g==0)
        printf("正数的平均数是%.3f",j);
        else if (d==0)
        printf("负数的平均值是%.3f",k);
        else
        printf("正数的平均数是%.3f,负数的平均值是%.3f",j,k);
    }
    return 0;
}

 

float型数据用“%f”

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

#include <stdio.h>
int main()
{
    int a,b,c;
    for(a=2;a<=1000;a++)
    {
        for(b=2;b<a;b++)
        {
            if(a%b==0)
            break;
        }
        if(b>=a)
        {
            printf("%03d  ",a);
            c++;
            if(c%10==0)
            printf("\n");
        }
    }
    printf("\n一共%d个素数",c);
    return 0;
}

 

 

当一个循环陷入死循环时,可以用break语句将其跳出

8.打印下列图形

             

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

找规律对于程序编译同样有帮助。

 

 

知识点总结

1、不同的循环结构可以相互嵌套

2、死循环可以用break语句改正

 

 

实验总结

当循环次数已知时,计数控制的循环用for语句

循环次数未知,有给定条件控制,用while语句

循环体至少执行一次用do....while语句

当循环复杂化时,可以用嵌套式循环

 

posted @ 2016-10-27 16:12  丁啸宇  阅读(162)  评论(1编辑  收藏  举报