单个字符的输入和输出
- 格式:pdf
- 大小:570.93 KB
- 文档页数:13
c语⾔之输⼊和输出需要引⼊c语⾔的标准库#include<stdio.h>⼀、输出:printf(也可使⽤putchar()输出单个字符)可以直接输出相关的字符串,也可以通过格式化输出相关的参数信息,⽐如:#include<stdio.h>#include<iostream>int main() {int i = 47;printf("hello world");printf("%d\n", i);system("pause");return0;}%d就是控制符,⽤“,“隔开参数,进⾏格式化输出时,有许多控制符,常⽤的有:1、%d ⼗进制有符号整数。
2、%u ⼗进制⽆符号整数。
3、%ld 输出long整数。
4、%s 字符串。
5、%c 单个字符。
6、%p 指针的值。
7、%e 指数形式的浮点数。
8、%x, %X ⽆符号以⼗六进制表⽰的整数。
9、%0⽆符号以⼋进制表⽰的整数。
10、%g ⾃动选择合适的表⽰法。
为什么需要控制符?01组成的代码可以表⽰数据,也可以表⽰指令;如果01表⽰数据的话,以不同的格式输出,就会产⽣不同的效果;⼆、输⼊scanf在vs2019上运⾏scanf语句时,会报错:error C4996: 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use_CRT_SECURE_NO_WARNINGS. See online help for details.这⾥借鉴百度百科:很多带“_s”后缀的函数是为了让原版函数更安全,传⼊⼀个和参数有关的⼤⼩值,避免引⽤到不存在的元素,有时⿊客可以利⽤原版的不安全性⿊掉系统。
⽐如:char d[20];写成scanf_s("%s",d,20);才是正确的,有这个参数20使准确性提⾼。
常用的C语言输入与输出及在ACM题目要求中的使用一.输入语句及参数C语言的从键盘输入的函数是scanf,其作用相当于大家所学的cin,函数格式如下:int a;scanf(“%d”,&a);这里%d对应于类型int, %d的%表示此处开始识别数据类型,d表示数据类型为普通十进制数(取decimal的首字母).&a的a为需要输入的变量名,&为取地址运算符。
所以这个输入语句可以理解为“在变量a所在的地址处输入一个格式为十进制的值”。
以下是一些简单的scanf使用例子:1. int a,b,c; scanf(“%d%d%d”,&a,&b,&c);2. long a; scanf(“%ld”,&a); // ld 即long decimal3. float a; scanf(“%f”,&a);4. double a; scanf(“%lf”,&a); // lf即long float5. char c; scanf(“%c”,&c); // c即character6. char str[100]; scanf(“%s”,&str[0]); // s即string,此处&str[0]表示以str[0]为起始位置输入7. int a; float b; double c; scanf(“%d%f%lf”,&a,&b,&c); //注意对应数据类型的输入8. char str1[100],str2[100]; scanf(“%s%s”,&str1[0],&str2[0]); //输入中间用回车或空格分隔二.输出语句及参数C语言的输出函数是printf, 作用相当于cout, 函数格式如下:int a;……………//对变量a的一些操作printf(“%d”,a);与scanf对比,printf在输出变量时不需要取址符&,而需要大家特别注意的是,输出一般都需要排版,所以我们要特别在printf函数中加入一些转义字符,例如换行符…\n‟,如果要在输出变量a的值后空一行,则要如此输出printf(“%d\n”,a); // 相当于cout<<a<<endl;对于字符变量,可以使用printf简单地输出它们的ASCII码值,只要将%c改成%d即可,char ch=‟y‟; printf(“%d\n”,ch);三.两种常见的ACM题目要求输入输出格式(以A+B问题为例)1.不断输入两个整数a,b,输出它们的和,每个结果占一行。
c语言putchar和getchar的功能与用法C语言putchar和getchar的功能与用法C语言是一种广泛应用的编程语言,而putchar和getchar是C 语言中常用的输入输出函数。
本文将详细讲解它们的功能和用法。
putchar函数putchar函数用于输出一个字符到标准输出设备。
其原型为:int putchar(int c);功能:将参数c转换为无符号字符后输出到标准输出设备,并返回输出的字符,若参数c是EOF,则返回EOF表示出错。
用法:下面是一些常见的用法例子:•输出单个字符:可以直接使用putchar函数输出单个字符。
例如:putchar('A');上述代码将输出字符’A’。
•输出字符串:可以通过循环使用putchar函数逐个输出字符串中的字符。
例如:char str[] = "Hello, world!";for(int i=0; str[i]!='\0'; i++) {putchar(str[i]);}上述代码将输出字符串”Hello, world!“。
getchar函数getchar函数用于从标准输入设备读取一个字符。
其原型为:int getchar(void);功能:从标准输入设备读取一个字符并返回,若读取失败或到达文件末尾,则返回EOF。
用法:下面是一些常见的用法例子:•读取单个字符:可以直接使用getchar函数读取单个字符。
例如:int c = getchar();上述代码将从标准输入设备读取一个字符,并将其保存在变量c 中。
•读取字符串:可以通过循环使用getchar函数逐个读取字符直到遇到换行符为止。
例如:char str[100];int i = 0;char c;while((c = getchar()) != '\n') {str[i++] = c;}str[i] = '\0';上述代码将从标准输入设备读取一行字符串,并将其保存在数组str中。
C语言输入输出输入字符getchar()getchar函数是对单个字符进行输入的函数。
它的功能是:从标准输入设备上(键盘)输入一个且只能是一个字符,并将该字符返回为getchar函数的值。
格式: getchar()例如:char ch;ch = getchar();ch为字符型变量,上述语句接收从键盘输入的一个字符并将它赋给ch。
例1:getchar函数应用。
#include <stdio.h>main(){int i;i=getchar();printf("%c:%d\n",i,i);}执行本程序时,按下字符‘A’并回车后,显示结果如下:A:65在使用getchar函数时,要注意以下几点:1)getchar函数是不带参数的库函数,但是()不能省略。
2)用户输出一个字符后,只当按“回车”键之后输入的字符才有效;3)getchar函数只接受一个字符,而非一串字符。
上例中:若输入abcde,getchar函数也只接受第一个字符‘a’。
4)getchar函数得到的字符可以赋给一个字符变量或整型变量,也可以不赋给任何变量而是作为表达式的一部分。
5)getchar函数不能够显示输入的数据,如果希望显示该数据,必须调用相应的输出函数(例如putchar()库函数)来实现。
还有一个与之相接近的函数是getch()函数。
getch()函数表示当用户在键盘上输入一个字符后,该字符立即被计算机接受,可以通过输出函数显示出来,而无需等待“回车”命令。
输出字符putchar()putchar函数是对单个字符进行输出的函数。
它的功能:将指定表达式的值所对应的字符输出到标准设备(终端),每次只能输出一个字符。
格式:putchar(输出项)putchar()必须带输出项,输出项可以是字符型常量或变量,putchar函数功能与printf函数中的%c相当。
例2:putchar函数的应用#include"stdio.h"main(){char o=‘O’,k=’K’;putchar(o);putchar(k);putchar(‘\n’);putchar(‘*’)}执行结果为:OK*使用putchar函数时,应注意以下几点:1)输出的数据只能是单个字符,不能是字符串。
C++还保留了C语言中用于输入和输出单个字符的函数,使用很方便。
其中最常用的有getchar函数和putchar函数。
putchar函数(字符输出函数)putchar函数的作用是向终端输出一个字符。
例如:putchar(c);它输出字符变量c的值。
【例3.2】输出单个字符。
.#include <iostream> //或者包含头文件std io.h:#include <stdio.h>.using namespace std;.int main( ).{.char a,b,c;.a='B';b='O';c='Y';.putchar(a);putchar(b);putchar(c);putchar('\n');.putchar(66);putchar(79);putchar(89);putchar(10);.return 0;.}运行结果为BOYBOY可以看到:用putchar可以输出转义字符,putchar('\n')的作用是输出一个换行符,使输出的当前位置移到下一行的开头。
putchar(66)的作用是将66作为ASCII码转换为字符输出,66是字母'B'的ASCII码,因此putchar(66)输出字母'B'。
其余类似。
putchar(10)中的10是换行符的ASCII码,putchar(10)输出一个换行符,作用与putchar('\n') 相同。
也可以输出其他转义字符,如putchar('\101'); (输出字符'A',八进制的101是'A'的ASCII码)putchar('\''); (输出单引号字符')putchar('\015'); (输出回车,不换行,使输出的当前位置移到本行开头)getchar函数(字符输入函数)此函数的作用是从终端(或系统隐含指定的输入设备)输入一个字符。
C语⾔⼊门5-键盘的输⼊和屏幕输出C程序中的键盘输⼊和屏幕输出都是通过调⽤输⼊/输出函数实现的。
⼀、数据的格式化屏幕输出函数printf()的⼀般格式(有两种)(1)第⼀种:printf(格式控制字符串);printf ( “请输⼊a的值” );(2)第⼆种printf(格式控制字符串,输出值时参数表);// 就是变量名字printf(“您输⼊的a的值是:%d”, a );格式控制字符串(format string)是⽤双引号括起来的字符串,也称转换控制字符串,输出值参数表可有多个输出值,也可没有(只输出⼀个字符串时)。
*** 格式控制字符串包括两部分:需原样输出的普通字符和格式转换说明(Format Specifier) %d %f %cprintf( “您输⼊的a的值是:%d”, a );如表4—2所⽰,格式转换说明有%开始,并以转换字符(Conversion Character)结束,⽤于指定各输出值参数的输出格式。
这⾥,下⾯两条语句的作⽤是等价的。
printf(“%c”,ch);putchar(ch);⽽下⾯两条语句的作⽤也是等价的。
printf(“\n”);putchar(‘\n’);⼆、数据的格式化键盘输⼊(1)函数scanf()的⼀般格式scanf(格式控制字符串,参数地址表);scanf (“%d”, &a);Scanf(“%d %d” , &a , &b)其中,格式控制字符串是⽤双引号括起来的字符串,它包括格式转换说明符和分隔符两个部分。
参数地址表是由若⼲变量的地址组成的列表,这些参数之间⽤逗号分隔。
函数scanf()要求必须指定⽤来接收数据的变量的地址,否则数据不能正确读⼊指定的内存单元。
必须有 & 符号 ****1. 1. 函数scanf()中的格式修饰符与prinf()类似,在函数scanf()的%和格式符中间也可插⼊格式修饰符。
在⽤函数scanf()输⼊数值型数据时,遇到以下⼏种情况都认为数据输⼊结束:(1)遇空格符,回车符,制表符(TAB)(2)达到输⼊域宽;(3)遇⾮法字符输⼊。
一、printf()和scanf()输出函数printf()语法:printf(“<格式字符串>”[, <输出表列>]);说明:格式字符串包含两个信息: 一、正常字符,?? 按原样输出。
二、格式声明, 由“%”和格式字符组成,用来指定输出数据的格式。
注意:(1)输出表列可以是常量、变量和表达式,其值按照格式字符指定的格式输出。
(2)输出表列的项目个数必须与格式字符串中的格式声明符的个数一致,且顺序一一对应。
printf(“aBC12F ”); //正常字符,原样输出。
单独输出字符串不需要格式声明符。
格式声明符的格式:???? %[+][-]0m[.n][输出精度]<格式字符>格式声明符与输出表列配合使用1.格式字符种类c 单个字符??d 十进制有符号整数e,E 以“科学记数法”的形式输出十进制的浮点数如:2.451e+02 f? 输出十进制浮点数,默认保留6位小数g,G 选用e或f格式中较短的一个输出十进制浮点数,不输出无效零o 输出无符号八进制整数s 输出字符串u? 输出无符号十进制整数x, X 输出无符号十六进制整数int a=100;float b=123.255;printf("a=%d ",a); // a=100printf(“b=%f ”,b); // b=123.255***, *任意数字2.m[.n]指定输出长度:(1)没有指定输出长度,按实际长度输出(2)m小于实际数据的长度,按照实际数据位数输出(3)m大于实际数据的长度,则右对齐,左边补空格当输出为实数时,m表示输出总长度(整数位数+小数点+小数位数),n表示小数位数。
float c=12.345printf(“%7.3f\n”,c); //□12.345□表示空格3.+和-默认为结果右对齐,不足的在左边补空格-:结果左对齐,右边补空格+:输出符号(正号或负号)4.L如果格式字符为e、f、g,则指定L为double,否则为float如果格式字符为d、x、o、u,则指定L为long,否则为int5.0(零)指定左边空位填充0int a=123;printf("%09d\n",a);//000000123历届试题【2007-4】(19)有以下程序,其中%u表示按无符号整数输出(B )main(){unsigned int x=0xFFFF;???????? ?printf(“%u\n”, x);}程序运行后的输出结果是A)-1????? B)65535???? C)32767?? D)0xFFFF【2008-4】(16)有以下程序段(D)char? ch;??int? k;ch='a';??????k=12;printf("%c,%d,",ch,ch,k);?printf("k=%d\n",k);已知字符 a 的ASCll 十进制代码为97,则执行上述程序段后输出结果是A) 因变量类型与格式描述符的类型不匹配输出无定值B) 输出项与格式描述符个数不符,输出为零值或不定值C) a,97,12k=12D) a,97,k=12【2008-4】(8)若有定义:int k;,以下程序段的输出结果是【8】for(k=2;k<6;k++,k++)? printf(“##%d”,k);【2008-9】7、若整型变量a和b中的值分别为7和9,要求按以下格式输出a和b的值:a=7b=9请完成输出语句〞printf(〞___________________〞,a,b);【2008-9】20、有以下程序段(B)int a,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c,c=a;printf(〞a=%d b=%d c=%d\n〞,a,b,c);程序的输出结果是A) a=10 b=50 c=10 B) a=10 b=50 c=30C)a=10 b=30 c=10 D)a=50 b=30 c=50【2009-3】(15)程序段:int x=12;? double y=3.141593; printf(“%d%8.6f”,x,y);的输出结果是(A)A)123.141593?? B)12?? 3.141593??C)12,3.141593??? D)123.141593【2009-9】(13)阅读以下程序(A)#include <stdio.h>main(){ int case; float printF;printf(“请输入2个数:”);scanf(“%d %f ”,&case,&printF);printf(“%d %f\n”,case,printF);}该程序编译时产生错误,其出错原因是A)定义语句出错,case是关键字,不能用作用户自定义标识符B)定义语句出错,printF不能用作用户自定义标识符C)定义语句无错,scanf不能作为输入函数使用D)定义语句无错,printf不能输出case的值【2009-9】(16)有以下程序(D)#include <stdio.h>void main(){ int a=1,b=0;printf("%d,",b=a+b);printf("%d\n",a=2*b);} 程序运行后的输出结果是A)0,0 B)1,0 C)3,2 D)1,2【2009-9】(8)以下程序运行后的输出结果是【8】。
第3章键盘输入与屏幕输出——单个字符的输入和输出
本节要讨论的主要问题
⏹用getchar()从键盘输入单个字符
⏹用putchar()向屏幕输出单个字符
字符常量
⏹字符常量是用单引号括起来的一个字符
'3'表示一个数字字符,而3则表示一个整数数值⏹转义字符(Escape Character)
一些特殊字符(无法从键盘输入或者另有他用) 所有的ASCII码都可以通过转义方式表示出来
字符在内存中是如何存储的?
对应的ASCII码的二进制值
‘B'的ASCII码值是
十进制——66
八进制——0102
十六进制——0x42
所有的ASCII码都可通过转义方式表示
'B'
'\102'
'\x42'
字符型变量⏹定义一个字符型变量
char ch;
⏹字符型变量的值
单个字符的输入输出
⏹字符输出函数putchar()
putchar(ch)
向屏幕输出一个字符,字符型变量ch的值
⏹字符输入函数getchar()
ch = getchar()
从键盘接收的字符作为getchar()的函数值
无参数
大写英文字母转换成小写英文字母
小写英文字母转换成大写英文字母
ch = ch - 32;
大写英文字母转换成小写英文字母
大写英文字母转换成小写英文字母
两种输入输出方法的比较
⏹输入字符的两种方法
ch = getchar();
scanf("%c", &ch);
⏹输出字符的两种方法
putchar(ch);
printf("%c", ch);
讨论。