前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >浙大版《C语言程序设计(第3版)》题目集 91~100

浙大版《C语言程序设计(第3版)》题目集 91~100

作者头像
C you again
发布2022-08-22 14:48:29
1.3K0
发布2022-08-22 14:48:29
举报
文章被收录于专栏:IT技术圈IT技术圈

@目录

  • 91、习题10-2 递归求阶乘和
  • 92、习题8-5 使用函数实现字符串部分复制
  • 93、习题8-6 删除字符
  • 94、习题8-8 判断回文字符串
  • 95、习题10-3 递归实现指数函数
  • 96、习题10-4 递归求简单交错幂级数的部分和
  • 97、习题10-5 递归计算Ackermenn函数
  • 98、习题10-6 递归求Fabonacci数列
  • 99、习题10-7 十进制转换二进制
  • 100、习题10-8 递归实现顺序输出整数

91、习题10-2 递归求阶乘和

本题要求实现一个计算非负整数阶乘的简单函数,并利用该函数求 1!+2!+3!+...+n! 的值。

函数接口定义:

double fact( int n ); double factsum( int n );

函数 fact 应返回 n 的阶乘,建议用递归实现。函数 factsum 应返回 1!+2!+...+ n! 的值。题目保证输入输出在双精度范围内。

裁判测试程序样例:

代码语言:javascript
复制
#include <stdio.h>
    
double fact( int n );
double factsum( int n );
    
int main()
{
    int n;
    
    scanf("%d",&n);
    printf("fact(%d) = %.0f\n", n, fact(n));
    printf("sum = %.0f\n", factsum(n));
      
    return 0;
}
    
/* 你的代码将被嵌在这里 */

输入样例1:

10

输出样例1:

fact(10) = 3628800 sum = 4037913

输入样例2:

0

输出样例2:

fact(0) = 1 sum = 0

代码:

代码语言:javascript
复制
double fact( int n )
{
  if(n==1||n==0) return 1;
  else return n*fact(n-1);
}
double factsum( int n )
{
  int i;
  double sum=0;
  if(n==0) return 0;
  else
  {
    for(i=1;i<=n;i++)
    sum+=fact(i);
    return sum;
  }
}

92、习题8-5 使用函数实现字符串部分复制

本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。

函数接口定义:

void strmcpy( char *t, int m, char *s );

函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。

裁判测试程序样例:

代码语言:javascript
复制
#include <stdio.h>
#define MAXN 20
    
void strmcpy( char *t, int m, char *s );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */
    
int main()
{
    char t[MAXN], s[MAXN];
    int m;
    
    scanf("%d\n", &m);
    ReadString(t);
    strmcpy( t, m, s );
    printf("%s\n", s);
    
    return 0;
}
    
/* 你的代码将被嵌在这里 */

输入样例:

7 happy new year

输出样例:

new year

代码:

代码语言:javascript
复制
void strmcpy( char *t, int m, char *s )
{
    int len=strlen(t);
    int i=0;
    if(m>len) *s=NULL;
    else
    {
        m=m-1;
        while(t[m]!='\0')
        {
            s[i++]=t[m];
            m++;
        }
        s[i]='\0';
    }
}

93、习题8-6 删除字符

本题要求实现一个删除字符串中的指定字符的简单函数。

函数接口定义:

void delchar( char *str, char c );

其中char *str是传入的字符串,c是待删除的字符。函数delchar的功能是将字符串str中出现的所有c字符删除。

裁判测试程序样例:

代码语言:javascript
复制
#include <stdio.h>
#define MAXN 20
    
void delchar( char *str, char c );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */
    
int main()
{
    char str[MAXN], c;
    
    scanf("%c\n", &c);
    ReadString(str);
    delchar(str, c);
    printf("%s\n", str);
    
    return 0;
}
    
/* 你的代码将被嵌在这里 */

输入样例:

a happy new year

