求解一道C语言基础题?
我想让用户输入整数,怎样防止用户不小心输入字符导致的程序错误?例如下面的代码,我输入字符“a”就会出现死循环,怎样解决?#include<stdio.h>intmain(...
我想让用户输入整数,怎样防止用户不小心输入字符导致的程序错误?例如下面的代码,我输入字符“a”就会出现死循环,怎样解决?
#include <stdio.h>
int main() {
int a = 0; // 素数的个数
int num = -1; // 输入的整数
while (num > 32767 || num <= 0)
{
printf("请输入大于0且小于等于32767的整数n:");
scanf("%d", &num);
if (num > 0 && num <= 32767) break;
}
for (int i = 2; i < num; i++) {
if (num % i == 0) {
a++; // 素数个数加1
}
}
if (a == 0) {
printf("%d是素数。\n", num);
}
else {
printf("%d不是素数。\n", num);
}
return 0;
} 展开
#include <stdio.h>
int main() {
int a = 0; // 素数的个数
int num = -1; // 输入的整数
while (num > 32767 || num <= 0)
{
printf("请输入大于0且小于等于32767的整数n:");
scanf("%d", &num);
if (num > 0 && num <= 32767) break;
}
for (int i = 2; i < num; i++) {
if (num % i == 0) {
a++; // 素数个数加1
}
}
if (a == 0) {
printf("%d是素数。\n", num);
}
else {
printf("%d不是素数。\n", num);
}
return 0;
} 展开
4个回答
展开全部
#include <stdio.h>
#include <string.h>
int exam(char *s){
int y=strlen(s),i,sum=0,n,m,k;
for(i=0;i<y;i++) {
if(y>5) return -1;
if(s[i]<'0'||s[i]>'9') return -1;
}
i=y-1;
m=0;
do{
n=s[i]-'0';
k=m;
while(k){n=n*10;k--;}
sum+=n;
i--;
m++;
}while(i>=0);
return sum;
}
int main() {
int a = 0; // 素数的个数
int num = -1; // 输入的整数
char s[30];
while (num<0)
{
printf("请输入大于0且小于等于32767的整数n:");
gets(s);
num=exam(s);
//if (num > 0 && num <= 32767) break;
}
for (int i = 2; i < num; i++) {
if (num % i == 0) {
a++; // 素数个数加1
}
}
if (a == 0) {
printf("%d是素数。\n", num);
}
else {
printf("%d不是素数。\n", num);
}
return 0;
}
随便输入吧!
#include <string.h>
int exam(char *s){
int y=strlen(s),i,sum=0,n,m,k;
for(i=0;i<y;i++) {
if(y>5) return -1;
if(s[i]<'0'||s[i]>'9') return -1;
}
i=y-1;
m=0;
do{
n=s[i]-'0';
k=m;
while(k){n=n*10;k--;}
sum+=n;
i--;
m++;
}while(i>=0);
return sum;
}
int main() {
int a = 0; // 素数的个数
int num = -1; // 输入的整数
char s[30];
while (num<0)
{
printf("请输入大于0且小于等于32767的整数n:");
gets(s);
num=exam(s);
//if (num > 0 && num <= 32767) break;
}
for (int i = 2; i < num; i++) {
if (num % i == 0) {
a++; // 素数个数加1
}
}
if (a == 0) {
printf("%d是素数。\n", num);
}
else {
printf("%d不是素数。\n", num);
}
return 0;
}
随便输入吧!
展开全部
判断一下输入的值,如果是数字再执行下面的语句块。不是数字就输出《输入为错误字符》
更多追问追答
追问
那要怎么判断呀?
追答
int ret = scanf("%d",&digit);
if(0 == ret)
{
printf("输入异常字符\n");
}
else
{
printf("输入整数\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个时候你不能使用scanf直接把用户的输入给到num,你可以改成先把输入放入字符串数组,再判断数字,简单实现如下
char a[100];
gets(a);
int isInputAllNum = 0;
int num = 0;
for(int i=0;i<100;i++)
{
if(a[i]=='\0')
{ break; }
if(a[i]<'0' || a[i]>'9')
{ isInputAllNum+=1;
break; }
num = num * 10 + a[i] - '0';
}
if(isInputAllNum>0)
{ printf("请输入数字\n"); }
else { printf("%d",num); }
char a[100];
gets(a);
int isInputAllNum = 0;
int num = 0;
for(int i=0;i<100;i++)
{
if(a[i]=='\0')
{ break; }
if(a[i]<'0' || a[i]>'9')
{ isInputAllNum+=1;
break; }
num = num * 10 + a[i] - '0';
}
if(isInputAllNum>0)
{ printf("请输入数字\n"); }
else { printf("%d",num); }
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询