none
C语言中scanf的疑问 RRS feed

  • 问题

  • 首先 直接上一段简单代码如下:

    这段代码只是一部分,没有什么实际的意义,但是我遇到一个问题,

    #include<stdio.h> int main(void) { int num1=0; char num2=0; start: num1=0; num2=0; printf("1,input:"); scanf("%d",&num1); /*假设我这里输入1*/ switch(num1) { case 1: printf("2,input:"); scanf("%c",&num2); /*程序执行到这里的时候直接跳过下面第二个嵌套的switch*/

    /*但是我如果在这里再插入第二个scanf("%c",&num2);那么就会让我键盘输入,从而可以执行到下面的switch*/ switch(num2) /*这个switch不会被执行*/ { case 'y': goto start; break; } break; } system("PAUSE"); /*程序直接跳到这里*/ return 0; }

    对于这个问题我做了几个实验,就是不使用char,使用int,代码如下:

    #include<stdio.h>
    
    int main(void)
    {
    	int num1=0;
           int num2=0;
    
    start:
    	num1=0;
    	num2=0;
    	printf("1,input:");
    	scanf("%d",&num1);
    	switch(num1)
    	{
    	case 1:
    		printf("2,input:");
    	      scanf("%d",&num2);  /*使用int就可以让用户输入,从而执行到下面的switch*/
    		switch(num2)
    		{
    		case 1:
    			goto start;
    			break;
    		}
    		break;
    	}
    	system("PAUSE");
    	return 0;
    }

    不知道这个是为什么?为什么使用char不会让用户键盘输入就直接结束程序了,但是使用两个并列的scanf又可以让用户输入,而使用int类型的时候只需要一个scanf就能让用户输入?

    还请各位老师不吝赐教,谢谢!

    表达的不知道清不清楚..望见谅。

    2013年6月1日 10:16

答案

全部回复