C primer plus 第六版 第七章 第九题 编程练习答案

Github 地址:这里这里φ(>ω<*)

/*   

      题目要求:

          只接受正整数的输入,然后显示所有小于或等于该数的素数。 
          
          Maybe it have warning in your IDE but it still work . It ok , my dear ~.
*/ 


#define _CRT_SECURE_NO_WARNINGS  // 别诧异。我用的是VS2017社区版。貌似VS对于C标准不是很友好。


#include<stdio.h>
 int main(void)
{
int i=0;//循环用。 
int j=0;//循环用。 该变量用于自增计算 (i的)当前数 是否被 变量 j (自增前)的值整除。 

int k=0;//循环用。 该变量用于计数一个数被 j (自增前的值)整除的次数。用于检测一个数是否为素数。
        //即,如果 k 的值为3,则为 一个数的因数除了 1 和 当前数 本身以外,还有一个能整除当前数的因数。故为合数。 

// ↑ 详见 45-14 for循环。 

int value=0;//保存输入正整数。
 
printf("Please input your value:");
    
    while( scanf("%d.\n",&i) )
{
switch( i>0 )
{
case 1: value=i; 
        printf("Your input is %d.\n", value);
        break;
        
case 0: printf("Worring ! Your input can not reading to the program. Please Try again !\n");
        printf("Please input your value:");
continue;

default: printf("The program failed to run ! Please close the program !\n");
         break;      
}
        break;


printf("Now, deal with this value:\n");

for( i=1; i<value; i++)
{

for( j=1,k=0; j<=i; j++)
{
//该循环用于检测 当前数(i) 是否为素数。  
if( i%j == 0 )
{
k++; //如果 k 的值为2,则当前数(i)的因数为 1 和数本身 ,故为素数。其他为合数。 

else
{
; //空语句。不知道写什么。。。。 
}
}
    
    switch( k )
    {
case 2: //验证结果为素数。输出。
        printf("The value is %d.\n", i);
        continue;
        
default: //其他结果为合数吧。素数的因数只有 1 和本身。 故为2。 
        continue;       
    }
  
}

printf("The input is over !\n");
printf("Bye !\n");


getchar();
getchar();

return 0;

}

猜你喜欢

转载自blog.csdn.net/lth_1571138383/article/details/80482173