数组练习 初学c请指教

deary008 2004-04-23 10:38:06

(海龟作图)设想有一机械海龟,它在50*50的方阵上四处爬行(初始化

为空格)。海龟拿了一只笔,这支笔或者朝上,或者朝下。当笔朝下时,海龟用

笔画下自己的移动轨迹(方阵对应元素置为’*’);当笔朝上时,海龟在移动过程

中什么也不画。试用如下一组命令模拟海龟作图。
命令 含义
1 笔朝上
2 笔朝下
3 右转弯
4 左转弯
5,10 向前走10格(或其它格数)(5表示向前走命令,10为格数)
6 打印50*50的方阵(初始化为空格)
9 数据结束(标记)

输入、输出要求:
输入: 海龟的起始位置
命令序列
输出: 50*50的方阵值

举例:输入:10,10
2
5,8
3
5,8
3
5,8
3
5,8
1
6
9
输出:在50*50的方阵上画出一个正方形,它以(10,10)为左上角,以(18,18)为右下

角。图为:
********
********
********
********
********
********
********
********
...全文
28 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zklovezah5201314 2004-04-24
  • 打赏
  • 举报
回复
学习程序设计是不是要有相当好的数学基础呀。
jiangjunyang 2004-04-24
  • 打赏
  • 举报
回复
崇拜的偶像  偶像的崇拜
ToIP 2004-04-24
  • 打赏
  • 举报
回复
题目很easy啊

to:liushuaiboy

搞程序设计的确不需要数学,但是如果做计算机科学方面,数学很重要

我们学校理学院有个研究生,强的一腿,因为它数学好(女的)

liushuaiboy 2004-04-24
  • 打赏
  • 举报
回复
个人认为:两码事
chengxinwen 2004-04-23
  • 打赏
  • 举报
回复
有趣!有时间做做。
欢迎给我类似的题目!
QQ:112924481
邮箱:chengxinwen.student@sina.com.cn
Garriot 2004-04-23
  • 打赏
  • 举报
回复
呵呵 《CHTP》的练习题。还是自己做做吧,不是很难的
yiminggw 2004-04-23
  • 打赏
  • 举报
回复
c++大学教程上的吧:)
其实就是一二维数组,可以用switch语句实现,可以先用0,1作标记,等到输出时再转换为*、


命令 含义
1 笔朝上 //行减一,同时判断是否越界
2 笔朝下//行加一,同时判断是否越界
3 右转弯//行加一,并转到上一行的某个位置
4 左转弯//。。
5,10 向前走10格(或其它格数)(5表示向前走命令,10为格数)
6 打印50*50的方阵(初始化为空格)
9 数据结束(标记)

liushuaiboy 2004-04-23
  • 打赏
  • 举报
回复
用while和switch可以解决吧??有意思的题目,有时间做一下。
zklovezah5201314 2004-04-23
  • 打赏
  • 举报
回复
学习程序设计是不是要有相当要的数据基础呀?
enchanter1982 2004-04-23
  • 打赏
  • 举报
回复
这是我的代码,可以用吧!
#include<iostream>
#include<fstream>
#include<string>
using namespace std;
void drawpoint(char result[50][50],int drection,int pen,int waylong,int &x,int &y)
{
int i;
switch(drection)
{
case 1:
for(i=0;i<waylong;++i)
{
if(pen == 1)
{
++y;
result[x][y] = '*';
}
}
break;
case 2:
for(i=0;i<waylong;++i)
{
if(pen ==1)
{
++x;
result[x][y] = '*';
}
}
break;
case 3:
for(i=0;i<waylong;++i)
{
if(pen == 1)
{
--y;
result[x][y] = '*';
}
}
break;
case 4:
for(i=0;i<waylong;++i)
{
if(pen == 1)
{
++x;
result[x][y] = '*';
}
}
break;
default:
cout<<"Error drection\n";
break;
};
}
void print(char result[50][50])
{
for(int i=0;i<50;++i)
{
for(int j=0;j<50;++j)
{
cout<<result[i][j];
}
cout<<"\n";
}
}
int stringToint(string temp)
{
int t=0;
for(int i = 0;i<temp.size();++i)
{
t*=10;
t+=temp[i]-'0';
}
return t;
}
void draw(char result[50][50],int &drection,int &pen,string &info,int &x,int &y)
{
string temp;
int waylong;
switch(info[0])
{
case '1':
pen =0;
break;
case '2':
pen =1;
break;
case '3':
drection++;
if(drection>4)
{
drection = 1;
}
break;
case '4':
drection--;
if(drection<1)
{
drection = 4;
}
break;
case '5':
temp = info.substr(2,info.size()-1);
waylong = stringToint(temp);
drawpoint(result,drection,pen,waylong,x,y);
break;
case '6':
print(result);
break;
case '9':
break;
default:
cout<<"error info"<<"\n";
break;
};
}
void main()
{
//
string info;
char result[50][50];
int x,y,drection =1,pen=1;
scanf("%d,%d",&x,&y);
for(int i=0;i<50;++i)
for(int j=0;j<50;++j)
{
result[i][j]=' ';
}
do
{
cin>>info;
draw(result,drection,pen,info,x,y);
}
while(info != "9");
}

70,037

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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