笔记
昨天补充
全局变量和局部变量:
两者可以重名,赋值遵循就近原则
示例:
#include<stdio.h>
int a=10;
void vv();
int main(int argc, char const *argv[])
{
int a=8;
vv();//10
printf("%d\n",a);//8
return 0;
}
void vv()
{
printf("%d\n",a);
}
一.输入输出
1.1按字符输入输出
函数名 | getchar(输入) | putchar(输出) |
头文件 | #include<stdio.h> | #include<stdio.h> |
功能 | 向终端输入一个字符 | 终端输出一个字符 |
参数 | 无 | 字符的ASCII码值 |
返回值 | 终端输入的字符的ASCII码值 | 字符的ASCII码值 |
注意点 | 可用于垃圾字符回收 | 没有换行效果,需要而外添加 |
1.2按格式输入输出
printf
函数名 | printf |
头文件 | #include<stdio.h> |
功能 |
按指定
的
格式
向
终端
输出
|
参数 | 多个 |
返回值 |
正确输出
字符
个数
|
格式
|
%d
in
t
%c char %f float %lf double %s 字符串 %p 指针 %o 八进制 %#o(加#号输出时带有进制标识(0)) %x 十六进制 %#x(加#号输出时带有进制标识(0x)) |
scanf
函数名 | scanf |
头文件 | #include<stdio.h> |
功能 |
按指定
的
格式
向
终端
输
入
(
输入完毕时以回车结束)
|
参数 | 多个 |
返回值 |
正确输入
的
字符
个数
(第一个字符输入格式错误,直接返回0) |
格式
|
格式必须和终端输入格式一一对应,不能加'
\
n
'
变量名前边加&(取地址符),表示取变量的地址 |
1.3垃圾字符回收
方法 | 通过空格回收 | getchar() | 抑制符(了解) %*c |
功能 |
可以回收
一个
或
多个
空格
t
a
b
回车
| 常用于循环中多个输入之间回收回车键('\n')产生的垃圾字符 |
可以回收
任意一个
字符
|
用法 | scanf("%c %c",&c,&d); printf("c:% d:%c\n",c,d) | scanf("%c"); getchar(); scanf("%c"); | scanf("%c%*c%c",&c,&d); printf("c:%c d:%c\n",c,d); |
二.分支语句
名称 | if | switch |
结构 |
if(
表达式1)
{ 代码段1; } else if(表达式2) { 代码段2; } else { 代码段3; } |
swi
t
c
h
(
常量值或表达式)
{ case 常量值1: 代码块1; break; case 常量值2: 代码块2; break; default: 代码块n; break; } |
示例 | #include<stdio.h> return 0; | #include<stdio.h> int main(int argc, char const *argv[]) { int flag,cj; printf("shu ru ni de chen ji:\n"); scanf("%d",&cj); if(cj!=100) { flag=cj/10; if(flag<7&&flag>=0) flag=6; } else flag=9; switch(flag) { case 6: printf("bu kao\n"); break; case 7: printf("C\n");break; break; case 8: printf("B\n"); break; case 9: printf("A\n"); break; default: printf("chen ji cuo wu\n"); break; } return 0; } |
注意 |
1. if后面可以没有else,else前面必须有if
2.分支语句daimakuai只有一句时,可以省略{}
|
1.case后面常量值是整形或字符型,不能是浮点型或字符串
2.case分支结束需加break,否则会一直运行直到遇见break或switch结束
|
作业
- 终端输入一个日期,判断是这一年的第几天
scanf("%d-%d-%d",&y,&m,&d);
闰年2月29天,平年2月28天
#include<stdio.h>
int main(int argc, char const *argv[])
{
int year=0,month=0,day=0,i=0,sum=0;
printf("qing shu ru ru qi:\n");
scanf("%d-%d-%d",&year,&month,&day);
for(i=1;i<=month;i++)//通过月份进行循环,将每月的天数相加
{
switch(i)
{
case 1:
break;
case 2:
sum=sum+31;
break;
case 3://判断是否为闰年
if(year%4==0&&year%100!=0||year%400==0)
sum=sum+29;
else
sum=sum+28;
break;
case 4:
sum=sum+31;
break;
case 5:
sum=sum+30;
break;
case 6:
sum=sum+31;
break;
case 7:
sum=sum+30;
break;
case 8:
sum=sum+31;
break;
case 9:
sum=sum+31;
break;
case 10:
sum=sum+30;
break;
case 11:
sum=sum+31;
break;
case 12:
sum=sum+30;
break;
}
}
printf("shi jin nian de di %d tian\n",sum+day);
return 0;
}