第四次

一、实验内容

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

      

#include<stdio.h>
int main()
{
    int x,y,i;
    printf("请输入一个数,如果是奇数计算1+3+...+n,如果是偶数则计算2+4+...+n\n") ;
    scanf("%d",&x);
    y=0;
    if(x<=0)
    {
        printf("输入错误\n");
    }
    else
    {
        if(x%2==0)
        {
            for(i=0;i<=x;i=i+2)
            {
                y=y+i; 
            }
            printf("%d",y);
        }
        else if(x%2!=0)
        {
            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()
{
    double a,b,c,i;
    a=0;
    b=0;
    for(i=1;i<=99;i=i+2)
    {
        a=a+1/i;
    }
    for(i=2;i<=100;i=i+2)
    {
        b=b-1/i;
    }
    c=a+b;
    printf("%.2lf",c);
    return 0;    
}

 

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

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

 

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

#include<stdio.h>
int main()
{
    int m,i;
    double x,y;
    y=1;
    printf("输入一个实数x和一个整数m,计算x的m次方,用空格分开\n") ;
    scanf("%lf%d",&x,&m);
    for(i=1;i<=m;i=i+1)
    {
        y=y*x;
    }
    printf("%lf",y);
    return 0;    
}

 

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

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

 

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

#include<stdio.h>
int main()
{
    double x,a,b,c,d,i,j;
    a=0;
    b=0;
    i=0;
    j=0;
    printf("请输入一批数(整数和负数,用回车分开,输入0结束)\n");
    while(x!=0) 
    {
        printf("请输入\n");
        scanf("%lf",&x);
        if(x>0)
        { 
            a=a+x;
            i=i+1;
        }
        else if(x<0)
        {
            b=b+x;
            j=j+1;
        }
        
    }
    c=a/i;
    d=b/j;
    if(i==0&&j!=0)
    {
        printf("没有输入正数,负数的平均数是%lf\n",d);
    }
    else if(j==0&&i!=0) 
    {
        printf("正数的平均数是%lf,没有输入负数\n",c);
    }
    else if(i==0&&j==0)
    {
        printf("没有输入数据\n");
    }
    else
    {
        printf("正数的平均数是%lf,负数的平均数是%lf\n",c,d);
    }
    return 0;    
}

 

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

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

 

8、打印下列图形

             

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

 

二、本次课实验点总结

1、for语句、while语句和do...while语句的使用和区别

for用在知道循环次数的时候,不知道循环次数的时候用while和do...while,

do...while是必须执行一次

2、简便写法

i=i+1 → i++

a=a+5 → a+=5

3、在循环中,break是结束整个循环,continue是结束本次循环

4、不推荐使用goto语句

5、在判断一个数是否是质数时,用根号来节省运行时间

6、循环嵌套时、外层循环一次,内层完成所有循环

 

三、实验总结

1、循环时,注意循环的边界,和循环一次计数的变量增加多少

2、输出十个一换行,用次数和10求余,然后输出\n

3、统计字符时,把最后的回车减去

4、想清楚质数的判断条件

5、输出倒三角时,找好规律

posted @ 2016-10-25 23:06  计科1602张子凡  阅读(302)  评论(4编辑  收藏  举报