#include<stdio.h>
int main(void)
{
char a;
char b = "hello world";
a = getchar(b); //字符输入
putchar(a); //字符输出
return 0;
}
目录
1.控制语句
C语言中控制语句主要三种,分别是顺序语句(它是最基本的控制语句,使用频率最高),选择语句(if,if else,switch case)和循环语句(for,while,do while)
1.1顺序语句
语句按照一定的先后顺序去执行
//顺序语句
#include<stdio.h>
int main(void)
{
int a = 2;
int b = 3;
int c;
c = a + b;
printf("c = %d\n",c);
return 0;
}
//以上就是按照先后顺序一句一句去执行
//结果为c = 5
1.2选择语句
1.2.1 单分支选择语句
if(表达式)
{
语句;
}
判断表达式的值是否为真,若为真,执行“语句”;反之,不执行。在C语言中,非0为真,0为假。
#include<stdio.h>
int main(void)
{
int a = 8;
int b = 2;
if(a>b)
{
a = b;
} //如果满足a>b,将b的值赋给a;否则不执行“a = b;”
printf("a = %d,b = %d\n",a,b); //满足a>b,所以将b的值赋给a,a此时的值为2
return 0;
}
//结果为:a = 2,b =,2
1.2.2 双分支语句
if(表达式)
{
语句1;
}
else
{
语句2;
}
判断表达式的值是否为真,若为真,执行“语句1”;反之,执行“语句2”。
//案例:输入一个年份,判断是闰年还是平年
//闰年:能被4整除(取余为0)但不能被10整除(取余不为0),或者能被400整除
#include<stdio.h>
int main()
{
int year; //定义一个整型变量,用来保存输入的年份
printf("请输入一个年份:\n");
scanf("%d",&year);
if((0 == year%4 && 0 != year%100) || (0 == year%400)) //if后不能有分号
{
printf("%d年为闰年",year);
}
else //else后面不能有表达式
{
printf("%d年为平年",year);
}
return 0;
}
1.2.3 多分支if语句
if(表达式1)
{
语句1;
}
else if(表达式2)
{
语句2;
}
else if(表达式3)
{
语句3;
}
··· ···
else if(表达式n)
{
语句n;
}
else
{
语句n+1;
}
从上至下,以此判断表达式的值,如果表达式的值为真,则执行相应的语句,然后跳出整个if语句
//案例:输入一个成绩,判断成绩的等级
//60分一下等级为D(不包含60分),60~70分等级为C(不包含70分),70~80分等级为B(不包含80分),
//80分以上等级为A,满分为100,判断区间为0~100
#include<stdio.h>
int main(void)
{
int chj;
printf("请输入一个成绩:\n");
scanf("%d",&chj);
if(chj<=0 && chj<60)
{
printf("%d分为等级D",chj);
}
else if(chj>=60 && chj<70)
{
printf("%d分为等级C",chj);
}
else if(chj>=70 && chj<80)
{
printf("%d分为等级B",chj);
}
else if(chj>=80 && chj<101)
{
printf("%d分为等级A",chj);
}
else
{
printf("输入错误,已超出判断范围");
}
return 0;
}
1.2.4 switch语句
switch(表达式) //后面没有分号
{
case 标号1:
语句1;
case 标号2:
语句2;
case 标号3:
语句3;
··· ···
case 标号n:
语句n;
default :
语句n+1;
}
注意:(1)表达式不能为float型
(2)标号必须为常量
(3)表达式 = 标号 时,执行冒号后面的语句,直到switch语句结束为止;或者碰到break 语句结束。
//判断以下程序执行的结果
#include<stdio.h>
int main(void)
{
int a = 5;
switch(a)
{
case 2: printf("2\n");
befault: printf("不存在该选项\n");
case 4:
case 1: printf("1\n");
case 3: printf("3\n"); break;
case 0: printf("0\n");
}
return 0;
}
//给a初始化为5,在switch语句中寻找标号5,但是不存在标号5,则执行befault那一行
//打印出“不存在该选项”;然后依次向下执行case 4:无语句继续向下执行,case 1: 打印“1”,
//case 3: 打印“3”,直到case 3: 后面有break语句,结束switch语句。打印结果如下:
//结果为:不存在该选项
// 1
// 3
案例:输入年,月,输出这一年的这个月有多少天
//案例:输入年,月,输出这一年的这个月有多少天
//2月要注意,先要判断是闰年(29天)还是平年(28天)
//闰年的判断条件:能被4整除但不能被100整除,或者能被400整除
//1,3,5,7,8,10,12月,每月有31天
//4,6,9,11月,每月有30天
#include<stdio.h>
int main(void)
{
int year,month;
printf("请输入一个年份和月份:\n");
scanf("%d%d",&year,&month);
switch(month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: printf("%d年%d月有31天\n",year,month); break;
case 4:
case 6:
case 9:
case 11: printf("%d年%d月有30天\n",year,month); break;
case 2:
if((0 == year%4 && 0 != year%100) || year%400 == 0)
{
printf("%d年%d月有29天\n",year,month);
}
else
{
printf("%d年%d月有28天\n",year,month);
}
befault: printf("输入错误"); break;
}
return 0;
}
1.3 循环语句
循环三要素:循环的起始条件,循环的终止条件,循环变量的变化
1.3.1 for语句
for(表达式1;表达式2;表达式3)
{
语句;
}
//表达式1 为循环变量的起始条件
//表达式2 为循环变量的终止条件
//表达式3 为循环变量的变化
先执行表达式1的值,再执行表达式2,如果表达式2的判断结果为真,则执行循环体中的“语句”,最后执行表达式3,如此循环,直到表达式2 的判断结果为假时,跳出循环。
1.省略“表达式1”
//不省略表达式1
#include<stdio.h>
int main()
{
int i; //定义一个循环变量
for(i=0;i<5;i++)
{
printf("hello"\n);
}
return 0;
}
//表达式1省略
/*
#include<stdio.h>
int main()
{
int i = 0; //定义一个循环变量,赋初值为0
for(;i<5;i++) //表达式1可以省略,但是后面的分号不能省略
{
printf("hello"\n);
}
return 0;
}
//省略表达式1时,需要在for之前给循环变量赋初值
*/
2.省略“表达式2”
//不省略表达式2
#include<stdio.h>
int main()
{
int i; //定义一个循环变量
for(i=0;i<5;i++)
{
printf("hello"\n);
} //打印五次“hello”
return 0;
}
//表达式2省略
/*
#include<stdio.h>
int main()
{
int i; //定义一个循环变量
for(i=0;;i++) //表达式2可以省略,但是后面的分号不能省略
{
printf("hello"\n);
}
return 0;
}
//省略表达式2时,为无限循环/死循环,打印n个“hello”
*/
3.省略“表达式3”
//不省略表达式3
#include<stdio.h>
int main()
{
int i; //定义一个循环变量
for(i=0;i<5;i++)
{
printf("hello"\n);
} //打印五次“hello”
return 0;
}
//表达式3省略
/*
#include<stdio.h>
int main()
{
int i; //定义一个循环变量
for(i=0;i<5;) //表达式3省略
{
printf("hello"\n);
i++; //在不改变题意的前提下,i++移动位置
}
return 0;
}
*/