首页 > 代码库 > scanf后加空格,的后果

scanf后加空格,的后果

最近练习C语言函数,用函数进行选择排序

 1 #include <stdio.h> 2  3 int main() 4 { 5     void sort(int array[],int n); 6     int i,slist[10]; 7  8     for (i = 0; i<10 ;i++) 9     {10         scanf("%d ",&slist[i]);11     }12     sort(slist,10);13     printf("The sorted array:\n");14     for(i= 0;i <10;i++)15     {16         printf("%3d",slist[i]);17     }18     printf("\n");19     return (0) ;20  } 21  22  void sort(int array[],int n)23  {24      int i,j,k,m;25      for(i = 0;i < n-1;i++)26      {27          k = i;28          for(j = i+1;j < n; j++)29          {30              if(array[j]<array[k])31              {32                  k = j;33             }34          }35         m = array[i];36          array[i] = array[k];37          array[k] = m;38      }39  }

技术分享

调试运行后,输入完数组后总要再输入一个数才能显示结果。在网上找到选择排序的方法,发现代码内容一样就是找不到错误。经过多番询问,得知scanf %d后不需要加空格

 

#include <stdio.h>int main(){    void sort(int array[],int n);    int i,slist[10];    for (i = 0; i<10 ;i++)    {        scanf("%d",&slist[i]);    }    sort(slist,10);    printf("The sorted array:\n");    for(i= 0;i <10;i++)    {        printf("%3d",slist[i]);    }    printf("\n");    return (0) ; }   void sort(int array[],int n) {     int i,j,k,m;     for(i = 0;i < n-1;i++)     {         k = i;         for(j = i+1;j < n; j++)         {             if(array[j]<array[k])             {                 k = j;            }         }        m = array[i];         array[i] = array[k];         array[k] = m;     } }

去掉scanf 里面的空格

技术分享

scanf后加空格,的后果