printf函数
研究一个函数: 1、百度 2、查看linux中文C手册 3、man手册(英文)
- 头文件
#include
- 函数原型
int printf(const char * format, …); 变参 函数
- 函数作用
将指定格式的数据 输出 到 屏幕终端上(输出设备)
- 函数参数
format----》指定格式
…---->参数不固定
指定格式—》也就是将数据 以什么样的方式 打印到屏幕上
%s 字符串格式
%d 整型 int
%c 字符型 char
%hd 短整型 short int
%hhd 字符型的ascii码 char 数据对应的ascii码 的值
%f 单精度浮点型(实型) float
%lf 双精度浮点型 double
%ld long int
%lld long long int
%x 十六进制
%#x 十六进制 并且 十六进制 的前缀 0x也会打印出来 #o 八进制
%#o 八进制 并且 八进制的前
缀0打印出来
%e 以科学计数法的方式将浮点数打印出来
%p 打印内存的地址
int a = 100; printf("a:%d\n",a);
字段宽度
字段宽度其实就是指输出的字符所占的终端的列数,用户可以指定宽度,比如用户指定宽度为10,但是实际要输出的字符只有4个,那剩余的列数为6列,则这6列用空格补齐。注意:如果用户没有明确指定左对齐,则默认采用右对齐输出。如下:
int a=10,b=30;
float f = 3.141566;
printf("a:%#x\n",a); //结果为0xa
printf("b:%10#x\n", x); //结果为 0x14
printf("f=%f\n", f); //结果为3.141566
printf("f=%.2f\n", f); //结果为3.14
//输出多个数据
printf("a:%d, b:%d\n", a, b);
printf("a:%d, b:%d, f:%f\n", a, b, f);
scanf函数
-
头文件
#include
-
函数原型
int scanf(const char * format, …);
-
函数作用
从屏幕终端上 获取 指定 格式的数据,存储 到 变量的内存空间上
- 函数参数
format----》指定格式
-
函数返回值
成功
返回 获取 到的变量的个数 2
失败 0
int a1=0,a2=0;
//scanf("%d:%d",&a1,&a2); //输入的时候也必须按照这种格式输入,比如12:30
scanf("%d%d",&a1,&a2);
printf("a1:%d a2:%d\n",a1,a2);
//此时输入缓冲区中还存在换行符,而%c 不会自动跳过换行符或者空格,所以获取到的字符就是换行符
char ch;
scanf("%c",&ch);
printf("%hhd %c\n",ch,ch); //ch == '\n' 10
//%d会自动默认跳过换行符
int val=0;
scanf("%d",&val);
printf("%d\n",val);
练习
在程序中使用数学的计算函数
#include <stdio.h>
//如果要在程序中使用数学的计算函数
#include <math.h>
int main(void)
{
//四舍五入
printf("%d.2f,%d.2f,%d.2f\n",round(3.145),ceil(3.145),floor(3.145));
printf("%d,%d,%d\n",(int)round(3.145),(int)ceil(3.145),(int)floor(3.145));
return 0;
}
#include <stdio.h>
int main(void)
{
int a=10;
float b=10.0f;
double c=10.0;
char d ='A' ;
char *e ="hallo";
printf("%d,%f,%lf,%c,%s\n",a,b,c,d,e);
return 0;
}
#include <stdio.h>
int main(void)
{
int a=10;
float b=10.0f;
double c=10.0;
char d ='A' ;
char *e ="hallo";
printf("%d,%f,%lf,%c,%s\n",a,b,c,d,e);
printf("请输入:\n");
int d1;
char c1;
double f1;
scanf("%d,%c,%lf",&d1,&c1,&f1);
printf("%d,%c,%f",d1,c1,f1);
return 0;
}
复杂数据格式
/*
复杂数据格式
*/
#include <stdio.h>
int main(void)
{
int num;
long lnum;
printf("请输入连续的两个整数:\n"); // 将 prf 改为 printf ,并去除逗号后的空格
scanf("%d,%ld", &num, &lnum); // 去除逗号后的空格
printf("int-八进制:%o,int- 十进制:%d,int- 十六进制:%x,int-十进制限制列数:%5d\n", num, num, num, num);
printf("long-八进制:%lo,long- 十进制:%ld,long- 十六进制:%lx,long-十进制限制列数:%5ld\n", lnum, lnum, lnum, lnum); // 为 long 类型的输出添加正确的格式说明符
return 0;
}
根据三个园的半径,求周长(要求:保留2位小数,并且输出的时候右对齐)
#include <stdio.h>
//定义PI
#define PI 3.1415926
int main(void)
{
//需求:根据三个园的半径,求周长(要求:保留2位小数,并且输出的时候右对齐)
//申明求量,用来存储圆的半径和周长
double r1 = 1.53,r2 = 21.83,r3=123.71;
double s1,s2,s3;
//计算周长
s1 =2*PI*r1;
s2 =2*PI*r2;
s3 =2*PI*r3;
//打印周长至控制台
printf("圆的周长:\n%7.2f\n%7.2f\n%7.2f\n", s1,s2,s3);
return 0;
}
输入半径求圆周长
#include <stdio.h>
#define PI 3.14159 // 定义圆周率
int main() {
float radius1, radius2, radius3;
float circumference1, circumference2, circumference3;
printf("请输入第一个圆的半径:");
scanf("%f", &radius1);
printf("请输入第二个圆的半径:");
scanf("%f", &radius2);
printf("请输入第三个圆的半径:");
scanf("%f", &radius3);
circumference1 = 2 * PI * radius1;
circumference2 = 2 * PI * radius2;
circumference3 = 2 * PI * radius3;
printf("第一个圆的周长:%.2f\n", circumference1);
printf("第二个圆的周长:%.2f\n", circumference2);
printf("第三个圆的周长:%.2f\n", circumference3);
return 0;
}
us1;
circumference2 = 2 * PI * radius2;
circumference3 = 2 * PI * radius3;
printf("第一个圆的周长:%.2f\n", circumference1);
printf("第二个圆的周长:%.2f\n", circumference2);
printf("第三个圆的周长:%.2f\n", circumference3);
return 0;
}
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/1f4a74e22f2141268650a65b16c43fd4.png#pic_center)