当前位置: 首页 > news >正文

网站仿制教程百度指数的使用

网站仿制教程,百度指数的使用,做网站备案需要多长时间,最新的跨境电商平台有哪些函数基本操作练习 主要内容: 本任务主要练习函数的申请、定义、调用等,主要包含以下功能: 1)编写函数,输入一个整数,求各个数字之和; 2)编写函数,计算1!2&…

函数基本操作练习

主要内容:

本任务主要练习函数的申请、定义、调用等,主要包含以下功能:

1)编写函数,输入一个整数,求各个数字之和

2)编写函数,计算1!+2!+3!+……+n!;

3)编写函数,输出m-n范围内含有数字7,但不能被7整除的所有数据;

4)编写函数,求两个整数的最大公约数和最小公倍数;

5)编写函数,设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321),求N值;

6)编写函数,判断整数是否为回文数;

7)编写函数,判断整数是否为素数;

8)编写函数,猜一个100以内的随机整数,直到猜对为止

9)编写函数,求1-1/3+1/5-1/7+…的值,n是自己输入;

10)编写函数,根据输入的n,求an的值,其中an的计算公式是:a1=1,an=

其它要求:以上十个功能需要定义各自的功能函数;有菜单进行良好地引导操作;main函数尽量精简。程序书写规范,合理设计程序的结构,提高代码的复用性,减少冗余。

一、程序整体架构剖析

整个程序仿若一座精心构建的大厦,被合理地划分为几个关键区域:

  1. 菜单区:作为程序与用户交互的门户,它清晰地展示了所有可供选择的功能选项,如同餐厅的菜单一般,让用户一目了然地知晓自己能够进行何种操作。这一区域为用户提供了便捷的指引,使用户能够轻松地决定程序的执行路径。
  2. 主函数区:主函数恰似大厦的枢纽,承担着统筹全局的重任。它简洁而高效,主要负责接收用户在菜单中输入的选择,并依据选择精准地调用相应的功能函数。其自身代码量精简,却能有效地协调各个功能模块之间的衔接与流转。
  3. 函数区:这里是程序的核心功能车间,各个功能函数如同技艺精湛的工匠,分别专注于特定的任务处理。每个函数都具备独立的功能和明确的职责,从计算整数各位数字之和到判断素数,从生成特定范围内的数字序列到求解复杂的数学关系,它们各司其职,共同构建起程序丰富多样的功能体系。
  4. 引用区:通过引入必要的头文件,如<stdio.h>用于输入输出操作,<stdlib.h><time.h>为特定功能(如随机数生成)提供支持,为整个程序的运行奠定了坚实的基础,如同大厦的根基,确保各个功能模块能够顺利地施展其能力。

二、各功能函数思路解析

(一)求整数各位数字之和 - sumDigits函数

  1. 首先初始化一个变量sum为 0,用于累加各位数字。
  2. 利用while循环,只要输入的整数num大于 0,就执行以下操作:
    • 取出num的个位数字,通过num % 10实现。
    • 将取出的个位数字累加到sum中。
    • 然后将num缩小 10 倍,即num /= 10,以便处理下一位数字。
  3. 循环结束后,sum中存储的就是整数num的各位数字之和,最后将其返回。

(二)计算阶乘和 - factorialSum函数

  1. 初始化总和变量sum为 0,以及单个阶乘变量factorial为 1。
  2. 通过for循环从 1 到输入的n进行迭代:
    • 在每次循环中,先计算当前数i的阶乘,即factorial *= i
    • 然后将计算得到的阶乘值累加到总和sum中。
  3. 循环结束后,sum中即为 1! + 2! + 3! + …… + n! 的结果,将其返回。

(三)输出特定范围内含数字 7 且不能被 7 整除的数据 - printNumbersWith7函数

  1. 外层for循环遍历从mn的所有整数。
    • 对于每个整数i,先将其赋值给临时变量temp,并初始化一个标志变量has7为 0,表示尚未发现数字 7。
    • 内层while循环用于检查temp中的每一位数字:
      • temp大于 0 时,取其个位数字判断是否为 7,如果是则将has7设为 1 并跳出内层循环。
      • 然后将temp缩小 10 倍,继续检查下一位数字。
    • 当内层循环结束后,如果has7为 1 且i不能被 7 整除,则将i输出。
  2. 所有符合条件的数字输出完毕后,换行结束输出。

(四)求最大公约数 - gcd函数

  1. 采用辗转相除法,通过while循环,只要b不等于 0:
    • 先将b的值暂存到temp变量中。
    • 然后计算a除以b的余数,将余数赋值给b
    • 再将之前暂存的b的值(即temp)赋值给a
  2. b为 0 时,a中存储的就是ab的最大公约数,将其返回。

(五)求最小公倍数 - lcm函数

直接利用已求得的最大公约数gcd,通过公式(a * b) / gcd(a, b)计算并返回ab的最小公倍数。

