c语言pat基础题改错8.6-1L1028

img

img


我的代码出现问题,本题希望可以得到大家的指导,谢谢你的帮助!

供参考:

#include <stdio.h>
int isprime(int n)
{
    int i;
    if (n < 4)  return n > 1;
    for (i = 2; i * i <= n; i++)
        if (n % i == 0) return 0;
    return 1;
}
int main()
{
    int n, num;
    scanf("%d", &n);
    while (n--){
        scanf("%d", &num);
        if (isprime(num))
            printf("Yes");
        else
            printf("No");
        if (n) printf("\n");
    }
    return 0;
}

【相关推荐】



  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7551547
  • 这篇博客你也可以参考下:PAT C语言 1031 查验身份证 (15 分) 一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:
  • 除此之外, 这篇博客: 海南热带海洋学院18级C语言期末考试PAT编程题中的 输出样例 3: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
    0
    

    思路:很简单的方法是用if语句单个判断,需要注意的是要题中给的是直径不是半径,而题中要求输入的数是半径。

    参考代码:

    #include <stdio.h>
    
    int main()
    {
    	int length; //距离圆心的距离
    	int d=(155500-59500)/6; //1~6环的等距(在判断时要除以2)
    	scanf("%d",&length);
    	if(length>=0&&length<=11500/2)	//10环,判断时记得除以2
    		printf("10\n");
    	else if(length>11500/2&&length<=27500/2)	//9话
    		printf("9\n");
    	else if(length>27500/2&&length<=43500/2)	//8环
    		printf("8\n");
    	else if(length>43500/2&&length<=59500/2)	//7环
    		printf("7\n");
    	else if(length>59500/2&&length<=(59500+d)/2)	//6环
    		printf("6\n");
    	else if(length>(59500+d)/2&&length<=(59500+2*d)/2)	//5环
    		printf("5\n");
    	else if(length>(59500+2*d)/2&&length<=(59500+3*d)/2)	//4环
    		printf("4\n");
    	else if(length>(59500+3*d)/2&&length<=(59500+4*d)/2)	//3环
    		printf("3\n");
    	else if(length>(59500+4*d)/2&&length<=(59500+5*d)/2)	//2环
    		printf("2\n");
    	else if(length>(59500+5*d)/2&&length<=(59500+6*d)/2)	//1环
    		printf("1\n");
    	else	//脱靶
    		printf("0\n");
    	return 0;
    }
    


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^