回 帖 发 新 帖 刷新版面

主题:C程序请教

/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
    int i,j,n,no;
    printf("请输入你要输入数字的个数:");
    scanf("%d\n",&i);
    printf("输入一个数字");
    for(j=0;j<i;j++)
    {
        scanf("%d",&no);
        for(n=0;n<no;n++)    /**输出no个'*'*/
        printf("*");
        printf("\n");
    }

}



请问这有错吗,为什么运行的结果会是这样的呢,如图?

回复列表 (共13个回复)

沙发


为什么不是先输出“输入一个数字”这一句呢?

板凳

#include "stdio.h"
void main()
{
    int i,j,n,no;
    printf("输入一个数字:\n");
      scanf("%d",&no);
    printf("请输入你要输入数字的个数:\n");
      scanf("%d",&i);
    for(j=0;j<i;j++)
    {
          for(n=0;n<no;n++)    /**输出no个'*'*/
        printf("*");
        printf("\n");
    }

}

//修改了下!
看下可以不!

3 楼


呵呵,SCANF 之后请清一下缓冲中的数据。否则会将回车带给下一个地址,作为值出现。scanf ( " %s " , addressname ) ; 
    getchar ( ...... ) ; 更明显。

4 楼


#include "stdio.h"
void main()
{
    int i,j,n,no;
    printf("请输入你要输入数字的个数:");
    scanf("%d\n",&i);//*[color=FF0000]按照你的思路,这里应该是scanf("%d",&i); 不要"\n"的.[/color]
    printf("输入第一个数字:");
    for(j=0;j<i;j++)
    {
        scanf("%d",&no);
        for(n=0;n<no;n++)    /**输出no个'*'*/
        printf("*");
        printf("\n");
    }

}
记住不要在scanf语句中加入除格式控制字符串以外的任何东西.否则就容易出错的。比如按照你的格式,除了2,还应输入\n...

5 楼

修改如下
#include "stdio.h"
void main()
{
    int i,j,n,no;
    printf("请输入你要输入数字的个数:");
    scanf("%d",&i);
    printf("你要输入数字的个数:%d\n",i);
    printf("输入一个数字\n");
    for(j=0;j<i;j++)
    {
        scanf("%d",&no);
        for(n=0;n<no;n++)    /**输出no个'*'*/
        printf("*");
        printf("\n");
    }

}

总结,看scanf的用法,
//scanf(%d\n",&i);  错误
   scanf("%d",&i);  正确
%d是i的格式,你再加\n,那是表示什么。。。。
你把printf的使用强加给了scanf,肯定是要出错的。

6 楼

#include "stdio.h"
void main()
{
    int i,j,n,no;
    printf("请输入你要输入数字的个数:");
    scanf("%d\n",&i);
    for(j=0;j<i;j++)
    {
        scanf("%d",&no);
        for(n=0;n<no;n++)    /**输出no个'*'*/
        printf("*");
        printf("\n");
    }

}
不知道是不是?

7 楼


请教个事,我输入2这个数,到后面可以继续输入其他的数二得到相应的*号,但是输入1这个数,得到了第一个*之后就不能继续了呢

8 楼

/* Note:Your choice is C IDE */
#include <stdio.h>

int main()
{
    int i,j,n,no;
    printf("请输入你要输入数字的个数:");
    scanf("%d",&i);//scanf("%d\n",&i); 不要"\n"的.以后注意一下就好了!
    printf("输入一个数字");
    for(j=0;j<i;j++)
    {
        scanf("%d",&no);
        for(n=0;n<no;n++)    /**输出no个'*'*/
        printf("*");
        printf("\n");
    }
    return 0;
}

9 楼

又出状况了,输出的中文都成了“╟δ╩Σ╚δ─π╥&not;╩Σ╚δ╩&sup2;╫╓╡─╕÷╩&sup2;:”



是输出,不是输入

10 楼


想输入汉字?汉字是二个字节的。问题是什么?不然不好回答啊!

我来回复

您尚未登录,请登录后再回复。点此登录或注册