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

循环语句笔记-C语言

2018-11-09 22:40 127 查看

1.循环三要素
-循环变量的初值
-循环变量的判断
-循环变量的更新

int i = 9; // 定义一个整型变量 i 并将9赋值给 i
while(i > 1) // 判断变量 i 是否 大于1,确定是否执行下列代码
{
i -= 2;//变量 i 的更新
}

在C语言中,循环条件非常灵活,可以是各种表达式,并不仅限于条件表达式或逻辑表达式,只要表达式的返回值为非0,即认为循环条件为true;表达式的返回值为0,即认为循环条件为false,结束循环。
2. while循环结构
while语句可用来实现入口条件循环,即当循环条件满足时执行循环体内的语句
错了的题
使用循环计算1-100的累加和
需要循环变量
需要累积和变量

原答案
#include <stdio.h>
int main()
{
int num;
num = 1;
while(num <= 100)
{
printf("%d\n",num++);//试图妄想直接在num中累加
num++;
}
return 0;
}


从以上的代码和运行结果可以看出,原答案一定是错的。只定义了循环变量,而没有定义累加和变量,所以一直在变量num中运行。
正确答案

#include <stdio.h>
int main()
{
int num,sum;// 定义了累加和sum变量
num = 1;
sum = 0;
while(num <= 100)
{
sum = sum + num;// 累加和的计算
printf("%d\n",sum);
num++;
}
return 0;
}


从以上答案的对比中可以看出,变量真的很重要,也不要妄想以一个变量能撬起整个代码,数学理解能力也很重要
3.do-while循环结构
do-while循环结构应该可以算是while循环结构的倒数。while循环结构是先判断再执行,而do-while循环结构是先执行后判断。
do-while语句适合先循环,然后在循环过程中产生控制条件,第一次循环结束后,再判断条件,以决定是否进行下一次循环。

#include <stdio.h>
int main()
{
int num,sum;
num = 1;
sum = 0;
do // 也不能忘记写了
{
sum = sum + num;
printf("%d\n",sum);
num++;
}
while(num <= 100);// **需要特别注意,这里的while需要“  ;  ”,一定不能忘了 **
return 0;
}

答案与上面截图一样
4.for循环结构
for循环结构就很高级了!!!

for(循环变量赋初值;循环条件;循环变量增值)

其实其他都与上两个循环差不多,就上面表达不同吧

#include <stdio.h>
int main()
{
int num,sum;
sum = 0;
for(num = 1;num <= 100;num++)// 注意!!!
{
sum = sum + num;//sum += num;
printf("%d\n",sum);
}
return 0;
}

5.循环的嵌套
其实应该可以把循环的嵌套和if-else语句看成一起的吧,就是外面的if套几个里面的else if,那么for语句里的里面再套几个for语句。
例题------九九乘法表

#include <stdio.h>
int main()
{
int i,j;
for(i = 1;i <= 9;i++)
{
for(j = 1;j <= 9;j++)
{
printf("%d*%d = %-2d",i,j,i*j);
}
printf("\n");
}
return 0;
}


忽略那个运行结果的美观,以后再看看有啥改进的地方
6.返回语句
一般有int的,就返回整型,然后就这样推吧。而void就不需要返回值了,void就看成是空的,不需要任何值的
找到一个好玩的返回值代码

#include <stdio.h>
int main()
{
int max(int x,int y);
int min(int x,int y);
int j,p,t;
printf("输入数组长度:\n");
scanf("%d",&j);
int a[j],m,n,i;
printf("输入数组内容:\n");
for(i=0;i<j;i++)
scanf("%d",&a[i]);
printf("\n");
for(i = 1,m = a[0],n = 0;i < j;i++)
{
if(max(m,a[i])>m)
{
m = max(m,a[i]);
n = i;
}
}
for(i = 1,p = a[0],t = 0;i<j;i++)
{            if(min(p,a[i])<p)
{
p = min(p,a[i]);
t = i;
}
}
printf("最大值为%d\n第%d位\n最小值为%d\n第%d位\n",m,n+1,p,t+1);
return 0;
}
int max(int x,int y)
{
return(x>y?x:y);//就这里,自定义函数的返回值
}
int min(int x,int y)
{
return(x<y?x:y);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: