只用一个FOR循环打印*号
#include <stdio.h>
void main(){
int hang,geshu,i,j;
system("color 0c");
scanf("%d%d",&hang,&geshu);
for(i=1;i<=hang;i++){
for(j=1;j<=geshu;j++){
printf("*");
}
printf("\n");
}
system("pause");
}
----------------解决方案--------------------------------------------------------
用数组来实现
----------------解决方案--------------------------------------------------------
for(i=0;i<geshu;i++)
{
printf("*");
if(i==geshu-1)
{
printf("\n");
i=-1;
j++;
}
if(j==hang)
break;
}
试了下,这样可以,不过感觉太麻烦了
----------------解决方案--------------------------------------------------------
void main(){
int hang,geshu,i,j;
system("color 0c");
scanf("%d%d",&hang,&geshu);
for(i=1;i<=hang*geshu;i++)
{
printf("*");
if(i%geshu==0)printf("\n");
}
system("pause");
}
----------------解决方案--------------------------------------------------------
没那么必要改,时间复杂度还是一样
#include <stdio.h>
void main(){
int hang,geshu,i,j;
scanf("%d%d",&hang,&geshu);
for(i=1,j=1;i<=hang;)
{
if(j<=geshu)
{
printf("*");
j++;
}
else
{
i++;
printf("\n");
j=1;
}
}
}
----------------解决方案--------------------------------------------------------
for(i=1,j=1;i<=hang;)
{
if(j>geshu)
{
printf("\n");
i++;
j=1;
}
printf("*");
j++;
}
和LS的差不多
----------------解决方案--------------------------------------------------------
什么差不多,简直就是一个模子刻出来的,
时间复杂度又没有减小,搞这个没什么用,还不如用两个FOR
----------------解决方案--------------------------------------------------------
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void main(){
int hang,geshu,i;
char *p;
system("color 0c");
scanf("%d%d",&hang,&geshu);
p = (char*)malloc(geshu+2);
memset(p,'*',geshu);
*(p+geshu) = '\0';
for(i=1;i<=hang;i++)
printf("%s\n",p);
system("pause");
free(p);
}
----------------解决方案--------------------------------------------------------