考研C语言进阶题库——更新16-20题

目录

16计算t=1+1/2+...+1/n-1+1/n

17计算1997!

18计算t=1-1÷2×2-1÷3×3-...-1÷n×n

[19相传国际象棋是古印度舍罕王的宰相达依尔发明的.舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐. 这位聪明的宰相指着8*8共64格的象棋说:陛下,请您赏给我一些麦子吧. 就在棋盘的第1格放1粒,第2格放2粒,第三格放4粒,以后每一格都比前一格增加一位,依此放完棋盘一64格,我就感激不尽了. 舍罕王让人扛了一袋麦子,他要兑现他的许诺.请问,国王要兑现他的许诺共要多少粒麦子赏赐他的宰相?](#19相传国际象棋是古印度舍罕王的宰相达依尔发明的.舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐. 这位聪明的宰相指着8*8共64格的象棋说:陛下,请您赏给我一些麦子吧. 就在棋盘的第1格放1粒,第2格放2粒,第三格放4粒,以后每一格都比前一格增加一位,依此放完棋盘一64格,我就感激不尽了. 舍罕王让人扛了一袋麦子,他要兑现他的许诺.请问,国王要兑现他的许诺共要多少粒麦子赏赐他的宰相?)

方案一

方案二

20某人有四张3分的邮票与三张5分的邮票,用这些邮票中的一张或若干张能得到多少种不同的邮资?(美国小学奥林匹克试题)


16计算t=1+1/2+...+1/n-1+1/n

cpp 复制代码
//16计算t=1+1/2+...+1/n-1+1/n.c
#include <stdio.h>

int main(){
    //初始化
    double sum=0,n;
    scanf("%lf",&n);
    for (double i = 1.0; i <= n; i++) {
        sum+=1/i;
    }
    printf("%lf",sum);
    return 0;
}

17计算1997!

cpp 复制代码
//17计算1997!.c
#include <stdio.h>
int main()
{
    int a[20000]={1}; 			//存放1977!的结果,令个位数初始值为1
    int carry;
    int digit = 1; 			//存放已经有多少位数
    int temp; 				//存放中间数字,对每位数处理进位时的关键

    for(int i = 2; i <= 1997; ++i) { 			//每一个阶层的处理
        carry = 0;
        for(int j = 1;j<=digit;++j){ //处理当前数组中每一位元素与当前阶层的结果
            temp = a[j-1] * i + carry;
            a[j-1] = temp % 10;  //逐步得到新的每一位数组元素中所代表的值
            carry = temp / 10;    //printf("%d",2/10);//0
        }
        while(carry){ 			 //当处理完当前最后一位数时carry还为十位数时,这时将需要获得新的一位数组长度并保存
            a[++digit-1] = carry % 10;
            carry /= 10;
        }
    }

    for(int i = digit; i >=1; --i)  {  //输出
        printf("%d",a[i-1]);
    }
    printf("\n");


    return 0;
}

18计算t=1-1÷2×2-1÷3×3-...-1÷n×n

cpp 复制代码
//18计算t=1-1÷2×2-1÷3×3-...-1÷n×n.c.c
#include <stdio.h>

int main(){
    //初始化
    double n,sum=1;
    scanf("%lf",&n);
    for (int i = 2; i <= n; i++) {
        sum-=1.0/(i*i);
    }
    printf("%.100lf",sum);
    return 0;
}
//数据演示:
//E:\CODE\c\dalian2.0\cmake-build-debug\18.exe
//100
//0.3650160998151070201878098941961070522665977478027343750000000000000000000000000000000000000000000000
//进程已结束,退出代码0

19相传国际象棋是古印度舍罕王的宰相达依尔发明的.舍罕王十分喜爱象棋,决定让宰相自己选择何种赏赐. 这位聪明的宰相指着8*8共64格的象棋说:陛下,请您赏给我一些麦子吧. 就在棋盘的第1格放1粒,第2格放2粒,第三格放4粒,以后每一格都比前一格增加一位,依此放完棋盘一64格,我就感激不尽了. 舍罕王让人扛了一袋麦子,他要兑现他的许诺.请问,国王要兑现他的许诺共要多少粒麦子赏赐他的宰相?

方案一

cpp 复制代码
//19印度王承诺麦子国际象棋.c
#include <stdio.h>
int main(){
    //初始化
    int brr[20000]={-1},arr[20000],t;
    double sum=1;
    int digit=1,temp=0;

    for (int i = 1; i <= 30; i++) {
        digit=0;
        sum=sum*2;
        t=sum;
        while(t){
            arr[++digit-1]=t%10;
            t=t/10;
        }

    }

    for (; digit>=0 ; digit--) {
        printf("%d",arr[digit]);
    }

    return 0;
}
//数据演示:只能求到30
//E:\CODE\c\dalian2.0\cmake-build-debug\19.exe
//01073741823
//进程已结束,退出代码0

方案二

cpp 复制代码
//19印度王承诺麦子国际象棋.c
/* 函数功能:国王的许诺,需要多少麦子,这些麦子合多少立方米*/
#include <stdio.h>

int main()
{
    double i=1,sum=1;
    for(int n=0;n<63;n++)
    {   i=2*i;
        sum=sum+i;
    }
    printf("%.0lf\n",sum);
    printf("%lf\n",sum/1.42e8);
    return 0;
}
//数据演示:
//

20某人有四张3分的邮票与三张5分的邮票,用这些邮票中的一张或若干张能得到多少种不同的邮资?(美国小学奥林匹克试题)

cpp 复制代码
//20排列组合油票.c
#include <stdio.h>
//4*3+3*5=27
int main(){
    //初始化
    int arr[30],count;
    for (int i = 0; i <= 4 ; i++) {
        for (int j = 0; j <= 3; j++) {
            count++;
        }
    }

    printf("%d",count-1);

    return 0;
}
//数据演示:
//
相关推荐
cike_y26 分钟前
JavaWeb-Request应用与Cookie&[特殊字符]️Session
java·开发语言·安全·java安全
Ayanami_Reii31 分钟前
区间不同数的个数-树状数组/线段树/莫队/主席树
数据结构·c++·算法·线段树·树状数组·主席树·莫队
李玮豪Jimmy41 分钟前
Day37:动态规划part10(300.最长递增子序列、674.最长连续递增序列 、718.最长重复子数组)
算法·动态规划
歌_顿1 小时前
Embedding 模型word2vec/glove/fasttext/elmo/doc2vec/infersent学习总结
人工智能·算法
胡萝卜3.01 小时前
深入C++可调用对象:从function包装到bind参数适配的技术实现
开发语言·c++·人工智能·机器学习·bind·function·包装器
Echo_NGC22371 小时前
【KL 散度】深入理解 Kullback-Leibler Divergence:AI 如何衡量“像不像”的问题
人工智能·算法·机器学习·散度·kl
小a杰.1 小时前
Flutter 设计系统构建指南
开发语言·javascript·ecmascript
BD_Marathon1 小时前
【JavaWeb】Servlet_url-pattern的一些特殊写法问题
java·开发语言·servlet
CoderYanger1 小时前
C.滑动窗口-求子数组个数-越长越合法——3325. 字符至少出现 K 次的子字符串 I
c语言·数据结构·算法·leetcode·职场和发展·哈希算法·散列表