作者tokyobabylon (paris)
看板C_and_CPP
標題[問題] 打星號畫圖
時間Tue Nov 3 22:51:57 2009
今天遇到一題在螢幕上show星號畫圖的問題
*
**
***
一般是使用兩個迴圈...
for(int i=1; i<n;i++)
fot(int j=1; j<=i;j++)
cout<<"*";
但今天的題目是"限定只能用一個迴圈"
so 單就這題來說是想到
#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
using namespace std;
int main()
{
char a[]="*";
for(i=0;i<3;i++)
{
cout<<a<<endl;
strcat(a,"*");
}
system("pause");
return 0;
}
但有兩個問題
1.一開始宣告我若是宣告string a="*";
在strcat那邊就過不了...
2.如果反過來...
***
**
*
要怎麼做阿?
3.如果不用strcat這種方法
是否有其它較直觀的解法呢?
(當然還是限定one-loop)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.231.49.87
推 JuliusWang:i == n-1時可以改變n的值 讓迴圈可以繼續跑下去 11/03 22:59
→ dendrobium:既然都可以用strcat了 那就自己寫一個func吧(誤XD 11/03 23:04
推 ckck18:for(i) { cout << setfill('*') << setw(i) << '*' ; } 11/03 23:07
→ ckck18:在書上看到的方法。 11/03 23:07
推 VictorTom:printf也可以用動態決定產生填充字元數量的方式, l大好 11/03 23:35
→ VictorTom:像在哪篇推過還是回的文, 一時找不到文章編號XD 11/03 23:35
→ VictorTom:對了, strcat不能這樣用, char a[]="*";相當於a只有兩個 11/03 23:36
→ VictorTom:char的空間(一個放'*'一個放'\0'), strcat後就炸掉了. 11/03 23:37