A. C或C++語言列印一個空心的菱形
c語言編寫,兩種思路:
方法一:循環輸出n行,每行分5個部分。
分別是:左邊的空格,字元1,中間的空格,字元2,右邊的空格。
循環控制空格輸出個數,實現列印效果。
方法二:根據行數,定義一個字元串表示一行最大寬度(動態申請)。
定義2指針,初始指向字元串中間位置。
循環,兩指針先往兩邊移動,到頭就往回移動。
每次循環,指針指向的位置為符號,其餘都是空格。並列印輸出字元串。
下面是代碼(兩方法對應兩函數):
#include <stdio.h>
#include <string.h>//該頭文件只用於方法2
#include <malloc.h>//該頭文件只用於方法2
#define CR '*'//用於填充的字元
int show1(int row);//方法1
int show2(int row);//正常列印菱形,異常返回-1
int main()
{
int row;
printf("請輸入行數(奇數):"),scanf("%d",&row);
printf("方法一:通過字元遍歷列印圖形 ");
show1(row);
printf(" 方法二:通過指針移動列印圖形 ");
show2(row);
return 1;
}
int show1(int row)//方法1
{
int i,j,len,lk=0,mk=0,rk=0,flag=1;//lk,mk,rk每行左邊中間右邊的空格數量
if(row%2==0)
{
printf("錯誤!行數必須為奇數!");
return -1;
}
len=1+(row/2)*2;
lk=rk=len/2,mk=0;
for(i=0;i<row;i++)//每行依次列印左邊空格,符號,中間空格,符號,右邊空格
{
for(j=0;j<lk;printf("%c",' '),j++);
printf("%c",CR);
for(j=0;j<mk;printf("%c",' '),j++);
if(mk>0)printf("%c",CR);
for(j=0;j<rk;printf("%c",' '),j++);
printf(" ");
if(lk==0)flag=0;
if(flag)
{
lk--,rk--;
if(mk>=1)mk+=2;
else mk++;
}
if(!flag)
{
lk++,rk++;
if(mk>2)mk-=2;
else mk--;
}
}
return 1;
}
int show2(int row)//方法2
{
int len,flag=1;//標識,flag=1兩指針往兩邊移動。flag=0向中間匯合
char *rStr=NULL,*p1=NULL,*p2=NULL;
if(row%2==0)
{
printf("錯誤!行數必須為奇數!");
return -1;
}
len=1+(row/2)*2;
rStr=(char *)malloc(sizeof(char)*(len+1));//根據行數申請最大行字元串地址
if(!rStr)return -1;
p1=p2=&rStr[len/2];
while(p1<=p2)
{
memset(rStr,' ',len);//填充空格
rStr[len]=0;
*p1=*p2=CR;
printf("%s ",rStr);
if(p1==rStr) flag=0;//指針移動到兩頭,反向移動
if(flag)p1--,p2++;
if(!flag)p1++,p2--;
}
free(rStr);
return 1;
}
B. 如何用C語言列印空心菱形(要求for循環)
題目錯了吧,如果你輸入偶數就不會有◇啊,只有這個題目
由鍵盤輸入正數n,要求輸出2*n+1行的菱形圖案,要求菱形左邊緊靠屏幕左邊
#include "stdio.h"
main()
{ int i,j;
int n;
scanf("%d",&n);
for(i=0;i<=n+1;i++)
{ for(j=n-i;j>=0;j--)
printf(" ");
for(j=0;j<i;j++)
printf("* ");
printf("\n"); }
for(i=0;i<n;i++)
{ for(j=0;j<i+1;j++)
printf(" ");
for(j=n-i;j>0;j--)
printf("* ");
printf("\n"); }
getch();
}
C. 怎麼用C語言列印一個空心的菱形
先拿一張格子紙,把你的空心棱形畫在紙上,畫到滿意為止,然後以左上角為零點,輸入電腦,有圖形的畫圖形,沒有圖形的畫空字元,然後輸出就行了……
D. 如何用C語言列印空心菱形(要求for循環)
題目錯了吧,如果你輸入偶數就不會有◇啊,只有這個題目x0dx0a由鍵盤輸入正數n,要求輸出2*n+1行的菱形圖案,要求菱形左邊緊靠屏幕左邊x0dx0a#include "stdio.h"x0dx0amain()x0dx0a{ int i,j; x0dx0aint n;x0dx0a x0dx0ascanf("%d",&n); x0dx0a for(i=0;i<=n+1;i++) x0dx0a { for(j=n-i;j>=0;j--) x0dx0a printf(" "); x0dx0a for(j=0;j0;j--) x0dx0a printf("* "); x0dx0a printf("\n"); }x0dx0a getch();x0dx0a}
E. 如何用C語言列印菱形
#include
void
main()
{
int
n,m,i,j,s1,s2,s3,s4;
printf("請輸入外菱形與內菱形高度\n");
printf("n=");
scanf("%d",&n);
printf("m=");
scanf("%d",&m);
if(((n%2==0||m%2==0)&&n!=0&&m!=0)||m>=n||n<=0||m<0)
return;
if(n!=0&&m==0)
{m=n/2+1;
for(i=1;i<=m;i++)
{
for(j=1;j<=m-i;j++)
printf("
");
for(j=1;j<=2*i-1;j++)
printf("*");
printf("\n");
}
m--;
for(i=1;i<=m;i++)
{
for(j=1;j<=i;j++)
printf("
");
for(j=1;j<=2*(m-i)+1;j++)
printf("*");
printf("\n");
}
}
else
{s1=(n-m)/2;
s2=(m+1)/2;
s3=(m-1)/2;
for(i=1;i<=s1;i++)
{
for(j=1;j<=(n+1)/2-i;j++)
printf("
");
for(j=1;j<=i*2-1;j++)
printf("*");
printf("\n");
}
for(i=1;i<=s2;i++)
{
for(j=1;j<=s2-i;j++)
printf("
");
for(j=1;j<=s1;j++)
printf("*");
for(j=1;j<=i*2-1;j++)
printf("
");
for(j=1;j<=s1;j++)
printf("*");
printf("\n");
}
for(i=1;i<=s3;i++)
{
for(j=1;j<=i;j++)
printf("
");
for(j=1;j<=s1;j++)
printf("*");
for(j=1;j<=(s3-i)*2+1;j++)
printf("
");
for(j=1;j<=s1;j++)
printf("*");
printf("\n");
}
for(i=1;i<=s1;i++)
{
for(j=1;j<=n/2-s1+i;j++)
printf("
");
for(j=1;j<=(s1-i)*2+1;j++)
printf("*");
printf("\n");
}
}
getch();
}
F. C語言編程:列印空心數字菱形,求救啊,搞了半天還是搞不出來
#include<stdio.h>
int main()
{
int i,j,k,line,m;
printf("請輸入一個數字:");
scanf("%d",&line);
m=(line+1)/2;
for(i=1;i<=m;i++)
{
for(k=0;k<m-i;k++)
{
printf(" ");
}
printf("%d",i);
if(i==1){printf("\n");continue;}
for(j=0;j<2*i-3;j++)
{
printf(" ");
}
printf("%d",i);
printf("\n");
}
for(i=m-1;i>0;i--)
{
for(k=0;k<m-i;k++)
{
printf(" ");
}
printf("%d",i);
if(i==1){printf("\n");continue;}
for(j=0;j<2*i-3;j++)
{
printf(" ");
}
printf("%d",i);
printf("\n");
}
return 0;
}
僅供參考
G. c語言輸出空心菱形
1、首先,輸入預處理指令#include <stdio.h>與函數原型void print(int n)。其中,n表示行數。
H. 怎麼用C語言列印一個空心的菱形
#include <stdio.h>
int main()
{
int i,j,n;
printf("請輸入你想要的菱形的邊長(小於等於40):");
scanf("%d",&n);
if(n>40)
printf("菱形太大,控制台輸出為畸形,為保證美觀,不予輸出。謝謝合作。^_^ \n");
else
for(i=1-n;i<=n-1;i++)
for(j=1-n;j<=n;j++)//建立直角坐標系
{
putchar(' ');
if(j==n)
putchar('\n');
if(abs(i)+abs(j)==n-1)
putchar('*');
}
}
I. 如何實現C語言編程輸出空心菱形
#include<stdio.h>
/*
其實列印三角形啦,菱形啦,思路都是一樣一樣的,
都是按行找規律,然後按照每行的規律按行列印就好了。。。
比如以下是每條邊有n=4個*的菱形(邊長是4)。
c語言都是按行輸出的,我們只要分析第i行要輸出些什麼就好了:
0123456
0*
1**
2**
3**
4**
5**
6*
從上圖可以看出來,
第0行要輸出3個空格,1個*
第1行要輸出2個空格,1個*,1個空格,1個*
第2行要輸出1個空格,1個*,3個空格,1個*
第3行要輸出0個空格,1個*,5個空格,1個*
第4行要輸出1個空格,1個*,3個空格,1個*
第5行要輸出2個空格,1個*,1個空格,1個*
第6行要輸出3個空格,1個*
再看上面得出的規律,除了第0行和第6行,其他的都是同一個模式:
對於第i行,列印k1個空格,1個*,k2個空格,1個*。
而且從第4行開始就跟上面對稱了,我們完全可以只分析0~3行:
在第i=[0,3]行內:
對於第i行,列印k1=n-i-1個空格,1個*,k2=2*i-1個空格,1個*。
例外:第0行得到的k2=-1小於0,此時不列印空格也不列印第二個*。
然後我們就可以弄一個小函數啦:
*/
voidprintline(inti,intn){
intk1=n-1-i;
intk2=2*i-1;
intj;
//列印k1個空格
for(j=0;j<k1;j++)
printf("");
//列印一個*
printf("*");
//如果k2小於0就不用列印空格和後面的*啦
if(k2>0){
//列印k2個空格
for(j=0;j<k2;j++)
printf("");
printf("*");
}
printf(" ");
}
intmain()
{
constintn=4;
inti;
//先列印0~n-1
for(i=0;i<n;i++)
printline(i,n);
//然後列印n-2~0
for(i=n-2;i>=0;i--)
printline(i,n);
return0;
}