一、流程控制
1、if语句
//输入两个数,输出结果为从小到大
int a;
int b;
int c;
printf("请输入两个数:");
scanf("%d %d",&a,&b);
if(a>b)
{
c = a;
a = b;
b = c;
}
printf("%d %d",a,b);
//输入三个数,按从小到大排序
int a;
int b;
int c;
int d;
printf("请输入三个数:");
scanf("%d %d %d",&a,&b,&c);
if(a>b)
{
d = a;
a = b;
b = d;
}
if(a>c)
{
d = a;
a = c;
c = d;
}
if(b>c)
{
d = b;
b = c;
c = d;
}
printf("%d %d %d",a,b,c);
return 0;
2、逻辑运算符
运算符 | 含义 | 举例 | 说明 |
&& | 逻辑与 | a&&b | 如果ab都为真,则结果为真,否则为假 (有假则假) |
|| | 逻辑或 | a||b | 有真则真 |
! | 逻辑非 | !a | 取反 |
3、if-else
//输入一个字符,判断是否为大写字母
//若是转换为小写输出
//若不是则不转换
char a;
printf("请输入一个字符:");
scanf("%c",&a);
if(a>=65 && a<=90)
{
printf("%c",a+32);
}
else
{
printf("不转换!");
printf("%c",a);
}
return 0;
!!注意:scanf中的变量要取地址,变量名前要加&
4、switch
支持整型与字符
//判断当前月份为什么季节
int a;
printf("请输入当前月份:");
scanf("%d",&a);
switch(a)
{
case 2:
case 3:
case 4:
puts("当前为春季");
break;
case 5:
case 6:
case 7:
puts("当前为夏季");
break;
case 8:
case 9:
case 10:
puts("当前为秋季");
break;
case 11:
case 12:
case 1:
puts("当前为冬季");
break;
default:
puts("输入错误!");
}
return 0;
5、练习
//已知函数,输入x,输出y
int x;
int y;
printf("请输入x的值:");
scanf("%d",&x);
if(x<1)
{
y = x;
}
else if(x>=1 && x<10)
{
y = 2*x-1;
}
else if(x>=10)
{
y = 3*x-11;
}
else
{
puts("x的范围错误!");
}
printf("y的值为%d",y);
return 0;
//输入百分制成绩,输出等级
int score;
printf("请输入你的成绩:");
scanf("%d",&score);
switch(score/10)
{
case 10:
case 9:
puts("A");
break;
case 8:
puts("B");
break;
case 7:
puts("C");
break;
case 6:
puts("D");
break;
default:
puts("E");
break;
}
return 0;
6、while
while(循环条件,为真则一直执行)
{
循环体;
}
//使用while循环打印1-100且求和
int data = 1;
int sum = 0;
while(data<=100)
{
printf("%d\n",data);
data++;
sum = sum + data;
}
printf("0-100的和为:%d",sum);
return 0;
7、do...while循环
int a = 0;
do
{
printf("我是好人!\n");
a = a+1;
}while(a <= 5);
return 0;
8、for循环
for(条件赋初值;判断临界值;条件改变)
{
循环体
}
9、break与continue的区别
break:提前结束循环
continue:提前结束本次循环
//100-200中不能被3整除的数
int data;
for(data = 100;data <= 200;data++)
{
if(data%3 ==0)
{
continue;
}
printf("%d\n",data);
}
return 0;
10、循环嵌套
//输出4*5矩阵
int i;
int j;
for(i = 1;i<=4;i++)
{
for(j = 1;j<=5;j++)
{
printf("%d ",i*j);
}
printf("\n");
}
1 2 3 4 5
2 4 6 8 10
3 6 9 12 15
4 8 12 16 20
11、练习
//输入两个正整数m,n,求最大公约数和最小公倍数
/*
1.选出n,m中最小的一个数字放到a中
2.分别用n,m对a求余数,即看是否能被a整除
3.直到n,m同时都能被a整除
4.如不能整除,a– (a的值减一) 继续从2开始执行
5.也就是说该循环的判断条件为 n,m能否同时被a整除,只要有一个数不能被a整除,循环继续执行
*/
int m;
int n;
int a;
printf("请输入两个正整数:");
scanf("%d\n%d",&m,&n);
//c = (n
//最小公倍数
//找到a,b中的较大值,假设是最小公倍数,然后去整除,不能整除就++,直到找到最小公倍数为止
#include
int main()
{
int a;
int b;
int tmp;
printf("请输入两个正整数:");
scanf("%d%d",&a,&b);
if(a>b)
{
tmp = a;
}
else
{
tmp = b;
}
while((tmp%a!=0)||(tmp%b!=0))
{
tmp++;
}
printf("最小公倍数为:%d\n",tmp);
return 0;
}
//求100-1000水仙花数
//水仙花数指一个3位数,其个位数字立方和等于该数本身
int a,b,c;
int i;
for(i =100;i<=1000;i++)
{
a=i%10;
b=i/10%10;
c=i/100%10;
if(i == a*a*a+b*b*b+c*c*c )
{
printf("%d\n",i);
}
}
return 0;