欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第四次作业

程序员文章站 2022-07-14 21:38:10
...

一、实验内容

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

 

      第四次作业

 

代码:

#include<stdio.h>
int main()
{
int m,x,y=0;
printf("请输入x的值:\n");
scanf("%d",&x);
if(x%2!=0)
    {
        for(m=1;m<=x;m+=2)
        {
            y+=m;
        }
    }
else 
    {
        for(m=2;m<=x;m+=2)
        {
            y+=m;
        }
    }
printf("y=%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;
float j=0,o=0,sum;
for(i=2;i<=100;i+=2)
{
    o=o+1.0/i;
}
for(i=1;i<=100;i+=2)
{
    j=j+1.0/i;
}
sum=j-o;
printf("%.2f",sum);
return 0;
}

 

 

 

程序运行结果:第四次作业

 

 

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

 

代码:

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

 

 

 

程序运行结果:第四次作业

 

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

 

代码:

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

 

 

 

 

程序运行结果:第四次作业

 

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

 

代码:

#include<stdio.h>
int main()
{
char c;
int a,b,d,e,other;
a=0;
b=0;
d=0;
e=0;
other=0;
printf("请输入一串字符,按回车结束:\n");
scanf("%c",&c);
while(c!='\n')
{
    if(c>='A'&&c<='z')
    {
        a++;
    }
    else if(c>='a'&&c<='z')
    {
        b++;
    }
    else if(c==' ')
    {
        d++;
    }
    else if(c>='0'&&c<='9')
    {
        e++;
    }
    else
    {
        other++;
    }
    scanf("%c",&c);
}
printf("共有%d个大写字母,%d个小写字母,%d个空格,%d个数字,%d个其他字符",a,b,d,e,other);
return  0;
}

 

 

 

程序运行结果:第四次作业

 

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

 

代码:

#include<stdio.h>
int main()
{
int x,a,b,c,d;
a=0;
b=0;
c=0;
d=0;
scanf("%d",&x);
while(x!=0)
{
	if(x>0)
	{
		a+=x;
		c++;
		
	}
	if(x<0)
	{
		b+=x;
		d++;
	}
	scanf("%d",&x);
}
if(c==0&&d!=0)
{
	printf("正数的平均值为0,负数的平均值是%.2f",(float)b/d);			
}
else if(c!=0&&d==0)
{
	printf("正数的平均值为%.2f,负数的平均值是0",(float)a/c);
}
else if(c==0&&d==0)
{
	printf("正数的平均值为0,负数的平均值是0");
}
else if(c!=0&&d!=0)
{
	printf("正数的平均值为%.2f,负数的平均值是%.2f",(float)a/c,(float)b/d);
}
return 0;
}

 

 

 

程序运行结果:第四次作业

 

 

 

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

 

代码:

#include<stdio.h>
int main()
{
int i,m,num;
num=0;
pritf("1000以内的素数:\n");
for(i=2;i<=1000;i++)
{
    for(m=2;m<i;m++)
    {
        if(i%m==0)
        {
            break;
        }
    }
    if(i<=m)
    {
        printf("%03d",i);
        num++;
        if(num%10==0)
        {
            printf("\n");
        }
    }
}
printf("共有%d个素数",num);
return 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=1;j<=2*(5-i)+1;j++)
        {
            printf("*");
        }
        printf("\n");
    }
    return 0;
}

 

 

 

程序运行结果:第四次作业

 

 

二、   本次课知识点总结

1. 本次课学习了循环结构,那么,就三种循环的形式、执行过程、注意事项以及适宜的应用场合做总结。

for 语句

for(表达式1;表达式2;表达式3)

{

   循环体语句

}

for语句中表达式可以部分或全部省略,但两个“;”不能省略。当省略表达式2时,因为缺少循环条件的判断,会形成无限循环。

for语句中的表达式可以是任意有效的C语言表达式。

表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体。

while 语句

while(表达式)

 {

   循环体语句;

}

特点:

先判断表达式,后执行循环体,循环体有可能一次也不执行

do ~ while 语句

do

{

   循环体语句;

} while(表达式);

特点:

先执行循环体,后判断表达式,至少执行一次循环体。

 

 

 

循环次数已知

计数控制的循环

for语句

循环次数未知

由给定条件控制

条件控制的循环

while语句

循环体至少要执行一次

do…while语句

 

 

2.break和continue区别何在?

 都是循环控制语句。

break语句:在循环语句和switch语句中,终止并跳出循环体或开关体。

break只能终止并跳出最近一层的结构

break只能用于循环语句和switch语句中

在循环语句中,break语句一般都是与if语句一起使用。

while(表达式1)

{

   语句组1

    if(表达式2)  break;

    语句组2

}

continue语句 :结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断。

continue语句只能用在循环语句中。 一般都是与if语句一起使用。

while(表达式1)

   {

   语句组1

   if(表达式2)  continue;

   语句组2

   }

continue语句只结束本次循环,而不是终止整个循环的执行。而break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。

3.从本次课开始,我们接触到了一些典型算法,对累加型问题和阶乘型问题进行总结,注意事项是什么?

累加:

和初始化为0或第一项

关键是寻找累加和的构成规律(通项)

   1. 寻找累加项与循环变量之间的关系

   2. 寻找累加项前后项之间的关系     

s=0;

for( i=1 ;i<=n  ;i++  )

{    

   s=s+通项;

 }

阶乘:乘积初始化为1

p=1;

for( i=1 ;i<=n  ;i++  )

{

    p=p*通项;

 }

4.理解循环嵌套

三种循环可互相嵌套,层数不限

外层循环可包含两个以上内循环,但不能相互交叉。

for( ; ;)

   {    ……

          do

          {   ……

          }while();

          ……

         while()

           {   ……

           }

          …...

  }

 

 

 

 

 

三、实验总结

 1.变量一定要附初值。

 2.循环语句之间的逻辑关系一定要想清楚。

3.注意0和o

4.不能忘记取地址符。