C语言图案输出诡异的问题,这两个代码输出的图案有什么不同??

问题描述

C语言图案输出诡异的问题,这两个代码输出的图案有什么不同??
 #include<stdio.h>
void main()
{int i,j,k;
for(i=1;i<=4;i++)
{for(j=1;j<=4-i;j++)
printf(" ");
for(k=1;k<=2*i-1;k++)
printf("*");
printf("
");}
for(i=1;i<=3;i++)
{for(j=1;j<=i;j++)
printf(" ");
for(k=1;k<=7-2*i;k++)
printf("*");
printf("
");}
}  

 #include <stdio.h>
int main()
{
    char diamond[ ][7]={{' ',' ',' ','*'},{' ',' ','*','*','*'},
    {' ','*','*','*','*','*'},{'*','*','*','*','*','*','*'},{' ','*','*','*','*','*'},
    {' ',' ','*','*','*'},{' ',' ',' ','*'}};
    int i,j;
    for(i=0;i<7;i++)
    {for(j=0;j<7;j++)
    printf("%c",diamond[i][j]);
    printf("
");
    }
    return 0;
}

上面两个都是输出同一个图案代码,在学校c语言平台测试结果第一个正确,第二个错误。可是我观察了很久这两个代码输出的结果我感觉是一样的,下图左边为期待输出的正确结果,右边为测试结果,系统提示结果为错误答案。我真的看不出来有啥不同,,,,下面的图是我在第二个平台上下载下来的文件,我用记事本打开发现确实不太一样,,,我以为是空格的问题 但是平台那里图案后面确实没有空格,,,所以好奇怪(代码一结果为正确 二为错误)

解决方案

楼主,看您的第二个代码,数组的每第二个维度长度为7,您在初始化的时候,如果没有填满这7个元素,那么后面的没有被填的元素会被默认填入【''】,也就是空元素,它的二进制形式是0.
而把它们输入到记事本中时,0元素是很可能被转换为空格符的。

解决方案二:

命令行窗口输出图案

解决方案三:

楼主,看您的第二个代码,数组的每第二个维度长度为7,您在初始化的时候,如果没有填满这7个元素,那么后面的没有被填的元素会被默认填入【''】,也就是空元素,它的二进制形式是0.
而把它们输入到记事本中时,0元素是很可能被转换为空格符的。

解决方案四:

楼主,看您的第二个代码,数组的每第二个维度长度为7,您在初始化的时候,如果没有填满这7个元素,那么后面的没有被填的元素会被默认填入【''】,也就是空元素,它的二进制形式是0.
而把它们输入到记事本中时,0元素是很可能被转换为空格符的。

解决方案五:

我晕,评论能不能删除啊,貌似刷屏了呢,电脑不给力啊。。。请题主删除一下,看着不爽,谢谢

解决方案六:

第二个程序是错误的。diamond数组每一行初始化不完整,*号后面默认初始化为0了。
第二个程序每一行都输出7个字符就出错了。
解决办法:
把diamond数组*号后面也初始化为空格。

解决方案七:

文件2中多了好几个空格,

时间: 2024-11-02 14:11:55

C语言图案输出诡异的问题,这两个代码输出的图案有什么不同??的相关文章

软件开发-图片中的代码输出结果怎么会是4?

问题描述 图片中的代码输出结果怎么会是4? 我又没有让p指向某个内存空间,怎么就输出4了?开发-图片中的代码输出结果怎么会是4?-软件设计开发输出清单"> 解决方案 4是Ca的大小,Ca里面只有一个元素p,p是int*型的,所以占4字节. 解决方案二: 指针永远都是4个字节,哪怕你指向一个·1GB的数组. 解决方案三: 4是Ca的大小,Ca里面只有一个元素p,p是int*型的,所以占4字节.

c语言 输出分数最低的前两人人的名字

问题描述 c语言 输出分数最低的前两人人的名字 每一行分别输入人名和得分,输出得分最低和第二低的人.输入完毕后使用命令C-d(C-z)结束 例 输入 aoyama 2319 iida 172 koto 3916 asahi 234 输出 iida asahi 例2 输入 nakazima 1152 kurokawa 512 kuronaka 384 nakazoe 128 输出 nakazoe kuronaka 一下是我自己写的程序 可以执行但是没有响应 #include<stdio.h> #

用c语言读写bmp图像,图像的高和宽输出不正确,请问代码哪里有问题?哪位大神可以解答一下,谢谢

问题描述 用c语言读写bmp图像,图像的高和宽输出不正确,请问代码哪里有问题?哪位大神可以解答一下,谢谢 #include #include #include int ReadBmp(const char bmpName); /函数原型*/BITMAPFILEHEADER fileHead; /*文件信息头*/ BITMAPINFOHEADER infoHead; /*位图信息头*/RGBQUAD pColorTable[256]; /*颜色表指针*/unsigned char pBmpBuf;

c语言编写了个链表,但无法正确的输出,求大神指导

问题描述 c语言编写了个链表,但无法正确的输出,求大神指导 链表方面一直不是特别清楚.自己编了个链表,但却无法正确输出,求大神帮忙 #include #include typedef struct lnode Lnode; struct lnode { int data; Lnode *next; }; Lnode *makeNode(int data) { Lnode *new_node=(Lnode *)malloc(sizeof(Lnode)); if(new_node==NULL) {

c语言,自己编了个直接插入排序,可是却输出不了正确的结果,找不到哪里错了,求大神指点

问题描述 c语言,自己编了个直接插入排序,可是却输出不了正确的结果,找不到哪里错了,求大神指点 #include #include void Straightinsertionsort(int a[]) { int i,j,k; int b[10]={0}; b[0]=a[0]; for(i=1;i { for(j=i-2;j>=0;j--) { if(a[i]>b[j]) { for(k=i-2;k>j;k--) { b[k+1]=b[k]; } b[j+1]=a[i]; } } }

c语言-C语言数据打包程序 从键盘输入一组数据,输出为头+长度+类型+数据+尾;结果很奇怪

问题描述 C语言数据打包程序 从键盘输入一组数据,输出为头+长度+类型+数据+尾:结果很奇怪 typedef struct DataMessage { int file_header; //数据头 int length; // 数据长度 char type; //数据类型 char data[10]; //数据 int file_ending; //数据尾 }Message; main() { char string[100]; Message mes; int i; mes.file_head

求解决-请用c语言编写此程序,重点在怎么把None输出,求指教

问题描述 请用c语言编写此程序,重点在怎么把None输出,求指教 /**输出21世纪中截止某个年份以来的所有闰年年份.注意:闰年的判别条件是该年年份能被4整除但不能被100整除.或者能被400整除. 输入格式: 输入在一行中给出21世纪的某个截止年份. 输出格式: 逐行输出满足条件的所有闰年年份,即每个年份占一行.输入若非21世纪的年份则输出"Invalid year!".若不存在任何闰年,则输出"None". 输入样例1: 2048 输出样例1: 2004 200

《C语言程序设计进阶教程》一1.2 重定向输出

1.2 重定向输出 本文讲的是C语言程序设计进阶教程一1.2 重定向输出,printf函数可能是人们写C程序时最先了解的几个函数之一.著名的"Hello World!"程序经常被用作给初学者的例子.在这个计算机程序中,文本被打印至终端.然而在一些场合中,从程序中重定向信息并将其保存至一个文件中是很有用的.下面是几个可能用到的情境:一个程序打印得过多过快,电脑屏幕不能显示出打印的所有内容.你不想在程序运行时等待着,相反,你想稍后再去看上面的信息.有时,检查程序再次运行时的输出是否与之前相

c语言-为什么我在一个c程序末尾加入一段代码后前面的代码输出内容没了?加代码 后 前 程序如下

问题描述 为什么我在一个c程序末尾加入一段代码后前面的代码输出内容没了?加代码 后 前 程序如下 代码有点长,我只想知道加代码后变化的原因 #include"stdio.h" static int k = 0; int h[120][5] = { 0 }; int t, g, n, m, i=5, j=1, c; void output(int b[5]) { int p; for (p = 0; p <= 4; p++) { printf("%d ", b[