当前位置: 首页 > news >正文

Linux--C语言之输入输出函数及格式控制输出

文章目录

  • 一、数据输入输出的概念及在C语言中的实现
  • 二、 简单的格式输入与输出
    • (一)用简单的printf函数输出数据
      • 1.一般格式
        • (1)格式控制:用一对双引号括起来,包括两种信息
        • (2)输出列表:中的各项目指出了所要输出的内容,可以是常量、变量或表达式
        • (3)例如:
      • 2.基本的格式字符
    • (二)用简单的scanf函数输入数据
      • 1.scanf函数的一般格式
    • (三) 较复杂的输入输出格式控制
      • 1.输出数据格式控制
        • (1)十进制形式
        • (2)八进制形式
        • (3)十六进制形式
        • 说明:
      • 2.字符型格式说明
        • (1)字符char型
        • (2)字符串
        • 案例:字符串输出
      • 3.实型格式说明符
        • (1)十进制数形式
        • (2)指数形式
        • (3)%g或%G形式
      • 4.顺序结构程序设计案例
        • 案例1:输入三角形的三边长,求三角形的面积。
        • 案例2:从键盘输入一个大写字母,要求用小写输出。
        • 案例3:求解一元二次方程ax2+bx+c的根

一、数据输入输出的概念及在C语言中的实现

数据的输入与输出是相对于计算机而言的。其中:

1.从计算机向外部设备输送数据称为输出。通常输出设备包括:显示器、打印机等;

2.从外部设备向计算机输送数据称为输入。通常输入设备包括:键盘、鼠标、扫描仪等。

在C语言中,输入输出是用标准库函数中的输入、输出函数实现的

二、 简单的格式输入与输出

(一)用简单的printf函数输出数据

1.一般格式

printf("格式控制",输出列表);

说明:

(1)格式控制:用一对双引号括起来,包括两种信息

​ 格式说明:由“%”和特定字符组成,如:%d、%c、%f等,是格式说明符,用于说明输出项目所采用的格式;

​ 普通字符:作为说明性的文字、符号等,照原样显示。

(2)输出列表:中的各项目指出了所要输出的内容,可以是常量、变量或表达式
(3)例如:
printf("a=%d,b=%f\n",a,b);

2.基本的格式字符

(1)%d:按十进制整数数据的实际长度输出

(2)%c:仅输出一个字符

(3)%s:输出的结果是字符串,例如:printf(“%s\n”,“CHINA”); 输出结果是字符串CHINA

(4)%f:一小数形式输出一个实数(含单双精度数),整数部分全部输出,并输出六位小数

(5)%e或%E:以指数形式输出一个实数(含单双精度数),小数点前仅一位非数字,并输出六位小数

(二)用简单的scanf函数输入数据

1.scanf函数的一般格式

scanf("格式控制",地址列表);

作用:将从键盘输入的值存入内存中所占的存储单元里,存储单元由地址标识

说明:

(1)格式控制:的含义同printf函数,说明输入的数据应使用的的格式

(2)地址列表:是由若干个地址组成的,可以是变量的地址或字符串的首地址。&是取地址运算符,用于取出变量的地址

(3)与格式输出一样,在格式控制中,用于说明输入数据格式的格式说明符是以%开头,后面紧跟的是具体的格式。

(4)输入的数据可用空格、Tab键、回车键之任一种分开

注意:

​ (1)scanf函数中的“格式控制”后面应当是变量的地址,由取地址运算符和变量名共同组成,不能仅是变量名:

scanf("%f%d", &a,&b);  

​ (2)如果“格式控制”中除了格式说明以外还有其它字符,则在输入数据时必须在对应位置输入与之相同的字符: 从键盘输入时必须输逗号: 3,4 ↲

 scanf("%d,%d", &a,&b); 

​ (3)用%c格式输入字符时,空格和转义字符都作为有效字符输入,应注意:只有输入:xyz ↲ 才能使a得到x,b得到y,c得到z

scanf("%c%c%c", &a,&b,&c);    

​ (4) 在输入数值型数据时,遇到空格、回车、Tab键或遇非法输入,则认为该数据结束:

