| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1550 人关注过本帖
标题:这个关于打印图行形的怎么弄
只看楼主 加入收藏
徐达文AA
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-11-19
结帖率:100%
收藏
 问题点数:0 回复次数:16 
这个关于打印图行形的怎么弄
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 打印 
2017-11-19 22:29
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
就是以最外层为基准嘛~

程序代码:
#include<stdio.h>

int min(int x,int y);

int main( void )
{
    unsigned i=0;
    unsigned j=0;
    
    for (i=7;i;--i)
        for (j=7;j!=-1;--j)
            putchar("\nwxyz"[min(min(8-i,i),min(8-j,j))]);
    return 0;
}

int min(int x,int y)
{
    return x<y?x:y;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-20 13:38
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
弄了个加强版的(当然没有检查N的取值范围)~

程序代码:
#include<stdio.h>

#define N 12

int min(int x,int y);

int main( void )
{
    unsigned i=0;
    unsigned j=0;
    
    char* str="abcdefghijklmnopqrstuvwxyz";
    
    for (i=N*2-1;i;--i)
        for (j=N*2-1;j!=-1;--j)
            putchar(j?str[25-N+min(min(N*2-i,i),min(N*2-j,j))]:'\n');
    return 0;
}

int min(int x,int y)
{
    return x<y?x:y;
}

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-20 13:58
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10539
专家分:42927
注 册:2014-5-20
收藏
得分:0 
绘画正方形
图片附件: 游客没有浏览图片的权限,请 登录注册

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

void set(char *a, int n, int m, char ch)
{
    int i, k=n-m-1;
    for (i=m; i<n-m; ++i)
    {
        *(a+m*n+i) = ch;
        *(a+k*n+i) = ch;
    }
    for (i=m+1; i<k; ++i)
    {
        *(a+i*n+m) = ch;
        *(a+i*n+k) = ch;
    }
}

void prn(char *a, int n)
{
    int i, j;
    for (i=0; i<n; ++i)
    {
        for (j=0; j<n; ++j)
            //printf("%c", *(a+i*n+j));
            printf("%c ", *(a+i*n+j));
        printf("\n");
    }
}

main()
{
    int i,n;
    scanf("%d",&n);
    char *a = (char *)malloc(n*n*sizeof(char));
    char ch = 'Z';
    for (i=0; i<n/2+1; ++i)
       set(a, n, i, ch--);
    prn(a, n);
    free(a);
}

[此贴子已经被作者于2017-11-20 16:30编辑过]

2017-11-20 15:08
徐达文AA
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-11-19
收藏
得分:0 
回复 4楼 吹水佬
我是初学者,你写的有些我们没交,我根本看不懂
2017-11-20 22:24
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
回复 5楼 徐达文AA
看不懂可以提出来,大家一起看看!  
毕竟论坛上的人越来越少了

早知做人那么辛苦!  当初不应该下凡
2017-11-20 22:58
徐达文AA
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-11-19
收藏
得分:0 
char *a = (char *)malloc(n*n*sizeof(char))
 prn(a, n);
    free(a);
、 *(a+i*n+j));
是什么意思啊
2017-11-20 23:21
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:0 
char *a = (char *)malloc(n*n*sizeof(char))
为指针申请空间   上面相当于  char a[n*n];

prn(a, n);    自定义函数,它的功能是 --->  输出那个正方形。

free(a);  刚刚申请了空间,用完了就释放。

*(a+i*n+j);   这个相当于  a[i*n+j]
printf("%c",*(a+i*n+j)) 和  printf("%c",a[i*n+j]);的效果一样


早知做人那么辛苦!  当初不应该下凡
2017-11-20 23:52
九转星河
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:长长久久
等 级:贵宾
威 望:52
帖 子:5023
专家分:14003
注 册:2016-10-22
收藏
得分:0 
回复 7楼 徐达文AA
i*n+j其实相当于二维数组里面的a[i][j];只不过用动态分配空间没有二维这个概念了——把二维数组一维离散化处理……其实嘛多维数组都可以进行一维离散化处理~到底数组只有数据类型本身(预编译已经处理好了)而没有维这个概念~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
2017-11-21 10:42
徐达文AA
Rank: 1
等 级:新手上路
帖 子:14
专家分:0
注 册:2017-11-19
收藏
得分:0 
回复 8楼 炎天
我们还没有学到指针,就学到了一维数组,怪不得我看不懂,前辈,对学习C语言给点意见吧
2017-11-21 22:30
快速回复:这个关于打印图行形的怎么弄
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017491 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved