永发信息网

键盘输入n,判断n是否是数字,如果是字母等,输出提示要求再输入,直到n全为数字,再计算1/(n+5)的结果

答案:2  悬赏:40  手机版
解决时间 2021-11-13 10:19
  • 提问者网友:人傍凄凉立暮秋
  • 2021-11-12 14:11
键盘输入n,判断n是否是数字,如果是字母等,输出提示要求再输入,直到n全为数字,再计算1/(n+5)的结果
最佳答案
  • 五星知识达人网友:患得患失的劫
  • 2021-11-12 14:57

#include
#include

int main() {
char s[20];
int num = 0,len,i;
while(1) {
printf("请输入一个整数 : ");
gets(s);
len = strlen(s);
for(i = len - 1; i >= 0; --i) {
if((s[i] < '0') || (s[i] > '9')) break;
num = 10 * num + s[i] - '0';
}
if(i > 0) printf("输入错误,重新输入。\n");
else break;
}
printf("1/(%d + 5) = %lf\n",num,1.0/(num + 5.0));
return 0;
}追问为什么当输入01时却是将他当10计算呢,请问能否解答一下,还有一点就是每次提示错误输入时,要求重新输入,应当将num重新至0,不然会出现错误结果,第二个问题我已自己解决,就是前面那个问题不懂追答为了避免非规范的整数得到正确的结果,还需强壮代码。
#include
#include

int main() {
char s[20];
int num = 0,n,len,i;
while(1) {
printf("请输入一个整数 : ");
gets(s);
len = strlen(s);
for(n = 0; s[n] == '0'; ++n);
for(i = len - 1; i >= n; --i) {
if((s[i] < '0') || (s[i] > '9')) break;
num = 10 * num + s[i] - '0';
}
if(i > n) printf("输入错误,重新输入。\n");
else break;
}
printf("1/(%d + 5) = %lf\n",num,1.0/(num + 5.0));
return 0;
}
全部回答
  • 1楼网友:长青诗
  • 2021-11-12 16:10
#include
// #include 一下注释的用到
#include
int main()
{
char n[30];
int i,j,leap=1,num;
while(leap)
{
num = 0;
gets(n); //读取行字符,或用scanf("%s",n); 不过不能有空格,tab.
for( i = 0; i < strlen(n); i++) //strlen函数是返回字符串元素个数
if(!( n[i]>='0' && n[i] <= '9')) break; //遇到不是数字就跳出了,在循环就是了
if(i>=strlen(n))
{
for(i = 0; i < strlen(n); i++)
num=num*10+n[i]-'0';
leap = 0;
}
if(leap == 0)
printf("%.2f\n",1.0/((float)n+5));
}
return 0;
}
最后说几句,程序里可以用库函数就可以搞定了,不过我不知道你知不知道,就不写了,特别一个好用的用itoa(参数)函数,直接把字符串变为数字,另外还有一个 sscanf() 这个也同样可以实现追问怎么又错呢。
显示:Error executing cl.exe.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