C语言图形输出问题

smartdrvsky 2006-03-28 06:31:05
由于我C没学好,尤其是for循环一节,现有老师布置了一习题,用C编出一程序,实现如下功能
若输入0,则显示* * * *
* *
* *
* *
* * * *

若输入1,则显示*
*
*
*
*

若输入2,则显示* * * *
*
* * * *
*
* * * *

若输入3,则显示* * * *
*
* * * *
*
* * * *
……
直到输入10显示相应的图形。
我的问题是,用for语句循环,有点麻烦,当然若有同志用for语句实现,我也会很感激,
最简单的是直接用图形表示,printf输出,但我不想这样,请高手指点一下,我只有30分了,这次只能送出这么多分了,再次谢谢你们。
(限C语言)

...全文
858 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kvci 2006-03-31
  • 打赏
  • 举报
回复
大老
麻烦你看看这个拉

/*TC2.0编译通过,要有图形驱动文件*/
smartdrvsky 2006-03-31
  • 打赏
  • 举报
回复

TO Kvci(*_* 坚决支持fiftymetre申请C++版版主)
你的代码的错误报告是:
c:\documents and settings\user\my documents\my music\text1.c(1) : fatal error C1083: Cannot open include file: 'graphics.h': No such file or directory

TO 新来的菜鸟:
你的哪行代码在VC下可以通过呀,麻烦放上来。

再次热烈感谢你们的回贴
「已注销」 2006-03-31
  • 打赏
  • 举报
回复
我是在vc6.0下编译通过的,可以运行.但是就是不知道错误处理怎么会出错.请高手指点
smartdrvsky 2006-03-31
  • 打赏
  • 举报
回复


TO Kvci(*_* 坚决支持fiftymetre申请C++版版主) :
/*TC2.0编译通过,要有图形驱动文件*/

怎样才能在VC下运行呢?

谢谢你的再次解答。
lander9999 2006-03-31
  • 打赏
  • 举报
回复
干脆读hzk16,再输出字吧,省得还要自已设计字形
X_sky 2006-03-31
  • 打赏
  • 举报
回复
Kvci(*_* 坚决支持fiftymetre申请C++版版主)
代码已经测试,如果强人,不知道徐不符合楼主要求
xiongmao007 2006-03-30
  • 打赏
  • 举报
回复
老大,用循环没有意义,

用循环做这类题大多是做几何图形。用if判断
Kvci 2006-03-30
  • 打赏
  • 举报
回复
/*TC2.0编译通过,要有图形驱动文件*/
#include<graphics.h>
#include<conio.h>
void main()
{
int a=8,b=8,i,j,driver=DETECT,mode;
char c[2]=" ";
c[1]='\0';
initgraph(&driver,&mode,""); /*图形初始化,程序所在当前目录下要有图形驱动*/
setcolor(4); /*设置颜色*/
while(c[0]!='q') /*按Q退出*/
{
outtextxy(20,0,"Input a char:( q to quit!) "); /*提示输入*/
c[0]=getch(); /*获取按键*/
cleardevice(); /* 清屏*/
outtextxy(0,0,c); /*输出字符*/
for(i=0;i<16;i++) /*放大字符*/
for(j=0;j<16;j++)
{
if(getpixel(i,j)!=0)outtextxy(250+i*a,150+b*(j+2),"*");
else outtextxy(250+i*a,150+b*(j+2)," ");
}
}
closegraph();
}
smartdrvsky 2006-03-30
  • 打赏
  • 举报
回复
另外上机看了一下,5错误,22警告。
smartdrvsky 2006-03-30
  • 打赏
  • 举报
回复
新来的菜鸟,你好,谢谢你的认真解答,由于我没有学过C++,但你的大体思想我看懂了,你是利用数组显示,然后循环输出,但是我没有C++知识,不知道怎样完尚(我认为用C语言里的prtintf实现又没有技术含量)
对不起,我不能改善你的程序,谢谢你的热情回复,谢谢。
HappyinKr 2006-03-30
  • 打赏
  • 举报
