【C语言程序设计】实验四 循环结构序设计

实验二 数据类型运算符与表达式

实验三 选择结构程序设计

实验四 循环结构序设计

实验五 数组和字符串

实验六 函数

实验七 指针

实验八 结构体与文件读写

结课实验 俄罗斯方块小游戏

目录

前言

知识纲要

实验内容

实验结果

第一个小实验

第二个小实验

第三个小实验

第四个小实验

结语


前言

这一系列文章所记录的是大一上学期学的一门名为《C语言程序设计》的实验内容,一共包括了八个实验,由于实验一是安装VC以及打印“hello,world”的基本操作,故没有放在这个系列里面,这些实验的代码部分参考与网上,仅供学习和参考~


知识纲要

  1. 循环程序设计的要点有两个方面:(1)循环控制(何时进入和退出循环),(2)循环体(每次循环要执行的语句,注意使条件变化)。
  2. 循环控制有两种方法:(1)计数法:要先确定循环次数,然后逐次测试,完成测试次数后,循环结束。(2)标志法:是达到某一目标后,使循环结束。计数法使用起来很方便,但它要求在程序执行前必须先知道循环的总次数;当不想或无条件使用计数法时,可以使用标志法。
  3. C语言中有三个形成循环控制结构的语句:while和for是先判断后执行循环体(循环体可能一次都不执行),而do … while是先执行循环体后判断(循环体至少会执行一次)。
  4. for循环的初始化和循环变量修改分别在for后圆括号中的第一和第三表达式中实现,而while和do … while循环的初始化要在循环语句之前,循环体中要有循环变量修改(或使循环条件表达式值发生变化)的语句。
  5. for语句括号中的三个表达式都可以省略,但两个分号不能省略,也不要写成逗号。不要在while和for语句后加分号,否则循环体是空语句,特别是while语句,加分号后将造成死循环。
  6. 一个循环的循环体内包含另一个完整的循环结构称为循环嵌套,循环结构可以相互嵌套构成多重循环,但循环结构不可以交叉。
  7. break和continue只能写在循环体内,不能写在循环体外。break立刻终止当前循环,而continue只终止本次循环,还要根据循环条件是否满足决定是否进行下一次循环。在嵌套的循环中break只终止所在层的循环,而不会终止外层循环结构的循环;
  8. 程序中的错误一般分为编译时错误(语法错误)、连接时错误(找不到函数)和运行时错误(异常、逻辑错误)三类。逻辑错误一般较难找到问题所在,可通过程序的动态跟踪和调试找到错误所在。
  9. 程序调试常用的技术有:单步执行、设置断点、变量和表达式监视、调用堆栈查看等

实验内容

1.利用公式1- \frac{1}{3} +\frac{1}{5}-\frac{1}{7}+\begin{matrix} & ....& \\ \end{matrix}+\frac{1}{n} 求π的近似值。

        要求:先提示“输入所需的精度:”,输入要求的精度,根据输入的精度要求求近似值。精度指循环到级数项1/n的值小于该给定值(如:1E-5)就结束循环。

2.输入一个不大于8位的正整数,生成各位与原数反序的另一个数(不能只是反序输出每一位),输出原数是几位数,反序后是什么。例如:输入123456,输出“123456是6位数,反序后是:654321”。

        提示:可通过在循环中除10取余求出输入数的每一位,循环的次数就是原数的位数,反序数可以通过每次循环中乘10再加本次求得的一位得到。

3.编写程序输出所有“水仙花数”,所谓“水仙花数”是指一个3位数,其各位数字之“立方和”等于该数本身。例如:153 = 13 + 53 + 33

        提示:有两种做法:1、用单循环从100到999,取出3位数的每一位进行计算和比较;2、用三重循环,个、十、百位分别循环,算出3位数进行计算和比较。

4.程序调试与跟踪:

        通过设置断点、单步执行、监视变量等程序调试手段,在VC的调试状态下一步一步执行程序,并观察程序执行的顺序与变量值的变化。


实验结果

第一个小实验

#include<stdio.h>
#include<math.h>
void main( )
{
    double pi=0.0,t=1.0,p;int s=1,n=1;
	printf("输入所需的精度:");
	scanf("%lf",&p);
	while(t>p)
{   pi=pi+s*t;
	n=n+2;
	s=-s; 
	t=1.0/n;
	
}
	printf("PI=%lf\n",4*pi);
}

第二个小实验

#include<stdio.h>
int main()
{
    long num;int num1,num2,num3,num4,num5,num6,num7,sum;
	long anum2,anum3,anum4,anum5,anum6,anum7;
	printf("输入一个不大于8位的正整数");
	scanf("%ld",&num);
    if(num>=1e+8)
	{
		printf("输入错误");
	     return 0;
	}
	else (num<1e+8);
		
		goto con;
//假如输入的是1234567	
con:num1=num/1e+6;//num1=1.234567 =1
	num2=(num/1e+5)-(num1*10);//num2=12.34567 ,12-10=2
	num3=(num/1e+4)-(num1*100)-(num2*10);//num3=123 -100-20=3
	num4=num/1e+3-(num1*1000)-(num2*100)-(num3*10);//num4=1234-1000-200-30=4
	num5=num/1e+2-(num1*10000)-(num2*1000)-(num3*100)-(num4*10);//num5=12345-10000-2000-300-40=5
	num6=num/1e+1-(num1*100000)-(num2*10000)-(num3*1000)-(num4*100)-(num5*10);//num6=123456-100000-20000-3000-400-50=6
	num7=num-(num1*1e+6)-(num2*1e+5)-(num3*1e+4)-(num4*1e+3)-(num5*1e+2)-(num6*1e+1);//num7=7
    anum2=num2*10;
	anum3=num3*1e+2;
	anum4=num4*1e+3;
	anum5=num5*1e+4;
	anum6=num6*1e+5;
	anum7=num7*1e+6;
	sum=num1+anum2+anum3+anum4+anum5+anum6+anum7;

		printf("%ld",sum);
	return 0;
}

第三个小实验

#include<stdio.h>
int main()
{
	int num=100;
	int numfrist,numsecond,numthird;
	for(num=100;num<=999;num++)
	{
		numfrist=num/100;
	    numsecond=(num-numfrist*100)/10;
		numthird=num-100*numfrist-10*numsecond;
		if(num==numfrist*numfrist*numfrist+numsecond*numsecond*numsecond+numthird*numthird*numthird)
		printf("%d=%d*%d*%d+%d*%d*%d+%d*%d*%d\n",num,numfrist,numfrist,numfrist,numsecond,numsecond,numsecond,numthird,numthird,numthird);
		
	}
	
	return 0;
}

第四个小实验

因为并无代码需要写,故省略了这个的具体操作方法。


结语

如果有疑问欢迎大家留言讨论,你如果觉得这篇文章对你有帮助可以给我一个免费的赞吗?我们之间的交流是我最大的动力!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hiddenSharp429

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值