输出倒三角图案

时间:2022-06-20 20:29:58
输入一个1-9的数字,如果是偶数,加一。比如输入6(或7)第一行显示7个*,第二行显示5个。。。直到最后一行显示一个。

3 个解决方案

#1


干吗!?

#2


#include<stdio.h> 
void main() 

int n,i,j,k; 
printf("please input the number:"); 
scanf("%d",&n); 
for(i=0;i<=n;i++){ 
for(k=1;k<n;k++) 
printf(" "); 
for(j=1;j<=n-i;j++) 
printf("*"); 
printf("\n"); 

}
你看看这个行不行啊!

#3


c的我做出来了,想做个汇编的,上来问问...多谢了@,@
下面是汇编的:
        DATA  SEGMENT
          A1  DB        0AH,0DH,'$'
          A2  DB        0AH,0DH,'Input the number:','$'
        DATA  ENDS

      STACK1  SEGMENT   PARA STACK
              DW        20H DUP(0)
      STACK1  ENDS

        CODE  SEGMENT
              ASSUME    CS:CODE, DS:DATA, SS:STACK1
      START:  MOV       AX, DATA
              MOV       DS, AX
              LEA       DX,     A2  ;装入有效地址指令将源OP数的有效地址(偏移量)传送到目的地址中。
              MOV       AH,     9   ;显示字符串'Input the number:'
              INT       21H
              MOV       AH, 1       ;显示输入字符
              INT       21H
              SUB       AL,     30H ;由字符变数字
              TEST      AL,     01H ;判断奇偶
              JNE       PASS        ;是奇数转到pass
              INC       AL          ;是偶数则+1
       PASS:  MOV       BL,     AL  ;第一行*数
              MOV       BH,     0   ;

       OUT1:  LEA       DX, A1
              MOV       AH, 9
              INT       21H
              MOV       CL,     BL  ;放个数
              MOV       CH,     0   ;
              MOV       DH,     BH

              CMP       DH,     0
              JE        O2          ;跳转

         O1:  MOV       DL,     ' ' ;输出空格
              MOV       AH,     2
              INT       21H
              DEC       DH          ;减一
              CMP       DH,     0
              JG        O1

         O2:  MOV       DL,     '*' ;输出*
              MOV       AH,     2
              INT       21H
              LOOP      O2          ;空格

              INC       BH          ;行数加一
              DEC       BL          ;*数减二
              DEC       BL
              CMP       BL, 0
              JG        OUT1        ;继续输入下一行

              LEA       DX, A1
              MOV       AH, 9
              INT       21H
              MOV       AX, 4C00H
              INT       21H
        CODE  ENDS
              END       START

#1


干吗!?

#2


#include<stdio.h> 
void main() 

int n,i,j,k; 
printf("please input the number:"); 
scanf("%d",&n); 
for(i=0;i<=n;i++){ 
for(k=1;k<n;k++) 
printf(" "); 
for(j=1;j<=n-i;j++) 
printf("*"); 
printf("\n"); 

}
你看看这个行不行啊!

#3


c的我做出来了,想做个汇编的,上来问问...多谢了@,@
下面是汇编的:
        DATA  SEGMENT
          A1  DB        0AH,0DH,'$'
          A2  DB        0AH,0DH,'Input the number:','$'
        DATA  ENDS

      STACK1  SEGMENT   PARA STACK
              DW        20H DUP(0)
      STACK1  ENDS

        CODE  SEGMENT
              ASSUME    CS:CODE, DS:DATA, SS:STACK1
      START:  MOV       AX, DATA
              MOV       DS, AX
              LEA       DX,     A2  ;装入有效地址指令将源OP数的有效地址(偏移量)传送到目的地址中。
              MOV       AH,     9   ;显示字符串'Input the number:'
              INT       21H
              MOV       AH, 1       ;显示输入字符
              INT       21H
              SUB       AL,     30H ;由字符变数字
              TEST      AL,     01H ;判断奇偶
              JNE       PASS        ;是奇数转到pass
              INC       AL          ;是偶数则+1
       PASS:  MOV       BL,     AL  ;第一行*数
              MOV       BH,     0   ;

       OUT1:  LEA       DX, A1
              MOV       AH, 9
              INT       21H
              MOV       CL,     BL  ;放个数
              MOV       CH,     0   ;
              MOV       DH,     BH

              CMP       DH,     0
              JE        O2          ;跳转

         O1:  MOV       DL,     ' ' ;输出空格
              MOV       AH,     2
              INT       21H
              DEC       DH          ;减一
              CMP       DH,     0
              JG        O1

         O2:  MOV       DL,     '*' ;输出*
              MOV       AH,     2
              INT       21H
              LOOP      O2          ;空格

              INC       BH          ;行数加一
              DEC       BL          ;*数减二
              DEC       BL
              CMP       BL, 0
              JG        OUT1        ;继续输入下一行

              LEA       DX, A1
              MOV       AH, 9
              INT       21H
              MOV       AX, 4C00H
              INT       21H
        CODE  ENDS
              END       START