输出样例:

hppy new yer

代码:

代码语言:javascript
复制
void delchar( char *str, char c )
{
    int len=strlen(str);
    char *strTemp=(char*)malloc(sizeof(char)*len);
    int i=0;
    int t=0;
    while(str[i]!='\0')
    {
       if(str[i]!=c) strTemp[t++]=str[i];
       i++;
    }
    strTemp[t]='\0';
    for(i=0;i<=t;i++)
        str[i]=strTemp[i];
}

94、习题8-8 判断回文字符串

本题要求编写函数,判断给定的一串字符是否为“回文”。所谓“回文”是指顺读和倒读都一样的字符串。如“XYZYX”和“xyzzyx”都是回文。

函数接口定义:

bool palindrome( char *s );

函数palindrome判断输入字符串char *s是否为回文。若是则返回 true ,否则返回 false 。

裁判测试程序样例:

代码语言:javascript
复制
#include <stdio.h>
#include <string.h>
    
#define MAXN 20
typedef enum {false, true} bool;
    
bool palindrome( char *s );
    
int main()
{
    char s[MAXN];
    
    scanf("%s", s);
    if ( palindrome(s)==true )
        printf("Yes\n");
    else
        printf("No\n");
    printf("%s\n", s);
    
    return 0;
}
    
/* 你的代码将被嵌在这里 */

输入样例1:

thisistrueurtsisiht

输出样例1:

Yes thisistrueurtsisiht

输入样例2:

thisisnottrue

输出样例2:

No thisisnottrue

代码:

代码语言:javascript
复制
bool palindrome( char *s )
{
    int len=strlen(s);
    int i;
    int l=1;
    for(i=0;i<len/2;i++)
    {
        if(s[i]!=s[len-1-i])
        {
            l=0;
            break;
        }
    }
    if(l==1) return true;
    else return false;
}

95、习题10-3 递归实现指数函数

本题要求实现一个计算

{x^n}

(n≥1)的函数。

函数接口定义:

double calc_pow( double x, int n );

函数 calc_pow 应返回 x 的 n 次幂的值。建议用递归实现。题目保证结果在双精度范围内。

裁判测试程序样例:

代码语言:javascript
复制
#include <stdio.h>
    
double calc_pow( double x, int n );
    
int main()
{
     double x;
    int n;
    
    scanf("%lf %d", &x, &n);
    printf("%.0f\n", calc_pow(x, n));
    
    return 0;
}
    
/* 你的代码将被嵌在这里 */

输入样例:

2 3

输出样例:

8

代码:

代码语言:javascript
复制
double calc_pow( double x, int n )
{
  if(n==1) return x;
  else return x*calc_pow(x,n-1);
}

96、习题10-4 递归求简单交错幂级数的部分和

本题要求实现一个函数,计算下列简单交错幂级数的部分和:

f(x,n)=x−

{x^2+x^3}

{x^4+⋯+(}

{1)^{n−1}x^n}

函数接口定义:

double fn( double x, int n );

其中题目保证传入的n是正整数,并且输入输出都在双精度范围内。函数fn应返回上述级数的部分和。建议尝试用递归实现。

裁判测试程序样例:

代码语言:javascript
复制
#include <stdio.h>
    
double fn( double x, int n );
    
int main()
{
    double x;
    int n;
    
    scanf("%lf %d", &x, &n);
    printf("%.2f\n", fn(x,n));
    
    return 0;
}
    
/* 你的代码将被嵌在这里 */

输入样例:

0.5 12

输出样例:

0.33

代码:

代码语言:javascript
复制
double fn( double x, int n )
{
    if(n==1) return x;
    else return pow(-1,n-1)*pow(x,n)+fn(x,n-1);
}

97、习题10-5 递归计算Ackermenn函数

本题要求实现Ackermenn函数的计算,其函数定义如下:

函数接口定义:

int Ack( int m, int n );

