C语言练习题整理

一、判断质数(素数)

1. 判断质数

2. 打印质数

3. 小于指定值的质数

4. 指定范围内的质数

二、判断回文数

​1. 五位质数回文数

2. 判断回文数(十进制)

3. 判断回文数(二进制)

三、判断闰年


一、判断质数(素数)

1. 判断质数

对于一个大于 1 的整数,如果除了 1 和它本身,它不再被其它正整数整除,那么我们说它是一个质数。

对于给定的一个大于 1 的正整数 N(你可以认为测评机给出的 N 均小于 1000),判断它是否是一个质数。


输入格式

测评机会反复运行你的程序。每次程序运行时,你的程序仅需输入一个符合描述的正整数。

输出格式

输出也仅为一行,如果判题机在输入中给出的数字为质数,那么请输出YES;否则,请输出NO

样例输入1

3

样例输出1

YES

样例输入2

9

样例输出2

NO

代码:

#include <stdio.h>
int main(){int number;scanf("%d", &number);    for(int i = 2; i < number; ++i){if(number % i == 0){printf("NO");return 0;}}printf("YES");return 0;
}

2. 打印质数

判断一个数是不是素数,是素数返回1;不是素数返回0


代码: 

#include <stdio.h>
#include <math.h>int is_prime(int n){int j = 0;for (j = 2; j <= sqrt(n); j++){if (n % j == 0)return 0;}return 1;
}int main(){//打印 1-200 之间的素数int i = 0;for (i = 1; i <= 200; i++){//判断i是否为素数if (is_prime(i) == 1)printf("%d ", i);}return 0;
}

3. 小于指定值的质数

​ 请对于给定的一个大于 1 的正整数 N(你可以认为测评机给出的 N 均小于1000),按从小到大的顺序输出所有小于等于它的质数。


输入格式

测评机会反复运行你的程序。每次程序运行时,你的程序仅需输入一个符合描述的正整数。

输出格式

请按从小到大的顺序输出所有小于等于 N 的质数,一个数单独占一行。


样例输入1

5 

样例输出1

2
3
5

代码:

#include <stdio.h>
int main(){int N;scanf_s("%d", &N);printf("2\n");int digit;int divisor;for (digit = 3; digit <= N; digit += 2) {for (divisor = 3; divisor < digit; divisor += 2) {if (digit % divisor == 0) {break;}}if (divisor == digit) {printf("%d\n", digit);}}return 0;
}

4. 指定范围内的质数

​ 请对于给定的一个大于 1 的正整数 N(你可以认为测评机给出的 N 均小于等于 ),和一个大于 1 的正整数 M(你可以认为测评机给出的 M 均小于等于  ), N 一定大于 M,请按从小到大的顺序输出所有小于等于 N 且大于等于 M​ 的质数。


输入格式

​ 测评机会反复运行你的程序。每次程序运行时,你的程序仅需输入两个正整数,分别为上述描述中的 N 和 M,两个正整数之间用一个空格分隔。

输出格式

​ 请按从小到大的顺序输出所有小于等于 N 且大于等于 M 的质数,一个数单独占一行。


样例输入1

5 3

样例输出1

3
5

样例输入2

30 5

样例输出2

5
7
11
13
17
19
23
29

代码:

#include <stdio.h>int num[1000005];void init() {for (int i = 2 ; i * i <= 1000005; i++) {if (num[i] == 0) {for (int j = 2; i * j <= 1000005; j++) {num[i * j] = 1;}}}
}int main() {init();int n, m;scanf("%d %d",&n,&m);for (int i = m; i <= n; i++) {if (num[i] == 0) {printf("%d\n",i);}}return 0;
}

二、判断回文数

​1. 五位质数回文数

质数:除了 1 和它本身,没有其他因数。

​ 回文数:正着看和反着看完全一样的数,如 12321,59595。

​ 给定两个五位正整数 a,b,找出这两个数之间(含)所有既是质数又是回文数的数。


输入

​ 输入两个五位正整数 a,b。(10000≤a,b≤99999)

输出

​输出一行,为从a到b之间所有的质数回文数,两个数字之间用空格隔开,最后一个数后没有空格。


样例输入

10000 10600

样例输出

10301 10501

代码:

#include <stdio.h>
int is_prime(int n){for (int i = 2; i * i <= n; i++){if (n % i == 0)  return 0;}return 1;
}int is_back(int n){if (n / 10000 == n % 10 && n / 1000 % 10 == n / 10 % 10) {return 1;}else {return 0;}
}int main(){int a, b;scanf("%d %d", &a, &b);int flag = 0;for (int i = a; i <= b; i++){if (is_prime(i) && is_back(i)) {if (flag == 1) {printf(" ");}printf("%d", i);flag = 1;}}return 0;
}

2. 判断回文数(十进制)

代码:

#include <stdio.h>
int check(int n) {if (n < 0) return 0;int temp = 0, x = n;while (x) {temp = temp * 10 + x % 10;x /= 10;}return temp == n;
}
int main()
{int n, digit = 0, x;scanf("%d", &n);x = n;printf("%d %s\n", x, check(x) ? "is reverse num" : "is not reverse num");//check可以用来判断是否是回文数字return 0;
}

3. 判断回文数(二进制)

代码:

#include <stdio.h>
int check(int n) {if (n < 0) return 0;int temp = 0, x = n;while (x) {temp = temp * 2 + x % 2;x /= 2;}return temp == n;
}
int main()
{int n, digit = 0, x;scanf("%d", &n);x = n;printf("%d %s\n", x, check(x) ? "is reverse num" : "is not reverse num");return 0;
}

