C语言 百炼成钢15

//题目43:有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出
//圈子,问最后留下的是原来第几号的那位。

#include<stdio.h>
#include<stdlib.h>

//分析:用while循环实现

//定于数组的大小
#define N 6

void main(){
    int a[N] = { 1, 2, 3 ,4,5,6};
    //定义报数变量
    int k = 1;
    //定义数组下标变量
    int index = 0;
    //定义数组有用元素变量
    int num = N;
    while (num != 1){
        //确保元素下标不会越界
        if (index>N - 1)
        {
            index = 0;
        }
        //当遇到已经删除的元素,要跳到下一个元素上
        if (a[index] != 0)
        {
            if (k == 3)
            {
                //删除已经报3的元素
                a[index] = 0;
                //实际元素个数减1
                num--;
                //遇到3后  重置报数
                k = 1;
            }
            else{
                k++;
            }
            index++;
        }
        else{
            index++;
        }
        
    }
    for (int i = 0; i < N; i++)
    {
        if (a[i]!=0)
        {
            printf("最后留下的是第%d号",a[i]);
        }
    }

    system("pause");
    
}

//题目44:写一个函数,求一个字符串的长度,在main函数中输入字符串,并输出其长度。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

//分析:自已一个字符串数组

void main(){
    char str[50] = { 0 };
    printf("请输入一个字符串
");
    scanf("%s",str);
    int num = 0;
    while (str[num]!=''){
        num++;
    }
    printf("字符串的长度是%d
", num);
    system("pause");
}

//题目45:编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数
//1 / 1 + 1 / 3 + ... + 1 / n(利用指针函数)

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

//分析:知识点函数指针的调用

//偶数
double Even(int n){
    double s = 0.0;
    for (int i = 2; i <=n; i=i+2)
    {
        s += 1.0 / i;
    }
    return s;
}


//奇数 Odd
double Odd(int n){
    double s = 0.0;
    for (int i = 1; i <= n; i=i + 2)
    {
        s += 1.0 / i;
    }
    return s;
}


void main(){
    int num = 0;
    printf("请输入一个数字
");
    scanf("%d",&num);
    //定义函数指针,函数指针的定义必须是(*p),不然会报错
    double (*p)(int n);
    if (num%2==0)
    {
        //如果是偶数
        p = Even;
    }
    else{
        p = Odd;
    }
    printf("函数的值是%lf",p(num));
    system("pause");
}

原文地址:https://www.cnblogs.com/zhanggaofeng/p/5158436.html