第四章 键盘输入和屏幕输出

转义字符

\n 换行,光标移到下一行的起始位置
\r 回车(不换行),光标移到当前行的起始位置
\0 空字符
\t 水平制表
\v 垂直制表
\b 退格
\f 走纸换页
\a 响铃报警提示音
\" 一个双引号
\' 一个单引号
\\ 一个反斜线
\? 问号
\ddd 1到3位八进制ASCII码值所代表的字符
\xhh 1到2位十六进制ASCII码值所代表的字符

每个字符都有一个等价的整型值与其相对应,这个整型值就是该字符的ASCII码

从这个意义上而言,可将char型看成是一种特殊的int型

对char型数据和int型数据进行相互转换不回丢失信息

Unicode——国际标准化组织制定的更强大的编码

//L4-1

#include <stdio.h>
main()
{
char ch;
printf("Press a key and then press Enter:");
ch = getchar(); /* 从键盘输入一个字符,按回车键结束输入,该字符被存入变量ch */
ch = ch + 32; /* 将大写英文字母转换为小写英文字母 */
putchar(ch); /* 在屏幕上显示变量ch中的字符 */
putchar('\n'); /* 输出一个回车换行控制符 */
}
//运行结果
Press a key and then press Enter:B
b

函数getchar()和putchar()是C标准库中专门用于字符输入/输出的函数

函数getchar()没有参数

printf(格式控制字符串,输出值参数表)

格式控制字符串包括:格式转换说明、需原样输出的普通字符

//L4-2

#include <stdio.h>
main()
{
char ch;
printf("Press a key and then press Enter:");
ch = getchar();
ch = ch + 32;
printf("%c, %d\n", ch, ch); /* 分别输出变量ch中的字符及其ASCII码值 */
}
//运行结果
Press a key and then press Enter:B
b, 98

printf中的()格式修饰符

  • l:long
  • L:long double
  • h:short
  • m(m为整数):指定域宽(输出项输出时所占的列数)
  • .n(n为非负整数):指定显示精度

//L4-3

#include  <stdio.h>
main()
{
const double pi = 3.14159;
double r, circum, area;
printf("Input r:");
scanf("%lf", &r);
circum = 2 * pi * r;
area = pi * r * r;
printf("printf WITHOUT width or precision specifications:\n");
printf("circumference = %f, area = %f\n", circum, area);
printf("printf WITH width and precision specifications:\n");
printf("circumference = %7.2f, area = %7.2f\n", circum, area);/*使用域宽和精度说明符,数据所占域宽为7,显示的精度为2*/
}
//运行结果
Intput r:6
printf WITHOUT width or precision specification:
circumference=37.699111,area=113.097334
printf WITH width or precision specification:
circumference= 37.70,area= 113.10//注意,小数点也占一个字符位置

scanf(格式控制字符串,参数地址表)

在用scanf()输入数值型数据时,遇到以下几种情况都会认为数据输入结束

  • 遇空格符、回车符、制表符
  • 达到输入域宽
  • 遇非法字符输入

如果函数scanf()的格式控制字符串中存在除格式说明符之外的其他字符,那么这些字符必须在输入数据时由用户从键盘原样输入

//L4-4

#include  <stdio.h>
main()
{
int a, b;
scanf("%d %d", &a, &b);
printf("a = %d, b = %d\n", a, b);
}
//运行结果
12 34
a = 12, b = 34

scanf("%d%*c%d", &a, &b);允许用户用任意字符作为分隔符输入数据

当scanf()返回指定的数据项数时,表示函数被调用成功

当scanf()返回EOF值时,表示函数被调用失败

//L4-5

#include <stdio.h>
main()
{
int data1, data2;
char op;
printf("Please enter the expression data1 + data2\n");
scanf("%d%c%d",&data1, &op, &data2);
printf("%d%c%d = %d\n", data1, op, data2, data1+data2);
}
//运行结果
Please enter the expression data1 + data2
12+3
12+3 = 15

//L4-6

#include <stdio.h>
main()
{
int a;
char b;
float c;
printf("Please input an integer:");
scanf("%d", &a);
printf("integer: %d\n", a);
printf("Please input a character:");
scanf(" %c", &b); /*在%c前面加一个空格,将存于缓冲区中的回车符读入*/
printf("character: %c\n", b);
printf("Please input a float number:");
scanf("%f", &c);
printf("float: %f\n", c);
}
//运行结果
Please input an integer:12
integer: 12
Please input a character:a
character: a
Please input a float number:3.5
float: 3.500000 

