C语言输出函数
在C语言中,有三个函数可以用来在显示器上输出数据,它们分别是:
-
puts():只能输出字符串,并且输出结束后会自动换行。
puts("I am a student.");
-
putchar():只能输出单个字符。
-
printf():可以输出各种类型的数据。
C语言输入函数
程序是人机交互的媒介,有输出必然也有输入,第三章我们讲解了如何将数据输出到显示器上,本章我们开始讲解如何从键盘输入数据。在C语言中,有多个函数可以从键盘获得用户输入:
-
scanf():和 printf() 类似,scanf() 可以输入多种类型的数据。
-
getchar()、getche()、getch():这三个函数都用于输入单个字符。
-
gets():获取一行数据,并作为字符串处理。
scanf() 是最灵活、最复杂、最常用的输入函数。
就目前学到的知识而言,int、char、float 等类型的变量用于 scanf() 时都要在前面添加&
,而数组或者字符串用于 scanf() 时不用添加&
,它们本身就会转换为地址。
scanf可输入带空格的字符串
#include <stdio.h>
#include <stdlib.h>
int main{
char str[20]={0};
scanf("%[^\n]",str); //scanf可以输入空格,以回车作为结束
puts(str);
return 0;
}
输入输出流
使用cin, cout 来进行输入输出,记得添加头文件和命名空间
//输入三个整数x,y,z,请把这三个数由小到大输出。
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
//要使用输入输出流,必须包含下面两句
#include <iostream>
using namespace std;
int main(){
int x,y,z;
cin >> x >> y >> z;;
int max = (x>=y) ? x : y;
max = (max>=z) ? max : z;
int min = (x<=y) ? x : y;
min = (min<=z) ? min : z;
cout << "The maximum number is " << max << " among the input numbers" << endl;
cout << "The minimum number is " << min << " among the input numbers" << endl;
//也可写作
//cout << "The maximum number is " << max << " among the input numbers" << endl << "The minimum number is " << min << " among the input numbers" << endl;
return 0;
}
endl
的作用与C语言换行符 \n
相同,是end of line
的缩写;<<
称为插入运算符,>>
称为提取运算符。
不必使用格式控制符 %d,%f
等等,系统会自动识别。
输入带空格的string的函数:getline(cin,str)
#include<iostream>
#include<string>
using namespace std;
int main()
{
string str[3];
cout<<"please input the str"<<endl;
for(int i=0;i<3;i++){
getline(cin,str[i]);
int n=str[i].length(); // 输出字符串长度
cout<<"str[" << i << "] length:"<<n<<endl;
}
return 0;
}
输出
please input the str
China is strong!
str[0] length:16
USA is weak!
str[1] length:12
I am Chinese!
str[2] length:12
浮点数的输出
小数也可以使用 printf 函数输出,包括十进制形式和指数形式,它们对应的格式控制符分别是:
%f 以十进制形式输出 float 类型;
%lf 以十进制形式输出 double 类型;
%e 以指数形式输出 float 类型,输出结果中的 e 小写;
%E 以指数形式输出 float 类型,输出结果中的 E 大写;
%le 以指数形式输出 double 类型,输出结果中的 e 小写;
%lE 以指数形式输出 double 类型,输出结果中的 E 大写。
%g 会对比小数的十进制形式和指数形式,以最短的方式来输出小数,让输出结果更加简练。所谓最短,就是输出结果占用最少的字符。
转义字符
\t 水平制表符,等同于tab键
\n 换行符
\' 输出单引号
\" 输出双引号
\\ 输出反斜杠
转义字符示例:
#include <stdio.h>
int main(){
float a = 0.00001;
puts("C\tC++\tJava\n\"C\" first appeared!");
printf("%%%f\n",a);
return 0;
}
运行结果:
C C++ Java
“C” first appeared!
%0.000010
☆输入输出流模板
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
cout<<setiosflags(ios::left|ios::showpoint); // 设左对齐,以一般实数方式显示
cout.precision(5); // 设置除小数点外有五位有效数字
cout<<123.456789<<endl;
cout.width(10); // 设置显示域宽10
cout.fill('*'); // 在显示区域空白处用*填充
cout<<resetiosflags(ios::left); // 清除状态左对齐
cout<<setiosflags(ios::right); // 设置右对齐
cout<<123.456789<<endl;
cout<<setiosflags(ios::left|ios::fixed); // 设左对齐,以固定小数位显示
cout.precision(3); // 设置实数显示三位小数
cout<<999.123456<<endl;
cout<<resetiosflags(ios::left|ios::fixed); //清除状态左对齐和定点格式
cout<<setiosflags(ios::left|ios::scientific); //设置左对齐,以科学技术法显示
cout.precision(3); //设置保留三位小数
cout<<123.45678<<endl;
return 0;
}
输出结果
123.46
****123.46
999.123
1.235e+02