2022/6/24-2022/6/29
题目
1. 字符输出函数putchar
1.1 说明
C语言的数据输出库函数有两大类——字符输出函数和格式输出函数,其说明都在标准输入/输出头文件里。putchar(字符量)括号中的字符量可以是字符变量,也可以是字符常量。
1.2 实例
c1和c2是两个字符类型的变量,程序和结果如下:
#include<stdio.h>
int main()
{
char c1,c2; //定义两个字符变量
c1='a'; //给字符变量c1赋值
c2='b'; //给字符变量c2赋值
putchar(c1); //输出字符a
putchar(c2); //输出字符b
printf("%c",c1);
printf("%c",c2);
putchar('\n'); //输出回车换行
putchar(c1-32); //c1-32='a'-32=97-32=65,对应'A'
putchar(c2-32);
printf("%c",(c1-32));
printf("%c",(c2-32));
return 0;
}
在原代码基础上,我添加了printf输出函数,可以对比学习printf和putchar的格式。
输出结果
abab
ABAB
但是当字符较多时,这样输出字符是否有点麻烦?
2. 字符输出函数puts
2.1 说明
关于字符输出,puts函数更加方便,能一次输出一串字符,puts输出字符串时要遇到‘\0’也就是字符结束符才会停止。
2.2 实例
#include<stdio.h>
int main(void)
{
char c[8]; //定义一个有8个元素的字符数组
c[0]='a';
c[1]='b';
c[2]='\n';
c[3]=c[0]-32;
c[4]=c[1]-32;
c[5]='\0';
puts(c);
return 0;
}
输出结果
ab
AB
和1.2例子的输出结果大同小异
3. 格式输出函数
3.1 说明
格式输出函数printf
调用形式 | printf(格式控制,参数1,…, 参数n |
---|---|
功能 | 按照格式控制串所指定的格式,在标准输出设备上输出参数1至参数n的值,参数是表达式 |
3.2 输出格式说明符
格式控制串中,有说明输出数据类型的符号,称为格式说明符,掌握常用的格式说明就好啦。
|
格式说明符 | 含义 |
---|---|
%d | 以有符号十进制形式输出整型数 |
%o | 以无符号八进制形式输出整型数 |
%x | 以无符号十六进制形式输出整型数 |
%f | 以小数形式 |
%c | 输出字符 |
3.2.1 输出格式说明符实例
以十进制、八进制、十六进制及无符号数的形式查看-1的值
#include<stdio.h>
int main(void)
{
int m=-1;
printf("m: %d,%o,%x.%u\n",m,m,m,m);
return 0;
}
4. 转义字符的使用
4.1 说明
\t是转义字符,表示横向跳格,即跳到下一个输出区,一个输出区占8列
4.2 实例
通过格式输出函数printf(),查看转义字符的作用
#include<stdio.h>
int main(void)
{
char a,b,c;
a='n';
b='e';
c='w';
printf("%c%c%c\n",a,b,c);
printf("%c\t%c\t%c\n",a,b,c);
printf("%c\n%c\n%c\n",a,b,c);
return 0;
}
程序结果
new
new
n
e
w
//这里用*代表空格
5. 字符输入函数getchar
5.1 说明
数据的输出有字符输出函数和格式输出函数,同样,C语言的数据输出也分为两大类,字符输入函数和格式输入函数,它们的说明都在头文件里面,stdio.h即为standard input and output.
5.2 字符输入实例1——用户密码的接收
若某银行系统限定用户输入的密码必须是6位,则相应的接收程序如下
#include<stdio.h>
int main(void)
{
char c1,c2,c3,c4,c5,c6;
c1=getchar();
c2=getchar();
c3=getchar();
c4=getchar();
c5=getchar();
c6=getchar();
return 0;
}
5.3 字符输入实例2——大小写字符的转换
#include<stdio.h>
int main(void)
{
char ch;
ch=getchar();
printf("%c %d\n",ch,ch);
printf("%c %d\n\n",ch-32,ch-32);
return 0;
}
输入:m
输出:m 109
M 77
#include<stdio.h>
int main(void)
{
char ch;
ch=getchar();
printf("%c %d\n",ch,ch);
printf("%c %d\n\n",ch+32,ch+32);
return 0;
}
输入: M
输出: M 77
m 109
6. 字符串输入函数gets
6.1 说明
字符串输入库函数——函数gets,能一次接 收一串字符
6.2 实例
#include<stdio.h>
int main(void)
{
char str1[60];
gets(str1);
printf("%s\n",str1);
return 0;
}
输入: hello world!
输出: hello world!
7. 格式输入函数scanf
7.1 说明
调用形式 | scanf(格式控制串,地址参数1…,地址参数n); |
---|---|
功能 | 按照“格式控制串指定的格式,从键盘输入数据,依次存放到对应的变量中去 |
7.2 格式输入函数实例1——教务网站的登录
布朗先生需要登录教务网站,把学生的考试成绩下载到系统里。登录需要输入用户名和密码,用户名ID学校规定是工资号码,密码必须是20以内的数字或字符
#include<stdio.h>
int main(void)
{
int id;
char password[20];
printf("用户ID:");
scanf("%d",&id);
printf("密码是:");
scanf("%s",password);
printf("ID=%d\n",id) ;
printf("密码=%s\n",password);
return 0;
}
输入: 用户ID:2468
密码:abc123
输出:ID=2468
密码=abc123
8. 顺序结构
8.1 数据交换
定义两个整形变量,输入两个整数,交换这两个变量的值,输出变量值。
#include<stdio.h>
int main(void)
{
int a,b,temp;
printf("输入a,b:");
scanf("%d,%d",&a,&b);
printf("交换前:a=%d,b=%d\n",a,b);
temp=a;
a=b;
b=temp;
printf("交换后:a=%d,b=%d\n",a,b);
return 0;
}
输入a,b:77,88
输出:交换前:a=77,b=88
交换后:a=88,b=77
8.2 成绩处理
从键盘输入4名学生的学号和英语考试成绩,打印这4个人的学号和成绩,最后输出四个人的英语平均成绩.
程序流程按照输入、求值、输出的顺序执行
#include<stdio.h>
int main(void)
{
int num1,num2,num3,num4;
float grade1,grade2,grade3,grade4;
float ave;
printf("input 4 numbers:\n");
scanf("%d,%d,%d,%d",&num1,&num2,&num3,&num4);
printf("input 4 grades:\n");
scanf("%f,%f,%f,%f",&grade1,&grade2,&grade3,&grade4);
ave=(grade1+grade2+grade3+grade4)/4;
printf("%d:%f\n",num1,grade1);
printf("%d:%f\n",num2,grade2);
printf("%d:%f\n",num3,grade3);
printf("%d:%f\n",num4,grade4);
printf("average=%f\n",ave);
return 0;
}
结果
input 4 numbers:
1,2,3,4
input 4 grades:
86,92,75,64
1: 86.000000
2: 92.000000
3: 75.000000
4: 64.000000
average=79.250000
9. 双分支选择结构
9.1 if
include<stdio.h>
int main(void)
{
if(1>4)
{
printf("第一条语句\n");
printf("第二条语句\n");
}
printf("第三条语句\n");
return 0;
}
输出结果
第三条语句
9.2 if-else——价格竞猜游戏中的结果判断
在价格竞猜游戏中,在每次报价后主持人会有“高了”“低了”“对了”三种提示。设商品的实际价格为168元,竞猜者每次报价为value,写出结果判断的语句。
#include<stdio.h>
int main(void)
{
int value;
printf("报价为:");
scanf("%d",&value);
if(value>168)
{
printf("高了");
}
else
{
if(value<168)
{
printf("低了");
}
else
{
printf("对了");
}
}
return 0;
}
9.3 if-else嵌套——求三个数中的最大值
#include<stdio.h>
int main(void)
{
int a,b,c;
int max;
printf("请输入三个数:");
scanf("%d %d %d",&a,&b,&c) ;
if(a>b)
{
if(a>c)
{
max=a;
}
else
{
max=c;
}
}
else
{
if(b>c)
{
max=b;
}
else
{
max=c;
}
}
printf("max=%d\n",max);
return 0;
}
当然了,这个题的写法还有很多,例如
#include<stdio.h>
int main(void)
{
int a,b,c,max;
printf("请输入三个数:");
scanf("%d,%d,%d",&a,&b,&c);
max=a>b?a:b;
max=max>c?max:c;
printf("最大值是:%d",max);
return 0;
}
10. 多分支选择结构
10.1 switch
switch语句
switch(表达式)
{
case 常量1:语句集A;[ break;]
case 常量2:语句集B;[ break;]
…
case 常量n:语句集N; [ break;]
default: 语句集N+1;
}
10.2 实例1——布朗先生的周记薄
#include<stdio.h>
int main(void)
{
int a;
printf("输入星期:");
scanf("%d",&a);
switch(a)
{
case 1:printf("周一例会\n"); break;
case 2:printf("周二上课\n"); break;
case 3:printf("周三讲座\n"); break;
case 4:printf("周四办公\n"); break;
case 5:printf("周五上课\n"); break;
case 6:printf("周六研讨会\n");break;
case 7:printf("周日郊游\n"); break;
default:printf("输入错误\n"); break;
}
return 0;
}
输入:1
输出:周一例会
10.3 实例2——百分制转为五分制
输入百分制成绩score,转换成相应的五分制成绩grade并输出。
#include<stdio.h>
int main(void)
{
int score;
printf("Please input score:");
scanf("%d",&score);
if(score>100&&score<110) score=110;
switch(score/10)
{
case 10:
case 9:printf("%d-----A\n",score);break;
case 8:printf("%d-----B\n",score);break;
case 7:printf("%d-----C\n",score);break;
case 6:printf("%d-----D\n",score);break;
case 5:
case 4:
case 3:
case 2:
case 1:
case 0:printf("%d-----E\n",score);break;
default:printf("Input error\n");
}
}