0
点赞
收藏
分享

微信扫一扫

#第四天

第四天

练习题

1.计算n的阶乘

思路:利用for循环,从i=1一直乘到i=n,利用i++自增.

==练习使用“引用头文件”或者函数实现模块化,使main函数精简明了。==

  • demo01.h
#include <stdio.h>
int demo01(int n) {
    int result=1;
    if (n > 0) {//对不合理n值进行过滤
        for (int i = 1; i <=n; i++) {
            result *= i;
        }
    }
    else
    {
        return 0;//错误的输入返回0
    }
    return result;
}
  • main.c
#include <stdio.h>
#include "demo01.h"
void factorial() {
    int n = 0;
    scanf("%d",&n);//从键盘获取n的值
    printf("%d 的阶乘为%d\n",n, demo01(n));//传参数给demo01()函数
}
int main() {
    factorial();//调用计算阶乘的函数
}
  • 结果

image-20220630165724079

2.计算1!+2!+3!+........+n!

1.方法一

  • demo02.h
#include <stdio.h>
int demo02(int n) {
    int result=0;//返回的结果
    if (n > 0) {
        for (int i=1; i <= n;i++) {
            int fac = 1;//第n个数的阶乘
            for (int j=1; j <= i; j++) {
                fac *= j;
            }       
            result += fac;
        }
    }
    else
    {
        return 0;
    }
    return result;
}
  • main.c
void fac_sum() {
    int n = 0;
    scanf("%d",&n);
    printf("结果为%d\n",demo02(n));
}
int main() {
    fac_sum();
}

image-20220630171636350

2. 调用demo01.h的函数来完成

==两个头文件之间互相调用,需要用到#ifndef==

  • demo01.h
#ifndef _DEMO01_H
#define _DEMO01_H
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int demo01(int n) {
    int result = 1;
    if (n > 0) {
        for (int i = 1; i <= n; i++) {
            result *= i;
        }
    }
    else
    {
        return 0;
    }
    return result;
}

#endif // !_DEMO01_H
  • demo02.h
#define _CRT_SECURE_NO_WARNINGS 1
#ifndef _DEMO02_H
#define _DEMO02_H
#include <stdio.h>
#include "demo01.h"

int demo02_2(int n) {
    int result = 0;//返回的结果
    if (n > 0) {
        for (int i = 1; i <= n; i++) {
            result += demo01(i);
        }
    }
    else
    {
        return 0;
    }
    return result;
}
#endif // !
  • main.c
#include <stdio.h>
#include "demo01.h"
#include "demo02.h"
void fac_sum() {
    int n = 0;
    scanf("%d",&n);
    printf("结果为%d\n",demo02_2(n));
}
int main() {
    fac_sum();
}
  • 结果

image-20220630173522722

3.在一组数组中查找具体的某个数字n,如果有则输出数组的下标

思路:用for循环读取数组的每个值,如果相等则返回下标,反之返回-1;

int binsearch(){
        int n = 0;
        int arr[] = { 1,52,74,689,951,1002,1354,1789,5214,6547 };//已知的数组
        scanf("%d", &n);
        for (int i = 0; i < sizeof(arr)/sizeof(int); i++) {//利用sizeof获取数组长度
            if (arr[i] == n) {
                return i;//返回下标
            }
        }
        return -1;
    }
int main() {
    while (1) {
        int subscript = binsearch();
        if (subscript >=0) {
            printf("找到了,下标是%d!\n", subscript);
            break;
        }
        else {
            printf("没找到!\n");
        }
    }
}

image-20220630180325175

vs编译器无法识别bool类型?

修改项目属性即可。

image-20220630180717425

举报

相关推荐

第四天 作业

Rhcsa第四天

第四天笔记

HCIP 第四天

第四天记录

DOM第四天

hcip第四天

RHCSA第四天

0 条评论