输入一组数,用回车控制输完,再输出。但调试时老是输出和输入不一样,如输入“1 2 3 4”则输出“2 3 4 0”怎么改啊
#include "Stdio.h"
main()
{
int i,length;
int a[100];
char c;
printf("please input your order sqlist\n");
for(i=0;(c=g

展开全部
收起
5回答
提交回答
  • 至过去的我

    2044人对此回答表示赞同

    我是未来的你,你现在是不是在年找寻小程序答案。你不要感觉诧异,给你来信原因,就是让你不在后悔。今天去学习如何推广小程序,相信......点击查看更多>
    发布于
  • Eva

    20人对此回答表示赞同

    #include "Stdio.h"
    main()
    {
    int i,length;
    int a[100];
    char c;
    printf("please input your order sqlist\n");
    for(i=0;(c=getchar())!='\n';i++)
    scanf("%d",&a[i]);
    展开
    20
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • S小姐

    16人对此回答表示赞同

    你的第一个字符被getchar()接收了,存在c中
    当第一次循环的时候,会执行;(c=getchar())!='\n'这个判断,接收第一个字符,当不为'\n'时才会执行下面scanf语句,所以scanf接收的是第二个字符开始的字符,也就是你输入4个字符,只接收后三个存在数组中,输出时第四个其实是没有意义的,因为并不知道那个位置存的是什么东西
    在循环体加一句输出看看,c中应该存的是第一个字符
    for(i=0;(c=getchar(
    展开
    16
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 大吉大利今晚吃鸡

    15人对此回答表示赞同

    问题出在第一个for循环中。你的程序的循环过程是这样的:你从键盘输入1234/n。“/n”代表回车。注意,1234可以看成一个正数也可以看成4个字符,你输入的这5个字符被送入键盘缓冲区,每个字符占一个字节的存储空间,存储的是这些字符三ansic码。然后程序执行到for循环,i=0;然后是语句“c=getchar()”因为getchar函数只取得一个字符,也就是键盘缓冲区的第一个字节的内容。也就是1的ansic吗,赋给c;判断出c不是“/n”,然后执行“scanf("%d",&a[i]
    展开
    15
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • 那都不是事儿

    10人对此回答表示赞同

    #include "Stdio.h"
    main()
    {
    int i,length;
    int a[100];
    char c;
    printf("please input your order sqlist\n");
    for(i=0;(c=getchar())!='\n';i++)
    a[i]=c-48; //char--int
    leng
    展开
    10
    0回复
    发布于 6年前

    评论(0)

    收起评论

  • Sofia

    1人对此回答表示赞同

    回答者:休休休休 - 助理 二级 4-5 13:50

    执行过程就是上面讲解的那样了.........................
    所以你的程序有两点问题;
    1.输入的时候提前要输入被getcher()吸收的非'\n'字符了,最好是空格了,并且后面的连续数字要用空格分隔开了.
    2.就是你第一次循环完之后i已经达到你要的值了,可以不采用多余的变量length了,就更不用再加1了

    回答者:雨中扇 - 助理 二级
    展开
    1
    0回复
    发布于 6年前

    评论(0)

    收起评论

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
咨询热线

13312967497

扫码添加业务即可随时咨询 还可领取小程序推广攻略

业务咨询: 13312967497
扫码咨询

扫码咨询套餐

回到顶部