格式输出函数:
printf("字符");//原样输出
printf("%格式控制符", 指定的数据);//以固定的格式输出指定的数据
%d %c %s %p %f %e %g %%
格式修饰符:
m %md //输出指定域宽,数字长度>m,原样输出,小于m,左补空格
.n %.nf //限制浮点数的小数位数(四舍五入)//限制字符串长度
l %lf //修饰f e g 双精度
%ld //修饰d i u x o 表示长整形
# %#x //修饰x X o ,显示进制前的提示符0x 0
+
-
0
示例代码:
#include <stdio.h>
int main()
{
int num = 123;
double num2 = 3.141592653545;
printf("%6d \n", num);
printf("%.3lf \n", num2);
printf("%.7lf \n", num2);
printf("%.20f \n", num2);
printf("%.31f \n", num2);
printf("%10f \n", num2);
printf("%10.3f \n", num2);
printf("%40d \n", num);
printf("%040d \n", num);
printf("%-40d \n", num);
printf("%+6d \n", num);
return 0;
}
编译输出:
123
3.142
3.1415927
3.14159265354500005785
3.1415926535450000578464369027643
3.141593
3.142
123
0000000000000000000000000000000000000123
123
+123
转义字符:
用 \ 将字符原本的意义改变,赋予了新的含义
\n //换行
\t //水平制表符
\0 //空
\v //垂直制表
\f //换页
用 \ 将有特殊含义字符,转换为本身的含义
\\ //代表一个反斜线字符''\'
\' //代表一个单引号(撇号)字符
\" //代表一个双引号字符
\ddd //1到3位八进制数所代表的任意字符 三位八进制
\xhh //1到2位十六进制所代表的任意字符 二位十六进制
示例代码:
#include <stdio.h>
int main()
{
printf("hello world!\n");
printf(" \\ ");
printf(" \" ");
printf(" %% \n");
printf(" \123 \n");
printf(" \x28 \n");
printf(" \123344 \n");
printf(" \277 \n");
return 0;
}
编译输出:
hello world!
\ " %
S
(
S344
�
格式输入函数:
scanf("格式控制符", 输入位置地址);
格式控制符:
%d
%c
%f
%s
修饰符:
m //指定域宽
l //双精度或长整形
h //短整形
* //抑制符
scanf输入数据结束标志:
空格 回车 tab
非法输入
m 指定域宽(123 m=2 12)
scanf内其他字符,需要原样输入
使用scanf函数时,可能会产生垃圾字符,清除垃圾字符方法:
1.getchar();
2.%*c //使用抑制符
示例代码1:
#include <stdio.h>
int main()
{
int num1 = 0;
double num2 = 0;
char ch = 'a';
scanf("%d", &num1);
scanf("%lf", &num2);
printf("%d\n", num1);
printf("%lf\n", num2);
printf("%c\n", ch);
return 0;
}
编码输出1:
1 //键盘输入
1.23 //键盘输入
1
1.230000
a
示例代码2:
#include <stdio.h>
int main()
{
int num1 = 0;
printf("请输入一个整数:");
scanf("%4d", &num1);
printf("输出:%d\n", num1);
return 0;
}
编译输出2:
请输入一个整数:123456
输出:1234
示例代码3:
int main()
{
int num1;
int num2;
scanf("%d,%d", &num1, &num2);
printf("output:%d\n", num1);
printf("output:%d\n", num2);
return 0;
}
编译输出3:
1,5
output:1
output:5
示例代码4:
#include <stdio.h>
int main()
{
int num1, num2;
scanf("%d", &num1);
scanf("%*c"); // 能够吃掉垃圾字符(本例吃掉多余的空格)
scanf("%d", &num2);
printf("num1 = %d\n", num1);
printf("num2 = %d\n", num2);
return 0;
}
编译输出4:
1 6
num1 = 1
num2 = 6
字符输入函数:
getchar()输入单个字符。
变量名 = getchar()
清除垃圾字符
示例代码:
#include <stdio.h>
int main()
{
char ch ;
int num1;
int num2;
ch = getchar();
scanf("%d", &num1);
scanf("%d", &num2);
printf("output:%c\n", ch);
printf("output:%d\n", num1);
printf("output:%d\n", num2);
return 0;
}
编译输出:
a 2 3
output:a
output:2
output:3
字符输出函数:
putchar()输出单个字符
putchar(变量名);
putchar(字符);//字符用''
putchar(ASCII);
示例代码:
#include <stdio.h>
int main()
{
char ch;
ch = getchar();
putchar(ch);
putchar('\n');
putchar(10);
printf("\n");
return 0;
}
编译输出:
aaaaaaaaaaaa //键盘输入
a
字符串输出函数:
puts()
puts(字符串首地址);
puts(“字符串”);
//后面会自动换行
补充:数组 char arr[n] = {"字符串"};//n字符的个数,arr是数组名,同时是字符串首地址
示例代码:
#include <stdio.h>
int main()
{
char arr[6] = {"hello"};
char arr1[6] = {"ni hao"};
puts(arr);
puts(arr1);
printf("%s\n", arr);
printf("%s\n", arr1);
puts("world");
return 0;
}
编译输出:
hello
ni hao
hello
ni hao
world
字符串输入函数:
gets()
gets(字符串的首地址);
以换行作为结束标志,空格能输入
//scanf把空格作为结束标志之一,不能输入空格。
示例代码:
#include <stdio.h>
int main()
{
char arr[7] = {"hello"};
char arr1[7] = {"hello"};
scanf("%s", arr1);
puts(arr);
puts(arr1);
return 0;
}
编译输出:
CSDN //键盘输入
hello
CSDN
两种特殊运算符:
三目运算符:
?: //三目运算符 条件运算符
表达式?结果1:结果2
表达式成立得到结果1,反之得到结果2
示例代码:
#include <stdio.h>
int main()
{
int a = 432;
int b = 321;
printf("%d\n", (a>b)?1:0 );
printf("%d\n", (a>b)?a:b );
return 0;
}
编译输出:
1
432
逗号运算符:
, //逗号运算符
从左往右依次执行,取最右边的值
示例代码:
#include <stdio.h>
int main()
{
int a = 12;
int b = 34;
int c = 56;
printf("%d\n", (a++, b++, c++));
return 0;
}
编译输出:
56