热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

循环体内数组定义问题

编写程序输出下列图形:0000100010
编写程序输出下列图形:00001
                                            00010
                                            00100
                                            01000
                                            10000
程序如下:#include                                               
int main(void)
{
int i,j;
int a[5] = { 0 };                                    
for (i = 4; i >= 0; i--)                             
{
a[i] = 1;                                       
for (j = 0; j <= 4; j++)
printf("%d", a[j]);
printf("\n");
                int a[5] = { 0, 0, 0, 0, 0 };
}
}
输出图形为:00001
                        00011
                        00111
                        ......
                        11111
如果程序如下:#include
int main(void)
{
int i,j;
int a[5] = { 0 };                                   
for (i = 4; i >= 0; i--)                             
{

int a[5] = { 0, 0, 0, 0, 0 };
a[i] = 1;                                       
for (j = 0; j <= 4; j++)
printf("%d", a[j]);
printf("\n");
}
}
麻烦各位帮我解答,谢谢啦

17 个解决方案

#1


如果按照下面的程序运行就可以正常输出图形

#2


数组只能在定义时整体赋值,其他任何时候都只能单独操作一个元素
理所当然的,一个数组不能定义两次,所以你自以为重设数组内容的那条语句实际上是定义了一个新的没用的数组

#3


第二个能正确显示。
在花括号括起来的程序段内外有相同名字的变量时,程序段优先使用的是花括号内的变量,第一个程序中在定义括号内的a前用的是括号外的a,而定义括号内的a时使用的是另外的空间,并没有把括号外的a的值进行重置。

第二个虽然正确,但是括号外的a不起作用,最好删了。

强烈建议:在一个变量还在起作用的时候,不要定义同名的变量!

#4


同名变量的作用于问题。一般遵循最“近”原则,也就是大括号内定义的会覆盖大括号外定义的

#5


//编写程序输出下列图形:
//00001
//00010
//00100
//01000
//10000
#include 
int main() {
    int i;

    for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);
    return 0;
}

#6


引用 5 楼 zhao4zhong1 的回复:
//编写程序输出下列图形:
//00001
//00010
//00100
//01000
//10000
#include 
int main() {
    int i;

    for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);
    return 0;
}

赞一个~~

#7


引用 4 楼 starytx 的回复:
同名变量的作用于问题。一般遵循最“近”原则,也就是大括号内定义的会覆盖大括号外定义的

覆盖效果之针对于该程序段内部吗?因为我另外做测试发现重新定义的数组只对该内部有用,到外部之后起作用的依然是一开始定义的数组

#8


引用 3 楼 PDD123 的回复:
第二个能正确显示。
在花括号括起来的程序段内外有相同名字的变量时,程序段优先使用的是花括号内的变量,第一个程序中在定义括号内的a前用的是括号外的a,而定义括号内的a时使用的是另外的空间,并没有把括号外的a的值进行重置。

第二个虽然正确,但是括号外的a不起作用,最好删了。

强烈建议:在一个变量还在起作用的时候,不要定义同名的变量!

你好~程序优先选择花括号内的变量,第一个程序中在定义括号内的a前用的是括号外的a,而定义括号内的a时使用的是另外的空间,并没有把括号外的a的值进行重置。但是为何第二个将它的位置提前就可行,依然是将其放置在括号内部啊

#9


引用 5 楼 zhao4zhong1 的回复:
//编写程序输出下列图形:
//00001
//00010
//00100
//01000
//10000
#include 
int main() {
    int i;

    for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);
    return 0;
}

赞!!!!可是这是怎么实现的呀 没看懂

#10


引用 7 楼 u013955671 的回复:
Quote: 引用 4 楼 starytx 的回复:

同名变量的作用于问题。一般遵循最“近”原则,也就是大括号内定义的会覆盖大括号外定义的

覆盖效果之针对于该程序段内部吗?因为我另外做测试发现重新定义的数组只对该内部有用,到外部之后起作用的依然是一开始定义的数组
到了外部都超出该变量的作用域了,当然就没他啥事了。

#11


引用 9 楼 u013955671 的回复:
Quote: 引用 5 楼 zhao4zhong1 的回复:

//编写程序输出下列图形:
//00001
//00010
//00100
//01000
//10000
#include 
int main() {
    int i;

    for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);
    return 0;
}

赞!!!!可是这是怎么实现的呀 没看懂

"00001000"也有一个地址,%s都是从字符串指向的地址开始的,上面的程序等价于:

char *p = "000010000";
for (i=0;i<5;i++) 
   printf("%.5s\n", p + i);

#12


引用 11 楼 a515360208 的回复:
Quote: 引用 9 楼 u013955671 的回复:

Quote: 引用 5 楼 zhao4zhong1 的回复:

//编写程序输出下列图形:
//00001
//00010
//00100
//01000
//10000
#include 
int main() {
    int i;

    for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);
    return 0;
}

赞!!!!可是这是怎么实现的呀 没看懂

"00001000"也有一个地址,%s都是从字符串指向的地址开始的,上面的程序等价于:

char *p = "000010000";
for (i=0;i<5;i++) 
   printf("%.5s\n", p + i);

谢谢解答

#13


