C程序设计语言(安徽专升本3.0输入输出and转义字符)

目录

一、转义字符

 二、输出语句

2.1 printf()

2.2 格式字符

三、输入语句

3.1 scanf()

四、其它输入输出语句

五、输入输出时会出现的问题

5.1当scanf()在VStutio中出现报错时

5.2 当scanf("%c",&ch)直接跳过时


我这里提前进行输入输出的讲解!一般输入输出根据安徽省大部分考纲教材《C程序设计(第五版)》谭浩强版本是在变量常量之后讲解

本帅哥在此写的需要对应数据类型进行学习(对0基础的而言),but I‘m也是不喜欢有基础慢慢看的人,所以愿零基础的原谅,但是我绝对不会写少知识点!!!本章节所有知识点讲完,我将源代码发送到马云(gitte)上,学本专业的未来本科生们在本科一定要学会git的使用,嘻嘻,前言到此结束

一、转义字符

转义字符及其作用
转义字符字符值输出结果
\n换行将光标当前位置移到下一行的开头
\t水平制表符将光标当前位置移到下一个Tab位置
\v垂直制表符将光标当前位置移到下一个垂直制表对齐点
\r回车将光标当前位置一直到本行的开头
\'一个单撇号(')输出单撇号字符
\"一个双撇号(")输出双撇号字符
\?一个问号(?)输出问号字符
\\一个反斜线(\\)输出反斜线字符
\a警告产生声音或视觉信号
\b退格将光标当前位置后退一个字符
\f换页将光标当前位置移到下一页的开头
\o、\oo或\ooo其中o代表一个八进制数字与该八进制对应的ASCII字符与该八进制吗对应的字符
\xh[h...]其中h代表一个十六进制数字与该16进制码对应的ASCII字符与该十六进制码对应的字符
#include <stdio.h>

main() {
	Escape(); //调用转义字符函数
}
Escape() {//转义英语为Escape,一下演示的都为常用转义字符
	int a, b, c, d;
	a = 1; b = 2;c = 3; d = 4;
	printf("\\n转义字符:\n");
	printf("%d\n%d%d%d\n", a, b, c, d);

	printf("\\t转义字符:\n");
	printf("%d\t%d\t%d\t%d\n", a, b, c, d);

	printf("\\v转义字符:\n");
	printf("%d\v%d\v%d\v%d\n", a, b, c, d);

	printf("\\r转义字符:\n");
	printf("%d\r%d%d%d\n", a, b, c, d);

	printf("\\,\',\",\?\n");

	printf("\101\n");  //101八进制对应65十进制
	printf("\x41");   //41十六进制对应65十进制
}

 二、输出语句

所谓的输入输出就是指以计算机主机为主体而言的,从计算机向输出设备输出数据称为输出,输入设备像计算机输入数据称为输入

C语言本身不提供输入设备语句,输入和输出操作是由函数库(stdio.h)中的函数来实现的

2.1 printf()

printf格式:
printf(控制格式,输出列表)
  • 控制格式:是用双撇号括起来的字符串,称为格式控制字符串,由以下两部分组成:
  1. 格式声明:由%和格式字符组成
  2. 普通字符:需要在输出时原样输出的字符
  • 输出列表:是程序需要输出的一下数据,可以是常量、变量或表达式
#include <stdio.h>

main() {
    int i,j;
    i=1;
    j=2;
	printf("%d\n%d",i,j);
\\此处%d\n%d即为格式控制,i与j为输出列表
}

2.2 格式字符

格式字符
格式字符作用书写方式
%md,%mi用来输出一个符号的十进制整数,m表示占多少位,不足补空格printf("%d",test1)
%mc用来输出一个字符,m表示占用位数,不足补空格,如果ch为0~127范围内整数则转为对应ASCII码字符。超过部分后续细讲printf("%c",ch)
%m.nf输出实数(单,双,长双进度),一小束形式输出。m表示输出占用位数,n为小数位数printf("%f",test2)
%s用来输出一个字符串printf("%s","This is my name")
%m.ne以指数形式输出实数,m表示输出占用位数,n为小数位数printf("%e",x)
%o以八进制无符号形式输出整数不输出前导符0printf("%o",j)
%x以十六进制无符号形式输出整数,不输出前导符0xprintf("%x",i)
%u以无符号十进制输出整数printf("%u",test3)
%g选用%f或%e格式中输出宽度较短的一种格式,不输出无意义的0。用G时,若以指数形式输出则指数E大写表示printf("%g",x)
printf函数格式附加字符
字符说明
l长整型整数,可以加在格式符d,o,x,u前面
m(代表一个正整数)数据最小宽度
n(代表一个正整数)小数位或街区的字符个数
-(负号)输出的数据在域内向右靠
#include <stdio.h>
main() {
	double i, j;
	char ch;
	i = 1.9876543;j = 2111432.345;ch = 'P';
	printfTest(1,2,ch,i,j); //调用函数并传入值至对应位置
}
printfTest(int i, int j, char ch,double x,double y) {
	printf("%3d%2d\n",i,j);

	printf("%5c\n", ch);
	printf("%c\n",97); //97对应的为ASCII中的a
	printf("%c\n",377);//377对应二进制为101111001保留后8位01111001转为十进制为121即对应ASCII为y

	printf("%0.3f%10.30f\n",y,x);
	//当占的位数小于原本的位数将会被原本位数替代,当大于原本位数则补空格,
	// .后的数为保留的小数位,当保留位数超过原本位数则将最后一位数变为四舍五入格式
	//如0.33变为0.3299999.......
	printf("%-20.4f我在哪?\n", 3.1415926); //加负号为右边补多余空位

	printf("%s\n","I am Promise");

	printf("%e\n",12345.6789123); //1.234568e+04其中4为10的四次方乘以1.234568=12345.68因为默认保留6位小数故四舍五入为1.234568
	printf("%3.8e\n", 12345.6789123);//此处和%m.nf一致
	
	printf("%o",8);
}

 若是想输出%则需要连续用两个%

