我自己写的输出九宫格的c源码
znnwe12012/09/17软件综合 IP:湖北
不会表达直接丢代码[s:220]  
很垃圾的算法权当抛砖引玉了。。。。。。。。。。
新建位图图像.gif
#include <stdio.h>
#include <stdlib.h>
////////////////////////////////////////////////////////////////////////////////
int main(int argc, char *argv[])
{
  int x=0; //行
  int y=0; //列
  int q=1; //循环标记
  int sz;
  int shuru; //输入九宫格的行列数必须为>3的奇数
  //判断输入值是否正确
  for(;q;)
  {
     printf("请输入要生成的九宫格的行列数:");
     scanf("%d",&shuru);  
     if(shuru<=3||shuru>=100) printf("输入的行列数过大或过小,请重新输入!\n");
     else if(shuru%2==0) printf("您输入的不是一个奇数,请输入一个奇数!\n");
     else q=0;
  }
  int Gsz[shuru][shuru]; //九宫格布局数组
  for(y=0;y<shuru;y++)
   for(x=0;x<shuru;x++)
    Gsz[y][x]=0;     //九宫格布局数组初始化
///////////////////////////////////////////////////////////////////////////////
x=0;
y=0;
int s=1;  
//第一步
//首先在第一行中间写下1
x=(shuru-1)/2;
Gsz[y][x]=s;
s++;
for(q=1;q==1;)
{
//程序关键转向处
if(y==0&&x==(shuru-1))
  {
    y++;                  
    Gsz[y][x]=s;
    s++;
    y=0;
    x=0;
    Gsz[y][x]=s;
    s++;
    q=0;
  }else
  {                
//然后向下移动到最底下,向右移一格写
y=shuru-1;
x++;
Gsz[y][x]=s;
s++;
//然后一下向右上方写到最边处
for(;x<(shuru-1);)
{                
  y--;          
  x++;
  Gsz[y][x]=s;
  s++;
}
//然后平移到最左边,向上移动一格写
y--;
x=0;
Gsz[y][x]=s;
s++;
//向右上方写。遇到数字后向下写
y--;
x++;
for(;Gsz[y][x]==0;)
{
   Gsz[y][x]=s;
   s++;  
   y--;
   x++;              
}
y++;x--;  //还原循环最后一次的无效数值变化
//向下写一格
y++;
Gsz[y][x]=s;
s++;
//继续向右上写直到最边处
for(;y>0;)
{
  y--;          
  x++;
  Gsz[y][x]=s;
  s++;  
}
}
}      
//第二步
for(;s<(shuru*shuru);)
{
//向下移动到最底下,向右移一格写
y=shuru-1;
x++;
Gsz[y][x]=s;
s++;
  //向右上方写。遇到数字后向下写
y--;
x++;
for(;Gsz[y][x]==0;)
{
   Gsz[y][x]=s;
   s++;  
   y--;
   x++;              
}
y++;x--;  //还原循环最后一次的无效数值变化
//向下写一格
y++;
Gsz[y][x]=s;
s++;
//继续向右上写直到最边处
for(;x<(shuru-1);)
{                
  y--;          
  x++;
  Gsz[y][x]=s;
  s++;
}
//然后平移到最左边,向上移动一格写
y--;
x=0;
Gsz[y][x]=s;
s++;
//继续向右上写直到最边处
for(;y>0;)
{
  y--;          
  x++;
  Gsz[y][x]=s;
  s++;  
}            
}
Gsz[(shuru-1)][(shuru-1)/2]=s; //写最后一个数值
////////////////////////////////////////////////////////////////////////////////
int ax=0;    
    //屏幕输出  
     for(y=0;y<shuru;y++)
     {
      for(x=0;x<shuru;x++)
      {
       printf("%d",Gsz[y][x]);
       if(Gsz[y][x]<=9) printf("   ");
       else printf("  ");
       }
       for(q=0;q<shuru;q++) ax+=Gsz[y][q];
       printf("    此列和为:%d",ax );ax=0;
       printf("\n\n");
       }
       for(x=0,y=0,ax=0;y<shuru;x++,y++)ax+=Gsz[y][x];
       printf("\n斜角1的和为:%d",ax);
       for(x=shuru-1,y=0,ax=0;y<shuru;x--,y++)ax+=Gsz[y][x];
       printf("\n斜角2的和为:%d",ax);
       printf("\n\n");
  system("[s:9]AUSE");    
  return 0;
}
来自:计算机科学 / 软件综合
2
已屏蔽 原因:{{ notice.reason }}已屏蔽
{{notice.noticeContent}}
~~空空如也
znnwe1 作者
11年9个月前 IP:未同步
452537
怎么没人感兴趣吗[s:275]
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论
warmonkey
11年9个月前 IP:未同步
452590
顶一下,
虽然实用性不大,但是这种项目,很适合新手入门C语言

attachment icon GLdemo.rar 179.89KB RAR 16次下载
上个自己的GL框架,方便新手用C完成绘图操作
绘图直接改 void display_process(void) 里面的内容就可以了,其他东西不动

例如加入
glBegin(GL_LINES);
glVertex3f(0.0,10.0,0.0);
glVertex3f(10.0,0.0,0.0);
glEnd();
可以画直线

迟些上Freetype for OpenGL
引用
评论
加载评论中,请稍候...
200字以内,仅用于支线交流,主线讨论请采用回复功能。
折叠评论

想参与大家的讨论?现在就 登录 或者 注册

所属专业
所属分类
上级专业
同级专业
znnwe1
笔友
文章
8
回复
34
学术分
0
2012/09/16注册,6年4个月前活动
暂无简介
主体类型:个人
所属领域:无
认证方式:邮箱
IP归属地:未同步
文件下载
加载中...
{{errorInfo}}
{{downloadWarning}}
你在 {{downloadTime}} 下载过当前文件。
文件名称:{{resource.defaultFile.name}}
下载次数:{{resource.hits}}
上传用户:{{uploader.username}}
所需积分:{{costScores}},{{holdScores}}下载当前附件免费{{description}}
积分不足,去充值
文件已丢失

当前账号的附件下载数量限制如下:
时段 个数
{{f.startingTime}}点 - {{f.endTime}}点 {{f.fileCount}}
视频暂不能访问,请登录试试
仅供内部学术交流或培训使用,请先保存到本地。本内容不代表科创观点,未经原作者同意,请勿转载。
音频暂不能访问,请登录试试
支持的图片格式:jpg, jpeg, png
插入公式
评论控制
加载中...
文号:{{pid}}
投诉或举报
加载中...
{{tip}}
请选择违规类型:
{{reason.type}}

空空如也

加载中...
详情
详情
推送到专栏从专栏移除
设为匿名取消匿名
查看作者
回复
只看作者
加入收藏取消收藏
收藏
取消收藏
折叠回复
置顶取消置顶
评学术分
鼓励
设为精选取消精选
管理提醒
编辑
通过审核
评论控制
退修或删除
历史版本
违规记录
投诉或举报
加入黑名单移除黑名单
查看IP
{{format('YYYY/MM/DD HH:mm:ss', toc)}}