采用scanf判断数据输入的合法性时,当前面的是数字后面是字符时能够通过
//切削速度计算工具//本程序由丁其编写//date:2012-01-11 #include<stdio.h>#include<conio.h>main(){ float d,v; int s,i=1; while(i) { printf("请输入工件的直径,单位毫米:\a"); if(scanf("%f",&d) && d >= 0) //判断数据输入的合法性 { i = 0; //数据输入正确,赋值为0,退出循环 fflush(stdin); } else { printf("\n"); printf("你输入的直径错误,请重新输入!\n\a"); printf("\n"); fflush(stdin); } } printf("\n"); i = 1; //循环开关重新赋值为1 while(i) { printf("请输入主轴转速:\a"); if(scanf("%d",&s) && s >= 0) //判断数据输入的合法性 { i = 0; //数据输入正确,赋值为0,退出循环 fflush(stdin); } else { printf("\n"); printf("你输入的转速错误,请重新输入!\n\a"); printf("\n"); fflush(stdin); } } printf("\n"); printf("直径D=%0.3f 转速S=%d 切削速度V=%0.2f米/分\n\a",d,s,v=(3.14*d*s/1000)); _getch(); return(0);}