1、最为基本的输入输出——scanf和printf
使用这两个函数需要包含头文件<stdio.h>
样例
#include <stdio.h>
int main(void)
{
int a,b;//两个加数
scanf("%d %d",&a,&b);//读入键盘输入的两个数字(以空格作为分界)并依次存储到a和b两个变量里面
//&符号不能忘记,这个符号是把键盘输入存入变量的关键
printf("%d + %d = %d",a,b,a+b);
return 0;
}
输出
2 3
2 + 3 = 5
上面代码中,scanf("%d %d",&a,&b);
里面的%d是用来控制输入格式的,同理printf里面的也是这个作用。
输入格式控制符形式
输出格式控制符形式
- 最完整的样子(实际上使用很少用到如此多参数)
% [{+,-}] [o] [{m,m.n}] [{l,h}] <格式控制符>
其中,中括号[]里的内容是可选的,<>里的内容是必须的。
以下对各个标志的含义简要介绍:
%:表示格式控制的起始符号,必不可少。–格式控制起始位置
+/-:表示对齐标志,+表示右对齐,-表示左对其,缺省情况下为右对齐。–对齐标志
o:表示当实际长度没有格式控制的长度大时,用“o”补全。–补全内容
m/m.n:其中,m表示输出所占位宽,n表示实际取标识符的多少位输出–占位长度
l/h:l对整型指long型,对实型指double型;h用于将整型字符修正为short型
<>:格式控制符
- 常用的输出格式控制符
%d:用于输出整型数(整型指本质为整型的数,如int、short等)
%c:用于输出一个字符
%s:用于输出一个字符串
%o:以无符号八进制形式输出整数值
%x:以无符号十六进制形式输出整数值
%u:以无符号形式输出十进制数
%f:用来输出浮点数(float),精度为6位小数,第七位四舍五入。
%p:指针的值
- 控制输出长度
%md:m为指定的输出数据的位宽。如果数据的位数小于m,则左端补以空格(因为默认右对齐,所以左补用以占位);如果数据的位数大于m,则以数据的实际位数输出。
样例
#include<stdio.h>
int main()
{
char insertTime[20] = {"1234567890"};
double insertTime1 = 12345;
printf("%-15s\n",insertTime); //左对齐,15位长度,不够补空格
printf("%15s\n",insertTime); //右对齐,15位长度,不够补空格
printf("%015s\n",insertTime); //右对齐,15位长度,不够补0
printf("%-15.2f\n",insertTime1); //左对齐,15位长度,带两位小数,不够补空格
return 0;
}
输出
直接输出内容
除了能够控制格式输出,我们还可以利用printf函数直接输出汉字等内容(常用作输入提示)
#include <stdio.h>
int main(void)
{
int a,b;//两个加数
printf("请输入两个数:") ;//直接输出文本
scanf("%d %d",&a,&b);
printf("%d + %d = %d",a,b,a+b);
return 0;
}
运行结果
ps:如果使用visual studio 2017或者2019进行输入输出,要使用更安全的scanf_s()和printf_s(),只是换个名字,使用方法差不多
2、非格式化的输入输出函数
2.1puts()和gets()函数
2.1.1puts()函数
- 头文件为
stdio.h
- puts()函数用来向标准输出设备(屏幕)写字符串并换行
- 调用格式为
puts(s)
,其中s为字符串变量(字符串数组名或字符串指针)。puts()函数的作用于printf("%s\n",s)
相同
2.1.2gets()函数
- 头文件为
stdio.h
- 函数原型为
char * gets(char * str);
- gets()函数用来向标准输入设备(键盘)读取字符串直到回车结束,不同于fgets,它没有指定读入长度,所以需要注意字符数组str的大小
- 调用格式为gets(s),其中s为字符串变量(字符串数组名或者字符串指针)。gets()函数的作用与
scanf("%s",&s)
函数作用类似,使用scanf(“%s”,&s)
函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符串直到回车为止。
样例
#include <stdio.h>
int main( )
{
char str[100];
printf( "Enter a value :");
gets(str);
printf( "\nYou entered: ");//这里面的\n是为了换行让输出更加美观
puts(str);
return 0;
}
2.2putchar()和getchar()函数
2.2.1putchar()函数
等同于printf("%c",ch);(即输出一个字符)
2.2.2getchar()函数
- 头文件 stdio.h
- 函数原型
int getchar(void)
- 从标准输入stdin读入一个字符,程序等待你输入的时候你可以输入多个字符,回车后程序继续执行。但是getchar实际上只读入第一个字符。
- 常用在exe中暂停程序。
样例
#include <stdio.h>
int main( )
{
char c;
int num;
printf( "请输入一个字母:");
c = getchar( );
getchar ();//用于读入缓冲区的回车换行符,试试看如果不加会怎么样
printf("请输入一个数字:");
num = getchar();
printf( "\n你输入的字母是: ");
putchar(c);
printf( "\n你输入的数字是: ");
putchar(num);
printf( "\n");
return 0;
}
2.3getch()和getche()
这两个东西一般很少使用,如果感兴趣可以自行深入了解
- 头文件 conio.h
- 并非标准C中的函数,建议还是使用getchar()
- 函数原型分别为:
int getch(void)
当你用键盘输入的时候,屏幕不显示你所输入的字符(不带回显),不需要按回车,程序自动继续进行
int getche(void)
屏幕显示你所输入与的字符(带回显),不需要按回车,程序自动继续进行
以上便是输入输出的大概知识,希望大家阅读后能有所收获0.0
3、题目
在做学生成绩统计系统时,有这样一个要求:我们需要把学生成绩先进行输入,然后再按格式输出,这样在以后查看成绩时可以更直观地看到每个人对应的分数。
输入格式
依次输入两个人的名字和C语言成绩(不允许有多余的空格),因为本题目仅靠查输入输出,所以名字就用char类型单个字符代替
输出格式
先输出一行文字姓名 C语言成绩
换行依次输出名字和成绩,再换行输出average mark:
,接着在后面输出正确的平均分
输出的名字长度为2,格式为右对齐
输出的成绩长度为9,小数点后保留2位,格式为右对齐
平均分的输出仅要求小数点后保留2位
输入样例
a 99
b 97