程序要求输出指定数的倍数,以下是设计函数的部分代码,卡在了输入因子的部分,现在的while循环只能排除掉字符和负数,无法排除掉小数和数字字符同时出现的情况,运行如下图所示,请问该如何修改?希望输入因子只能是整数。
void isBeishu() //输出指定数的倍数的函数
{
int k;
cout << "输入因子:";
cin >> k;
while(cin.fail() || k != (int)k || !(k>0))
{
cin.clear();
cin.ignore(100,'\n');
cout << "你只能输入一个大于0的整数。" << endl;
cout << "请输入因子:";
cin >> k;
}
while (1) {
cin>>k;
if (cin.fail()) {
cin.ignore();
cin.clear();
continue;
} else break;
}
#include <stdio.h>
int main() {
int k;
char ln[80],c;
while (1) {
printf("Input a integer:");fflush(stdout);
rewind(stdin);
fgets(ln,80,stdin);
if (2==sscanf(ln,"%d%c",&k,&c) && c=='\n') {
printf("%d\n",k);
break;
} else {
printf("Format error!\n");
}
}
return 0;
}