04C++顺序结构(3)

news/2024/10/18 15:37:57

一、设置域宽setw()

输出的内容所占的总宽度成为域宽,有些高级语言中称为场宽。
使用setw()前,必须包含头文件iomanip,即#include<iomanip>
头文件iomanip,用来声明一些“流操作符”,需要一定格式输入输出时,就需要用到它,比较常用的有设置域宽、设置左右对齐、设置实数的精确度等。
setw(n)的作用是设置输出宽度为n,默认为右对齐,并且用空格填充。例如:cout << std::setw(5) << "0" << "1" << endl,该语句就是设置字符串"0"的输出宽度为5,默认为右对齐,空格填充。若想使用其他符号填充(例如用'*'填充),则可以用cout << std::setw(5) << setfill('*') << "0" << "1" << endl;如果想修改成左对齐,则只需要在std::setw(n)之前加上std::left即可。
setw()只对直接跟在后面的输出数据起作用。
当要输出的字符串宽度大于setw设置的宽度n时,直接输出想要输出的字符串即可(此时忽视setw设置的宽度)。

通过运行如下测试代码即可了解setw()的规则:

#include <iomanip>
#include <iostream>
#include<string.h>
using namespace std;
int main()
{/*默认为右对齐,此时加不加std::right都可以 */cout << std::setw(5) << "0" << "1" << endl;cout << std::setw(5) << "00" << "1" << endl;cout << std::setw(5) << "000" << "1" << endl;/*用<<left或者std::left改成左对齐*/cout << std::left << std::setw(5) << "0" << "1" << endl;cout << std::left << std::setw(5) << "00" << "1" << endl;cout << std::left << std::setw(5) << "000" << "1" << endl;/*当要输出的字符串宽度大于setw设置的宽度时,直接输出想要输出的字符串即可*/cout << std::right <<std::setw(5) << "0000000" << "1" << endl;/*用其他符号填充*/cout << std::right <<std::setw(5) << setfill('*') << "0" << "1" << endl;cout << std::left << std::setw(5) << setfill('*') << "0" << "1" << endl;return 0;
}

英汉小词典:
iomanip:io是输入输出的缩写;
manip:是manipulator(操纵器)的缩写;
setw:set width的缩写,设置域宽;
练习:
(1)为了让计算机完成一个完整的任务而编写的一系列指令序列称为( )
A.命令 B.口令 C.程序 D.软件
(2)阅读程序写结果。

 1 #include <iostream>2 #include <iomanip> 3 using namespace std;4 int main()5 {
6     int a,b,c;
7     a=3;
8     b=4;
9     c=a*a+b*b;
10     cout<<a<<'*'<<a<<'+'<<b<<'*'<<b<<'='<<setw(2)<<c<<endl;
11     return 0;
12   }

3.完善程序:已知a为15,b为3,输出a-b的竖式计算。

 1 #include <iostream>2 /*头文件iomanip,用来声明一些“流操作符”,3 需要一定格式输入输出时,就需要用到它,4 比较常用的有设置域宽、设置左右对齐、5 设置实数的精确度等。*/ 6 #include <iomanip> 7 using namespace std;8 int main()9 {
10     int a,b,c;
11     a=15;
12     b=3;
13     c=a-b;
14     cout<<setw(5)<<a<<endl;
15     cout<<setw(2)<<'-'<<setw(3)<<____<<endl;
16     cout<<"------"<<endl;
17     cout<<________<<c<<endl;
18     return 0;
19 }

二、cin语句

cin>>a;输入一个数并赋值给变量a。
习惯上,将"cin"和流提取运算符">>"实现的输入语句简称为cin语句。
C++编程语言I/O流中的标准输入流,需要包含iostream头文件,即#include ,cin 分为两个音节 读为 "c in",音标 "/si:ɪn/"。
cin代表标准输入设备,使用右移运算符 ">>" 从设备键盘取得数据,送到输入流对象cin中,然后送到内存。

使用cin可以获得多个从键盘的输入值,其具体使用格式如下:
cin >> 变量1 >>变量2...>>变量n

示例:风之巅小学向全校师生发出“植树造林,还我绿色”的倡议,鼓励大家多植树,创造绿色家园,同学们都积极响应。向日葵班有43人,平均每人种2棵树;苹果班42人,平均每人种3棵树;草莓班45人,平均每人种2棵树。
当程序运行时,每班人数和平均每人种的颗数由客户输入,程序算出该班种的总颗数。
每个班的学生人数是不一样的,平均每人种树的棵数也会不一样,每次运行时都要更改程序,很不方便。能不能实现这样的功能:当程序运行时,每个班的人数和平均每人种的棵数由我们自己输入,程序能根据输入的数值计算出总的棵数?
由cin来实现,如cin>a的作用是输入一个数并赋值给变量a。