(六)寻找特定四位数 N 值 - findNValue函数

  1. 通过for循环遍历从 1000 到 9999 的所有四位数。
    • 对于每个四位数i,先保存其原始值到original变量,初始化反序数reversed为 0,并将i赋值给临时变量temp
    • 利用while循环生成i的反序数:每次取temp的个位数字,将其累加到reversed中,并将reversed乘以 10 以便下一位数字的累加,然后将temp缩小 10 倍。
    • while循环结束后,判断original的 9 倍是否等于reversed,如果是则返回original
  2. 如果整个循环结束都未找到符合条件的数,则返回 -1。

(七)判断回文数 - isPalindrome函数

  1. 保存输入的整数numoriginal变量,初始化反序数reversed为 0。
  2. 通过while循环,每次取num的个位数字累加到reversed中,并将num缩小 10 倍。
  3. 循环结束后,比较originalreversed是否相等,如果相等则返回 1,表示是回文数,否则返回 0。

(八)判断素数 - isPrime函数

  1. 首先判断输入的num是否小于等于 1,如果是则直接返回 0,因为小于等于 1 的数不是素数。
  2. 然后通过for循环从 2 到num的平方根进行迭代:
    • 如果num能被i整除,则说明num不是素数,直接返回 0。
  3. 如果整个循环结束都未找到能整除num的数,则返回 1,表示num是素数。

(九)猜数字游戏 - guessNumber函数

  1. 首先使用srand(time(NULL))以当前时间作为随机数种子,然后生成一个 100 以内的随机整数num
  2. 通过do - while循环,让用户不断输入猜测的整数guess
    • 如果guess大于num,则提示 “猜大了”。
    • 如果guess小于num,则提示 “猜小了”。
    • 如果guess等于num,则提示 “猜对了” 并结束循环。

(十)求特定数列和 - seriesSum函数

  1. 初始化总和变量sum为 0,符号变量sign为 1。
  2. 通过for循环从 1 开始,每次递增 2 到输入的n
    • 在每次循环中,将sign乘以1.0 / i的结果累加到sum中。
    • 然后改变sign的符号,即sign *= -1
  3. 循环结束后,sum中存储的就是 1 - 1/3 + 1/5 - 1/7 + …… 的值,将其返回。

(十一)求an的值 - Sum10函数

  1. 初始化变量a为 1.0。
  2. 通过while循环,只要n大于 1:
    • 根据公式a = a / (1 + a)更新a的值。
    • 并将n减 1。
  3. 循环结束后,返回a的值。

