最近遇到一个编程问题,想了好久,把它整理为一个c语言的题目考考大家,先不要觉得这个题目很简单,不看答案做着看看吧。

    题目:用c实现,以空格为分割,以回车为结束标记,输入一串数字到一个int数组中。

    例如

    int data[40];

    输入: 11 12 22 33 44 55 66 77 88 99(回车)

    结果: 数组data的第0~9号元素依次被赋值为上述值,打印出来,然后程序正常退出。

    难点分析

    当然,获取int型数字的输入不难,scanf("%d",&data[i])即可,关键是怎么样判定用户输入的是数字、空格还是回车,以int型来获取输入,则只能得到int值,以char型获取输入则只能得到char值,不能得到int数据。

----------------------------------------------------------------------------------------------

    【答案】:

    完整的c语言代码如下所示:

  1. #include <stdio.h> 
  2.  
  3. void main() 
  4.     int data[40]; 
  5.     int i = 0; 
  6.     int pos = 0; 
  7.  
  8.     printf("please input a series num:\n"); 
  9.  
  10.     while(1) 
  11.     { 
  12.         scanf("%d",&data[pos++] ); 
  13.         if( getchar() == '\n'
  14.         { 
  15.             break
  16.         } 
  17.     } 
  18.  
  19.     for( i=0 ; i<pos; i++) 
  20.     { 
  21.         printf("%d ",data[i]); 
  22.     } 
  23.  
  24.     printf("\n"); 

 

    你能说出其中的原理吗?你有更好地解决方案吗?欢迎留言交流。