首页
社区
课程
招聘
[旧帖] [求助]实在是太笨了,只能求助了 0.00雪花
发表于: 2015-5-30 00:35 1370

[旧帖] [求助]实在是太笨了,只能求助了 0.00雪花

2015-5-30 00:35
1370
才学习C语言没多久,之前只是大概学习了语法,现在深入学习就导致脑袋短路了,虽然问题可能对各位有点白痴,不过总比自己一直想不通好一点。我想问问以下代码前面的序号怎么可将0开头变成1开头,与问题2:数字怎么对齐呢?,我试了很多方法,始终没有成功。在这里谢谢各位朋友对我的指点。
#include <stdio.h>

int main(void)
{
        int i;
        int j;
        int b[20];
        int a[20];
        a[0]=1;
        a[1]=1;

        for(i=2;i<20;i++)
        {
                a[i]=a[i-1]+a[i-2];
        }

        for(i=0;i<20;i++)
        {
                for(j=1;j<=20;j++)
                {
                        b[j]=j;
                }
                printf("%d    %d\n", b[j], a[i]);
        }
        printf("\n");

        return 0;
}

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (12)
雪    币: 20
活跃值: (42)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
2
建议继续看书,最起码要能把问题描述清楚。你是批数据下标怎么从1开始吗?至于数字怎么对齐完全不懂。。。
2015-5-30 01:23
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
for(j=1;j<=20;j++)
    {
      b[j]=j;
    }
目测会出错,你的b[20]申明表示b可以访问0~19一共20个数组成员,而你的代码上当j=20时任然进入循环,于是在第二十次的时候系统将报错。
2015-5-30 01:25
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
咱没看明白你的意思,咱只能将你的代码翻译一下
#include <stdio.h>//包含基本输入输出头

int main(void)//主函数,参数为空返回值为整数
{
  int i;//声明整数变量i
  int j;//声明整数变量j
  int b[20];//声明整数变量数组b(拥有20个数组成员,可已通过b[0]~b[19]访问)
  int a[20];//声明整数变量数组a(拥有20个数组成员,可已通过a[0]~a[19]访问)
  a[0]=1;//将1赋值给a[0]
  a[1]=1;//将1赋值给a[1]

  for(i=2;i<20;i++)//循环,一共20-2次
  {
    a[i]=a[i-1]+a[i-2];//将a[i-1]与a[i-2]的和赋值给a[i]
  }
/*
此时a的内容如下:
a[0]=1;
a[1]=1;
a[2]=2;
a[3]=3;
a[4]=5;
a[5]=8;
a[6]=13;
a[7]=21;
a[8]=34;
a[9]=55;
a[10]=89;
a[11]=144;
a[12]=233;
a[13]=377;
a[14]=610;
a[15]=987;
a[16]=1597;
a[17]=2584;
a[18]=4181;
a[19]=6765;
*/
  for(i=0;i<20;i++)//循环,一共20次
  {
    for(j=1;j<=20;j++)//循环,一共20次
    {
      b[j]=j;//将j的值赋值给b[j]
    }
    printf("%d    %d\n", b[j], a[i]);//输出b[20]与a[i]的值,输出格式:“b[20]    a[i]”+换行符
  }
  printf("\n");//输出换行符

  return 0;//返回0
}
2015-5-30 01:39
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
想要输出第一个数字从1开始的改法1:
#include <stdio.h>

int main(void)
{
  int i;
  int j;
  int b[20];
  int a[20];
  a[0]=1;
  a[1]=1;

  for(i=2;i<20;i++)
  {
    a[i]=a[i-1]+a[i-2];
  }

  for(i=0;i<20;i++)
  {
    for(j=0;j<20;j++)
    {
      b[j]=j+1;
      printf("%d    %d\n", b[j], a[i]);
    }
  }
  printf("\n");

  return 0;
}
想要输出第一个数字从1开始的改法2:
#include <stdio.h>

int main(void)
{
  int i;
  int a[20];
  a[0]=1;
  a[1]=1;

  for(i=2;i<20;i++)
  {
    a[i]=a[i-1]+a[i-2];
  }

  for(i=0;i<20;i++)
  {
    printf("%d    %d\n", i+1, a[i]);
  }
  printf("\n");

  return 0;
}
2015-5-30 01:43
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
两种改法是不同的,第一种将输出
1    1
2    1
3    1
4    1
5    1
6    1
7    1
8    1
9    1
10    1
11    1
12    1
13    1
14    1
15    1
16    1
17    1
18    1
19    1
20    1
1    1
2    1
3    1
4    1
5    1
6    1
7    1
8    1
9    1
10    1
11    1
12    1
13    1
14    1
15    1
16    1
17    1
18    1
19    1
20    1
1    2
2    2
3    2
4    2
5    2
6    2
7    2
8    2
9    2
10    2
11    2
12    2
13    2
14    2
15    2
16    2
17    2
18    2
19    2
20    2
......
第二种会输出:
1    1
2    1
3    2
4    3
5    5
6    8
7    13
8    21
9    34
10    55
11    89
12    144
13    233
14    377
15    610
16    987
17    1597
18    2584
19    4181
20    6765
2015-5-30 01:49
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
关于数字对其的问题建议你看一下printf函数的说明
当然你也可以用下头的内容分别替换int a=123;printf("%d",a);中的“%d”看看是什么效果,然后你就知道了
%1d
%.1d
%2d
%.2d
%3d
%.3d
%4d
%.4d
%5d
%.5d
%6d
%.6d
2015-5-30 04:18
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
本来是不想着急的,但是有时候对一个问题执着了,虽然不懂但是很想知道问题出在哪里。不过还是很谢谢你的建议。
2015-5-30 07:55
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
很多知识都知识看过,做了笔记,但是有时候就是记不起来。
2015-5-30 07:56
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
[QUOTE=月夜猫妖;1373419]想要输出第一个数字从1开始的改法1:
#include <stdio.h>

int main(void)
{
  int i;
  int j;
  int b[20];
  int a[20];
  a[0]=1;
  a[1]=1;

  for(i=2;i<20;i++)
  {
  ...[/QUOTE]

谢谢,我会继续深入理解一下的。
2015-5-30 07:59
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
你需要练手,光记忆是没有用的
2015-5-30 16:07
0
雪    币: 20
活跃值: (42)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
12
千万不要急,正确的学习方法也要有足够的耐心才能学成点东西。而且C是需要一直关注并学习的对象,易学难精。
     慢慢来,再去看其他方面,学了API后再回头再看等等。需要学很多东西,算法,数据结构太多要学。
所以要有足够的耐心,不然只能一事无成。
2015-6-2 23:27
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
有点难以坚持,不过还好自己的兴趣就是这个应该比其他人好一点。谢谢你的提醒啦。
2015-6-3 07:52
0
游客
登录 | 注册 方可回帖
返回
//