pascal用for迴圈結構語句程式設計並輸出下圖: 1 333 55555 7777777
1樓:網友
思路:利用二重迴圈。
儘管通過一些附加的判斷,也能完成本題,但似乎數學的意味少了。
對於本題來說,巧妙利用pascal中的數學函式,可以優化一下**,就是下面的版本。
min(x,y)表示x,y中較小的那個數;
有7行,最外層就用 i 從1 迴圈到 7 ;
每行都是輸出奇數,1~4行還好判斷,輸出(2i-1)個(2i-1)就行了;
5~7行稍微麻煩點,通過分析,需要輸出 2*min(i,8-i)-1 個 2*min(i,8-i)-1 ,代進去看看:
第6行,i=6,min(i,8-i)的結果是2,因此2*min(i,8-i)-1 的結果是3,即輸出3個3,正好符合(這個部分我想了很久)。
至於每行開頭空格的個數,其實用乙個 abs(4-i) 就可以了。(絕對值函式)
優化版:uses math; //呼叫數學庫;
var i,j:integer;
beginfor i:=1 to 7 do
beginfor j:=1 to abs(4-i) do write(' '); //輸出空格;
for j:=1 to 2*min(i,8-i)-1 do
write(2*min(i,8-i)-1);
writeln;
end;end.輸出:
2樓:網友
1、這種問題弱到爆。能用就結貼,人的基本素質。
2、另外那位搞「優化」的哥們,提點小小建議:您的**只是長度短了一點點,效率沒有提高,反而下降。您知道abs和min函式編譯後多長麼?
照這個道理我直接用write輸出字元豈不是更短,一行**就行了。此外如果針對7這個數本身的特性來寫程式,是不是太那個了,如果我最大輸出的是9呢?或者是字元'q'呢?
program rhombus;
constmax = 7;
vari, j, step: integer;
begini := 1;
step := 2;
while i > 0 do
beginfor j := 1 to (max - i) div 2 do write(#
for j := 1 to i do write(i);
writeln;
if i >= max then step := -step;
inc(i, step);
end;readln;
end.
3樓:網友
哈哈,上學時常弄這個。
program xx;
varm, n: integer;
beginfor m := 1 to 7 do
beginif m mod 2 <>0 then for n := 1 to m do write(n);
writeln;
end;for m := 5 downto 1 dobegin
if m mod 2 <>0 then for n := 1 to m do write(n);
writeln;
end;end.
現編的,沒除錯,自己試試吧(我這知道你的題意是否是分行?我加了writeln。如果不是分行就去掉它)
c語言 輸出如下圖形 1 333 55555 7777777 999999999?
4樓:網友
下面就是該題輸出三角形金字塔**:
# include
int main()
return 0;}
c語言程式設計程式輸出1 22 333 4444
5樓:
#include
void shuchu(int n)
int main()
其實吧,寫法和上面的一樣。
上下三角矩陣是什麼,矩陣中,上,下三角陣有什麼條件?
其實上下三角是針對行列式說的,一般不說矩陣是上三角或是下三角的。上三角是指對角線一下的元素都是0的行列式,下三角是指對角線以上的元素都是0的行列式 矩陣中,上,下三角陣有什麼條件?三角形矩陣沒有這樣複雜的要求 如果是上三角形矩陣 就要求對角線上方有非零元素 而下方元素都是零 同理下三角形矩陣就是 下...
c語言 編寫三角形面積計算,C語言 編寫三角形面積計算
include include double sin double x define pi 3.14159265int main 要不然自己實現sin函式,否則引進math標頭檔案還有scanf 仔細看看,我怎麼寫的 sin函式是數學公式,他的標頭檔案你沒有寫 加上 include 即可 把doub...
C語言 用陣列列印揚輝三角形
a 就是告訴你只能存個資料,也就是說你最多輸出行,再多就不行了!include void main int a i,j,n scanf d n printf a for i i n i n用來控制要輸出的楊輝三角的行數。for j j i j 第i行前面的空格個數為 i printf for j j...