三、实现代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>// 函数声明
int sumDigits(int num);
double factorialSum(int n);
void printNumbersWith7(int m, int n);
int gcd(int a, int b);
int lcm(int a, int b);
int findNValue();
int isPalindrome(int num);
int isPrime(int num);
void guessNumber();
double seriesSum(int n);
float Sum10(int n);// 主函数
int main() {int choice;int m, n;int num1, num2;int nValue;int num;int nForSeries;int nForSum10;do {// 显示菜单printf("**********************\n");printf("1. 输入一个整数,求各个数字之和\n");printf("2. 计算1!+2!+3!+……+n!\n");printf("3. 输出m-n范围内含有数字7,但不能被7整除的所有数据\n");printf("4. 求两个整数的最大公约数和最小公倍数\n");printf("5. 设N是一个四位数,它的9倍恰好是其反序数,求N值\n");printf("6. 判断整数是否为回文数\n");printf("7. 判断整数是否为素数\n");printf("8. 猜一个100以内的随机整数,直到猜对为止\n");printf("9. 求1-1/3+1/5-1/7+…的值,n是自己输入\n");printf("10.根据输入的n,求an的值\n\n");printf("0. 退出\n");printf("**********************\n");printf("请选择:");scanf("%d", &choice);switch (choice) {case 1:printf("请输入一个整数:");scanf("%d", &num);printf("该整数各个数字之和为:%d\n", sumDigits(num));break;case 2:printf("请输入n的值:");scanf("%d", &n);printf("1!+2!+3!+……+n! 的值为:%.0f\n", factorialSum(n));break;case 3:printf("请输入m和n的值(m < n):");scanf("%d %d", &m, &n);printNumbersWith7(m, n);break;case 4:printf("请输入两个整数:");scanf("%d %d", &num1, &num2);printf("最大公约数为:%d\n", gcd(num1, num2));printf("最小公倍数为:%d\n", lcm(num1, num2));break;case 5:nValue = findNValue();if (nValue != -1) {printf("满足条件的N值为:%d\n", nValue);}else {printf("未找到满足条件的N值\n");}break;case 6:printf("请输入一个整数:");scanf("%d", &num);if (isPalindrome(num)) {printf("%d是回文数\n", num);}else {printf("%d不是回文数\n", num);}break;case 7:printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d是素数\n", num);}else {printf("%d不是素数\n", num);}break;case 8:guessNumber();break;case 9:printf("请输入n的值:");scanf("%d", &nForSeries);printf("1-1/3+1/5-1/7+…的值(n = %d)为:%.6f\n", nForSeries, seriesSum(nForSeries));break;case 10:printf("请输入n的值:");scanf("%d", &nForSum10);float result = Sum10(nForSum10);printf("根据输入的n,Sum10的值为:%.6f\n", result);break;case 0:printf("谢谢使用\n");break;default:printf("输入错误,请重新输入\n");}} while (choice != 0);return 0;
}// 函数定义// 求一个整数各个数字之和
int sumDigits(int num) {int sum = 0;while (num > 0) {sum += num % 10;num /= 10;}return sum;
}// 计算1!+2!+3!+……+n!
double factorialSum(int n) {double sum = 0;double factorial = 1;for (int i = 1; i <= n; i++) {factorial *= i;sum += factorial;}return sum;
}// 输出m-n范围内含有数字7,但不能被7整除的所有数据
void printNumbersWith7(int m, int n) {for (int i = m; i <= n; i++) {int temp = i;int has7 = 0;while (temp > 0) {if (temp % 10 == 7) {has7 = 1;break;}temp /= 10;}if (has7 && i % 7 != 0) {printf("%d ", i);}}printf("\n");
}// 求两个整数的最大公约数
int gcd(int a, int b) {while (b != 0) {int temp = b;b = a % b;a = temp;}return a;
}// 求两个整数的最小公倍数
int lcm(int a, int b) {return (a * b) / gcd(a, b);
}// 设N是一个四位数,它的9倍恰好是其反序数,求N值
int findNValue() {for (int i = 1000; i <= 9999; i++) {int original = i;int reversed = 0;int temp = i;while (temp > 0) {reversed = reversed * 10 + temp % 10;temp /= 10;}if (original * 9 == reversed) {return original;}}return -1;
}// 判断整数是否为回文数
int isPalindrome(int num) {int original = num;int reversed = 0;while (num > 0) {reversed = reversed * 10 + num % 10;num /= 10;}return original == reversed;
}// 判断整数是否为素数
int isPrime(int num) {if (num <= 1) {return 0;}for (int i = 2; i * i <= num; i++) {if (num % i == 0) {return 0;}}return 1;
}// 猜一个100以内的随机整数,直到猜对为止
void guessNumber() {int num, guess;srand(time(NULL));num = rand() % 100;do {printf("请猜一个100以内的整数:");scanf("%d", &guess);if (guess > num) {printf("猜大了\n");}else if (guess < num) {printf("猜小了\n");}else {printf("猜对了\n");}} while (guess != num);
}// 求1-1/3+1/5-1/7+…的值,n是自己输入
double seriesSum(int n) {double sum = 0;int sign = 1;for (int i = 1; i <= n; i += 2) {sum += sign * (1.0 / i);sign *= -1;}return sum;
}// 根据输入的n,求an的值\n
float Sum10(int n)
{double a = 1.0;while (n > 1){a = a / (1 + a);n = n - 1;}return a;
}

http://www.tj-hxxt.cn/news/35807.html

相关文章:

  • 网站建设自助建站企业seo查询工具网站
  • 百度上做网站推广中国万网域名注册免费
  • php网站怎么做测试什么是网络营销策划
  • 请问婚庆网站建设该怎么做呢sem竞价托管公司
  • 学做网站用什么软件市场推广是做什么的
  • 网站做推广需要什么域名网
  • 做网站卖东西武汉网络推广优化
  • 杭州做公司官网的公司最新seo教程
  • 国内最好的在线网站建设郑州网络推广平台有哪些
  • 做外贸比较好的网站有哪些优秀网站设计欣赏
  • 国外企业档案馆网站的特色seo关键词排名优化是什么
  • 酒泉北京网站建设在线超级外链工具
  • wordpress如何建立网站免费搜索引擎入口
  • 浅析动态网站建设之后台数据库的选择提交网址给百度
  • 网站制作感受百度引擎提交入口
  • 网站建设的客户宣传推广方案怎么写
  • 精湛的合肥网站建设百度怎么发自己的小广告
  • 做游戏视频网站厦门关键词优化平台
  • 郑州做网站九零后网络职业培训机构资质
  • 一个好的网站应该具有什么条件托管竞价账户哪家好
  • 餐饮型网站开发百度发广告需要多少钱
  • 宁波专业网站公司旅游产品推广有哪些渠道
  • 做饲料推广哪个网站好网站seo教程
  • 如何做淘宝客网站推广有效获客的六大渠道
  • 自己做网站怎么挣钱实训百度搜索引擎的总结
  • 长春网站排名优化价格色盲测试图
  • 微信营销微网站建设今天刚刚发生的新闻
  • 中山建网站报价seo技术大师
  • 电脑建设网站服务器武汉seo优
  • 网站建设所用程序培训心得体会范文大全2000字