scanf("%d%c%f", &a,&b,&c);         

​ (5)对于unsigned型变量所需的数据,可以用%u或%d格式输入。

(三) 较复杂的输入输出格式控制

说明:按指定格式输出数据的宽度、小数位数、上下行数据按小数点对齐、用八进制、十六进制输出等。

1.输出数据格式控制

(1)十进制形式

​ %d或%md:用于基本整型 int

​ %ld 或 %mld:用于长整型 long

​ %u 或 %mu:用于无符号基本整型 unsigned

​ %lu 或 %mlu:用于无符号长整型 unsigned long

(2)八进制形式

​ %o或%mo:用于基本整型 int

​ %lo 或 %mlo:用于长整型 long

(3)十六进制形式

​ %x 或 %mx :用于基本整型 int

​ %lx 或 %mlx:用于长整型 long

说明:

​ m表示输出的整型数据所占总宽度(即列数),其中:

​ 当实际数据的位数不到m位时,数据前面将用空格补满;

​ 若实际数据位数大于m,则以数据的实际位数为准进行输出。

​ 注意:一个int型整数也可以%u格式输出,反之一个unsigned型整数也可以%d、%o、%x格式输出。按相互赋值的规则处理。

2.字符型格式说明

(1)字符char型

​ %mc:输出的字符占m列,如:

printf(%3c”,’a’);  // 实际输出为:a 注::表示空格
(2)字符串

​ %ms 输出的字符串占m列。若串长>m,全部输出;若串长<m,左面补空格。

​ %-ms 输出的字符串长<m,右面补空格%-m.ns 只取字符串前n个字符。

​ 若n<m,右面补空格;若n>m,m自动取n值。

注意:

​ 一个整数,只要其值在0~255范围内,也可以用“%c”格式使其按字符形式输出。

​ 在输出前,系统会自动将该整数作为ASCII码转换成相应的字符;反之,一个字符也可以输出成一个整数。

案例:字符串输出
#include <stdio.h>int main(void)
{printf("%3s,%7s,%-5.3s,%.4s\n","CHINA","CHINA","CHINA","CHINA"); //运行结果:CHINA, CH, CHI, CHIN  注:表示空格return 0;
}

3.实型格式说明符

(1)十进制数形式

​ %m.nf 或 %-m.nf

(2)指数形式

​ %m.ne 或 %-m.ne

(3)%g或%G形式

​ 根据数值的大小,自动选%f 或 %e中宽度较短的一种格式,不输出无意义的0。

​ 说明:

​ 在输出实型数据时,格式说明符中的m表示整个数据所占的宽度,n表示小数点后面所占的位数。

​ 如果在小数点后取n位后,所规定的数据宽度m不够输出数据前面的整数部分(包括小数点),则按实际的位数进行输出。

需要指出的是,在C语言中,用于输出单精度实型数据与双精度实型数据格式说明符是一样的。

4.顺序结构程序设计案例

程序中所有语句都是按自上而下的顺序执行的,不发生跳转

