初学者C语言进阶经典题(必刷)

devtools/2024/11/14 12:53:35/

复习算法设计与分析

T1孪生数(本质:((A因子之和)的因子之和)==A)(A的因子之和等于B,B的因子之和等于A)

给定搜索范围m和n,(1<=m<n<=20000),求指定范围内的孪生数。

#include<stdio.h>
void istwins(int m,int n)
{int i,j,s,a[20000]; //构造a[i]数组存放满足条件的相应的i的因子之和for(i=m;i<=n;i++)a[i]=0;for(i=m;i<=n;i++){s=0;             //i的因子之和sfor(j=1;j<i;j++)if(i%j==0) s+=j;if(s>=m&&s<=n&&s!=i) //判断因子之和是否在给定范围中a[i]=s;}for(i=m;i<=n;i++)if(i==a[a[i]]){printf("%d %d\n",i,a[i]);a[a[i]]=0;       //重点,避免重复比较和输出(请读者思考)}
}main()
{int n,m;scanf("%d%d",&m,&n);istwins(m,n);
}

运行结果

输入:100 300

输出:220 284

T2输出n阶螺旋阵

#include <stdio.h>
void spiralsquare(int n)
{int i,j,a[100][100],k=1;for(i=0;i<n/2;i++)           //i控制外层循环即全书{for(j=i;j<=n-2-i;j++)    //j控制行列变换,将每圈中一侧的数据存入数组中a[i][j]=k++;for(j=i;j<=n-2-i;j++)a[j][n-1-i]=k++;for(j=n-1-i;j>=i+1;j--)a[n-1-i][j]=k++;for(j=n-1-i;j>=i+1;j--)a[j][i]=k++;}if(n%2==1)   //若为奇数阶方阵,最中心数据通过下标给定{i=n/2;a[i][i]=n*n;}for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%3d",a[i][j]);printf("\n");}
}main()
{int n;scanf("%d",&n);spiralsquare(n);
}

 

T3输出1000至10000之内的可逆素数

#include <stdio.h>
#include <math.h>int reverse(int n) { // 反序函数int r = 0;while (n) {r = r * 10 + n % 10;n /= 10;}return r;
}int isPrime(int n) { // 判断素数函数if (n < 2) {return 0;}for (int i = 2; i <= sqrt(n); i++) {if (n % i == 0) {return 0;}}return 1;
}int main() {printf("1000到10000之间的可逆素数有:\n");for (int i = 1000; i <= 10000; i++) {if (isPrime(i) && isPrime(reverse(i))) {printf("%d ", i);}}printf("\n");return 0;
}

T4两个数只差为2的素数,称为孪生素数。试着输出5组孪生素数。

#include <stdio.h>
#include <stdbool.h>bool isPrime(int num) {if (num <= 1) {return false;}for (int i = 2; i * i <= num; i++) {if (num % i == 0) {return false;}}return true;
}int main() {int count = 0;int num = 3;while (count < 5) {if (isPrime(num) && isPrime(num + 2)) {printf("(%d, %d)\n", num, num + 2);count++;}num++;}return 0;
}

T5输出1000至10000之内的对称数,并输出对称数的个数(3种解法)

#include <stdio.h>
#include <string.h>int main()
{int count = 0;for(int i = 1000; i <= 10000; i++){char str[10];sprintf(str, "%d", i); // 将整数转换为字符串int len = strlen(str);int flag = 1;for(int j = 0; j < len/2; j++){if(str[j] != str[len-j-1]) // 判断是否对称{flag = 0;break;}}if(flag == 1) // 如果是对称数,则输出{printf("%d ", i);count++;}}printf("\n一共有%d个对称数\n", count);return 0;
}
#include <stdio.h>
#include <stdlib.h>int main()
{int count = 0;for (int i = 1000; i <= 10000; i++){int a = i % 10;     // 个位数int b = i / 10 % 10;    // 十位数int c = i / 100 % 10;   // 百位数int d = i / 1000;   // 千位数if (a == d && b == c){printf("%d ", i);count++;}}printf("\n对称数的个数为%d\n", count);return 0;
}
#include <stdio.h>
#include <stdlib.h>int main()
{int count = 0;for (int i = 1000; i <= 10000; i++){int x = i, y = 0;while (x > 0){y = y * 10 + x % 10;x /= 10;}if (y == i){printf("%d ", i);count++;}}printf("\n对称数的个数为%d\n", count);return 0;
}

未完待续......


http://www.ppmy.cn/devtools/22162.html

相关文章

Python小功能实现(链接下载图品并存储到EXCEL中)

import os import requests from openpyxl import Workbook from openpyxl.drawing.image import Image from concurrent.futures import ThreadPoolExecutor# 图片链接列表 image_urls ["https://uploads/file/20230205/f85Lpcv8PXrLAdmNUDE1Hh6xqkp0NHi2gSXeqyOb.png&q…

Unity 异常 bug

OverlapBoxNonAlloc 使用bug 环境&#xff1a; Unity2021.3.15 在测试场景中使用 OverlapBoxNonAlloc 测试检测没有问题 但是到了真实应用场景&#xff0c;使用 OverlapBoxNonAlloc 检测移动中的小怪 小怪碰撞体为&#xff1a;带有 Rigidbody 的Circle Collider 2D 就会出现异…

【数据库】MySQL数据表记录改操作

修改语句&#xff1a;作用修改记录里的部分值 一、修改单表记录 语法&#xff1a; update 表名 set 字段名1新的值,字段名2新值,.......where 条件; 案例&#xff1a;修改学生表中姓王的同学的班级都改为11601 UPDATE students SET class11601 WHERE sname LIKE 王%; 二、…

边界检查C

空指针判断&#xff1a; 在使用指针之前&#xff0c;先判断指针是否为空指针&#xff08;即指针是否为NULL&#xff09;。可以使用if语句或者三目运算符进行判断&#xff0c;例如&#xff1a; int *ptr NULL; if (ptr NULL) {printf("ptr is a null pointer\n"); …

C#基础|StringBuilder字符串如何高效处理。

哈喽&#xff0c;你好&#xff0c;我是雷工。 字符串处理在C#程序开发中是使用频率比较高的&#xff0c;但常规的字符串处理方式对内存占用比较多&#xff0c;为了优化内存&#xff0c;减少不必要的内存浪费&#xff0c;引入了StringBuilder类。 下面学习下StringBuilder类的使…

基于SpringBoot+Vue乡村养老服务管理系统

项目介绍&#xff1a; 使用旧方法对乡村养老服务管理系统登录的信息进行系统化管理已经不再让人们信赖了&#xff0c;把现在的网络信息技术运用在乡村养老服务管理系统登录的管理上面可以解决许多信息管理上面的难题&#xff0c;比如处理数据时间很长&#xff0c;数据存在错误…

Java中的模版方法设计模式详解

Java中的模版方法设计模式详解 在Java编程中&#xff0c;设计模式是一种解决常见问题的最佳实践。其中&#xff0c;模版方法设计模式是一种行为设计模式&#xff0c;它定义了一个操作中的算法骨架&#xff0c;而将一些步骤延迟到子类中。这样可以使子类在不改变算法结构的情况…

mongodb 安装问题

1. mongodb启动时显示 Illegal instruction (core dumped) mongodb 5.0之后(包括5.0) 开始使用需要使用 AVX 指令集 2.启动时报错 ERROR: child process failed, exited with 1 通过指令 bin/mongod --repair 或 ./bin/mongod -f configs/mongodb.conf --repair查看报错信息…