#include
#include
int exam(char *s){
int y=strlen(s),i,sum=0,n,m,k;
for(i=0;i
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;
}
随便输入吧!
判断一下输入的值,如果是数字再执行下面的语句块。不是数字就输出《输入为错误字符》
好好照顾自己女朋友
这个时候你不能使用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); }