PS:竟然一次AC....惊喜...注意每个实例后跟一个空行..

学到一个快速清空数组的用法...memst函数.  memst(void *s,char a,sizeof n)  把 s里面的前n个变成a

顺便在后面贴上一个大神的ac代码

代码:

#include "stdio.h"
void darm(int n,int m);
void spa(int n);
int main(){
 int n,m;
 while(~scanf("%d%d",&n,&m)){
  darm(n,m);
  puts("");
 }
 return 0;
}
void darm(int n,int m){
 int i;
 printf("+");
 for(i=0;i<n;i++) printf("-");
 printf("+\n");
 for(i=0;i<m;i++){
  printf("|");
  spa(n);
  printf("|\n");
 }
 printf("+");
 for(i=0;i<n;i++) printf("-");
 printf("+\n"); 
}
void spa(int n){
 int i;
 for(i=0;i<n;i++)
 printf(" ");
}

大神代码:

# include <stdio.h>
# include <string.h>


# define REP(a,b) for(a = 0 ; a < b ; a++)


char gp[100][100] ;


int main ()
{
    int i, n, m ;
    while (~scanf ("%d%d", &n, &m))
    {
        memset(gp, ' ', sizeof(gp)) ;
        REP(i,m+2) gp[i][0] = gp[i][n+1] = '|', gp[i][n+2] = '\0' ;
        REP(i,n+2) gp[0][i] = gp[m+1][i] = '-' ;
        gp[0][0] = gp[0][n+1] = gp[m+1][0] = gp[m+1][n+1] = '+' ;
        REP(i,m+2) puts (gp[i]) ;
        puts ("") ;
    }
    return 0 ;
}