2009-08-13c语言学习日记(循环,第五章,for循环
2009-08-13 21:59
597 查看
练习代码1
上面代码可以简化为:
练习代码3:
练习代码4:
运行结果:
4 is true!
3 is true!
2 is true!
1 is true!
0 is false!
-4 is true!
-3 is true!
-2 is true!
-1 is true!
0 is false!
关系符优先级高于赋值符,x=(y>2)和x=y>2相等
练习代码5:
练习代码6:
练习代码7:
练习代码8:
练习代码9:
for(表达式 1;表达式 2;表达式 3)语句
它的执行过程如下:
(1)先求表达式 1.
(2)求表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下面第三步 做若为
假(值为0),则结束循环,转到第5步.
(3)求解表达式3
(4)转回上面第(2)步骤继续执行;
(5)结束循环,执行for语句下面的一个语句;
for(循环变量赋初值;循环条件;循环变量增值)语句
如
for(i=1;i<=100;i++)sum=sum+i;
它的执行相当于
i=1;
while(i<=100){
sum=sum+i;
i++;
}
显然,用for语句更简单、方便。
说明:
(1)for语句的一般形式中的"表达式1"可以省略,此时应在for语句之前给循环变量赋初值.注意省略表达式1时,其后的分号不能省略.如for(;i<=100;i++){....};
(2)如果表达式2省略 即不判断循环条件,循环无终止地循环下去,也就是认为表达式2始终为真.
例如:for(i=1;;i++){.....};
相当于
i=1;
while(1)
{sum=sum+1;
i++;
}
(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束.如:
for(i=1;i<=100;)
{sum=sum+1;
i++;
}
这个例子的循环增量没有放在表达式三的位置 而是作为循环体的一部分 其效果是一样的.
(4)可以省略表达式1和表达式3,只有表达式2 即只给循环条件.
如
for(;i<=100;)
{
sum=sum+i;
i++;
}
这个相当于
whlie(i<=100)
{
sum=sum+i;
i++;
}
(5)三个表达式都可以省略,如:
for(;;)语句
相当于
while(1)语句
即不设初值 不判断条件(认为表达式2为真值)循环变量不增值,无终止的执行循环体.
(6)表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式.如:
for(sum=0;i<=100;i++)
{
sum=sum+i;
}
for(sum=0,i=0;i<=100;i++)
{
sum=sum+i;
}
#include<stdio.h> int main(){ int num; int sum=0; int status; printf("Please enter a num(q to quit):"); status=scanf("%d",&num);//获取scanf的返回值 while(status==1){ sum=sum+num; printf("Please enter a num(q to quit):"); status=scanf("%d",&num); } printf(" That sum is %d/n",sum); getch(); return 0; }
上面代码可以简化为:
#include<stdio.h> int main(){ int num; int sum=0; printf("Please enter a num(q to quit):"); while(scanf("%d",&num)==1){ sum=sum+num; printf("Please enter a num(q to quit):"); } printf(" That sum is %d/n",sum); getch(); return 0; }
练习代码3:
#include<stdio.h>//在浮点数比较中,关系运算符只能用<>,不能用=,原因在于舍入误差可能会导致逻辑上相等的数不相等 #include<math.h> int main(void){ const double ANSWER=3.1415926; double response; printf("What's the vaiue of pi?/n"); scanf("%lf",&response); while(fabs(response-ANSWER)>0.0001){ printf("Try again/n"); scanf("%lf",&response); } printf("Close enough/n"); getch(); return 0; }
练习代码4:
#include<stdio.h>//在c中,所有的非零值都被认为为真,只有0是假 int main(){ int n=4; while(n) printf("%d is true!/n",n--); printf("%d is false!/n",n); n=-4; while(n) printf("%d is true!/n",n++); printf("%d is false!/n",n); getch(); return 0; } 4 is true!
运行结果:
4 is true!
3 is true!
2 is true!
1 is true!
0 is false!
-4 is true!
-3 is true!
-2 is true!
-1 is true!
0 is false!
关系符优先级高于赋值符,x=(y>2)和x=y>2相等
练习代码5:
#include<stdio.h>//for循环 int main(void) { const int A=22; int n; for(n=1;n<=A;n++) printf("%d/n",n); getch(); return 0; }
练习代码6:
#include<stdio.h>//平方立方表,for循环 int main(void){ int num; printf("n n*n n*n*n/n"); for(num=1;num<=8;num++) printf("%d%5d%6d/n",num,num*num,num*num*num); getch(); return 0; }
练习代码7:
#include<stdio.h>//26字母ascii码表,for循环 int main(){ char c; for(c='A';c<='Z';c++) printf("%c 的ASCII码为%d/n",c,c); getch(); return 0; }
练习代码8:
#include<stdio.h> int main(){ const int FIRST=37; const int NEXT=23; int ounces,cost; printf("ounces cost/n"); for(ounces=1,cost=FIRST;ounces<=16;ounces++,cost+=NEXT)//注意逗号运算符 printf("%3d $%4.2f/n",ounces,cost/100.0); getch(); return 0; }
练习代码9:
#include<stdio.h> int main(){ int t,num; double time,x; printf("please enter:/n"); scanf("%d",&num); for(x=1,time=0,t=1;t<=num;++t,x*=2.0) { time+=1/x; printf("time is %f terms is %d/n",time,t);//不懂 } getch(); return 0;
C语言For循环详解
c语言中的for循环语句使用最为灵活,不仅可以用于循环次数已经确定的情况,而且可以用于循环次数不确定而只给出循环结束条件的情况,它完全可以代替while语句.for(表达式 1;表达式 2;表达式 3)语句
它的执行过程如下:
(1)先求表达式 1.
(2)求表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下面第三步 做若为
假(值为0),则结束循环,转到第5步.
(3)求解表达式3
(4)转回上面第(2)步骤继续执行;
(5)结束循环,执行for语句下面的一个语句;
for(循环变量赋初值;循环条件;循环变量增值)语句
如
for(i=1;i<=100;i++)sum=sum+i;
它的执行相当于
i=1;
while(i<=100){
sum=sum+i;
i++;
}
显然,用for语句更简单、方便。
说明:
(1)for语句的一般形式中的"表达式1"可以省略,此时应在for语句之前给循环变量赋初值.注意省略表达式1时,其后的分号不能省略.如for(;i<=100;i++){....};
(2)如果表达式2省略 即不判断循环条件,循环无终止地循环下去,也就是认为表达式2始终为真.
例如:for(i=1;;i++){.....};
相当于
i=1;
while(1)
{sum=sum+1;
i++;
}
(3)表达式3也可以省略,但此时程序设计者应另外设法保证循环能正常结束.如:
for(i=1;i<=100;)
{sum=sum+1;
i++;
}
这个例子的循环增量没有放在表达式三的位置 而是作为循环体的一部分 其效果是一样的.
(4)可以省略表达式1和表达式3,只有表达式2 即只给循环条件.
如
for(;i<=100;)
{
sum=sum+i;
i++;
}
这个相当于
whlie(i<=100)
{
sum=sum+i;
i++;
}
(5)三个表达式都可以省略,如:
for(;;)语句
相当于
while(1)语句
即不设初值 不判断条件(认为表达式2为真值)循环变量不增值,无终止的执行循环体.
(6)表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式.如:
for(sum=0;i<=100;i++)
{
sum=sum+i;
}
for(sum=0,i=0;i<=100;i++)
{
sum=sum+i;
}
相关文章推荐
- GO语言学习日记(六)常量的赋值
- 汇编语言学习系列 for循环实现
- 1121 C语言实验——for循环打印图形(循环结构)
- 2015-3-27C语言学习日记
- 2015-3-30C语言学习日记
- 嵌套循环连接,哈希连接,排序合并连接(2015-2-4学习日记)
- Go语言学习3:Go语言中的循环
- java软件工程师培训学习日记------java语言核心基础之面向对象编程
- 【Python学习日记】Python语言特点总结
- 【C++ Primer】第五章学习笔记(循环和关系表达式)
- 比较R语言、perl语言,matlab中for循环和while循环的使用
- 2016年06月14日学习日记c语言结构体
- GO语言学习笔记1(基本概念,条件循环语句)
- Python基础教程学习笔记----第五章 条件、循环和其他语句
- 2009-10-26c语言日记(预处理)
- 黑马程序员学习日记——java语言基础,dos命令,环境变量搭建
- 2015-4-7C语言学习日记
- 山东理工大学ACM平台题答案 1121 C语言实验——for循环打印图形(循环结构
- 32位汇编语言学习笔记(9)--分析while循环的汇编代码
- 2015-4-1C语言学习日记