admin管理员组

文章数量:1794759

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

谭浩强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操作,直接返回函数,所有该函数体内的代码(包括 循环体)都不会再执行。 参考文献: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

本文标签: 示例代码语言程序设计笔记谭浩强