| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 647 人关注过本帖
标题:为什么scanf在输入m的地方没用?
只看楼主 加入收藏
sunlee
Rank: 2
等 级:论坛游民
帖 子:77
专家分:15
注 册:2011-10-14
结帖率:70.59%
收藏
已结贴  问题点数:10 回复次数:8 
为什么scanf在输入m的地方没用?
#include<stdio.h>
#include"conio.h"
void move(int *fir,int m,int n);
main(){
     int a[20],m,n=0,*p=a;//写出所有的数组元素并在此过程中记录它的数据
     printf("please input all the numbers and end at $:\n");
     while(scanf("%d",p)==1)
     {
         p++;n++;//在这个过程中n为这些数组的数目 此时p在溢出的地方
     }
     p=a;
     printf("please input the numbers in the front array:m=");
     scanf("%d",&m);
     move(p,m,n);
     for(;p<a+n;p++){
         printf("%d\t",*p);
     }
}

    void move(int *fir,int m,int n){
        int i,j,value;
        for(i=0;i<m;i++)//外循环用于反应m个值 的移动 i也反映了向前所移位置的首位  
          {value=fir[n-m];
          for(j=n-m-1;j>=i;j--)
          fir[j+1]=fir[j];
          fir[i]=value;
          }
    }是不是应该在scanf前加一个什么,来屏蔽那个回车键
搜索更多相关主题的帖子: 记录 include numbers please 元素 
2011-11-09 15:16
sunlee
Rank: 2
等 级:论坛游民
帖 子:77
专家分:15
注 册:2011-10-14
收藏
得分:0 
急求啊,谁说一下啊!!!!
2011-11-09 15:24
sunlee
Rank: 2
等 级:论坛游民
帖 子:77
专家分:15
注 册:2011-10-14
收藏
得分:0 
是不是那个scanf==1是下面的受到影响
2011-11-09 15:28
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:5 
你在scanf("%d",&m);前加下面语句试试。
fflush(stdin) ;
2011-11-09 15:35
sunlee
Rank: 2
等 级:论坛游民
帖 子:77
专家分:15
注 册:2011-10-14
收藏
得分:0 
你是说就是那个scanf出了问题le

2011-11-09 15:36
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:0 
应是输入缓存中还有字符造成的,只是猜测,我也只是新人,还是等高人解答。
2011-11-09 15:40
sunlee
Rank: 2
等 级:论坛游民
帖 子:77
专家分:15
注 册:2011-10-14
收藏
得分:0 
这是为甚?为什么它会输入的是个回车,而我们平时不大关注那个啊
2011-11-09 15:40
sunlee
Rank: 2
等 级:论坛游民
帖 子:77
专家分:15
注 册:2011-10-14
收藏
得分:0 
谁能帮我看一下为甚麽要用那个fflish呢?求详细答案
2011-11-10 22:56
liao06550107
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:2
帖 子:111
专家分:696
注 册:2011-10-2
收藏
得分:5 
 
程序代码:
  #include <stdio.h>   
int main()   
{   
    int a;
  char c;
    do   
        {   
             scanf("%d",&a);

           scanf("%c",&c);

           printf("a=%d c=%c\n",a,c);/*printf("c=%d\n",c);*/   
        }while(c!='N');  
    return 0; 
}   
/*scanf("%c",&c);这句不能正常接收字符,什么原因呢?我们用printf("c=%d\n",c);将C用int表示出来,启用printf("c=%d\n",c);这一句,看看scanf()函数赋给C到底是什么,结果是c=10 ,ASCII值为10是什么?换行即\n.对了,我们每击打一下"Enter"键,向键盘缓冲区发去一个“回车”(\r),一个“换行"(\n),在这里\r被scanf()函数处理掉了(姑且这么认为吧^_^),而\n被scanf()函数“错误”地赋给了c.解决办法:可以在两个scanf()函数之后加个fflush(stdin);,还有加getch() , getchar()也可以,但是要视具体scanf()语句加那个,这里就不分析了,读者自己去摸索吧。但是加fflush(stdin);不管什么情况都可行。   (   函数名: fflush   功 能: 清除一个流   用 法: int fflush(FILE *stream);  */

#include <stdio.h>  
 int main()   
{      
       int a;
     char c;
     do   
           {   
                scanf("%d",&a);
              fflush(stdin);

              scanf("%c",&c);
              fflush(stdin);
              printf("a=%d c=%c\n",a,c);

           }while(c!='N');
        return 0;
} 


[ 本帖最后由 liao06550107 于 2011-11-10 23:47 编辑 ]

听不同的音乐,看不同的书,游历不同的城市,邂逅不同的人,走的多了,站的高了,自然就看的远了。
2011-11-10 23:44
快速回复:为什么scanf在输入m的地方没用?
数据加载中...
 
   



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

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