| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1219 人关注过本帖
标题:关于 scanf 的入门问题
只看楼主 加入收藏
JackDeven
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-8-16
结帖率:0
收藏
已结贴  问题点数:20 回复次数:13 
关于 scanf 的入门问题
请问各位大神
我的代码是
#include <stdio.h>
#include<iostream>
int main(int)
{
    int a,b,c,d;
    printf("Please input four number,seperate by space");
    scanf("%3d%3d%3d%3d",&a,&b,&c,&d);
    printf("\na=%d,b=%d,c=%d,d=%d",a,b,c,d);
    system("pause");
}

为什么我输入  1234 5678 1 2
输出的结果是  a=123,b=4,c=567,d=8
搜索更多相关主题的帖子: include system number 
2014-08-16 10:49
AzeneLei
Rank: 1
等 级:新手上路
帖 子:1
专家分:3
注 册:2014-8-7
收藏
得分:3 
%3d 可以查一下什么意思 只占3位 a当然等于123了 我是菜比 你可以试一下%4d 看看如何
2014-08-16 11:27
w410297765
Rank: 2
来 自:皇汉
等 级:论坛游民
帖 子:18
专家分:65
注 册:2012-7-21
收藏
得分:3 
这是什么环境下编程、?= =
2014-08-16 13:23
乖乖0943
Rank: 2
等 级:论坛游民
帖 子:33
专家分:42
注 册:2014-8-1
收藏
得分:3 
这有一个宽度的概念你可以看看,应该对你有帮助!
宽度:用十进制整数指定输入的宽度(即字符数)。
      例:scanf("%5d",&a);当输入12345678时,只将12345赋给a,其余的截去。
          scanf("%4d%4d",&a,&b);当输入12345678时,将1234赋给a,5678赋给b。
2014-08-16 13:58
qq450255457
Rank: 1
等 级:新手上路
帖 子:2
专家分:3
注 册:2014-8-16
收藏
得分:3 
回复 4 楼 乖乖 0943
正解!
2014-08-16 17:01
aqwszddd
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2014-1-15
收藏
得分:3 
/* */
#include <stdio.h>
main()
{
    char ch,nch;    /* */
    int count;    /* */
    int k;        /* */

    printf("Please input a string with a # in the end.\n");
    scanf("%c",&ch);    /* */
    while(ch != '#')    /* */
    {
        if(ch >= '0' && ch <= '9')
        {
            /* */
            count = ch-'0'+1;    /* */
            scanf("%c",&nch);    /* */
            for(k=0;k<count;k++)    /* */
                printf("%c",nch);
        }
        else
            printf("%c",ch);    /* */
        printf(" ");            /* */
        scanf("%c",&ch);        /* */
    }
        printf("#\n");        
}最后的printf("#\n");为什么不执行?帮忙看看,谢谢
2014-08-17 08:33
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:3 
回复 6 楼 aqwszddd
输入的时候输入两个#试试。 在只输入一个#的情况下,while还在继续等待你的输入,循环并没有结束。

如果只输入一个#的话,在程序执行的时候,你可以发现,光标总是在新的一行的第二个字符的位置闪烁,前面有一个空格存在。

代码测试环境:  WinXP+C-Free5.0.
2014-08-17 11:53
步向巅峰
Rank: 5Rank: 5
来 自:河南
等 级:贵宾
威 望:17
帖 子:110
专家分:371
注 册:2013-4-26
收藏
得分:3 
scanf("%3d%3d%3d%3d",&a,&b,&c,&d);
为什么我输入  1234 5678 1 2
输出的结果是  a=123,b=4,c=567,d=8

我解释一下:
scanf是格式化输入,一般情况下遇到'\0'或'\n'结束
第一个%3d接收1234中的的前三位,则a=123
第二个%3d接收接下来的3位,不过接下来的三位中有空格,遇空格结束,于是b=4
第三个%3d开始接收空格后接下来的3位,则c=567
第四个%3d像第二个一样,遇空格结束,于是d=8
到此时,4个%3d全部接收到值,输出结束,后面的1 2自然无法输出
2014-08-17 12:19
aqwszddd
Rank: 1
等 级:新手上路
帖 子:23
专家分:9
注 册:2014-1-15
收藏
得分:0 
回复 7 楼 vvvcuu
谢谢,我想问问在vc++6.0能用gotoxy函数吗?

#include <stdio.h>
#include <conio.h>
void main(void)
{
    int i,j,x,y;
    clrscr();
    printf("\n\n        * * * 乘法口诀表 * * * \n\n");
    x=9;
    y=5;
    for(i=1;i<=9;i++)
    {
        gotoxy(x,y);
        printf("%2d ",i);
        x+=3;
    }
    x=7;
    y=6;
    for(i=1;i<=9;i++)
    {
        gotoxy(x,y);
        printf("%2d ",i);
        y++;
    }
    x=9;
    y= 6;
    for(i=1;i<=9;i++)
    {
        for(j=1;j<=9;j++)
        {
            gotoxy(x,y);
            printf("%2d ",i*j);
            y++;
        }
        y-=9;
        x+=3;
    }
    printf("\n\n");
}
编辑无错
运行报错
2014-08-17 18:56
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
回复 9 楼 aqwszddd
我的电脑没有装VC6.0。所以,对你提出的问题帮不了你。gotoxy()是移动光标的函数,大部分情况下使用前最好是知道屏幕的分辨率好一些。而VC6是否提供此函数就不清楚了。如果安装的是标准版的话,可以查阅一下帮助文档或者MSDN。

我仅仅是个新手,用的是C-Free。

代码测试环境:  WinXP+C-Free5.0.
2014-08-17 22:47
快速回复:关于 scanf 的入门问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018398 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved