【输入输出语句】
【putchar】
【getchar】
【printf】
1. 格式控制符
2. 附加格式控制符
【scanf】
1. 需要对应获取控制字符!
2. 整型需要注意输入格式;
3. 字符型需要处理脏字符!
处理脏字符方法:
1 空格:清除--若干空格,若干tab, 若干回车
2 抑制符*(一个字符):清除--tab,回车,空格,各种符号
3 getchar():清除--一个字符;可以实现吃掉多个字符!(while)
注意:获取字符串结束标志是 空格 、 换行
【练习1】
1. 从键盘输入a、b、c的值,求一元二次方程 y = ax^2+bx+c的根
【gets】 空间足够到才可以使用;
printf("%s\n%s\n", str, str);
scanf("%s %s", str, str);
str2 = gets(str1);
注意:str足够大!gets(str);
gets 获取字符串结束标志是 \n
【puts】
输出一行字符串,函数提供换行;
【练习2】
2. 输入三角形三边长, a, b, c 计算三角形面积;
S = (1/2)*(a + b + c)
AREA = sqrt( S*(S-a)*(S-b)*(S-c) )
实践:
1.下列语句正确的是( C )
A.unsigned int i; scanf(“%d”,i);
B. unsigned int i; scanf(“%f”,i);
C. unsigned int i; scanf(“%u”,&i);
2.以下程序
unsigned int Year,Mon,Day;
scanf(“%4u%2u%2u”,&Year,&Mon,&Day);
程序运行后在键盘输入20 16 1 2 0 2那么变量Day的值为( A )
A.1 B.12 C.2 D.21
【控制语句专题】
【if--else】
1.
if(表达式1){
语句块1
}else{
语句块2
}
2.
if(表达式1){
语句块1
}
3.
if(表达式1){
语句块1
}else if(表达式2){
语句块2
}else{
语句块3
}
4.
if(表达式1){
if(表达式2){
语句块1
}else{
语句块2
}
}else{
if(表达式3){
语句块3
}else{
语句块4
}
}
[练习1]
输入三个数a, b ,c, 输出最大值;
[练习2]
如何判断一个年份是否是闰年?
能被4整除,但不能被100整除的年份;
能被100整除,又能被400整除的年份;
【return 】 返回值 语句
【switch case】
多条件分支语句;
【break】 终止 语句;结束一段局部语句块;
[练习3]
终端输入学生成绩,判断分数等级;
100~90 A
89 ~80 B
79 ~70 C
69 ~60 D
59 ~ 0 不及格
[练习4]
读入两个数据data1 ,data2,和一个算术运算符op,实现算术运算;
eg: input: 1+2 output: 3
【while】
循环执行一段语句块;
先判断,后执行语句体
【do while】
循环执行一段语句块
先执行一次语句体,再判断是否继续执行语句体;
【死循环】
while(1);
do{;}while(1);
【应用一】
用代码实现终端输入一行字符(包括空格和其他特殊字符),原样输出。 (控制语句)putchar getchar
while((ch = getchar()) != '\n'){
putchar(ch);
}
【应用二】
吃掉多个空格
......
while((ch = getchar()) != ' ');
putchar(ch);
【作业】
(***)1. 输入日期,判断是这一年中的第几天?
(*)2. 输入一个数(5位数), 判断是否是回文数,万位与个位数值相等, 千位与十位数值相等。 eg: 12321
(*)3. 输入一个数(1000),判断是否是完数,所有因子(不包括本身)累加,结果和数本身相等。eg。 6 = 1+2+3;