您的位置:首页 > 编程语言 > C语言/C++

2009-08-13c语言学习日记(循环,第五章,for循环

2009-08-13 21:59 597 查看
练习代码1

#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: