| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 416 人关注过本帖
标题:大家帮我看看那里出现了问题!!!
只看楼主 加入收藏
燃高
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:140
注 册:2011-12-13
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
大家帮我看看那里出现了问题!!!
Sample Input
5

Sample Output
1 3 6 10 15
2 5 9 14
4 8 13
7 12
11


#include<stdio.h>
#include<math.h>
#define N 10
main()
{
     int a[N][N];
     int n,i,j,k=0;
     int d1;
     printf("请输入你要输入的数字N(N<10)\n");
     scanf("%d",&n);
      for(i=0;i<n;i++)
      {   
         a[i][0]=++k;
         d1=i;
         j=0;
        if(d1>0)
            a[--d1][++j]=++k;
      }
     for(i=0;i<n;i++)
     {
        for(j=0;j<n-i;j++)
           printf("%d ",a[i][j]);
            printf("\n");
     }
}
搜索更多相关主题的帖子: include 
2011-12-25 11:59
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
if(d1>0)
            a[--d1][++j]=++k; // 这个语句只能给一行中前两列赋值,其他的都是不确定的数字。

梅尚程荀
马谭杨奚







                                                       
2011-12-25 13:38
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:10 
#include<stdio.h>
#include<math.h>
#define N 10
main()
{
     int a[N][N];
     int n,i,j,k=0;
     int d1;
     printf("请输入你要输入的数字N(N<10)\n");
     scanf("%d",&n);
      for(i=0;i<n;i++)
      {   
         a[i][0]=k;   // 这句其实是多余的。可以去掉
         d1=i;
         j=0;
        while (d1>=0)   // =0保证首行
            a[d1--][j++]=++k;    // 先传值再减增d1 j
      }
     for(i=0;i<n;i++)
     {
        for(j=0;j<n-i;j++)
           printf("%d ",a[i][j]);
            printf("\n");
     }
}
你看下这个可以不。

[ 本帖最后由 有容就大 于 2011-12-25 13:56 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2011-12-25 13:47
燃高
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:140
注 册:2011-12-13
收藏
得分:0 
回复 2楼 有容就大
为什么会这样呢!!我刚开始也看见只能前两个被赋值!!
2011-12-25 14:23
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
回复 4楼 燃高
你程序中的 a[i][0]=++k; 是给每行第一个地方赋值, if(d1>0)   a[--d1][++j]=++k; 是给他斜上方的那个地方赋值,并且if语句就是一次性的,不会实施循环。由此可见外面的for循环,每循环一次赋值两次,并且不是一行给两个而是给行首一个和他斜右上一个,所以最后行只有一个数。列数大于1(0列为首列)的地方都是天文数字。
           

梅尚程荀
马谭杨奚







                                                       
2011-12-25 17:27
快速回复:大家帮我看看那里出现了问题!!!
数据加载中...
 
   



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

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