回复
楼上的好有耐心,这是程序员必备的,赞一个!
「已注销」 2006-03-30
  • 打赏
  • 举报
回复
小弟用c++编了一个,可是也要用到cout
另外这个程序的报错功能不行,比如说输入a,按我的理解应该是把a的ASC码赋给x,但是在程序中好象是把0赋给了x,请哪位大哥帮助一下
#include<iostream.h>
void main()
{
int x,i,j;
char number0[][4]={{'*','*','*','*'},{'*',' ',' ','*'},{'*',' ',' ','*'},{'*',' ',' ','*'},{'*','*','*','*'}};
char number1[][4]={{' ',' ',' ','*'},{' ',' ',' ','*'},{' ',' ',' ','*'},{' ',' ',' ','*'},{' ',' ',' ','*'}};
char number2[][4]={{'*','*','*','*'},{' ',' ',' ','*'},{'*','*','*','*'},{'*',' ',' ',' '},{'*','*','*','*'}};
char number3[][4]={{'*','*','*','*'},{' ',' ',' ','*'},{'*','*','*','*'},{' ',' ',' ','*'},{'*','*','*','*'}};
char number4[][4]={{'*',' ','*',' '},{'*',' ','*',' '},{'*','*','*','*'},{' ',' ','*',' '},{' ',' ','*',' '}};
char number5[][4]={{'*','*','*','*'},{'*',' ',' ',' '},{'*','*','*','*'},{' ',' ',' ','*'},{'*','*','*','*'}};
char number6[][4]={{'*','*','*','*'},{'*',' ',' ',' '},{'*','*','*','*'},{'*',' ',' ','*'},{'*','*','*','*'}};
char number7[][4]={{'*','*','*','*'},{' ',' ',' ','*'},{' ',' ',' ','*'},{' ',' ',' ','*'},{' ',' ',' ','*'}};
char number8[][4]={{'*','*','*','*'},{'*',' ',' ','*'},{'*','*','*','*'},{'*',' ',' ','*'},{'*','*','*','*'}};
char number9[][4]={{'*','*','*','*'},{'*',' ',' ','*'},{'*','*','*','*'},{' ',' ',' ','*'},{'*','*','*','*'}};
cout<<"please enter a number:"<<endl;
cin>>x;
cout<<x<<endl;

switch(x)
{
case 0:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number0[i][j];
cout<<endl;
}
}
break;
case 1:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number1[i][j];
cout<<endl;
}
}
break;
case 2:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number2[i][j];
cout<<endl;
}
}
break;
case 3:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number3[i][j];
cout<<endl;
}

}
break;
case 4:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number4[i][j];
cout<<endl;
}
}
break;
case 5:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number5[i][j];
cout<<endl;
}
}
break;
case 6:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number6[i][j];
cout<<endl;
}
}
break;
case 7:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number7[i][j];
cout<<endl;
}
}
break;
case 8:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number8[i][j];
cout<<endl;
}
}
break;
case 9:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number9[i][j];
cout<<endl;
}
}
break;
default:
cout<<"Error!"<<endl;
break;
}
};


「已注销」 2006-03-30
  • 打赏
  • 举报