引用 10 楼 starytx 的回复:
Quote: 引用 7 楼 u013955671 的回复:

Quote: 引用 4 楼 starytx 的回复:

同名变量的作用于问题。一般遵循最“近”原则,也就是大括号内定义的会覆盖大括号外定义的

覆盖效果之针对于该程序段内部吗?因为我另外做测试发现重新定义的数组只对该内部有用,到外部之后起作用的依然是一开始定义的数组
到了外部都超出该变量的作用域了,当然就没他啥事了。

谢谢解答

#14


引用 8 楼 u013955671 的回复:
Quote: 引用 3 楼 PDD123 的回复:

第二个能正确显示。
在花括号括起来的程序段内外有相同名字的变量时,程序段优先使用的是花括号内的变量,第一个程序中在定义括号内的a前用的是括号外的a,而定义括号内的a时使用的是另外的空间,并没有把括号外的a的值进行重置。

第二个虽然正确,但是括号外的a不起作用,最好删了。

强烈建议:在一个变量还在起作用的时候,不要定义同名的变量!

你好~程序优先选择花括号内的变量,第一个程序中在定义括号内的a前用的是括号外的a,而定义括号内的a时使用的是另外的空间,并没有把括号外的a的值进行重置。但是为何第二个将它的位置提前就可行,依然是将其放置在括号内部啊

第一个程序,循环体在使用a的时候,括号内的a不是还没有定义么?没定义如何使用?

#15


引用 5 楼 zhao4zhong1 的回复:
//编写程序输出下列图形:
//00001
//00010
//00100
//01000
//10000
#include 
int main() {
    int i;

    for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);
    return 0;
}
给你点赞,

#16


引用 11 楼 a515360208 的回复:
Quote: 引用 9 楼 u013955671 的回复:

Quote: 引用 5 楼 zhao4zhong1 的回复:

//编写程序输出下列图形:
//00001
//00010
//00100
//01000
//10000
#include 
int main() {
    int i;

    for (i=0;i<5;i++) printf("%.5s\n","000010000"+i);
    return 0;
}

赞!!!!可是这是怎么实现的呀 没看懂

"00001000"也有一个地址,%s都是从字符串指向的地址开始的,上面的程序等价于:

char *p = "000010000";
for (i=0;i<5;i++) 
   printf("%.5s\n", p + i);

牛逼啊,我等还得加倍学习!

#17


#include 

int main()
{
    int a = 3;
    int i =0;
    for(;i<=a;i++)
        int b[5] ={2};
    printf("%d\n",b);
    return 0;
}
编译不通过

推荐阅读
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 本文介绍了C函数ispunct()的用法及示例代码。ispunct()函数用于检查传递的字符是否是标点符号,如果是标点符号则返回非零值,否则返回零。示例代码演示了如何使用ispunct()函数来判断字符是否为标点符号。 ... [详细]
  • C语言判断正整数能否被整除的程序
    本文介绍了使用C语言编写的判断正整数能否被整除的程序,包括输入一个三位正整数,判断是否能被3整除且至少包含数字3的方法。同时还介绍了使用qsort函数进行快速排序的算法。 ... [详细]
  • 《2017年3月全国计算机等级考试二级C语言上机题库完全版》由会员分享,可在线阅读,更多相关《2017年3月全国计算机等级考试二级C语言上机题库完全版( ... [详细]
  • C语言注释工具及快捷键,删除C语言注释工具的实现思路
    本文介绍了C语言中注释的两种方式以及注释的作用,提供了删除C语言注释的工具实现思路,并分享了C语言中注释的快捷键操作方法。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • 本文介绍了解决二叉树层序创建问题的方法。通过使用队列结构体和二叉树结构体,实现了入队和出队操作,并提供了判断队列是否为空的函数。详细介绍了解决该问题的步骤和流程。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • Linux环境变量函数getenv、putenv、setenv和unsetenv详解
    本文详细解释了Linux中的环境变量函数getenv、putenv、setenv和unsetenv的用法和功能。通过使用这些函数,可以获取、设置和删除环境变量的值。同时给出了相应的函数原型、参数说明和返回值。通过示例代码演示了如何使用getenv函数获取环境变量的值,并打印出来。 ... [详细]
  • 本文介绍了PE文件结构中的导出表的解析方法,包括获取区段头表、遍历查找所在的区段等步骤。通过该方法可以准确地解析PE文件中的导出表信息。 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 3.223.28周学习总结中的贪心作业收获及困惑
    本文是对3.223.28周学习总结中的贪心作业进行总结,作者在解题过程中参考了他人的代码,但前提是要先理解题目并有解题思路。作者分享了自己在贪心作业中的收获,同时提到了一道让他困惑的题目,即input details部分引发的疑惑。 ... [详细]
  • 本文介绍了GTK+中的GObject对象系统,该系统是基于GLib和C语言完成的面向对象的框架,提供了灵活、可扩展且易于映射到其他语言的特性。其中最重要的是GType,它是GLib运行时类型认证和管理系统的基础,通过注册和管理基本数据类型、用户定义对象和界面类型来实现对象的继承。文章详细解释了GObject系统中对象的三个部分:唯一的ID标识、类结构和实例结构。 ... [详细]
author-avatar
LINBO-D_915
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有