当前位置: 代码迷 >> C语言 >> [讨论]这个要怎么用一个FOR代替
  详细解决方案

[讨论]这个要怎么用一个FOR代替

热度:155   发布时间:2007-03-22 18:28:15.0
[讨论]这个要怎么用一个FOR代替

只用一个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  

----------------解决方案--------------------------------------------------------
用数组来实现
----------------解决方案--------------------------------------------------------
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);
}


----------------解决方案--------------------------------------------------------
  相关解决方案