回复
小弟是初学者,编了一个用cout的程序.可是不能进行报错.比如说输入a的时候显示的是0,并且好象赋值的时候就给x赋的是零.我觉得应该是赋的a的ASC码啊?
除了报错功能之外,这个程序和LZ的要求一样.哪位可以写一个不用cout的,共同学习
#include<iostream.h>
void main()
{
int x,i,j;
char number0[][4]={{'*','*','*','*'},{'*',' ',' ','*'},{'*',' ',' ','*'},{'*',' ',' ','*'},{'*','*','*','*'}};
char number1[][4]={{' ',' ',' ','*'},{' ',' ',' ','*'},{' ',' ',' ','*'},{' ',' ',' ','*'},{' ',' ',' ','*'}};
char number2[][4]={{'*','*','*','*'},{' ',' ',' ','*'},{'*','*','*','*'},{'*',' ',' ',' '},{'*','*','*','*'}};
char number3[][4]={{'*','*','*','*'},{' ',' ',' ','*'},{'*','*','*','*'},{' ',' ',' ','*'},{'*','*','*','*'}};
char number4[][4]={{'*',' ','*',' '},{'*',' ','*',' '},{'*','*','*','*'},{' ',' ','*',' '},{' ',' ','*',' '}};
char number5[][4]={{'*','*','*','*'},{'*',' ',' ',' '},{'*','*','*','*'},{' ',' ',' ','*'},{'*','*','*','*'}};
char number6[][4]={{'*','*','*','*'},{'*',' ',' ',' '},{'*','*','*','*'},{'*',' ',' ','*'},{'*','*','*','*'}};
char number7[][4]={{'*','*','*','*'},{' ',' ',' ','*'},{' ',' ',' ','*'},{' ',' ',' ','*'},{' ',' ',' ','*'}};
char number8[][4]={{'*','*','*','*'},{'*',' ',' ','*'},{'*','*','*','*'},{'*',' ',' ','*'},{'*','*','*','*'}};
char number9[][4]={{'*','*','*','*'},{'*',' ',' ','*'},{'*','*','*','*'},{' ',' ',' ','*'},{'*','*','*','*'}};
cout<<"please enter a number:"<<endl;
cin>>x;
cout<<x<<endl;
/* if(x!=0&&x!=1&&x!=2&&x!=3&&x!=4&&x!=5&&x!=6&&x!=7&&x!=8&&x!=9)
{
cout<<"Error!"<<endl;
goto error;

}*/
switch(x)
{
case 0:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number0[i][j];
cout<<endl;
}
}
break;
case 1:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number1[i][j];
cout<<endl;
}
}
break;
case 2:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number2[i][j];
cout<<endl;
}
}
break;
case 3:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number3[i][j];
cout<<endl;
}

}
break;
case 4:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number4[i][j];
cout<<endl;
}
}
break;
case 5:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number5[i][j];
cout<<endl;
}
}
break;
case 6:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number6[i][j];
cout<<endl;
}
}
break;
case 7:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number7[i][j];
cout<<endl;
}
}
break;
case 8:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number8[i][j];
cout<<endl;
}
}
break;
case 9:
{
for(i=0;i<5;i++)
{
for(j=0;j<4;j++)
cout<<number9[i][j];
cout<<endl;
}
}
break;
default:
cout<<"Error!"<<endl;
break;
}
//error:cout<<"Error!"<<endl;
};
Kvci 2006-03-30
  • 打赏
  • 举报
回复
在图形模式下输出一个2
再扫描那个2,逐个象素扫描
如果不是空白就输出一个*
是空白就输出一个空格
beginnow 2006-03-30
  • 打赏
  • 举报
回复
有简单的,得到每个数字的象素矩阵,在进行输出
smartdrvsky 2006-03-29
  • 打赏
  • 举报
回复
楼上的,你回答欠妥哦
X_sky 2006-03-29
  • 打赏
  • 举报
回复
显然这个问题只能用printf()按照格式老老实实打印了,基本上没有什么好方法,或者我是不知道,
smartdrvsky 2006-03-29
  • 打赏
  • 举报
回复
怎么还是木有人回呢,要是没看懂我可以再写一次呐,可惜系统只能让我连续回三次贴呀,你们来个人帮我顶一下,我再把题目再写一次吧,谢谢了。
smartdrvsky 2006-03-28
  • 打赏
  • 举报
回复
我只有30分了,下次多给分,你们来看题还不行吗?
smartdrvsky 2006-03-28
  • 打赏
  • 举报
回复
我也和你一起期待!
加载更多回复(4)

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