1 /*2 试编一程序,分别计算出每个班总棵树。 3 */4 5 #include <iostream>    //包含输入输出流头文件iostream 6 using namespace std;    //指明程序 使用命名空间std(标准) 7 int main()8 {9     int a,b,s;
10     cout<<"请输入人数和平均每人种的棵数:";
11     cin>>a;
12     cin>>b;
13     s=a*b;
14     cout<<"总的棵数:"<<s<<endl;
15     return 0;
16  } 

英汉小词典:
cin:由c和in两个单词组成输入流。
2、练习:
(1)下面设备中,( )属于计算机的输入设备。
A.显示器 B.绘图仪 C.打印机 D.鼠标
(2)用cin语句重新编写交换两个变量的值的程序。
(3)阅读程序写结果

#include <iostream>    //包含输入输出流头文件iostream
using namespace std;    //指明程序 使用命名空间std(标准)
int main()
{int s,a,b,c;cin>>s>>a>>b>>c;s-=a;s-=b;s-=c;cout<<"ans="<<s<<endl;return 0;}

输入:200 10 20 30 50
输出:_________________
(4)完善程序

/*
3.完善程序
从键盘输入长方形的长和宽,输出长方形的周长。
*/#include <iostream>    //包含输入输出流头文件iostream
using namespace std;    //指明程序 使用命名空间std(标准)
int main()
{int a,b,c;;c=(a+b)*2;cout<<"周长:"<<  <<endl;return 0;}

三、输入输出.格式化

1. 输出

对于格式化输出,本节课将学习两个函数 scanf()printf() 来取代之前的cin和cout方法;

  • 假如,我们要输出一组运算等式:1 + 2 = 3,而1是变量a,2是变量b,3是a+b的运算结果;
int a = 1, b = 2;
// cout
cout << a << " + " << b << " = " << a + b;cout << endl;// printf
printf("%d + %d = %d", a, b, a + b);
  • printf() 函数极其方便的原因,它可以先按照自己的输出格式,先写出来,不需要头脑翻译;

  • 然后把需要替换成变量的部分,用 %d 来表示即可,而后续对应的位置换成变量或表达式运算即可;

  • %d 这里表示占位的内容 是 整型,也有各种其它的占位符,这里罗列出常用的几个:

    占位控制符 说明
    %d 整数
    %f 浮点数(float)
    %c 字符
    %s 字符串
  • 最终的语法结构如下:

    printf(格式控制符, 占位替换列表)
    

2. 输入

  • 从上面例子中,我们使用 scanf() 函数来控制输入:

    int a, b;
    // scanf
    scanf("%d %d", &a, &b);// printf
    printf("%d + %d = %d", a, b, a + b);
    
  • 先了解下输入参数的格式需求:

    scanf(格式控制符, 地址集)
    
  • 暂时没有办法解释这个地址是什么意思?举个并不恰当但好理解的说明:

    • 快递员给张三寄快递,直接送到张三手上;这是 cin
    • 快递员给张三家地址寄快递,不管是凤巢、门卫代收还是家人收件,最终会交给张三;这是 scanf()
    • 所以,a表示张三,&a表示张三家的地址;而sacanf() 参数要求是地址,故在变量前加&;
    • 而这个知识点叫做 引用,是比较靠后的知识点,暂时不用理解;
    • 后续,自然也会有 变量本身就是引用,反而参数不需要 & 符号;

3. 格式化

  • 在使用 printf() 时,我们需要输出各种特殊字符,比如百分号,换行,以及场宽精度问题等:

    符号 说明和示例
    \\ 输出一个斜杠,printf("\\");
    \n 换行,printf("\n");
    %% 百分号,printf("%");
    数字 场宽,printf("%3d%5d");
    小数 精度,printf("%.2f", 3.1415926);

例程:

// 格式化
printf("%%\\\n");// 场宽
printf("%3d%5d\n", a, b);// 精度
printf("%.2f\n", 3.1415926);
// 场宽+精度
printf("%8.2f", 3.1415926);

参考阅读:

一、格式化输出函数:

格式化输入函数和格式化输出函数是C语言标准库函数.

printf()函数的一般语法格式如下:

printf("<格式化字符串>",<输出列表>);

1.格式化字符串:

用双引号括起来的字符串,字符串包含的普通字符,printf()函数将其原样输出到屏幕上;

以"%"开头的格式字符,printf()函数将数据转换为指定的格式输出到屏幕上。

输出列表:需要输出到屏幕的数据,数据可以是常量、变量或者表达式。

二、格式化输入函数:

scanf()函数的一般语法格式如下:

