注册 登录
编程论坛 C++教室

谁会给这个程序瘦身!

菜鸟小天 发布于 2008-03-13 21:25, 517 次点击
这是个打任意空心长方形的程序,要求尽量简化,但是不能使用超出下边语句范围的语句,不能goto,只能whil/if
#include<stdio.h>
#include<windows.h>
int main()
{
    int x=0,y=0,i=1,j=1,k;
    printf("input chang (-1 to end):");
    scanf("%d",&x);   
    while(x!=-1){
       printf("input kuan :");
       scanf("%d",&y);
       while(i<=x){
             printf("*");
             ++i;}
       printf("\n");
       while(j<=y-2){
          printf("*");
          k=x-2;
          while(k!=0){
                      printf(" ");
                      k--;}
        printf("*");
        k=x-2;
        ++j;
        printf("\n");}
       i=1;j=1;
       while(i<=x){
             printf("*");
             ++i;}
       printf("\n");
       i=1;j=1;
       printf("input chang (-1 to end):");
       scanf("%d",&x);
       }  
    system("pause");
    return 0;}
3 回复
#2
xianshizhe1112008-03-13 23:55
#include "iostream.h"
void main()
{
   int i=0,chang,kuan;
   cout<<"input chang :\n";
   cin>>chang;
   cout<<"input kuan :\n";
   cin>>kuan;
   while(i<kuan)
   {   int j=0;
       while(j<chang)
       {    if((i>0&&i<kuan-1)&&(j>0&&j<chang-1))
                cout<<" ";                  
            else      
                cout<<"*";
            j++;            
        }      
        cout<<endl;
    i++;   
    }           
}

[[it] 本帖最后由 xianshizhe111 于 2008-3-14 00:07 编辑 [/it]]
#3
leeco2008-03-14 12:48
程序代码:

#include <stdio.h>
#include <assert.h>
void print(char c,int x)
{
    if(x>0){
        putchar(c);
        print(c,x-1);
    }
}

void printline(char mid,char side,int x)
{
    print(side,1);
    print(mid,x-2);
    print(side,1);
    print('\n',1);
}   

int main()
{
    int a,b;
    while(scanf("%d%d",&a,&b)!=EOF){
        assert(a>=2 && b>=2);
        printline('*','*',a);
        while(b---2)printline(' ','*',a);
        printline('*','*',a);
    }   
}

#4
leeco2008-03-14 12:50
程序代码:

#include <stdio.h>
#include <assert.h>

void printline(char mid,char side,int x)
{
    putchar(side);
    while(x---2)putchar(mid);
    putchar(side);
    putchar('\n');
}   

int main()
{
    int a,b;
    while(scanf("%d%d",&a,&b)!=EOF){
        assert(a>=2 && b>=2);
        printline('*','*',a);
        while(b---2)printline(' ','*',a);
        printline('*','*',a);
    }   
}

1