谭浩强C语言程序设计代码示例第6章(笔记)

谭浩强C语音程序设计代码示例第六章(新手入门笔记)

第一章包含参考书,在线编译工具,代码,注释等。

遵循共享互助原则

谭浩强C语言程序设计代码示例(1-3章)

谭浩强C语言程序设计代码示例第4章(笔记)

谭浩强C语言程序设计代码示例第5章(笔记)

/*----------------------------(第六章 循环控制)--------------------------*/
/***************************************************************************
一、循环控制分类:
		1)用goto语句和if语句构成循环(不常用):
			格式:goto 语句标号; 其中语句标号为:有效标识符:(冒号)
			含义:执行goto语句后,程序跳转到该标号处并执行其后的语句。
			特点:一般与if连用。
		2)用while语句:
			格式:while(循环条件){
				 	循环体;
				 }
			含义:先判断循环条件是否为真,为真则执行循环体、为假则不执行;
			特点:先判断,后循环!!!!
		3)用do-while语句:
			格式:do{
					循环体;
				 }while(循环条件);
			含义:先进行循环,然后判断循环体是否为真,为真则继续执行循环体、为假则不执行;
			特点:先循环,后判断!!!!
		4)用for语句:
			格式:for(表达式1;循环条件;表达式3)
				 {
					 循环语句;
				 }
			含义:循环条件为真,则执行循环语句,反之则不执行;
			特点:没特点(●—●)
****************************************************************************/
#include <stdio.h>
#if 1
/*eg6.1,用goto语句和for语句构成循环求1~100累加,p89*/
/*不理解的小伙伴将loop:和goto loop;注释掉,对比分析一下两次结果有何不同*/
int main(void)
{
	int i = 1,sum = 0;
loop:			//语句标号————>有效标识符+冒号(将其注掉看看会发生什么)
	if(i<=100){
		sum = sum+i;
		i++;
		goto loop;//无条件转移语句(将其注掉看看会发生什么)
	}
	printf("sum = %d\n",sum);
	return 0;
}
#endif

#if 0
/*eg6.2,利用while语句求1~100累加,p90*/
int main(void)
{
	int i = 1,sum = 0;
	while(i<=100){//while循环
		sum = sum + i;
		i++;
	}
	printf("sum = %d\n",sum);
	return 0;
}
#endif

#if 0
/*eg6.3,统计从键盘输入一行字符的个数,p91*/
int main(void)
{
	int n = 0;
	printf("input a string:\n");
	while(getchar()!='\n'){//当输入的字符串不为回车时,循环持续运行
		n++;//计数器自加(输入一个字符,循环一次,自加一次)
	}
	printf("string number is %d\n",n);
	return 0;
}
#endif

#if 0
/*eg6.4,自定义循环次数,p91*/
int main(void)
{
	int a = 0,n;
	printf("input n:");
	scanf("%d",&n);//输入5,循环5次
	while (n--) {
		printf("%d  ",a++*2);//输出0  2  4  6  8
	}
	return 0;
}
#endif

#if 0
/*eg6.5,利用do—while语句求1~100累加,p92*/
int main(void)
{
	int i = 1,sum = 0;
	do {
		sum = sum + i;
		i++;
	}while (i<=100);
	printf("sum = %d\n",sum);
	return 0;
}
#endif

/****************************************************************
while循环与do-while循环比较:
	1)while循环:先判断后循环!!
	2)do-while循环:先循环后判断!!
*****************************************************************/
#if 0
#if 1
/*eg6.6,while循环与do-while循环比较*/
int main(void)
{
	int sum = 0,i;
	printf("input i:");
	scanf("%d",&i);//输入1
	while(i<=10){//先判断后循环
		sum = sum +i;
		i++;
	}
	printf("sum = %d\n",sum);//输出55
	return 0;
}
#else
int main(void)
{
	int sum = 0,i;
	printf("input i:");
	scanf("%d",&i);//输入1
	do {//先循环后判断
		sum = sum +i;
		i++;
	}while (i<=10);
	printf("sum = %d\n",sum);//输出55
	return 0;
}
#endif
#endif

