c语言-printf函数和scanf函数简单使用
printf函数介绍
-
printf函数是输出到控制台
-
printf函数是c语言标准库函数,能够准确的格式输出程序运算结果
-
printf函数的调用格式为:
- printf("格式控制字符串",输出项列表);
- 例如:printf("%i",a);
- 输出项列表可以省略,printf("hello word")
-
简单用法:
-
// int类型 int number = 10; printf("number的值是%i",number) //使用%i // float类型 float FloatNumber = 20.0f; // float类型要加上f标示,默认是double类型的 printf("FloatNumber的值是%f",FloatNumber) // 使用%f // double类型 double DoubleNumber = 30.01234567890; printf("DoubleNumber的值是%lf",DoubleNumber) //使用lf,longfloat printf("DoubleNumber的值是%.10lf",DoubleNumber) // printf函数默认强制输出小数点后6位,想要输出双精度的需要指定你要输出小数点后面几位 // char类型 char CharNumber = 'a'; printf("CharNumber的值是%c",CharNumber) // 使用%c
-
指定位宽
// 指定位宽 int number = 99; // 如何指定位宽,%mi;其中m就是位宽,而i就是输出对应的数据类型 printf("%i\n",number); printf("%5i\n",number); // 可以明显的看到number的左边多出来一段空格,其实是由三个空格的 // 默认情况下位宽是右对齐,如果需要输出的位宽不够会在左边补空格 // 如果在位宽前面加负号-,就会改变对齐方式为左对齐,如果需要输出的位宽不够会在右边补空格 printf("%-5i\n",number); // 如果指定的位宽,但实际的内容超过了位宽的,会按照实际内容进行展示 int value = 999999; // value是有6位的 printf("%5i\n",value); //这里的value打印出是6位的,并不是指定位宽的5位
-
打印出01,02,03的效果
// 如果我们想打印出01,02,03,04,05的效果的话怎么办呢? // 只需要在指定位宽前面加0即可 int sum = 1; printf("%2i\n",sum); // 打印出 1; printf("%02i\n",sum); // 打印出01 在指定位宽的前面加了0,注意添加的位置
-
保留位数
// 保留位数 float floatValue = 3.1415926666; printf("%f\n",floatValue); // %f默认保留6位小数 // 指定保留几位小数 printf("%.2f\n",floatValue); // %.nf 在前面添加., n为保留几位小数的数字即可 // %f各种坑 // 1,我想把floatValue全部打印出来,那保留位数填写10看看应该全部都能显示吧? // 如果输出数据超出了有效位数,那后面就会出现一些垃圾数据。 printf("%.10f\n",floatValue); // 3.1415927410 看有效位数y只有7位 // 那如果想要完整输出这个floatValue就要用double类型 double doubleValue = 3.1415926666; printf("%.10lf\n",doubleValue); // double类型的有效位数是15位,那如果超过15位的话也没有办法了哈
-
scanf函数
-
scanf函数是一个阻塞式函数,程序如果遇到就会停下来等待用户输入内容
-
格式:scanf("格式化字符串",列表项)
// 要求存储用户输入的整数 // 1,用户输入的整数是确定的么?不确定,定义一个变量 int number = 0; // 2,如何接受用户输入的整数scanf() printf("请输入一个整数,以回车结束\n"); scanf("%i",&number); // 使用&符号,注意必须告诉scanf函数详细地址,才能存储用户输入的数据 // 3,格式:scanf("格式化字符串",列表项) printf("%i\n",number);
-
练习:从控制台输入两个整数,计算两个整数的和
// 练习:从控制台输入两个整数,计算两个整数的和 // 定义两个变量 int value1 = 0; int value2 = 0; // 使用scanf函数,让用户从控制台输入整数 printf("请您输入第一个整数,以回车结束\n"); scanf("%i",&value1); printf("请您输入第二个整数,以回车结束\n"); scanf("%i",&value2); // 定义s第三个变量,接收两个变量相加的值 int sum = 0; // 求和 sum = value1+value2; printf("%i+%i=%i\n",value1,value2,sum);
- 用一个scanf接收两个从控制台输入的内容
// 练习:从控制台输入两个整数,计算两个整数的和 // 定义两个变量 int value1 = 0; int value2 = 0; // 使用scanf函数,让用户从控制台输入整数 printf("请您输入两个数字,以逗号分隔,以回车结束\n"); scanf("%i,%i",&value1,&value2); // 注意输入的内容要求必须要与格式花字符串一摸一样 // 如果输入的数据与格式化字符串不匹配,那么scanf就会自动终止 // 定义s第三个变量,接收两个变量相加的值 int sum = 0; // 求和 sum = value1+value2; printf("%i+%i=%i\n",value1,value2,sum);
- scanf函数如果格式化字符时没有写格式的话,输入的多个数据是以,空格,回车来区分的
scanf("%i%i",&value1,&value2); // 此时在控制台输入回车或者空格,才能区分这两个数据
- scanf函数中使用%c的注意点
- 避免scanf函数中%c的问题,只要是一次性接收多个值的时候就使用固定的符号进行分隔(如:逗号,句号,等等)
scanf("%i,%c,%i",&value1,&value3,&value2); printf("%i,%c,%i\n",value1,value3,value2);
- 注意scanf函数中避免写\n,因为\n是scanf函数的结束符
scanf("%i\n",&value1); // 此时在控制台输入按回车是没有用的,结束不了,怎么结束呢输入一个不匹配的字符即可
- 注意scanf函数中如果输入缓冲区还有值时,不会要求用户输入,直接取输入缓冲区内的值即可
int value1 = 0; int value2 = 0; char value3; // value1-->123 value3-->a value2-->456 // scanf("%i%c%i",&value1,&value3,&value2); printf("请输入数据,以回车结束\n"); scanf("%i%c%i",&value1,&value3,&value2); printf("value1=%i,value3=%c,value2=%i\n",value1,value3,value2); // 如果输入缓冲区有内容就不会让用户去输入,直接取 char value4; int value5 = 0; scanf("%c%i",&value4,&value5); printf("value4=%c,value5=%i\n1",value4,value5); 控制台: 请输入数据,以回车结束 123 你好啊 456 value1=123,value3= ,value2=0 value4=n,value5=0 1Program ended with exit code: 0