首页考试吧论坛Exam8视线考试商城网络课程模拟考试考友录实用文档求职招聘论文下载
2013中考
法律硕士
2013高考
MBA考试
2013考研
MPA考试
在职研
中科院
考研培训 自学考试 成人高考
四 六 级
GRE考试
攻硕英语
零起点日语
职称英语
口译笔译
申硕英语
零起点韩语
商务英语
日语等级
GMAT考试
公共英语
职称日语
新概念英语
专四专八
博思考试
零起点英语
托福考试
托业考试
零起点法语
雅思考试
成人英语三级
零起点德语
等级考试
华为认证
水平考试
Java认证
职称计算机 微软认证 思科认证 Oracle认证 Linux认证
公 务 员
导游考试
物 流 师
出版资格
单 证 员
报 关 员
外 销 员
价格鉴证
网络编辑
驾 驶 员
报检员
法律顾问
管理咨询
企业培训
社会工作者
银行从业
教师资格
营养师
保险从业
普 通 话
证券从业
跟 单 员
秘书资格
电子商务
期货考试
国际商务
心理咨询
营 销 师
司法考试
国际货运代理人
人力资源管理师
广告师职业水平
卫生资格 执业医师 执业药师 执业护士
会计从业资格
基金从业资格
统计从业资格
经济师
精算师
统计师
会计职称
法律顾问
ACCA考试
注册会计师
资产评估师
审计师考试
高级会计师
注册税务师
国际内审师
理财规划师
美国注册会计师
一级建造师
安全工程师
设备监理师
公路监理师
公路造价师
二级建造师
招标师考试
物业管理师
电气工程师
建筑师考试
造价工程师
注册测绘师
质量工程师
岩土工程师
造价员考试
注册计量师
环保工程师
化工工程师
咨询工程师
结构工程师
城市规划师
材料员考试
监理工程师
房地产估价
土地估价师
安全评价师
房地产经纪人
投资项目管理师
环境影响评价师
土地登记代理人
缤纷校园 实用文档 英语学习 作文大全 求职招聘 论文下载 访谈|游戏
计算机等级考试
您现在的位置: 考试吧(Exam8.com) > 计算机等级考试 > 计算机二级 > C语言 > 复习资料 > 正文

2013年计算机等考二级《C语言》复习笔记第三章第3节