三、判断闰年

对于不大于3000年的年份,闰年遵循如下规律:

  • 非整百年,能被4整除的为闰年

  • 整百年,能被400整除的是闰年

判断一年是不是闰年(1000年-2000年),如果是闰年就返回1,如果不是闰年就返回0。


代码:

#include <stdio.h>
int is_leap_year(y)
{if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))return 1;elsereturn 0;
}int main(){int year = 0;for (year = 1000; year < 2000; year++){//判断year是否为闰年if (is_leap_year(year) == 1){printf("%d ", year);}}return 0;
}

【C语言】循环结构常见问题1相关推荐

  1. c语言中循环结构的作用,C语言循环结构知识点

    C语言循环结构知识点 引导语:循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构.以下是百分网小编分享给大家的C语言循环结构知识点,欢迎 ...

  2. 循环结构作业c语言,c语言循环结构练习题带答案

    c语言循环结构练习题带答案 第5章 循环结构程序设计 5.1 基本知识点 Øwhile语句的使用格式和注意事项 Ødo-while语句的使用格式和注意事项 Øfor语句的使用格式和注意事项 Øbrea ...

  3. 循环结构作业c语言,C语言循环结构练习题带答案(最新整理)

    <C语言循环结构练习题带答案(最新整理)>由会员分享,可在线阅读,更多相关<C语言循环结构练习题带答案(最新整理)(10页珍藏版)>请在人人文库网上搜索. 1.第 5 章循环结 ...

  4. 一起学习C语言:C语言循环结构(三)

    上一篇 <一起学习C语言:C语言循环结构(二)> 中,我们了解了while.do-while语法和continue语句的应用场景.本篇文章中,我们分析循环结构嵌套使用,并通过几个示例分析c ...

  5. 一起学习C语言:C语言循环结构(二)

    前言: 前一段时间发表的<["天才"必经之路]>文章非常热门,虽然我知道它会是一篇成功的文章,但,它的火爆程度还是超出了我的预期.前几日,我写了这个系列的第二篇文章,文 ...

  6. 一起学习C语言:C语言循环结构(一)

    上一章 <一起学习C语言:C语言基本语法> 系列内容中,我们了解了if语句.switch语句的使用方式以及不同运算符的优先级等内容.本章节,我们学习C语言循环结构用法. 章节预览: 1. ...

  7. c语言构成循环结构的是,C语言循环结构选择题

    计算机二级的资料 C语言循环结构选择题 1.在C语言中,下列说明正确的是 A) 不能使用 do-while构成的循环 B) do-while构成的循环必须用break才能退出 C) do-while构 ...

  8. 加法接力赛C语言算法,C语言循环结构

    <C语言循环结构>由会员分享,可在线阅读,更多相关<C语言循环结构(47页珍藏版)>请在人人文库网上搜索. 1.UML和需求建模,第六章,循环控制,UML和需求建模,主要内容, ...

  9. c语言循环上机题,c语言循环结构上机习题

    c语言循环结构上机习题 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所得收入 ...

  10. c语言break习题,C语言循环结构练习题.doc

    C语言循环结构练习题C语言循环结构练习题 第5章 循环结构程序设计 5.1 基本知识点 (while语句的使用格式和注意事项 (do-while语句的使用格式和注意事项 (for语句的使用格式和注意事 ...

最新文章

  1. java excel读取操作,Java读取Excel并操作
  2. 第九天2017/04/18(2、类的继承、面试题:继承访问修饰符、组合、static、构造、多态)
  3. axios的get与post
  4. linux给文件夹图标,linux – 如何在GNOME中以编程方式设置自定义文件夹图标?
  5. 前端学习(3325):Mdn说闭包
  6. Altium Designer画元器件封装三种方法
  7. python打包exe有什么用_Python 打包exe
  8. 微软发现已遭在野利用的 SolarWinds 新0day
  9. MUI框架开发HTML5手机APP(一)--搭建第一个手机APP(转)
  10. USB抓包工具Bus Hound
  11. mysql电商数据库设计文档_MySQL电商项目数据库设计及架构优化视频课程
  12. js植物大战僵尸实训1
  13. 一种基于HBase韵海量图片存储技术
  14. openh264限制slice/nal分片大小导致的编码数据错误
  15. 计算机怎么打出$符号,细说电脑上怎么打出特殊符号
  16. JAVA设计模式总结之六大设计原则(一)
  17. MIT5K数据集的使用
  18. 90后在校大学生开旅游公司创业
  19. 7.5 Java(农夫果园【完结篇】:一个农场,专门种植销售各类水果,在这个系统中需要描述下列水果葡萄、草莓、苹果)
  20. AP模式(路由器的几种模式)

热门文章

  1. 简单易懂的笔记本电脑一键安装win10系统教程
  2. ESP8266-SDK的3路PWM输出
  3. 小白知识之:画图软件中文字横横竖竖的奥秘
  4. DevExpress:可左右滑动的图片框ImageSlider
  5. 以色列初创企业Skyline AI获300万美元种子融资,红杉资本领投
  6. Java JSwww88xbocom17176934OOO-N 解析器
  7. php activedocument-printout(),php二种读取和创建word文档方法
  8. C语言怎么实现多个值输出?
  9. Word自动化处理相关知识
  10. Mac无法找到摄像头问题解决