码迷,mamicode.com
首页 > 其他好文 > 详细

三:循环结构实验

时间:2021-05-24 06:02:10      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:load   i++   inpu   利用   value   res   put   小吃   c语言   

C语言实验报告


实验项目:循环结构实验
姓名:游文进 实验地点:514 实验时间:5.6


实验目的与要求:
1.掌握for,while,do...while语句用法
2.了解三种语句的区别与转换,适应性嵌套
3.掌握循环语句中break,continue改变顺序流程的方法


实验内容:

5.3.1 用for语句实现循环


练习一:求数列第i项的值
编写程序求出1,1+2,1+2+3...第i项的值


main()
{
	int n,k,s=0;
	printf("Enter a numer: ");
	scanf("%d",&n);
	for(k=1;k<=n;k++)
	{
		s=s+k;
		printf("%d  ",s);
	}

}

技术图片
问题分析:探寻数列规律写入for循环,输出数值;


练习二:求数列前n项的值


main()
{
	int n,i,j,sign=1;
	float fac,sum;
	printf("Plesae input value of n: ");
	scanf("%d",&n);
	sum=0.0;
	for(i=1;i<=n;i++)
	{
		fac=1.0;
		for(j=1;j<=2*i-1;j++)
		{
			fac=fac*j;
		}
		 fac=fac*sign;
		 sum=sum+fac;
		 sign=-sign;
	}
	printf("sum=%0.f",sum);
}

技术图片


问题分析:首先写好阶乘的代码,之后进行正负号的变换,再写项数值之和的代码,最后输出。
注意变量的类型


5.3.2用while实现循环


练习一


从键盘输入学生成绩,直至输入负数终止,输出最大最小值**


main()
{
	float x,max,min;
	printf("Please input scores:");
	scanf("%f",&x);
	max=min=x;
	while(x>0)
	{
		if(x>max) max=x;
		if(x<min) min=x;
		scanf("%f",&x);
	}
	printf("\n max=%f \n min=%f",max,min);
}

技术图片
问题分析:
先将输入第一个值赋给变量,第二个值嵌入循环将其写入if语句,进行比较,再重新赋值。直至循环中键入的值为负数;最后输出最大最小值。编写过程注意while语句循环条件。


练习二
求所有的水仙花数,三位自然数的百十个位上数值的立方和等于数本身的数称为水仙花数。


main()
{
	int x,y,z,k=100;
	while(k<=999)
	{
		x=k/100;
		y=(k/10)%10;
		z=k%10;
		if(k==x*x*x+y*y*y+z*z*z)
		printf("%d\n",k);
	 	 k++;
	}
}

技术图片


问题分析:
确定循环范围后,计算出百十个位上的值,之后利用if语句将满足条件的数进行输出,过程中注意立方xxx的书写,以及if语句的判断


5.3.3用do while语句实现循环


求满足不等式1+1/2+1/3+1/4...1/n>input 的n值


main()
{
	int n; 
	float sum ,value;
	printf("Input value:");
	scanf("%f",&value);
	sum=0.0;
	n=0;
	do
	{
		++n;
		sum=sum+1.0/(float)n;
	}
	while(sum<value);
	printf("n=%d",n);
}

技术图片


问题分析:编写过程中注意while语句条件,“;”。以及变量类型的设定。


5.3.4while与for实现循环


输入四个字符型数字,将其十进制数显示出来。


main()
{
	char c;
	int k, data;
	data=0;
	for(k=0;k<4;k++)
	{
		while(1)
		{
			c=getchar();
			if(c>=‘0‘&&c<=‘9‘)
			break;
		}
		/*将数字转化为对应的十进制数*/
		if(k==0)
		data=data+(c-‘0‘)*1000;
		if(k==1)
		data=data+(c-‘0‘)*100;
		if(k==2)
		data=data+(c-‘0‘)*10;
		if(k==3)
		data=data+(c-‘0‘);
	}
	printf("Data=%d",data);
}

技术图片


问题分析:明确变量类型后,将for与while嵌套,利用if语句进行变量类型转换


5.3.5for语句嵌套实现循环


百马百担:100匹马驮100担货物,大3,中2,小1,求所有种组合,将其输出。


main()
{
	int m,n,k;/*m,n,k分别代表大中小马*/
	int sum=0;
	 printf("各种驮法如下:\n");
	 for(m=1;m<=100-m;m++)
	 for(n=1;n<=100-m;n++)
	  {
	  	k=100-m-n;
	  	if((m+n+k==100)&&(100==3*m+2*n+0.5*k))
	  	{
	  		printf("大马%d匹;中马%d匹;小马%d匹。\n",m,n,k);
	  		sum++;
		  }
	  }
	  printf("共有%d种驮法。",sum);
}

技术图片


问题分析:利用穷举法将组合列出,再利用if将满足的组合筛选出来,过程中注意if语句判断关系式的书写。


练习二


一正整数数列,前四项和为26,积为880,求该数列前六项值与和。


main()
{
	int a,b,c,d,i,sum=0;
	for(a=1;a<=26;a++)
	{
		for(d=1;d<=26;d++)
		{
			b=4*a+6*d;
			c=a*a*a*a+6*a*a*a*d+11*a*a*d*d+6*a*d*d*d;
			if(b==26&&c==880)
			{
			printf("数列初值为:%d 差值为:%d\n ",a,d);
			printf("数列前六项的值为:\n");
			for(i=0;i<6;i++)
			   {
				printf("%d ",a+i*d);
				sum=sum+a+i*d;
			   }	
		    }
		}
	}
		printf("\n前六项的和为:%d",sum);
}

技术图片


问题分析:
利用第一个for循环然后穷举出首项,进行和与积计算,同样利用if进行唯一结果的输出,再计算前六项的值与和


练习三
食品分类:三个学生买小吃,共花费50元,大3,中2,小1.计算组合。


main()
{
	int x,y,z,sum=0;
	for(x=1;x<=30;x++)
	{
		for(y=1;y<=30;y++)
		{
			z=30-x-y;
			if(50==3*x+2*y+z)
			{
			printf("大学生:%d 中学生:%d 小学生:%d \n",x,y,z);
			sum=sum+1;
			continue; 
			}
		}
	}
	printf("共有%d种组合。",sum);
}

技术图片


问题分析:穷举法,判断条件,输出,利用continue跳出内循环


九九乘法表


进行九九乘法表的输出

main()
{
	int i,j,k; 
	for(i=1;i<=9;i++)
	{
		for(j=1;j<=i;j++)
		{
		    k=j*i;
			printf("%d*%d=%d ",j,i,k);
		}
		printf("\n");
	}
}

技术图片


本章小结

1.利用不同语句进行程序设计,用来加深对语句的理解,
2.在语句需要嵌套时,判断外语句的优缺点再选用语句,例如while作为外语句需书写变量表达式在内部,要与循环体的内循环区分。
3.break用来终止循环,而不是终止所有程序语句,continue,可用来得到单次循环后输出数据后,跳出直接进行下一次循环。

三:循环结构实验

标签:load   i++   inpu   利用   value   res   put   小吃   c语言   

原文地址:https://www.cnblogs.com/YWJN/p/14757309.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!