编程题必须做到判断清晰,程序健壮
样例输入: 100
样例输出: 100 = 2 * 2 * 5 * 5
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
/**程序窗口*/
void winos();
//判断输入是否合法(范围 非数字判断 )
void User_Input(int* a);
int main()
{
winos(); //程序窗口
int n, i; // 接收用户输入 ,
while (1)
{
//输入判断,判断是不是数字,判断输入的数字是不是不是题目要求的
printf("请输入一个数字\n");
while (1)
{
User_Input(&n); //用户输入
if (n < 4 || n > 10000)
{
printf("输入错误,请重新输入\n");
}
else
{
break;
}
}
//printf("我出来了");
//质数从2开始
i = 2;
printf("%d = ", n);
//循环用户输入的数字
while (i < n)
{
//这个数能被i整除
if (n % i == 0)
{
printf("%d * ", i);//那么输出i
n = n / i;//然后获得下一次数字 继续判断
}
//如果不能整除 i+1
else
{
i++;
}
}
printf("%d\n", n);
printf("还要继续玩吗? (任意键继续玩,按n退出程序)\n");
char ch = ' ';
if (ch = _getch(), ch == 'n' || ch == 'N')
{
break;
}
}
return 0;
}
/**程序窗口*/
void winos()
{
system("title 计算张三活了多少天");//设置CMD窗口 标题
system("color 4E");
system("mode con cols=85 lines=65");//设置窗口大小
printf("\t\t\t※当 前 时 间※\n\n");
printf("\t\t\t");
system("date /T");
printf("\t\t\t");
system("TIME /T");
}
判断输入是否合法(范围 非数字判断 )
void User_Input(int* a)
{
do {
//如果输入函数返回值是1,代表输入正确 跳出循环
if (scanf("%d", a) == 1)
{
break;
}
//如果返回值不是1,执行下面的,
char choice;
//循环字符缓冲区内容
while ((choice = getchar()) != '\n' && choice != EOF);
printf("输入的不是数字!请重新输入:\n");
} while (scanf("%d", a) != 1);
}