来源:考试吧Exam8.com) 2012-11-12 15:18:43 考试吧:中国教育培训第一门户 模拟考场

  数据输入语句

  C语言的数据输入也是由函数语句完成的。 本节介绍从标准输入设备-键盘上输入数据的函数scanf和getchar。 scanf函数 scanf函数称为格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

  一、scanf函数的一般形式

  scanf函数是一个标准库函数,它的函数原型在头文件“stdio.h”中,与printf函数相同,C语言也允许在使用scanf函数之前不必包含stdio.h文件。scanf函数的一般形式为: scanf(“格式控制字符串”,地址表列); 其中,格式控制字符串的作用与printf函数相同,但不能显示非格式字符串, 也就是不能显示提示字符串。地址表列中给出各变量的地址。 地址是由地址运算符“&”后跟变量名组成的。例如,&a,&b分别表示变量a和变量b 的地址。这个地址就是编译系统在内存中给a,b变量分配的地址。在C语言中,使用了地址这个概念,这是与其它语言不同的。 应该把变量的值和变量的地址这两个不同的概念区别开来。变量的地址是C编译系统分配的,用户不必关心具体的地址是多少。 变量的地址和变量值的关系如下: &a--->a567 a为变量名,567是变量的值,&a是变量a的地址。在赋值表达式中给变量赋值,如: a=567 在赋值号左边是变量名,不能写地址,而scanf函数在本质上也是给变量赋值,但要求写变量的地址,如&a. 这两者在形式上是不同的。&是一个取地址运算符,&a是一个表达式,其功能是求变量的地址。

  void main(){

  int a,b,c;

  printf("input a,b,c\n");

  scanf("%d%d%d",&a,&b,&c);

  printf("a=%d,b=%d,c=%d",a,b,c);

  }

  注意&的用法!

  在本例中,由于scanf函数本身不能显示提示串,故先用printf语句在屏幕上输出提示,请用户输入a、b、c的值。执行scanf语句,则退出TC屏幕进入用户屏幕等待用户输入。用户输入7、8、9后按下回车键,此时,系统又将返回TC屏幕。在scanf语句的格式串中由于没有非格式字符在“%d%d%d”之间作输入时的间隔, 因此在输入时要用一个以上的空格或回车键作为每两个输入数之间的间隔。

  如: 7 8 9

  或

  7

  8

  9

  格式字符串

  格式字符串的一般形式为: %[*][输入数据宽度][长度]类型 其中有方括号[]的项为任选项。各项的意义如下:

  1.类型

  表示输入数据的类型,其格式符和意义下表所示。

  格式 字符意义

  d 输入十进制整数

  o 输入八进制整数

  x 输入十六进制整数

  u 输入无符号十进制整数

  f或e 输入实型数(用小数形式或指数形式)

  c 输入单个字符

  s 输入字符串

  2.“*”符

  用以表示该输入项读入后不赋予相应的变量,即跳过该输入值。 如 scanf(“%d %*d %d”,&a,&b);当输入为:1 2 3 时,把1赋予a,2被跳过,3赋予b。

  3.宽度

  用十进制整数指定输入的宽度(即字符数)。例如: scanf("%5d",&a);

  输入:

  12345678

  只把12345赋予变量a,其余部分被截去。又如: scanf("%4d%4d",&a,&b);

  输入:

  12345678将把1234赋予a,而把5678赋予b。

  4.长度

  长度格式符为l和h,l表示输入长整型数据(如%ld) 和双精度浮点数(如%lf)。h表示输入短整型数据。

  使用scanf函数还必须注意以下几点:

  a. scanf函数中没有精度控制,如: scanf("%5.2f",&a); 是非法的。不能企图用此语句输入小数为2位的实数。

  b. scanf中要求给出变量地址,如给出变量名则会出错。如 scanf("%d",a);是非法的,应改为scnaf("%d",&a);才是合法的。

  c. 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔则可用空格,TAB或回车作间隔。C编译在碰到空格,TAB,回车或非法数据(如对“%d”输入“12A”时,A即为非法数据)时即认为该数据结束。

  d. 在输入字符数据时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。例如:

  scanf("%c%c%c",&a,&b,&c);

  输入为:

  d e f

  则把'd'赋予a, 'f'赋予b,'e'赋予c。只有当输入为:

  def

  时,才能把'd'赋于a,'e'赋予b,'f'赋予c。 如果在格式控制中加入空格作为间隔,如 scanf ("%c %c %c",&a,&b,&c);则输入时各数据之间可加空格。

  void main(){

  char a,b;

  printf("input character a,b\n");

  scanf("%c%c",&a,&b);

  printf("%c%c\n",a,b);

  }

  scanf("'C14F14%c%c",&a,&b);

  printf("%c%c\n",a,b); 由于scanf函数"%c%c"中没有空格,输入M N,结果输出只有M。

  而输入改为MN时则可输出MN两字符,见下面的输入运行情况: input character a,b

  MN

  MN

  void main(){

  char a,b;

  printf("input character a,b\n");

  scanf("%c %c",&a,&b);

  printf("\n%c%c\n",a,b);

  }

  scanf("%c %c",&a,&b); 本例表示scanf格式控制串"%c %c"之间有空格时, 输入的数据之间可以有空格间隔。e. 如果格式控制串中有非格式字符则输入时也要输入该非格式字符。

  例如:

  scanf("%d,%d,%d",&a,&b,&c); 其中用非格式符“ , ”作间隔符,故输入时应为: 5,6,7

  又如: scanf("a=%d,b=%d,c=%d",&a,&b,&c);

  则输入应为

  a=5,b=6,c=7g. 如输入的数据与输出的类型不一致时,虽然编译能够通过,但结果将不正确。

  void main(){

  int a;

  printf("input a number\n");

  scanf("%d",&a);

  printf("%ld",a);

  }

  由于输入数据类型为整型, 而输出语句的格式串中说明为长整型,因此输出结果和输入数据不符。如改动程序如下:

  void main(){

  long a;

  printf("input a long integer\n");

  scanf("%ld",&a);

  printf("%ld",a);

  }

  运行结果为:

  input a long integer

  1234567890

  1234567890 当输入数据改为长整型后,输入输出数据相等。

  键盘输入函数

  getchar函数getchar函数的功能是从键盘上输入一个字符。其一般形式为: getchar(); 通常把输入的字符赋予一个字符变量,构成赋值语句,如:

  char c;

  c=getchar();

  #include

  void main(){

  char c;

  printf("input a character\n");

  c=getchar();

  putchar(c);

  }

  使用getchar函数还应注意几个问题:

  1.getchar函数只能接受单个字符,输入数字也按字符处理。输入多于一个字符时,只接收第一个字符。

  2.使用本函数前必须包含文件“stdio.h”。

  3.在TC屏幕下运行含本函数程序时,将退出TC 屏幕进入用户屏幕等待用户输入。输入完毕再返回TC屏幕。

  void main(){

  char a,b,c;

  printf("input character a,b,c\n");

  scanf("%c %c %c",&a,&b,&c);

  printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);

  }

  输入三个小写字母

  输出其ASCII码和对应的大写字母。

  void main(){

  int a;

  long b;

  float f;

  double d;

  char c;

  printf("%d,%d,%d,%d,%d",sizeof(a),sizeof(b),sizeof(f)

  ,sizeof(d),sizeof(c));

  }

  输出各种数据类型的字节长度。

1 2  下一页

  编辑推荐:

  2012年9月计算机等级考试成绩查询短信提醒

  2013年上半年计算机等级考试报名时间预测

  2012年计算机等级考试二级VB重点知识汇总

文章搜索
版权声明:如果计算机等级考试网所转载内容不慎侵犯了您的权益,请与我们联系800@exam8.com,我们将会及时处理。如转载本计算机等级考试网内容,请注明出处。