算是服了vs2015了,这段程序为什么不打印?

狼二羊 2018-03-19 04:47:48
打印字母金字塔,vs2015怎么就不打印呢?打上字母以后回车直接闪退
#include <stdio.h>
int main(void)
{
int i, j, k;
char letter;
printf("shuru:");
scanf_s("%c", &letter);
k = letter - 'A' + 1;
for (i = 0; i < k; i++)
{
for (j = 0; j < k - i; j++)printf(" ");
for (j = 0; j <= i; j++)printf("%c", 'A' + j);
for (j = i - 1; j >= 0; j++)printf("%c", 'A' + j);
printf("\n");
}
return 0;
}
...全文
215 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2018-03-19
  • 打赏
  • 举报
回复
#include <stdio.h>
int main(void)
{
    int i, j, k;
    char letter;
    printf("shuru:");
    scanf_s("%c", &letter, 1);
    k = letter - 'A' + 1;

    for (i = 0; i < k; i++)
    {
        for (j = 0; j < k - i; j++)
            printf(" ");
        for (j = 0; j <= i; j++)
            printf("%c", 'A' + j);
        for (j = i - 1; j >= 0; j--)
            printf("%c", 'A' + j);
        printf("\n");
    }
    return 0;
}
参考一下吧
 for (j = i - 1; j >= 0; j--)
            printf("%c", 'A' + j);
注意j--,你写成j++,会导致死循环和溢出;
自信男孩 2018-03-19
  • 打赏
  • 举报
回复
引用 2 楼 qq_30519247 的回复:
[quote=引用 1 楼 paschen 的回复:] scanf_s("%c", &letter); 改成: scanf_s("%c", &letter, 1); for (j = i - 1; j >= 0; j++) 改成: for (j = i - 1; j >= 0; j--)
我是不是该放弃vs2015,为什么scanf_s("%c", &letter, 1);还要加1啊。[/quote] 这是因为scanf_s和scanf是不一样的,scanf_s比scanf更安全,更安全体现在它比scanf多一个输入字符数的要求上。因此对于%c需要确定其字符数。
mstlq 2018-03-19
  • 打赏
  • 举报
回复
引用 2 楼 qq_30519247 的回复:
[quote=引用 1 楼 paschen 的回复:] scanf_s("%c", &letter); 改成: scanf_s("%c", &letter, 1); for (j = i - 1; j >= 0; j++) 改成: for (j = i - 1; j >= 0; j--)
我是不是该放弃vs2015,为什么scanf_s("%c", &letter, 1);还要加1啊。[/quote] 你可以在vs2015里继续用scanf,套路参考http://blog.csdn.net/fantasydreams/article/details/45250627
mstlq 2018-03-19
  • 打赏
  • 举报
回复
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
    int i, j, k;
    char letter;
    printf("shuru:");
    scanf_s("%c", &letter,1);
    k = letter - 'A' + 1;
    for (i = 0; i < k; i++)
    {
        for (j = 0; j < k - i; j++)printf(" ");
        for (j = 0; j <= i; j++)printf("%c", 'A' + j);
        for (j = i - 1; j >= 0; j--)printf("%c", 'A' + j);
        printf("\n");
    }
    system("pause");
    return 0;
}
建议楼主参考下面的链接,学学scanf_s和scanf的区别 https://msdn.microsoft.com/en-us/library/w40768et.aspx
狼二羊 2018-03-19
  • 打赏
  • 举报
回复
引用 1 楼 paschen 的回复:
scanf_s("%c", &letter); 改成: scanf_s("%c", &letter, 1); for (j = i - 1; j >= 0; j++) 改成: for (j = i - 1; j >= 0; j--)
我是不是该放弃vs2015,为什么scanf_s("%c", &letter, 1);还要加1啊。
paschen 2018-03-19
  • 打赏
  • 举报
回复
scanf_s("%c", &letter); 改成: scanf_s("%c", &letter, 1); for (j = i - 1; j >= 0; j++) 改成: for (j = i - 1; j >= 0; j--)
1.物联网的开发难度越来越低当小王被老板要求开发一个物联网项目时,他面临这许多种解决方案,从硬件到软件一应俱全。有的提供了模块化的硬件,有的提供了高度集成的软件开发环境,有的支持python开发,有的支持图形化开发,有的提供硬件SDK,有的提供从云端到移动端成套的解决方案。小王该如何选择?的确,物联网的开发难度越来越低,只要你想,就可以拖拖拽拽做出来一个简单的设备。移动端APP呢?也是如此,你甚至可以登陆某平台的网站在线生成一个安装包直接安装到手机上。但是这些便利化的前提是失去对核心技术的掌握,以及跳转界面、使用习惯等无法把控。2.移动端APP技能是必备当学习物联网技术的小赵到某公司应聘时,公司技术主管对他的知识结构基本满意。然后让他开发一个物联网项目,要软硬件结合,移动端APP是必备的。小赵可以很快做出来一台基于ESP8266的硬件设备,连接到某物联网平台,做出来一个手机端的APP。但是主管对这个APP不太满意,问小赵自己会不会制作手机APP?小赵有些尴尬。为什么移动端APP技能是必备?因为物联网技术涉及到的知识领域有很多个,能够自己做出APP才算是将这些领域的知识完全掌握。就像是一个侠客的武功,最厉害的那个还没有练成,还不能算是真正的高手。3.定制APP价格很贵市场上有不少的物联网软件公司开展物联网应用APP的定制业务,当然价格不菲。如果是公司采购,你将花费较大的价格采购到一个未来并不可控的APP。反过来说,如果是学生应聘,你学到移动端应用知识,将大大提升你的竞争力,你的技能将成为核心竞争力。4.没有类似的教程原因就不多说了。即使有一些片段代码给了大家,大家也做不出来一个能用的APP。5.本课程要讲什么基于阿里云物联网平台(其他物联网平台类似),带您使用Android Studio编写一个安卓APP,实现连接阿里云物联网平台,控制一台智能灯。通过一个软硬件结合项目,结合源代码,一点一点为大家讲解怎么样连接阿里云物联网平台,每一个步骤是怎么回事,源代码怎么实现。为了照顾一些零基础的朋友,课程中还会用一些通俗的语言介绍这些知识,让大家掌握书上和网络上一些不太注意的技术细节。  

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