coco笔记:C算式算法总结(二)

来源:互联网 发布:淘宝如何增加访客数 编辑:程序博客网 时间:2024/06/06 01:11
 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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 眼睛被太阳晒了胀豉豉的怎么办 电脑电源灯亮着屏幕是黑的怎么办 刚办健身卡健身房跑路了怎么办 孕妇怀孕初期胖的太快怎么办 魔幻陀螺二的陀螺拆不动怎么办 我不干了小厂不给我发工资怎么办 货车司机把人撞成重伤没钱出怎么办 房主卖房定金收了不想卖怎么办 领导迟迟不给升职加薪机会怎么办 加工中心铣圆进出刀有接刀痕怎么办 烧茄子时炸茄子茄子太吸油怎么办? 梦金园黄金刚买了不给退怎么办 给同学抄作业被老师发现了怎么办 不准体罚和变相体罚后熊孩子怎么办 钢琴练的不好走不了专业怎么办 老师来信息说孩子学习退步了怎么办 老人磕着膝盖走路腿疼怎么办 腿膝盖一受凉就疼怎么办可以不疼 手臂和膝盖摔烂了好痛?怎么办 结扎一个月后坐太久腰酸怎么办 杠铃深蹲肩关节背不过去怎么办 QQ音乐在别的地方停不了歌怎么办 孕8周胎儿发育变慢怎么办 8个月宝宝肋张力高怎么办 术后5个月左手张力高怎么办 宝宝4个月体检四肢张力稍高怎么办 上腹绷紧大便酸臭酸臭的怎么办 小学生从双杠上摔下来会怎么办 去健身房碰到教练让你报私教怎么办 提踵把小腿练粗了怎么办 健身后两个小腿不一边粗怎么办 宿舍床上隔段时间有虫子怎么办 b2驾照实习证扣6分怎么办 健身房有个教练想撩我怎么办 学车跟校长投诉了教练怎么办 打架把眼睛打肿怎么办属于什么伤 罗马椅有点高做不了山羊挺身怎么办 节食一周后暴食肚子胀的难受怎么办 健身教练和会员聊天说错肌肉怎么办 两个月宝宝吃奶老是呛到怎么办 怀孕六个月体重一天增加两斤怎么办