其中 m 和 n 是用户传入的非负整数。函数 Ack 返回Ackermenn函数的相应值。题目保证输入输出都在长整型范围内。

裁判测试程序样例:

代码语言:javascript
复制
#include <stdio.h>
    
int Ack( int m, int n );
    
int main()
{
    int m, n;
    
    scanf("%d %d", &m, &n);
    printf("%d\n", Ack(m, n));
    
    return 0;
}
    
/* 你的代码将被嵌在这里 */

输入样例:

2 3

输出样例:

9

代码:

代码语言:javascript
复制
int Ack( int m, int n )
{
    if(m==0) return n+1;
    else
    {
        if(n==0&&m>0) return Ack(m-1,1);
        if(n>0&&m>0) return Ack(m-1,Ack(m,n-1));
    }
}

98、习题10-6 递归求Fabonacci数列

本题要求实现求Fabonacci数列项的函数。Fabonacci数列的定义如下:

f(n)=f(n−2)+f(n−1) (n≥2),其中f(0)=0,f(1)=1。

函数接口定义:

int f( int n );

函数 f 应返回第 n 个Fabonacci数。题目保证输入输出在长整型范围内。建议用递归实现。

裁判测试程序样例:

代码语言:javascript
复制
#include <stdio.h>
    
int f( int n );
    
int main()
{
    int n;
    
    scanf("%d", &n);
    printf("%d\n", f(n));
    
    return 0;
}
    
/* 你的代码将被嵌在这里 */

输入样例:

6

输出样例:

8

代码:

代码语言:javascript
复制
int f( int n )
{
    if(n==0||n==1) return n;
    //else if(n==1) return 1;
    else
    {
        return f(n-2)+f(n-1);
    }
}

99、习题10-7 十进制转换二进制

本题要求实现一个函数,将正整数n转换为二进制后输出。

函数接口定义:

void dectobin( int n );

函数 dectobin 应在一行中打印出二进制的 n 。建议用递归实现。

裁判测试程序样例:

代码语言:javascript
复制
#include <stdio.h>
    
void dectobin( int n );
    
int main()
{
   int n;
    
    scanf("%d", &n);
    dectobin(n);
    
    return 0;
}
    
/* 你的代码将被嵌在这里 */

输入样例:

10

输出样例:

1010

代码:

代码语言:javascript
复制
void dectobin( int n )
{
    if(n<2) printf("%d",n%2);
    else
    {
        dectobin(n/2);
        printf("%d",n%2);
    }
}

100、习题10-8 递归实现顺序输出整数

本题要求实现一个函数,对一个整数进行按位顺序输出。

函数接口定义:

void printdigits( int n );

函数 printdigits 应将 n 的每一位数字从高位到低位顺序打印出来,每位数字占一行。

裁判测试程序样例:

代码语言:javascript
复制
#include <stdio.h>
    
void printdigits( int n );
    
int main()
{
    int n;
     
    scanf("%d", &n);
    printdigits(n);
    
    return 0;
}
    
/* 你的代码将被嵌在这里 */

输入样例:

12345

输出样例:

1 2 3 4 5

代码:

代码语言:javascript
复制
void printdigits( int n )
{
    if(n<=10) printf("%d\n",n%10);
    else
    {   printdigits(n/10);
        printf("%d\n",n%10);

    }
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 IT学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 91、习题10-2 递归求阶乘和
  • 92、习题8-5 使用函数实现字符串部分复制
  • 93、习题8-6 删除字符
  • 94、习题8-8 判断回文字符串
  • 95、习题10-3 递归实现指数函数
  • 96、习题10-4 递归求简单交错幂级数的部分和
  • 97、习题10-5 递归计算Ackermenn函数
  • 98、习题10-6 递归求Fabonacci数列
  • 99、习题10-7 十进制转换二进制
  • 100、习题10-8 递归实现顺序输出整数
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档