coco笔记:C算式算法总结(二)
来源:互联网 发布:淘宝如何增加访客数 编辑:程序博客网 时间:2024/06/06 01:11
1、题目:
编写一个函数int pieAdd(int n),计算1!+2!+3!+……+n!的值(n>=1)。
编写一个函数int pieAdd(int n),计算1!+2!+3!+……+n!的值(n>=1)。
比如pieAdd(3)的返回值是1! + 2! + 3! = 1 + 1*2 + 1*2*3 = 9
#import <Foundation/Foundation.h>int peiAdd(int n);int main(int argc, const char * argv[]){ int n; while (n <= 0) { NSLog(@"请输入一个正数:"); scanf("%d",&n); } int result = peiAdd(n); NSLog(@"计算结果为:%d",result); return 0;}/* 解题思路:先计算出每个数字的阶乘,再把所有的阶乘加起来 */int peiAdd(int n){ int sum = 0; // 记录累加结果 int current = 0; //当前数字 for (int i = 1; i <= n ; i++) { //控制有多少个阶乘 current ++; for (int j = 1; j<i; j++) { current *= j; } sum += current; } return sum;}2、 编写一个函数,判断某个字符串是否为回文。 回文就是从左边开始读 和 从右边开始读 都是一样的,比如"abcba"#import <Foundation/Foundation.h>int isHuiwen(char *str);int main(int argc, const char * argv[]){ char *str = "qwettewq"; NSLog(@"这串字符串是否回文(0表示不回文,1表示回文"); NSLog(@"%d",isHuiwen(str)); return 0;}int isHuiwen(char *str){ //1、定义一个指向指针变量left 指向字符串的首字符 char *left = str; //2、定义一个指向指针变量right 指向字符串的末字符 char *right = str + strlen(str) - 1; while (left < right) { //如果左右两边字符串不一样 返回0 if(*left++ != *right--){ return 0; } } //如果左右两边字符串一样 返回1 return 1;}
3、提示用户输入一个正整数n,求出并输出其阶乘值n! = 1*2*3*4*...n要求:用递归的方式编写一个函数实现n的阶乘
#import <Foundation/Foundation.h>int chengjie(int n);int main(int argc, const char * argv[]){ int n; while (n <= 0) { NSLog(@"请输入一个正整数"); scanf("%d",&n); } // 计算阶乘 int result = chengjie(n); NSLog(@"结果为:%d",result); return 0;}int chengjie(int n){ // 如果n为1,那么阶乘值就是1 if (n == 1) { return 1; } return chengjie(n-1) * n;}
4、提示用户输入一个正整数n,求出并输出下列结果:1! + 2! + 3! + 4! + ... + n!
要求:用至少两种方式实现(函数名自拟,函数个数不限)
1> 非递归
2> 递归
#include <stdio.h>int pieAdd(int n);int main(){ // 1.定义变量存储用户输入的整数 int n = 0; // 2.判断n是否为正整数 while (n <= 0) { // 2.1 提示输入 printf("输入一个正整数:\n"); // 2.2 让用户输入 scanf("%d", &n); } // 3.计算结果 int result = pieAdd(n); printf("结果是%d\n", result); return 0;}// ------------------非递归的方式----------------int pieAdd(int n){ // 1.定义变量保存总和 int sum = 0; // 2.需要累加n次,每次累加的都是一个阶乘值 for (int i = 1; i<=n; i++) { // 3.计算阶乘i! // 3.1 定义变量保存阶乘的结果 int multi = 1; for (int j = 1; j<=i; j++) { multi *= j; } // 4.累加每次的阶乘结果 sum += multi; } // 5.返回和 return sum;}/*// ------------------递归的方式----------------// 为了代码方便和性能,额外定义一个函数求阶乘int jieCheng(int n){ // 如果n为1,那么阶乘值就是1 if (n == 1) return 1; // jieCheng(n) = n! = 1*2*3*...*(n-1)*n // jieCheng(n-1) = (n-1)! = 1*2*3*...*(n-1) // jieCheng(n) = jieCheng(n-1) * n return jieCheng(n-1) * n;}int pieAdd(int n){ // 1.如果n是1,计算结果就是1 if (n == 1) return 1; // pieAdd(n) = 1! + 2! + ... + (n-1)!+ n! // pieAdd(n-1) = 1! + 2! + ... + (n-1)! // pidAdd(n) = pieAdd(n-1) + n! return pieAdd(n - 1) + jieCheng(n);}*/
0 0
- coco笔记:C算式算法总结(二)
- coco笔记:C算式算法总结(一)
- 算法笔记_057-蓝桥杯练习 最大的算式 (Java)
- 算法笔记_057-蓝桥杯练习 最大的算式 (Java)
- 算法笔记_057-蓝桥杯练习 最大的算式 (Java)
- 算法笔记_057-蓝桥杯练习 最大的算式 (Java)
- 算法笔记_057-蓝桥杯练习 最大的算式 (Java)
- 玲珑杯 C -- Coco
- “玲珑杯”ACM比赛 Round #5 C -- Coco(递归)
- C++,java算法与数据结构(二)--慕课网笔记
- coco笔记:算术运算函数
- Coco
- Coco
- C#(二)总结
- 凑算式(蓝桥杯C语言组)
- acm算法--每日一题c语言1(趣味算式)
- 排序算法总结(二)
- 排序算法总结(二)
- 阻止a 标签跳转
- 网页小游戏之2048
- 【转】如何使用git进行版本管理
- python 返回值(return)None
- JAVA IO流
- coco笔记:C算式算法总结(二)
- 关于封装类的缓存
- Android 应用优化 内存、性能
- 【rqnoj106】最大加权矩形(1418)
- MFC 加载png图片
- IOS开发进阶-按钮属性操作
- Sublime Text2 使用教程
- jboss AS 7开放ip供其他机器访问
- getWidth与getMeasureWidth