C语言程序设计(四) 键盘输入和屏幕输出的更多相关文章

  1. C语言入门5-键盘的输入和屏幕输出

    C程序中的键盘输入和屏幕输出都是通过  调用输入/输出函数  实现的. 一.数据的格式化    屏幕输出 函数printf()的一般格式  (有两种) (1)第一种: printf(格式控制字符串): ...

  2. JAVA 键盘输入数组,输出数组内容和最大值、最小值

    package shuzu; import java.util.Scanner; import java.util.Arrays; public class shuzu { /** * @param ...

  3. java代码实现从键盘输入编号,输出价格,并且不再编号内的,无效输入!!!!

    总结:请给我更好的建议 package com.badu; import java.util.Scanner; //从键盘输入次数,通过输入的编号,输出对应的的商品价格: public class t ...

  4. Mybatis学习总结(四)——输入映射和输出映射

    在前面几篇文章的例子中也可以看到mybatis中输入映射和输出映射的身影,但是没有系统的总结一下,这篇博客主要对这两个东东做一个总结.我们知道mybatis中输入映射和输出映射可以是基本数据类型.ha ...

  5. Spring+SpringMVC+MyBatis深入学习及搭建(四)——MyBatis输入映射与输出映射

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6878529.html 前面有讲到Spring+SpringMVC+MyBatis深入学习及搭建(三)——My ...

  6. Mybatis框架四:输入参数、输出参数

    输入参数可以有三种:简单类型,POJO,包装类 关于前两种: http://www.cnblogs.com/xuyiqing/p/8600888.html 这里写一下传递包装类参数: 一个POJO:U ...

  7. java练习,,,从键盘输入次数,输出最大值,和

    总结:你的关注,是我的动力 package com.b; import java.util.Scanner; public class YUIO { public static void main(S ...

  8. (四)输入参数与输出类型为复杂类型的web服务

    一. 服务端发布服务 1.1 定义复杂类型:UserBean.java package service; public class UserBean { private String userId; ...

  9. c语言程序设计案例教程(第2版)笔记(四)—指针、分配存储空间、文件

    零散知识点: 指针类型:每个变量占用的首单元地址称为这个变量的存储地址. “&”为“取地址运算符”.格式:&  变量名.功能:返回指定变量的存储地址. “*”为“取内容运算”.格式:* ...

随机推荐

  1. 疯狂收集个人信息的谷歌,为何不像Facebook那样让人毛骨悚然?

    自从Facebook信息泄露丑闻事件发生后,互联网上的个人隐私及安全成为大众的"心病".而大众最讨厌的,是互联网企业收集自己的信息,因此都在积极讨伐这种行为.但他们却忘了,收集用户 ...

  2. Java 的 ArrayList 的底层数据结构

    1. 数据结构--ArrayList源码摘要 ublic class ArrayList<E> extends AbstractList<E> implements List& ...

  3. numpy中的ndarray与pandas中的series、dataframe的转换

    一个ndarray是一个多维同类数据容器.每一个数组有一个dtype属性,用来描述数组的数据类型. Series是一种一维数组型对象,包含了一个值序列,并且包含了数据标签----索引(index). ...

  4. 推送至远程仓库使用git push -u的原因

    第一次把本地仓库推送至远端时,为了以后方便一定要使用 git push -u origin master [此处是把本地的master分支推送至远程的master分支]

  5. STL中map的使用

    知识点 C++中map提供的是一种键值对容器,里面的数据都是成对出现的.map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的. ...

  6. CF-1110C-Meaningless Operations

    题意: 输入q,然后输入q个a,对于每个a,找到一个b,使gcd(a ^ b, a & b)最大,输出这个最大的gcd: 思路: 用k表示a二进制最高位的二进制编号,1,2,4,8对应1,2, ...

  7. CF-1102E-Monotonic Renumeration

    比较可惜昨天比赛的时候时间不够了,在比赛结束之后五分钟找出了bug提交通过了.然并软: 首先这题说b数组的后一项要么等于前一项,要么等于前一项加一,而且如果a[i] == a[j] ,那么b[i] = ...

  8. 吴裕雄--天生自然 R语言开发学习:图形初阶(续一)

    # ----------------------------------------------------# # R in Action (2nd ed): Chapter 3 # # Gettin ...

  9. Java实用教程系列之对象的转型

    体现: 父类的引用可以指向子类的对象接口的引用可以指向实现类的对象转型: 向上转型由子类类型转型为父类类型,或者由实现类类型转型为接口类型向上转型一定会成功,是一个隐式转换向上转型后的对象,将只能访问 ...

  10. Docker跨主机容器之间的通信macvlan

    找两台测试机: [root@docker1 centos_zabbix]# docker network ls NETWORK ID NAME DRIVER SCOPE 19ac9a55bedb br ...