案例1:输入三角形的三边长,求三角形的面积。
/*
**需求:输入三角形的三边长,求三角形的面积。分析:① 设输入的三边能构成三角形;② 求三角形面积的公式为S = sqrt(p(p−a)(p−b)(p−c)) 注:sqrt表示开根号③p = (a+b+c)/2.0
*/
#include <stdio.h>
#include <math.h>int main()
{//声明变量存储三角形的三条边和面积float a,b,c; //三边float p; // 半周长float s; // 面积//给出输出提示,从键盘录入三角形的三条边printf("请输入三角形的三条边:");scanf("%f %f %f",&a, &b, &c);//判断输入的三条边能否构成三角形if(a + b > c && a + c > b && b + c > a){//用海伦公式求解三角形的面积p = (a+b+c) / 2.0f;s = sqrt(p*(p-a)*(p-b)*(p-c));printf("三角形的面积为:%.2f\n",s);}else{printf("您输入的三条边不能构成三角形!\n")}return 0;
}
案例2:从键盘输入一个大写字母,要求用小写输出。
/*
**需求:从键盘输入一个大写字母,要求用小写输出。分析:大写字母与小写字母的ASCII码值相差32。对从键盘输入的大写字母加32即变为相应的小写字母。
*/
#include <stdio.h>int main(void)
{//声明c1、c2两个变量分别存放字母的大小写char C1,C2; //给出输入提示并从键盘录入一个大写字母printf("请输入一个大写英文字母:");scanf("%c",&c1);c2 = c1 + 32;printf("相应的小写字母为:%c\n",c2);return 0;
}
案例3:求解一元二次方程ax2+bx+c的根
/*
**需求:系数a、b、c从键盘输入;分析:①已知一元二次方程的根为:x1=(-b/2a+sqrt(b^2-4ac))/2a,x2=(-b/2a-sqrt(b^2-4ac))/2a;② 可将上式分解为两项:m=-b/2a,n=sqrt(b^2-4ac)/2a;③ 则:x1=m+n,x2=m-n;
*/
#include <stdio.h>
#include <math.h>int main(void)
{//声明变量存储一元二次方程系数float a,b,c;//声明变量存储一元二次方程的根以及判别式的绝对值和处理量float x1,x2,d,m,n;//输出提示信息并从键盘录入一元二次方程的三个系数printf("请输入一元二次方程的三个系数:");scanf("%f %f %f",&a, &b, &c);//计算根的判别式dd = b*b - 4*a*c; //d表示根的判别式,说明:d>0时,方程有两个不等的实根;d=0时,方程有两个相等的实根;d<0时,方程无实根。// 根据判别式的值判断方程根的情况if (d < 0){printf("方程没有实数根!\n");} else{// 计算方程的根m = -b / (2 * a);// 使用 fabs函数确保 d 为非负数n = sqrt(fabs(d)) / (2 * a); x1 = m + n;x2 = m - n;printf("x1=%.2f\nx2=%.2f\n",x1,x2);}return 0;
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 如何在Shopify开发中高度还原Figma设计稿
  • 操作系统信号集与信号屏蔽
  • 社交工程攻击:心理操纵的艺术与防范策略
  • Nginx 服务器配置 SSL(HTTPS)的教程
  • 【langchain学习】从零开始掌握 JSONLoader:轻松解析复杂 JSON 数据
  • 【数据结构】五、树:7.哈夫曼树、哈夫曼编码
  • 物联网井盖-智能井盖-旭华智能
  • 【python】在Python中操作MongoDB的详细用法教程与实战案例分享
  • 北斗三号5G遥测终端机系统在水库大坝安全监测应用
  • 在 MySQL 中查找最小的缺失 ID
  • webrtc一对一视频通话功能实现
  • centos7 服务器搭建
  • 深度学习------------池化层
  • vue3 ts vite开发bug记录(类型转换)
  • 如何获取能直接在浏览器打开的播放地址?
  • 《微软的软件测试之道》成书始末、出版宣告、补充致谢名单及相关信息
  • Cookie 在前端中的实践
  • crontab执行失败的多种原因
  • Linux快速复制或删除大量小文件
  • Vue学习第二天
  • 机器学习 vs. 深度学习
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 扑朔迷离的属性和特性【彻底弄清】
  • 前嗅ForeSpider教程:创建模板
  • 如何实现 font-size 的响应式
  • 数组的操作
  • 译自由幺半群
  • 在weex里面使用chart图表
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​力扣解法汇总946-验证栈序列
  • #QT(智能家居界面-界面切换)
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (20050108)又读《平凡的世界》
  • (27)4.8 习题课
  • (7)svelte 教程: Props(属性)
  • (c语言)strcpy函数用法
  • (Ruby)Ubuntu12.04安装Rails环境
  • (差分)胡桃爱原石
  • (二)hibernate配置管理
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (一)Docker基本介绍
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (转)母版页和相对路径
  • (转)我也是一只IT小小鸟
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • . ./ bash dash source 这五种执行shell脚本方式 区别
  • .NET CORE 2.0发布后没有 VIEWS视图页面文件
  • .Net Web项目创建比较不错的参考文章
  • .net(C#)中String.Format如何使用
  • .Net多线程Threading相关详解
  • .Net接口调试与案例