作业四

作业四

   一、实验内容 :

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

      

#include<stdio.h>
int main()
{    int x,y=0,i;
    scanf("%d",&x) ;
    if(x%2==0)
    {for(i=2;i<=x;i=i+2)
        {
             y=y+i;
        }
        printf("%d",y);
    }
    else
    {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;
    double y=1;
    for(i=2;i<=100;i++)
    {if(i%2==0)
        {
            y=y-1.0/i;
        }
     else 
         {
             y=y+1.0/i;
         }    
    }
    printf("%.2f",y);
    return 0;
} 

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

#include<stdio.h>
int main()
{    int x,y=0;
    for(x=2000;x<=3000;x++)
    {
        if((x%4==0&&x%100!=0)||(x%400==0)) 
        {
            printf(" %d",x);y=y+1;
        }
        if(y%10==0)
        {
            printf("\n");
        }
    }
    printf("\n %d",y);
    return 0;
} 

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

#include<stdio.h>
int main()
{    int m,i;
    float y=1.0,x;
    printf("输入x与m的值,用逗号隔开。\n");
    scanf("%f,%d",&x,&m);
    for(i=1;i<=m;i++)
    {
        y=x*y;
    }
    printf("%.2f",y);
    return 0;
}

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

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

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

#include<stdio.h>
int main()
{    int n1=0,n2=0,m,sum1,sum2;
    char x;
    printf("请输入数字\n");
    scanf("%d",&m); 
    do
    {    if(m>=0)
        {
            sum1=sum1+m;
            scanf("%d",&m);
            n1++;
            
        }
        else 
        {
        sum2=sum2+m;
        scanf("%d",&m);
        n2++; 
        }    
    }    
    while(m!=0);
    if(n1==0&&n2==0)
    {
        printf("正数平均数为0,负数平均数也为0"); 
    }
    else if(n1!=0&&n2==0)
    {
        printf("正数平均数为%.2f,负数平均数为0",(double)sum1/n1); 
    }
    else if(n1==0&&n2!=0)
    {
        printf("正数平均数为0,负数平均数为%.2f",(double)sum2/n2); 
    }
    else
    {
        printf("正数平均数为%.2f,负数平均数为%.2f",(double)sum1/n1,(double)sum2/n2); 
    }
    return 0;
}

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

#include<stdio.h>
#include<math.h>
int main()
{    int i1,i2,m=0,k,x,flag=0;
        for(i1=2;i1<=1000;i1++)
        { x=sqrt(i1);
        flag=0;
            for(i2=2;i2<=x;i2++)
            {
                if(i1%i2==0)
                {
                    flag=1;
                    break;
                }
            } 
            if(flag==0)
            {
                printf(" %03d",i1);
                m++;
                if(m%10==0&&m!=0)
        {
            printf(" \n");
        }
            }
        
        
        } 
        printf("\n 素数有%d个",m);
        return 0;
} 

8.打印下列图形

             

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

二、本次课知识点总结:

for循环,while循环,do while循环的使用以及嵌套,程序运行可以使用无限循环,但需要注意循环的退出,,continue与break有区别,前者结束本次循环,后者结束整个循环。

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

1.要注意素数的判断,利用标记变量,并且循环嵌套。

2.正负数求平均数时要注意合法判断,因为可能没有正数或者没有负数。

3.输出图案时要注意外行内列,以及每行空格和星号的个数。

4.回车也算字符,注意限定条件else if(字符!='\n')。

5.用float输入的变量要用%f。记得保留小数。

posted on 2016-10-25 13:41  Mty灬  阅读(267)  评论(2编辑  收藏  举报

导航