1、输入输出的作用
输入:将键盘上输入的数据取出来保存到内存中的变量里
输出:将内存中变量里保存的数据取出来输出到终端上
2、格式化输入输出函数
格式化输出函数:printf
格式化输入函数:scanf
3、格式化输出函数
数据类型:
基本数据类型
整型
字符型(char) char a; scanf(“%c”, &a); printf(“%c”, a);
短整形(short) short b;scanf(“%hd”, &b);printf(“%hd”, b);
整型(int) int c;scanf(“%d”, &c);printf(“%d”, c);
长整型(long) long d;scanf(“%ld”, &d);printf(“%ld”, d);
浮点型
单精度(float) float e; scanf(“%f”, &e);printf(“%f”,e);
双精度(double) double f;scanf(“%lf”, &f);printf(“%lf”, f);
派生数据类型
数组([])
指针(*)
函数
结构体(struct)
公用体(union)
枚举(enum)
空类型(void)
格式化输出函数:printf
作用:将内存中变量里保存的数据取出来输出到终端上
格式:printf(格式控制,输出列表);
注意:格式控制和输出列表必须一一对应
练习:每种基本类型变量定义一个,并初始化,用printf输出该变量的值
#include <stdio.h>
int main(int argc, const char * argv[])
{
char a='A';
short b=1;
int c=2;
long d=3;
float e=4.5;
double f=5.6;
printf("a=%c\n",a);
printf("b=%hd\n",b);
printf("c=%d\n",c);
printf("d=%ld\n",d);
printf("e=%f\n",e);
printf("f=%lf\n",f);
printf("a=%c\n b=%hd\n c=%d\n d=%ld\n e=%f\n f=%lf\n",a,b,c,d,e,f);
return 0;
}
4、格式化输入函数
格式化输入函数:scanf
作用:将键盘上输入的数据取出来保存到内存中的变量里
格式:scanf(格式控制,地址列表);
#include <stdio.h>
int main(int argc, const char *argv[])
{
char a;
short b;
int c;
long d;
float e;
double f;
#if 0
scanf("%c", &a);
scanf("%hd", &b);
scanf("%d", &c);
scanf("%ld", &d);
scanf("%f", &e);
scanf("%lf", &f);
printf("a = %c\n", a);
printf("b = %hd\n", b);
printf("c = %d\n", c);
printf("d = %ld\n", d);
printf("e = %f\n", e);
printf("f = %lf\n", f);
#endif
scanf("%c%hd%d%ld%f%lf", &a, &b, &c, &d, &e, &f);
printf("a = %c\nb = %hd\nc = %d\nd = %ld\ne = %f\nf = %lf\n", a, b, c, d, e, f);
return 0;
}
5、格式化输入输出的整个过程
输入的过程:键盘输入的数据——>缓冲区——>scanf——>内存中的变量
输出的过程:内存中的变量——>printf——>缓冲区——>终端上
6、单个字符的输入输出
单个字符的输入:getchar
单个字符的输出:putchar
7、单个字符的输入
格式:getchar()
作用:从终端上获取一个字符,如果想使用该字符,需要定义一个字符变量包接受函数的返回值
例子:char ch;ch=getchar();
8、单个字符的输出
格式:putchar()
作用:将单个字符输出到终端上
例子:
1:字符常量:putchar('A');
2:字符变量:char ch='A';putchar(ch);
课堂练习:
1、用getchar输入boy,并用putchar输出
#include <stdio.h>
int main(int argc, const char * argv[])
{
char ch[3];
int i;
for (i=0; i<3; i++) {
ch[i]=getchar();
}
for (i=0; i<3; i++) {
putchar(ch[i]);
}
return 0;
}
2、从键盘输入一个大写字母,输出与其对应的小写字母。
#include <stdio.h>
int main(int argc, const char * argv[])
{
char ch;
ch=getchar();
ch+=32;
putchar(ch);
return 0;
}
3、编程序,用getchar函数读入两个字符c1和c2,然后分别用putchar函数和printf函数输出这两个字符
思考下面的问题:
1:变量c1和c2应定义成字符型还是整型?或二者皆可? 都可以
2:要求输出c1和c2的ASCII码,应如何处理?用putchar函数还是printf函数 %d printf
3:整型变量与字符型变量是否在任何情况下都可以相互替代? 不可以 字符型变量为1个字节 整型变量为4个字节
如:char c1,c3;与int c1,c2是否无条件的等价?
9、c语言中的程序结构
种类:
1:顺序
2:分支
3:循环
10、为什么要使用分支?分支的要素?
结婚�
1:暖男 ———————>不用干家务
2:高大帅气男 ———————>不用看韩剧,不用犯花痴
3:成熟富有男 ———————>刷卡
4:都不要 ———————>孤独终老
为什么使用分支:当程序面临选择的时候,每种选择对应不同的操作
分支的要素:
1:面临的选择————>()
2:该选择下的操作——>{}
if(选择){
操作;
}
11、常见分支的种类
1:if构成的分支
1:if单分支
2:if-else
3:if-else if
4:if-else嵌套
2:switch构成的分支
12、if单分支
格式:
if(表达式){//选择
语句1;//操作
语句2;
……
语句n;
}
表达式:一般是关系表达式或逻辑表达式
执行过程:当程序执行到if时,首先判断if后面小括号里的表达式是否为真(非0),如果为真执行表达式后面大括号里的操作,如果为假(0),跳过if,执行后面的语句
c语言中的零:
1:数值0
2:字符串结束标识'\0'
3:NULL(指针) #define NULL(void*)0
例子:
int a=0;
scanf(“%d”,&a);
if(a>5){
printf(“a=%d\n”,a)
}
练习:
1:输入两个不等数,输出较大的数。
#include <stdio.h>
int main(int argc, const char *argv[])
{
//变量的定义
int a = 0;
int b = 0;
//输入
scanf("%d", &a);
scanf("%d", &b);
if (a > b){
printf("a = %d\n", a);
}
if (b > a){
printf("b = %d\n", b);
}
return 0;
}
2:输入三个不等整数,输出其中值最大数和最小数
#include <stdio.h>
int main(int argc, const char *argv[])
{
//变量的定义
int a = 0;
int b = 0;
int c = 0;
//输入
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
if ((a > b) && (a > c)){
printf("a = %d\n", a);
}
if ((b > a) && (b > c)){
printf("b = %d\n", b);
}
if ((c > b) && (c > a)){
printf("c = %d\n", c);
}
return 0;
}
3:输入两个不等数,按从小到大顺序输出
#include <stdio.h>
int main(int argc, const char * argv[])
{
int a[50],i=0,j,k,s,t,m;
printf("请输入整数个数:\n");
scanf("%d",&i);
printf("请输入整数:\n");
for (j=0; j<i; j++) {
scanf("%d",&a[j]);
}
for (k=0; k<i; k++) {
for (s=0; s<i; s++) {
if (a[k]>a[s]) {
t=a[s];
a[s]=a[k];
a[k]=t;
}
}
}
printf("从大到小排序为:\n");
for (m=0; m<i; m++) {
printf("%d ",a[m]);
}
printf("\n");
return 0;
}
4:三个数排序
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a = 0;
int b = 0;
int c = 0;
int tmp = 0;
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
if (a > b){
tmp = a;
a = b;
b = tmp;
}
if (a > c){
tmp = a;
a = c;
c = tmp;
}
if (b > c){
tmp = b;
b = c;
c = tmp;
}
printf("a = %d\n", a);
printf("b = %d\n", b);
printf("c = %d\n", c);
return 0;
}
13、if-else
格式:
if(表达式){//选择
语句1;//操作
语句2;
……
语句n;
}else{
语句1;//操作
语句2;
……
语句n;
}
表达式:一般是关系表达式或逻辑表达式
执行过程:当程序执行到if时,首先判断if后面表达式的值是否为真,如果为真(非0)执行表达式后面大括号里的操作,如果为假则执行else后面大括号里的操作
例子:
int a=0;
scanf(“%d”,&a);
if(a>5){
printf(“a=%d\n”,a);
}else{
printf(“a=%d\n”,a+5);
}
练习:
1:输入一个数,输出这个数的绝对值
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a = 0;
scanf("%d", &a);
if (a > 0){
printf("a = %d\n", a);
} else {
printf("a = %d\n", -a);
}
return 0;
}
2:输入一个字符,判断是否为大写字母,如果是,将它转换成小写字母后输出,如果不是,原样输出
#include <stdio.h>
int main(int argc, const char *argv[])
{
char ch = 0;
ch = getchar();
if ((ch>='A') && (ch<='Z')){//大写字母
printf("ch = %c\n", ch + 32);
} else {//其他字符
printf("ch = %c\n", ch);
}
return 0;
}
3:输入一个数,判断这个数能否同时被3和5整除,可以输出yes,不可以输出no
#include <stdio.h>
int main(int argc, const char *argv[])
{
int num = 0;
scanf("%d", &num);
if ((num%3==0) && (num%5==0)){
printf("Yes\n");
} else {
printf("No\n");
}
return 0;
}
4:输入两个整数,打印两数之差的绝对值
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a = 0;
int b = 0;
scanf("%d", &a);
scanf("%d", &b);
if (a > b){
printf("a - b = %d\n", a - b);
} else {
printf("b - a = %d\n", b - a);
}
return 0;
}
5:写一个程序,判断某一年是否为闰年
#include <stdio.h>
int main(int argc, const char *argv[])
{
int year = 0;
scanf("%d", &year);
if (((year%4==0) && (year%100!=0)) || (year%400==0)){
printf("Yes\n");
} else {
printf("No\n");
}
return 0;
}
14、if-else if
格式:
if(表达式1){
语句1;//操作
语句2;
……
语句n;
}else if(表达式2){
语句1;//操作
语句2;
……
语句n;
}else if(表达式3){
语句1;//操作
语句2;
……
语句n;
}
……
else {//可有可无
语句1;//操作
语句2;
……
语句n;
}
表达式:一般是关系表达式或逻辑表达式
执行过程:当程序执行到if时,首先判断if后面表达式1的值是否为真,如果为真(非0)则执行表达式1后面大括号里的操作,如果为假则判断else if后面表达式2的值是否为真,以此类推。
用法:输入三个不等的数,找出值最大和最小的数输出
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d", &a);
scanf("%d", &b);
scanf("%d", &c);
if ((a>b) && (a>c)){
printf("a = %d\n", a);
} else if ((b>a) && (b>c)){
printf("b = %d\n", b);
} else {
printf("c = %d\n", c);
}
return 0;
}
1:给出一个百分制成绩,要求输出成绩等级’A’、’B’、’C’、’D’、’E’。90分以上输出’A’,80~89分输出’B’,70~79分输出’C’,60~69分输出’D’,60分以下 输出’E’
#include <stdio.h>
int main(int argc, const char *argv[])
{
int score = 0;
scanf("%d", &score);
if (score >= 90){
printf("A\n");
} else if ((score>=80) && (score<90)){
printf("B\n");
} else if ((score>=70) && (score<80)){
printf("C\n");
} else if ((score>=60) && (score<70)){
printf("D\n");
} else {
printf("E\n");
}
return 0;
}
2:输入两个整数,打印出它们的大小关系
#include <stdio.h>
int main(int argc, const char *argv[])
{
int a = 0;
int b = 0;
scanf("%d", &a);
scanf("%d", &b);
if (a > b){
printf("a > b\n");
} else if (a == b){
printf("a == b\n");
} else {
printf("a < b\n");
}
return 0;
}
15、if-else嵌套
格式:
if (表达式1){
if (表达式1.1){
} else {
}
} else {
if (表达式2.1){
} else {
}
}
16、switch
格式:
switch(常量表达式){
case 常量1: 表达式1;break;
case 常量2: 表达式2;break;
case 常量3: 表达式3;break;
……
case 常量n: 表达式n;break;
default 表达式n+1;//可有可无
}
执行过程:程序运行到switch时首先计算表达式的值,然后将表达式的值和case后面的常量进行匹配,匹配成功则执行对应常量后面的表达式。
练习:
1:编写一程序实现如下功能:输入1、2、3、4、5、6、7(分别对应星期一至星期日)中的任何一个数,便能输出与之对应的英文名称。如输入1,则输出Monday。
#include <stdio.h>
int main(int argc, const char *argv[])
{
int day = 0;
scanf("%d", &day);
switch (day){
case 1:printf("Monday\n");break;
case 2:printf("星期二\n");break;
case 3:printf("星期三\n");break;
case 4:printf("星期四\n");break;
case 5:printf("Friday\n");break;
case 6:printf("星期六\n");break;
case 7:printf("Sunday\n");break;
}
return 0;
}
2:输入一个月数,然后输出对应月份有多少天(不考虑闰年),将天数输 出,注意输入使用scanf输入
课后练习:
1:输入两个数,按从小到大排序后输出。
2:输入三个数,并将三个升序输出
例如:输入:12 5 3 输出:3 5 12
3:输入三个字母,并将它们升序输出
例如:输入:gae 输出:aeg
4:有一个函数,当x<0,则y=-1;当x=0,y=0;当x>0,y=1,;编写一个程序,输入一个x值,输出一个y值。
5:输入三个数,输出最大数和最小数的值。
6:输入一个字符,如果是小写字母,输出其大写字母,如果是大写字母输出其小写字母。
7:输入一个年份,判断是否是闰年
1:能被400整除
2:能被4整除,不能被100整除
8:输入一个字符,判断该字符类型(数字,小写,大写,其他)
9:有一个函数,当x<1,则y=x;当x>=1,y=2x+1;编写一个程序,输入一个x值,输出一个y值。
10:输入一个字符,如果是数字字符,则转换成相应的整形数字输出(输入’6’输出6),如果不是,则输出该字符相邻的三个字符(输入b输出abc)
11:给出一个百分制成绩,要求输出成绩等级,90以上输出‘A’,80~90之间输出‘B’,70~79之间输出‘C’,60~69输出‘D’,60分以下输 出‘E’。
12:输入一个月份输出对应的季度。(输入12,输出4季度)
13:有4个不等整数,要求按由小到大顺序输出
14:输入一个时间,输出它的下一秒时间。
例如输入:20:39:40输出20:39:41