day 2
三目运算符
A?B:C
等价于
if(A)
B;
else
C;
实例:
int i;
i=(3>2?5:1) //如果3》2为真,i的值为5,否则为1
printf(“%d”,i);
逗号表达式
格式
(A,B,C,D)
功能: 从左到右执行
最终表达式的值是最后一项的值
实例:
#include <stdio.h>
int main(void)
{
int i;
int j=2;
i=(j++,++j,j+2,j-3);
printf("%d\n",i);
return 0;
}
结果为1。
while循环
1.执行顺序
格式: while(表达式)
语句;
2.与for的相互比较
for和while可以相互转换,但for的逻辑性更强,更不容易出错
for(1;2;3)
A;
等价于
1;
while(2)
{
A;
3;
}
//for 与 while的转换
#include <stdio.h>
int main(void)
{
int sum=0;
int i;
/*for(i=1;i<101;i++)
sum=sum+i;
*/
i=1;
while (i<101)
{
sum=sum + i;//语句一
i++; //语句二 语句一与语句二顺序不可以调转
}
printf("%d\n",sum);
return 0;
}
3.实例
从键盘输入一个数字,如果该数字是回文数,返回yes,否则返回no。
回文数:正着写和倒着写都一样 比如:121
#include <stdio.h>
int main(void)
{
int i;
int m;
int sum=0;
printf("请输入您要判断的数字:");
scanf("%d",&i);
m=i;
while(m)
{
sum= sum *10+m%10;
m/=10;//等价于m=m/10
}
if(sum ==i)
printf("yes\n");
else
printf("no!\n");
return 0;
}
//斐波拉契数列 1 2 3 5 8 13 21 34
#include <stdio.h>
int main(void)
{
int n;
int f1,f2,f3;
int i;
f1=1;
f2=2;
printf("请输入您要输入的序列:");
scanf("%d",&n);
if (1==n)
{
f3=1;
}
else if(2==n)
{
f3=2;
}
else
{
for (i=3; i<=n;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
}
}
printf("%d\n",f3);
return 0;
}
do... while:主要用于人机交互
格式:do
{
...
} while(表达式);
do ...while..并不等价于for,也不等价于while
代码整理格式:全选(ctrl+a)---》alt+f8
//斐波拉契数列 1 2 3 5 8 13 21 34
#include <stdio.h>
int main(void)
{
int n;
int f1,f2,f3;
char ch;
int i;
f1=1;
f2=2;
do
{
printf("请输入您要输入的序列:");
scanf("%d",&n);
if (1==n)
{
f3=1;
}
else if(2==n)
{
f3=2;
}
else
{
for (i=3; i<=n;i++)
{
f3=f1+f2;
f1=f2;
f2=f3;
}
printf("%d\n",f3);
}
printf("您想继续吗(y/n):");
scanf(" %c", &ch); //%c前面要加一个空格(空白符的问题)
}//while (1);
while ('y'==ch || 'Y'==ch);
return 0;
}