scanf("<格式化字符串>",<地址列表>);

格式化字符串:

1.用双引号括起来的字符串,一般只有"%"开头的格式字符。

2.地址列表:各个变量的地址,变量的地址通过取地址符号"&",数组名本身就是地址。

scanf()函数也可以和printf()函数一样可以接受多个值,变量之间需要用逗号隔开,需要一一对应。

三、常见格式控制字符

格式控制符以%开头

格式控制字符 作用

%d 输入或输出int变量数据

%u 输入或输出unsigned int变量数据

%lld 输入或输出long long变量数据

%llu 输入或输出unsigned long long变量数据

%f 输入或输出float变量数据

%lf 输入或输出double变量数据

%c 输入或输出char变量数据

%s 输入或输出字符串变量或字符数组数据

%nd 以n字符宽度输出整数,宽度不足时用空格补充

%0nd 以n字符宽度输出整数,宽度不足时用0补充

%.nlf 输出浮点数,精确到小数点后n位

......

例1:hello world

//C:格式化输出

printf("hello world\n");

例2:a+b 问题

//C:格式化输入输出

int a,b;

long long s;

//cin>>a>>b;

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

s=a+b;

//cout<<s<<endl;

printf("%lld\n",s);

例3:温度转换

已知:设施温度c,与华氏温度f的转换关系:9c=5(f-32).

输入华氏温度f,输出设施温度c

输入:98.6

输出:37

#include<iostream>
using namespace std;
int main ()
{double c,f;scanf("%lf",&f);c=(f-32)*5/9;printf("%lf",c);return 0;
}

例4:输入任意的两个整数,两个整数之间用+、-、*、/四种符号之一表示,根据符号计算结果。

输入:8+2 输出:10

输入:8/5 输出:1.6

提示:字符类型%c

#include<iostream>
using namespace std;
int main()
{int a,b;double s;char x;scanf("%d%c%d",&a,&x,&b);if(x=='+')s=a+b;else if(x=='-')s=a-b;else if(x=='*')s=a*b;else if(x=='/')s=(double)(a)/b;printf("%lf",s);return 0;
}

在C++中,cstdio和stdio.h这两个标准输入输出头文件里面都有printf函数。
-[C/C++入门][printf输出]5、详解C语言和C++中的printf输出
-【C语言】scanf()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/73086.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

轻松上手-MVVM模式_关系型数据库_云函数T云数据库

作者:狼哥 团队:坚果派 团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁…

九宫格自由流转拼图游戏

作者:狼哥 团队:坚果派 团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁…

轻松上手-Navigation路由 H5

作者:狼哥 团队:坚果派 团队介绍:坚果派由坚果等人创建,团队拥有12个华为HDE带领热爱HarmonyOS/OpenHarmony的开发者,以及若干其他领域的三十余位万粉博主运营。专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉。团队成员聚集在北京,上海,南京,深圳,广州,宁…

Audio

音频文件导入 常用格式wav mp3 aiff音频文件属性设置Force To Mono:多声道转单声道; Normalize:强制为单声道时,混合过程中被标准化 Load In Background:在后台加载时,不阻塞主线程 Ambisonic:立体混响声,非常适合360度视频和XR应用程序,如果音频文件包含立体混响声编…

RenderTexture

基础概念 RenderTexture 在Unity中,RenderTexture是一种纹理,它可以在运行时动态地生成图像数据,并且可以作为着色器的输入或者显示在游戏世界的任何材质上。简单来说,RenderTexture让你能够将场景或特定相机的渲染结果捕获到一个纹理中,然后这个纹理可以被用作其他渲染过…

九点共圆及其圆心证明(证明过程已更新)

九点共圆及其圆心证明主要思路:固定 \(P,L\),证明其它七个点均在以 \(PL\) 为直径的圆上。 条件的来源会备注在括号内。背景可能影响观感,建议打开极简模式阅读。这是一个三角形 \(\triangle ABC\),设 \(BC,AC,AB\) 边上垂足分别为 \(D,E,F\),其边上中点分别为 \(L,M,N\),…

【喜讯】全球电商大数据平台推出F类免费API接口服务!

好消息,全球电商大数据平台再次上线多个类别接口,首次推出F类免费API接口服务,为所有追求数据赋能、寻求创新突破的企业和个人,带来了前所未有的机遇。好消息,值此之际;全球电商大数据平台再次上线多个类别接口,首次推出F类免费API接口服务,为所有追求数据赋能、寻求创…

c# winform在线升级clickonce

说明:在线升级前提 1,一个可以访问在线的地址,2,发布前要在项目属性发布里配置好相关设置 一,可以在IIS上布署一个可以访问的地址 二,发布前配置