第四次作业

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

      

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

实验总结:注意中文标点符号和英文标点符号的混乱。

知识点总结:if  else与for可以嵌套使用,但最好是每个后面都加大括号。

 

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

#include <stdio.h>
int main()
{
    int i,j;
    double sum,m,n;
    for(i=1,m=0;i<=99;i+=2)
    {
        m+=1.0/i;
    }
    for(j=2,n=0;j<=100;j+=2)
    {
        n+=1.0/j;
    }
    sum=m-n;
    printf("%.2lf",sum);
    return 0;
}

实验总结:i为整型常量,m为实型常量,最简单的求1/i的方法是m=1.0/i。

知识点总结:当循环次数已知时,用for语句。

 

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

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

实验总结:1.当0作为除数时,结果会出现问题,运行不了或者出现乱码。

2.一共有几个数需要放在循环的外边。

知识点总结:闰年的表达方式是a%4==0&&a%100!=0||a%400==0。

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

#include <stdio.h>
int main()
{
    int m,i;
    double x,y;
    printf("请输入一个实数和一个整数:\n");
    scanf("%lf%d",&x,&m);
    for(i=1,y=1;i<=m;i++)
    {
        y=y*x;
    }
    printf("%lf\n",y);
    return 0;
}

实验总结:y的初始值定义为1对乘法式子没影响。

知识点总结:for语句是一种计数控制的循环。

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

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

实验总结:1.最后的输出在循环的外边。

2.字母可以表示为>='A'&&<='Z'||>='a'&&<='z'.

知识点总结:1.while()的后边没有“;”do while的while后边带“;”。

2.while的()中表示的是当不满足时才循环。

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

#include <stdio.h>
int main()
{
    int number,i,j,m,n;
    double average1,average2;
    average1=0;
    average2=0;
    printf("请输入一批非零整数输入0结束:\n");
    scanf("%d",&number);
    i=0;
    j=0;
    m=0;
    n=0;
    while(number!=0)
    {
        if(number>0)
        {
            i++;
            m+=number;
        }
        else
        {
            j++;
            n+=number;
        }
        scanf("%d",&number);
    }
    if(m==0&&n!=0)
    {
        average1=0;
        average2=(float)n/j;
    }
    else if(n==0&&m!=0)
    {
        average1=(float)m/i;
        average2=0;
    }
    else
    {
        average1=(double)m/i;
        average2=(double)n/j;
    }        
    printf("正数的平均数为%lf,负数的平均数为%lf:\n",average1,average2);
    return 0;
}

实验总结:所有的未知变量都要赋给他一个值。

知识点总结:while语句以及所有的循环语句都可与if else嵌套。

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

#include <stdio.h>
int main()
{
    int i,prime,a;
    a=0;
    for(prime=2;prime<=1000;prime++)
    {
        for(i=2;i<prime;i++)
        {
            if(prime%i==0)
            break;
        }
        if(i>=prime)
        {
            printf(" %03d",prime);
            a++;
            if(a%10==0&&a!=0)
            printf("\n");
        }
    }
    printf("\n1000以内一共有%d个素数\n",a);
    return 0;
}

实验总结:1.% 3d=最高位前的空位用0补充。

2.程序还可以优化算到prime的开方即可,需加一个()=spar()

知识点总结:素数的表达方式prime number%i(自增变量)!=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=9;j>=2*i-1;j--)
        {
            printf("*");
        }
        printf("\n");
   }
   return 0;
}

实验总结:这方面的知识还不够熟练,需要多加练习。

知识点总结:1.两个for语句嵌套外层控制行,内层控制列。

2.内层循环变量与外层循环变量不能相同。

 

posted @ 2016-10-30 18:08  宁萌啊  阅读(161)  评论(1编辑  收藏  举报