#if 0
/*eg6.7,利用for循环进行循环嵌套,p97*/
int main(void)
{
	int i,j,k;
	printf("i,j,k\n");
	for(i=0;i<2;i++){
		for(j=0;j<2;j++){
			for(k=0;k<2;k++){
				printf("%d,%d,%d\n",i,j,k);
			}
		}
	}
	return 0;
}
#endif
/**********************************************************************
break与continue区别上一章有叙述:
注意:在Switch语句中最需要注意的就是break与continue的作用和区别:
		1)共同点:两者都是用于终止循环的;
		2)break:终止循环,结束当前选择的语句,跳出循环体(例如本示例中跳出switch循环),后面的
			    语句不在执行;
		3)continue:终止循环,跳过本次循环体中剩下尚未执行的语句,立即进行下一次的循环条件判定
				   (不跳出循环体,一般常见于while循环或for循环)。
		4)return:也是用于终止循环的,执行return操作,直接返回函数,所有该函数体内的代码(包括
				 循环体)都不会再执行。
		参考文献:http://985.so/b026u
***********************************************************************/
#if 0
/*eg6.8,break语句用法,p97*/
/*有基础的可以先看eg6.9*/
/*可以将注销掉的打开,一行代码,一行打印(找bug,也叫除虫),对其break更好的进行理解*/
int main(void)
{
	int i = 0;
	//printf("1\n");
	char c;
	//printf("2\n");
	while(1){//无限循环(慎用)
		//printf("3\n");
		c = '0';
		//printf("4\n");
		while(c!='\n'){/*键盘收到字符直接按回车或ESC键*/
			//printf("5\n");
			c = getchar();
			//printf("6\n");
			printf("%c\n",c);
			//printf("7\n");
		}
		//printf("8\n");
		if(c == '\n'){/*若按回车键则退出循环*/
			//printf("9\n");
			break;//-----------看这里,按下回车之后循环停止,后面的语句不在执行,break用法
			//printf("10\n");
			i++;
			//printf("11\n");
			printf("The No. is %d\n",i);
			//printf("12\n");
		}
		//printf("13\n");
		printf("The end");
	}
	//printf("14\n");
	return 0;
	//printf("15\n");
}
#endif

#if 0
/*eg6.9,continue语句用法,p99*/
/*可以将注销掉的打开,一行代码,一行打印(找bug,也叫除虫),对其break更好的进行理解*/
int main(void)
{
	int i = 0;
	char c;
	while(1){//无限循环(慎用)
		c = '0';
		while(c!='\n'){/*键盘收到字符直接按回车或ESC键*/
			c = getchar();
			printf("%c\n",c);//这里输出了'\n',在自己输入回车('\n')的时候,会打印两行空白
		}
		if(c == '\n'){/*若按回车键则退出循环*/
			//break;/*参考书中break和continue放在这里*/
			//continue;/*个人感觉放在后文会效果更好*/
			i++;
			printf("这是 No.%d 循环\n",i);
		}
		printf("The end\n");
		//break;//都是起终止循环作用,具体用法看上文介绍
		continue;//可以将break和continue互换进行调试理解
		printf("有break和continue,终止循环,这句话不会执行\n");
	}
	return 0;
}
#endif

#if 0
/*eg6.10,用π/4=1-1/3+1/5-1/7+···公式求π,p99*/
/*fabs(x)就是返回x的绝对值*/
/*分析:用π/4≈1-1/3+1/5-1/7+....公式求π的近似值,直到某一项的绝对值小于1e-6为止*/
#include <math.h>	//数学头文件
int main(void)
{
	int s;
	float n,t,pi;
	t = 1.0,pi = 0,n = 1.0,s = 1;
	while(fabs(t)>1e-6){//因为t有可能会是负数,所以需要用这个函数返回绝对值,并且精确到6个小数
		pi = pi +t;
		n = n + 2;
		s = -s;		//因为每一个值都是一正一负交替,这样可以保证一次正一次负
		t = s/n;
	}
	pi = pi*4;
	printf("pi = %10.6f\n",pi);
	return 0;
}
#endif

#if 0
/*eg6.11,判断m是否为素数*/
#include <math.h>
int main(void)
{
	int m,i,k;
	printf("输入m:");
	scanf("%d",&m);
	k=sqrt(m);
	for(i=2;i<=k;i++){
		if(m%i==0){
			break;
		}
	}
	if(i>=k+1)
		printf("%d 是素数\n",m);
	else
		printf("%d 不是素数\n",m);
	return 0;
}
#endif

#if 0
/*eg6.12,求100~200间的全部素数,p100*/
#include <math.h>
int main(void)
{
	int m,i,k,n = 0;
	for(m=101;m<=200;m++){
		k=sqrt(m);
		for(i=2;i<=k;i++){
			if(m%i==0){
				break;
			}
		}
	if(i>=k+1)
		printf("%d 是素数\n",m);
	else
		printf("%d 不是素数\n",m);
	}
	return 0;
}
#endif

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值