C语言中基本的输入输出函数有
- 格式:doc
- 大小:32.50 KB
- 文档页数:10
C语言程序库内包含了printf和scanf这两个函数,当你需要输入输出时,就要输入这两个函数,编译时C语言程序库则调用这两个函数,所以C语言本身是不能输入输出的。
就像你要写字,你是不能直接用手写的,而要借用一直笔才能达到目的。
printf()函数是式样化输出函数, 一般用于向准则输出设备按规定式样输出消息。
正在编写步骤时经常会用到此函数。
printf()函数的挪用式样为:
printf("<式样化字符串>",<参数表>);
其中式样化字符串包括两部分内容: 一部分是正常字符, 这些字符将按原样输出;另一部分是式样化规定字符, 以"%"开端, 后跟一个或几个规定字符, 用来确定输出内容式样。
参量表是需求输出的一系列参数, 其个数务必与式样化字符串所阐明的输出参数个数一样多, 各参数之间用英文逗号","分开, 且顺序逐一对应, 不然将会出现意想不到的错误。
注意:函数printf从右到左压栈,然后将先读取放到栈底,最后读取的放在栈顶,处理时候是从栈顶开始的,所以我们看见的结果是,从右边开始处理的。
scanf()是C语言中的一个输出函数。
与printf函数一样,都被声明在头文件stdio.h里,因此在使用scanf函数时要加上#include <stdio.h>。
(在有一些实现中,printf函数与scanf函数在使用时可以不使用预编译命令#include <stdio.h>。
)它是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。
1、输入和输出:输入:输入也叫读,数据由内核流向用户程序输出:输出也称写、打印,数据由用户程序流向内核以下介绍一些输入输出函数,尽管都是一些有缺陷的函数,但比较适合初学者使用2、p rintf用法(其缺陷在于带缓存)解释:第一幅图没有加'\n',不会刷新缓存区,则不会打印出来;第二幅图是因为主函数结束时刷新了缓存区,但由于没有换行符,所以没有换行便显示了后面的内容;第三幅图时正常打印。
变量定义的是什么类型,在printf打印时就需要选择什么格式符,否则会造成数据的精度丢失(隐式强转),甚至会出现错误(1)格式输出函数的一般形式函数原型:int prin tf(char * format[,argume nt, …]);函数功能:按规定格式向输出设备(一般为显示器)输出数据,并返回实际输出的字符数,若出错,贝U返回负数。
A、它使用的一般形式为:printf(" 格式控制字符串",输出项列表);B、语句中"输出项列表"列出要输出的表达式(如常量、变量、运算符表达式、函数返回值等),它可以是0个、一个或多个,每个输出项之间用逗号(,)分隔; 输出的数据可以是整数、实数、字符和字符串。
C、"格式控制字符串"必须用英文的双引号括起来,它的作用是控制输出项的格式和输出一些提示信息,例如:int i=97; printf("i=%d,%c\n",i,i); 输出结果为:i=97,a语句printf("i=%d,%c\n",i,i); 中的两个输出项都是变量i ,但却以不同的格式输出,一个输出整型数97,另一个输出的却是字符a,其格式分别由"%d" 与"%c"来控制。
语句printf("i=%d,%c\n",i,i); 的格式控制字符串中"i=" 是普通字符, 他将照原样输出;"%d"与"%c"是格式控制符;"\n"是转义字符,它的作用是换行。
C语言库包含两个函数:printf和scanf。
当需要输入和输出时,需要输入这两个功能。
编译时,C语言库将调用这两个函数,因此C 语言本身无法输入和输出。
就像您要写一样,您不能直接写。
您必须借笔才能达到目标。
printf()函数是样式化的输出函数,通常用于根据指定的模式将消息输出到标准输出设备。
编写步骤时经常使用此功能。
printf()函数的专用样式为:printf(“ <样式化字符串>”,<参数表>);风格化的字符串包括两部分:一是普通字符,它将按原样输出;另一个是样式化的指定字符,以“%”开头,后跟一个或几个指定字符,以确定输出内容样式。
参数表是需要输出的一系列参数。
参数的数量必须与风格化字符串指定的输出参数的数量一样多。
参数用英文逗号“,”分隔,并且顺序一一对应。
否则,将发生意外错误。
注意:函数printf从右到左按下堆栈,然后将第一个读取的内容放在堆栈的底部,最后一个读取的内容放在堆栈的顶部。
处理从堆栈的顶部开始,因此我们看到的结果是它从右侧开始处理。
Scanf()是C 语言的输出函数。
与printf函数一样,它在头文件stdio中声明。
H,因此在使用scanf函数时,请添加“ include <stdio。
H>。
(在某些实现中,可以使用printf和scanf函数,而无需使用预编译的命令ා include <stdio。
H>)。
这是一种格式输入函数,也就是说,根据用户指定的格式从键盘将数据输入到指定的变量中。
一、选择(20分)二、填空(10分)三、简答题(20分)C语言基本的输入输出函数有哪几个?各自的功能是什么?TC,VC上级步骤、++--等 break与continue区别break结束整个循环,循环到此结束,可以用在switch与循环语句中 continue结束本次循环,下次循环继续执行,用在循环语句中四、读程序题(20分)五、编程题(30分)1、编写一个程序,计算下列数学算式的结果,要求X,Y从键盘输入。
22yx#include “stdio.h”#include “math.h”main(){ int x,y,z;scanf(“%d%d”,&x,&y);z=sqrt(x*x+y*y);printf(“%d”,z);}2、编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。
main( ){ double a,b,c,average=0;printf("input a,b,c(double):\n");scanf("%lf%lf%lf",&a,&b,&c);average=(a+b+c)/3;average=average*10;average=average+0.5;average=(int)average;average=average/10;printf("average=%lf",average);}3、编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a,然后输出a,b,c。
main( ){ int a,b,c,t=0;printf("input a b c:\n");scanf("%d%d%d",&a,&b,&c);t=c;c=b;b=a;a=t;printf("a=%d b=%d c=%d",a,b,c);}4.编写一个程序,要求从键盘输入一个再10—100000之间的整数w,若w是n(n>=2)位的整数,则要求输出w的后n-1位数。
C语言答案()第一章C语言程序设计基础习题参考答案1-1 冯·诺依曼体系结构的基本原理:五大构成部分:输入、输出、CPU、控制器、存储器;程序存储、自动执行、逻辑判断功能;二进制的信息表示。
1-6 编辑、编译、链接、执行。
1-7 必须有一个主函数,它是程序执行的起点;一个C语言程序由函数构成;每一条可执行语句都必须由分号结束;函数的代码段必须由花括号对括住。
一个函数中的语句组由声明区和可执行语句区两部分构成。
1-8 三个一缩;每遇到一个结构时均缩格,每结束一个结构时回退;缩格格式必须对齐。
1-9 试给出以下问题的程序设计过程描述:1) 求两个数中之最大者。
#include<stdio.h>int main(void){float fA,fB;clrscr();printf("Please input two values(fA,fB)::"); /*输入要比较的两个数fA,fB*/scanf("%f,%f",&fA,&fB); /*格式化输入fA,fB*/if(fA>=fB) printf("the max is %f",fA);if(fA<fB) printf("the max is %f",fB);return 0;} /*main()函数结束*/2) 求三个数中之最大者。
#include<stdio.h>int main(void){float fA,fB,fC,fMax;printf("Please input three values(fA,fB,fC)::");/*fA,fB,fC是输入的3个数,fMax存放最大值*/scanf("%f,%f,%f",&fA,&fB,&fC);fMax=fA;/*假定fA最大*/if(fMax<fB) fMax=fB;if(fMax<fC) fMax=fC;printf("The max is %f\n",fMax);/*输出最大值*/return 0;} /*main()函数结束*/3) 求1+2+3+…+100,即。
职高对口高考c语言知识点C语言知识点C语言作为一门重要的计算机编程语言,在职业高中对口高考中起着极为重要的作用。
掌握C语言的基本知识点不仅有助于提升学生的编程能力,还能够为他们未来的职业发展打下坚实的基础。
本文将从语法知识、数据类型、常用函数和控制结构四个方面探讨C语言知识点,帮助学生全面了解和掌握这门语言。
I. 语法知识1. 变量和常量:C语言中,变量用于存储和表示数据,而常量则是不可变的数据。
在声明变量时,需指定其数据类型,并给予合适的标识符。
常量可以是整数、浮点数、字符或字符串。
2. 数据类型:C语言支持的数据类型包括整型(int)、浮点型(float、double)、字符型(char)和布尔型(bool)。
不同的数据类型有不同的表示方法和存储空间。
3. 运算符:C语言中有多种运算符,包括算术运算符(+、-、*、/、%)、关系运算符(>、<、==、>=、<=、!=)、逻辑运算符(&&、||、!)等。
通过运算符,可以对变量进行计算和比较。
II. 数据类型1. 整型:用于表示整数,可以分为有符号整型和无符号整型。
有符号整型可以表示正数、负数和0,而无符号整型仅能表示正数和零。
2. 浮点型:用于表示实数,可以分为单精度浮点数(float)和双精度浮点数(double)。
双精度浮点数的精度更高。
3. 字符型:用于表示单个字符,采用ASCII编码。
可以使用单引号将字符括起来。
4. 布尔型:只能表示真(true)或假(false)。
III. 常用函数1. 输入输出函数:C语言中,用于输入的函数是scanf(),用于输出的函数是printf()。
通过这两个函数,可以实现与用户的交互。
2. 数学函数:C语言提供了一系列数学函数,如求平方根(sqrt())、取整(ceil()、floor())、四舍五入(round())等。
这些函数可以辅助完成各种复杂的数学计算。
IV. 控制结构1. 顺序结构:程序按照从上到下的顺序依次执行,是最简单的控制结构。
一、选择(20分)二、填空(10分)三、简答题(20分)C语言基本的输入输出函数有哪几个?各自的功能是什么?TC,VC上级步骤、++--等 break与continue区别break结束整个循环,循环到此结束,可以用在switch与循环语句中 continue结束本次循环,下次循环继续执行,用在循环语句中四、读程序题(20分)五、编程题(30分)1、编写一个程序,计算下列数学算式的结果,要求X,Y从键盘输入。
22yx#include “stdio.h”#include “math.h”main(){ int x,y,z;scanf(“%d%d”,&x,&y);z=sqrt(x*x+y*y);printf(“%d”,z);}2、编写程序,读入三个双精度数,求它们的平均值并保留此平均值小数点后一位数,对小数点后第二位数进行四舍五入,最后输出结果。
main( ){ double a,b,c,average=0;printf("input a,b,c(double):\n");scanf("%lf%lf%lf",&a,&b,&c);average=(a+b+c)/3;average=average*10;average=average+0.5;average=(int)average;average=average/10;printf("average=%lf",average);}3、编写程序,读入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a,然后输出a,b,c。
main( ){ int a,b,c,t=0;printf("input a b c:\n");scanf("%d%d%d",&a,&b,&c);t=c;c=b;b=a;a=t;printf("a=%d b=%d c=%d",a,b,c);}4.编写一个程序,要求从键盘输入一个再10—100000之间的整数w,若w是n(n>=2)位的整数,则要求输出w的后n-1位数。
C语言中基本的输入输出函数有:
putchar ():把变量中的一个字符常量输出到显示器
屏幕上;
getchar ();从键盘上输入一个字符常量,此常量就是
该函数的值;
printf ();把键盘中的各类数据,加以格式控制输出
到显示器屏幕上;
scanf ();从键盘上输入各类数据,并存放到程序
变量中;
puts ():把数组变量中的一个字符串常量输出到
显示器屏幕上;
gets ():从键盘上输入一个字符串常量并放到程
序的数组中.
sscanf(); 从一个字符串中提取各类数据。
putchar() 和 getchar() 顾名思议就是从输
入流中获取一个字符和输出一个字符,比较简单,不
再多讲。
例子如下:
char c = getchar();
putchar(c);
格式化输入输出scanf()和printf()是最有用
的,所以重点讲一下。
printf():
一般形式:
printf("格式控制".输出列表);
eg : printf("a=%d,b=%f,c=%c\n",a,b,c);
1;格式控制.
格式控制是用双引号括起来的字符串,也称"转换控制
字符串",它包含以下两部分信息.
格式说明:由"%"和格式字符组成,如%d,%f,%c,他
的作用是把输出数据转换为指定格式输出,格式的说
明总是由"%"字符开始的.
普通字符:需要原样输出的字符,或者是一些有特殊含
义的字符,如\n,\t。
2;输出列表
就是需要输出的一些数据,也可以是表达式,如果在函
数中需要输出多个变量或表达式,则要用逗号隔开.
一些特殊字符的输出:
单引号,双引号,和反斜杠的输出在前面加转义字
符”\”
如:”\’” , “\”” , “\\”
%的输出用两个连在一起的%%,即printf(“%%”);
常用的格式说明如下:
格式字符
d 以十进制形式输出带符号整数(正数不输出符号)
o 以八进制形式输出无符号整数(不输出前缀O)
x 以十六进制形式输出无符号整数(不输出前缀
OX)
u 以十进制形式输出无符号整数
f 以小数形式输出单精度实数
lf以小数形式输出双精度实数
e 以指数形式输出单、双精度实数
g 以%f%e中较短的输出宽度输出单、双精度实数
c 输出单个字符
s 输出字符串
这里强调一下:网上很多文章都说f 和lf是一样
的,即不管单精度,双精度浮点数,都可以用f, 但我
在POJ上做过测试,输出Double时用f确实也可以 ,
但读入时,用f就报WA,所以大家如果对Double
进行读写的话,都用lf吧。
说到Double,再啰嗦一句,建议大家要用到浮点数
时都用Double,不要用float,因为在很多情况下,
float精度不够会导致WA。
特殊:
对64位整数的输入输出,在POJ上的C++环境下(即
VC),64位整数是:
__int64 (注意int前面是两个下划线)
输入输出格式为”%I64d”.
在G++环境下(即Dev C++) 64位整数是
long long
输入输出格式为”%lld”.
输出宽度
用十进制整数来表示输出的最少位数。 注意若实
际位数多于定义的宽度,则按实际位数输出, 若实际
位数少于定义的宽度则补以空格或0。
精度
精度格式符以“.”开头,后跟十进制整数。意义是:
如果输出数字,则表示小数的位数;如果输出的是字
符, 则表示输出字符的个数;若实际位数大于所定义
的精度数,则截去超过的部分。
标志格式字符
- 结果左对齐,右边填空格
+ 输出符号(正号或负号)空格输出值为正时冠以
空格,为负时冠以负号
例如:
double c=24212345.24232;
printf(“%020.4”); 表示输出精确到小数点后4
位,输出占20位,若有空余的位补0.
scanf:
scanf的很多用法都是和printf对应的,故不再赘述。
说一下scanf一个特别好用的地方,就是可以滤去一
些不想要的东西。
举例说明如下:
比如输入为日期 yyyy-mm-dd,就可以这样写:
int year,moth,day;
scanf(“%d-%d-%d”,&year,&moth,&day);
再比如:
scanf("%3d %*3d %2d",&m,&n); 输入
113 118 69回车(系统将113赋予m,将69赋予
n,因为*号表示跳过它相应的数据所以118不赋予任
何变量)
puts()用的不多,且基本都能用printf()代替,故不
再多说。
gets()是从输入流中获取一行字符串放入字符数组中:
char in[100];
gets(in);
大家可能最容易出错的地方就是字符串的输入,所以
强调一下:
能进行字符,字符串输入的有:
getchar(), scanf(“%c”); scanf(“%s”), gets()
其中getchar() 和 scanf(“%c”)的功能是一样的。
需要注意的是,这两个函数读入的是输入流中当前位
置的字符,
比如:
scanf(“%d”,&n);
c = getchar();
假设输入 67/ (假设“/”代表回车),则第一个scanf
读入一个整数67后,当前输入流的位置是67之后,
即指向回车符,所以第二个getchar()读入的就是一
个回车符了,即 c = ‘\n’。
同样,gets()也是从当前位置读入一行字符串。
比如:
scanf(“%d”,&n);
gets(str);
此时读入字符数组中的字符串就是“\n” 了
所以通常在用scanf读入一个非字符串的类型之后,
如果要读入字符,或字符数组,都用一个额外的
getchar()把回车符读掉,若后面跟的不止一个回车
符,可能还有多余的空格的话,就用gets()读掉。
和以上不同的是,scanf(“%s”) 读入的时候是
会忽略掉空格,回车和制表符的。并且以空格,回车
和制表符作为字符串结束的标志。
经常会有这样的题,输入第一行是一个整数,接
下来每行的第一个是一个字符,用来表示某种操作,
后面再跟一些数据,比如:
4
A 100 2
B 23
A 23 89
B 34
像这种输入就需要小心,读入字符时不要读成回车符。
为了防止意外,我一般是这样处理这类输入的:
char model[2];
Scanf(“%d”,&n);
for(…,…,…){
scanf(“%s”,model);
if(model[0] == ‘A’){
}
else{
}
}
sscanf():
sscanf()经常用来分解字符串,功能非常强大,但很
多功能都需要正则表达式的知识,所以就介绍一下最
简单的几种用法,大家如果想了解更多的话,自己去
网上找吧。
1.
char str[100],str1[100],str2[100];
gets(str);
sscanf(str,”%s%s”,str1,str2);
将读入的一整行字符串按空格,制表符或回车符分割
成两个字符串。
2
取指定长度的字符串。如在下例中,取最大长度为4
字节的字符串。
sscanf("123456 ", "%4s", str);
对于C++的输入输出就不再详细的讲了,因为
cin,cout的速度实在太慢,不推荐使用,我一般都是
到万不得已时才用。
比如当你要读入字符串到string 对象中时,就
只能用cin了,这时候还有一个常见的问题,就是如
何将一整行字符串读入一个string 中,这就要用到
getline函数了。
用法为:
getline(cin, str);
第一个参数就是标准输入流cin ,第二个参数是接收
读入数据的string对象,本来还有第三个参数,是结
束符的标志,但通常用它默认的就可以了,所以不用
管。
注意区分这个getline和cin.getline的区别:
cin.getline的用法如下:
char str[20];
cin.getline(str,20); 表示从读入的一行字符串中,
取最多20各字符放入字符数组str中,注意此处的
str是字符数组,而上面的str是string对象。
另外需要注意的是,千万不要把cout和printf
混用,因为cout是带缓冲的而printf不带,所以会
使得输出的数据顺序混乱。