谭浩强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
更多推荐
谭浩强C语言程序设计代码示例第6章(笔记)
发布评论