gpt4 book ai didi

c++ - 转换 printf(); cout<<""的语句;陈述。 C&C++

转载 作者:行者123 更新时间:2023-11-30 18:43:52 32 4
gpt4 key购买 nike

我试图理解 printf() 但我只熟悉 C++ cout<< 语句,有人能够翻译下面 printf() 语句的语法吗?我只是想了解这段代码中发生了什么。

void print_section(int n, int z){

char dots[2*n+1]; // this makes a char array
memset(dots,':',2*n+1); // this is similar to setfill()
dots[2*n+1] = 0;

for(int r = 0; r < n+1; r++){
printf("%*.s|%.*s\\%.*s/%.*s|\n",z-n,"",r,dots,2*(n-r),dots,r,dots);
}
for(int r = n; r >= 0; r--){
printf("%*.s|%.*s/%.*s\\%.*s|\n",z-n,"",r,dots,2*(n-r),dots,r,dots);
}
}

最佳答案

printf() 是如何工作的?

如果您想完全了解printf()函数的工作原理,请引用:http://www.cplusplus.com/reference/cstdio/printf/

简单来说,"%*.s|%.*s\\%.*s/%.*s|\n" 表示

  1. 动态设置字段宽度并打印所需数量的''
  2. 打印|
  3. 动态设置字段宽度并打印所需数量的':'
  4. 打印\
  5. 动态设置字段宽度并打印所需数量的':'
  6. 打印/
  7. 动态设置字段宽度并打印所需数量的':'
  8. 打印|
  9. 打印换行符 \n 以转到控制台中的下一行。

同样,您可以计算出 "%*.s|%.*s/%.*s\\%.*s|\n" 将打印什么内容。

代码转换

假设您非常熟悉 C++。如果您使用 string 类,则更好,因为您可以轻松使用 substr() 成员函数来提取所需的 dots 子字符串进行打印。您可以从here了解setw()的工作原理。转换后的代码如下。

#include <iostream> // Input.Output
#include <string> // string class
#include <iomanip> // setw() function
int main(){
const int n=3,z=6;
std::string _dots(2*n+1,':');
for(int r = 0; r < n+1; r++){
std::cout<<std::setw(z-n)<<""<<"|"<<_dots.substr(0,r)<<"\\"<<_dots.substr(0,2*(n-r))<<"/"<<_dots.substr(0,r)<<"|"<<std::endl;
}
for(int r = n; r >= 0; r--){
std::cout<<std::setw(z-n)<<""<<"|"<<_dots.substr(0,r)<<"/"<<_dots.substr(0,2*(n-r))<<"\\"<<_dots.substr(0,r)<<"|"<<std::endl;
}
return 0;
}
<小时/>

输出

   |\::::::/|
|:\::::/:|
|::\::/::|
|:::\/:::|
|:::/\:::|
|::/::\::|
|:/::::\:|
|/::::::\|

关于c++ - 转换 printf(); cout<<""的语句;陈述。 C&C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59906620/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com