三、输入语句

3.1 scanf()

格式与printf基本一致

scanf格式
scanf(格式控制,地址列表)
sacnf函数中用到的格式字符
格式字符说明
%d,%i输入有符号的十进制整数
%u输入无符号的十进制整数
%o输入无符号的八进制整数
%x输入无符号的十六进制整数
%c输入单个字符
%s输入字符串,将字符串送到一个字符数组中,在输入是以非空白字符开始,以第一个空白字符结束。
%f输入实数,可以用小数形式或指数形式输入
%e,%g与%f作用相同,e与f,g可以相互替换
scanf函数中用到的格式附加字符
字符说明
l输入长整型数据(可用%ld,%lo,%lx,%lu,%lf,%e)
h输入短整型数据(可用%hd,%ho,%hx)
域宽指定输入数据所占宽度,域宽应为正整数
*本输入项再度入后不赋给相应的变量

废话不多说,直接上代码理解:

#include <stdio.h>
main() {
	ScanfTest(); //调用ScanfTest函数
}
ScanfTest() {
	int num;
	scanf("%d", &num);  // 从键盘读取一个整数并存储到 num 变量中

	float fnum;
	scanf("%f", &fnum);  // 读取一个单精度浮点数

	double dnum;
	scanf("%lf", &dnum);  // 读取一个双精度浮点数

	char chs;
	scanf(" %c", &chs);  // 读取一个字符

	char str[10];
	scanf("%s", str);  // 读取一个字符串到 str 数组中

	printf("%d,%f,%f,%c,%s", num, fnum,dnum,chs,str);
}

 注:

  1. 地址列表中的变量必须使用取地址符 & ,除了数组名(数组名本身就代表数组的首地址)。
  2. 输入的数据类型和格式控制字符串中的格式字符必须匹配,否则可能导致错误的结果。
  3. 空白字符(空格、制表符、换行符等)在 scanf 中具有特殊的处理方式。例如,在读取整数或浮点数时,空白字符会被忽略;但在读取字符串时,遇到空白字符会停止读取。

四、其它输入输出语句

除上述所述的两种常用的外还有putchar(输出字符)、getchar(输入字符)、puts(输出字符串)、gets(输入字符串)

  • putchar()函数:用于向标准输出(通常是屏幕)输出一个字符
  • getchar()函数:用于输入一个字符
#include <stdio.h>
main() {
	Others(); //调用Others函数
}
Others() {
	char a, b, c;
	a = getchar();
	b = getchar();
	c = getchar();
	putchar(a);
	putchar(b);
	putchar(c);
}

 注意:getchar 和 putchar 每次只能处理一个字符。如果要处理字符串或多个字符,通常会使用其他更复杂的输入输出函数,如 getsputsfgetsfputs 等。但在一些简单的场景中,getchar 和 putchar 非常方便和高效。

五、输入输出时会出现的问题

5.1当scanf()在VStutio中出现报错时

5.2 当scanf("%c",&ch)直接跳过时

输入缓冲区中存在残留的字符,例如之前的输入操作留下了换行符等。在这种情况下,scanf("%c", &ch); 可能会直接读取到这些残留字符,而不是等待新的输入。

可以在 scanf("%c", &ch); 之前添加 fflush(stdin); 来清空输入缓冲区,但需要注意的是,fflush(stdin) 在某些编译器中可能不被支持或者行为未定义。

或可以尝试在输入字符之前先输入一个空格,例如我上述scanf讲解代码中的写法

最后希望给位未来的本科生们能留下你们小小的赞!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值