c语言 等级图片

kngxscn 2012-07-12 11:19:56
http://img.my.csdn.net/uploads/201207/12/1342062419_6287.jpg
问题如图,小弟一点思路也没有,望各位大哥不吝赐教!谢谢各位了
...全文
130 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
kngxscn 2012-07-16
  • 打赏
  • 举报
回复
//等级图片
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
char str1[100][100]= {"\0"}, str2[100][100]= {"\0"};
int i = 0, j = 0, k = 1, p = 0, q = 0, r = 0, s = 0, n, m, N = 0;

for(i=0; i<=98; i++)//全变为空格
for(j=0; j<=98; j++)
{
str2[i][j] = ' ';
}

printf("Please input the size and the grade:");
scanf("%d %d", &n, &m);
printf("The character image of the initial is:\n");
fflush(stdin);
for(i=0; i<=n-1; i++)//获取初始图片
gets(str1[i]);

N = n;
for(k = 2; k<=m; k++)
{
for(i=0; i<=N-1; i++)
{
for(j=0; j<=N-1; j++)
{
if(str1[i][j] != ' ')//有非空格字符
{
r = 0;
for(p =i*n; p<=i*n+n-1; p++)
{
s = 0;
for(q=j*n; q<=j*n+n-1; q++)
{
str2[p][q] = str1[r][s];
s++;
}
r++;
}
}
else if(str1[i][j] == '\0')
break;
}
}
N = N * n;
for(i=0; i<=N-1; i++)
strcpy(str1[i], str2[i]);
}

printf("The result is:\n");
for(i=0; i<=N-1; i++)
{
for(j=0; j<=N-1; j++)
{
printf("%c", str1[i][j]);
}
printf("\n");
}
return 0;
}
kngxscn 2012-07-16
  • 打赏
  • 举报
回复
9楼老师,谢谢赐教,递归是我的弱项,补补。。。我是这么做的,但是输入的时候必须得用空格补成一个正方形。。。再就是已经结帖了,就没分了,抱歉

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

int main()
{
char str1[100][100]= {"\0"}, str2[100][100]= {"\0"};
int i = 0, j = 0, k = 1, p = 0, q = 0, r = 0, s = 0, n, m, N = 0;

for(i=0; i<=98; i++)//全变为空格
for(j=0; j<=98; j++)
{
str2[i][j] = ' ';
}

printf("Please input the size and the grade:");
scanf("%d %d", &n, &m);
printf("The character image of the initial is:\n");
fflush(stdin);
for(i=0; i<=n-1; i++)//获取初始图片
gets(str1[i]);

N = n;
for(k = 2; k<=m; k++)
{
for(i=0; i<=N-1; i++)
{
for(j=0; j<=N-1; j++)
{
if(str1[i][j] != ' ')//有非空格字符
{
r = 0;
for(p =i*n; p<=i*n+n-1; p++)
{
s = 0;
for(q=j*n; q<=j*n+n-1; q++)
{
str2[p][q] = str1[r][s];
s++;
}
r++;
}
}
else if(str1[i][j] == '\0')
break;
}
}
N = N * n;
for(i=0; i<=N-1; i++)
strcpy(str1[i], str2[i]);
}

printf("The result is:\n");
for(i=0; i<=N-1; i++)
{
for(j=0; j<=N-1; j++)
{
printf("%c", str1[i][j]);
}
printf("\n");
}
return 0;
}
赵4老师 2012-07-16
  • 打赏
  • 举报
回复
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出
//输入1
//输出
//* *
// *
//* *
//输入2
//输出
//* * * *
// * *
//* * * *
// * *
// *
// * *
//* * * *
// * *
//* * * *
//输入3
//输出
//* * * * * * * *
// * * * *
//* * * * * * * *
// * * * *
// * *
// * * * *
//* * * * * * * *
// * * * *
//* * * * * * * *
// * * * *
// * *
// * * * *
// * *
// *
// * *
// * * * *
// * *
// * * * *
//* * * * * * * *
// * * * *
//* * * * * * * *
// * * * *
// * *
// * * * *
//* * * * * * * *
// * * * *
//* * * * * * * *
//最大输入8
#include <stdio.h>
char m[6561][6561];//==3^8
void fractalx(int cy,int cx,int L) {
int N,i;

if (1==L) {
m[cy ][cx ]='*';
m[cy-1][cx-1]='*';
m[cy-1][cx+1]='*';
m[cy+1][cx+1]='*';
m[cy+1][cx-1]='*';
} else {
N=1;for (i=0;i<L-1;i++) N=N*3;
fractalx(cy ,cx ,L-1);
fractalx(cy-N,cx-N,L-1);
fractalx(cy-N,cx+N,L-1);
fractalx(cy+N,cx+N,L-1);
fractalx(cy+N,cx-N,L-1);
}
}
int main() {
int L,N,i,y,x;

while (1) {
while (1) {
printf("\nInput 1..8,0 for Exit:");
fflush(stdout);
if (1==scanf("%d",&L)) {
if (0<=L && L<=8) break;
} else rewind(stdin);
}
if (0==L) break;
N=1;for (i=0;i<L;i++) N=N*3;
for (y=3280-(N-1)/2;y<=3280+(N-1)/2;y++) {
for (x=3280-(N-1)/2;x<=3280+(N-1)/2;x++) {
m[y][x]=' ';
}
}
fractalx(3280,3280,L);
for (y=3280-(N-1)/2;y<=3280+(N-1)/2;y++) {
for (x=3280-(N-1)/2;x<=3280+(N-1)/2;x++) {
printf("%c",m[y][x]);
}
printf("\n");
}
}
return 0;
}

project2502 2012-07-12
  • 打赏
  • 举报
回复
一直想说耗费脑细胞考虑这个有意义么…
微型蚂蚁 2012-07-12
  • 打赏
  • 举报
回复
这个好像叫分形
你可以定义一个规则就是一个点可以变成第一幅图的样子,然后就可以根据级数生成最终的图
kngxscn 2012-07-12
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]
这个好像叫分形
你可以定义一个规则就是一个点可以变成第一幅图的样子,然后就可以根据级数生成最终的图
[/Quote]
刚开始我也这么想,但不知道如何实现啊,这一题在我们书上属于“字符串”一部分,而且我们没学什么复杂的算法啊
kngxscn 2012-07-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
一直想说耗费脑细胞考虑这个有意义么…
[/Quote]
锻炼一下思维呗,而且这是我们《c语言实验指导》上的题,我还有这一题就做完了。。。
kngxscn 2012-07-12
  • 打赏
  • 举报
回复
4楼大哥,那个图怎么搞出来的???
赵4老师 2012-07-12
  • 打赏
  • 举报
回复
百度图片搜索:
分形
Fractal
shen_wei 2012-07-12
  • 打赏
  • 举报
回复


[img = 图片地址][/img]
这样更方便大家看。。。

69,369

社区成员

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

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