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

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

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

@目录

  • 41、习题4-4 特殊a串数列求和
  • 42、习题4-6 水仙花数
  • 43、习题4-7 最大公约数和最小公倍数
  • 44、习题7-5 找鞍点
  • 45、练习5-1 求m到n之和
  • 46、练习5-2 找两个数中最大者
  • 47、练习5-3 数字金字塔
  • 48、习题5-1 符号函数
  • 49、习题5-2 使用函数求奇数和
  • 50、习题5-3 使用函数计算两点间的距离

41、习题4-4 特殊a串数列求和

给定两个均不超过9的正整数a和n,要求编写程序求a+aa+aaa++⋯+aa⋯a(n个a)之和。

输入格式:

输入在一行中给出不超过9的正整数a和n。

输出格式:

在一行中按照“s = 对应的和”的格式输出。

输入样例:

2 3

输出样例:

s = 246

代码:

代码语言:javascript
复制
#include<stdio.h>
int main()
{
    int a,n;
    scanf("%d %d",&a,&n);
    int i;
    int sum=0;
    int t=a;
    for(i=1;i<=n;i++)
    {
        sum+=t;
        t=t*10+a;
    }
    printf("s = %d\n",sum);
    return 0;
}

42、习题4-6 水仙花数

水仙花数是指一个N位正整数(N≥3),它的每个位上的数字的N次幂之和等于它本身。例如:153=

{1^3+5^3+3^3}

。本题要求编写程序,计算所有N位水仙花数。

输入格式:

输入在一行中给出一个正整数N(3≤N≤7)。

输出格式:

按递增顺序输出所有N位水仙花数,每个数字占一行。

输入样例:

3

输出样例:

153 370 371 407

代码:

代码语言:javascript
复制
#include<stdio.h>
void fun1(int *m,int *n,int N)
{
    int i;
    int t1,t2;
    t1=t2=1;
    for(i=1;i<=N-1;i++)
        t1*=10;
    for(i=1;i<=N;i++)
        t2*=10;
    *m=t1;*n=t2-1;
}

int fun2(int n,int N)
{
    int i;
    int t;
    int sum=0;
    int tt=n;
    while(n)
    {
        t=1;
        int temp=n%10;
        for(i=1;i<=N;i++)
        {
            t*=temp;
        }
        sum+=t;
        n/=10;
    }
    if(tt==sum) return 1;
    else return 0;
}
int main()
{
    int N;
    scanf("%d",&N);
    int m,n;
    fun1(&m,&n,N);  //找出最小N位数和最大N位数
    //printf("%d %d\n",m,n);
    int i;
    for(i=m;i<=n;i++)
    {
        int temp=fun2(i,N);
        if(temp==1) printf("%d\n",i);
    }
    return 0;
}

43、习题4-7 最大公约数和最小公倍数

本题要求两个给定正整数的最大公约数和最小公倍数。

输入格式:

输入在一行中给出两个正整数M和N(≤1000)。

输出格式:

在一行中顺序输出M和N的最大公约数和最小公倍数,两数字间以1空格分隔。

输入样例:

511 292

输出样例:

73 2044

代码:

代码语言:javascript
复制
#include<stdio.h>
int main()
{
    int M,N;
    scanf("%d %d",&M,&N);
    int a,b;
    a=M;
    b=N;
    int temp;
    temp=M%N;
    while(temp)   //辗转相除法求最大公约数
    {
        M=N;
        N=temp;
        temp=M%N;
    }
    printf("%d %d\n",N,a*b/N);
    return 0;

}

44、习题7-5 找鞍点

一个矩阵元素的“鞍点”是指该位置上的元素值在该行上最大、在该列上最小。

本题要求编写程序,求一个给定的n阶方阵的鞍点。

输入格式:

输入第一行给出一个正整数n(1≤n≤6)。随后n行,每行给出n个整数,其间以空格分隔。

输出格式:

输出在一行中按照“行下标 列下标”(下标从0开始)的格式输出鞍点的位置。如果鞍点不存在,则输出“NONE”。题目保证给出的矩阵至多存在一个鞍点。

输入样例1:

4 1 7 4 1 4 8 3 6 1 6 1 2 0 7 8 9

输出样例1:

2 1

输入样例2:

2 1 7 4 1

输出样例2:

NONE

代码:

代码语言:javascript
复制
#include<stdio.h>

int fun1(int arr[][7],int i,int n)
{
    int j;
    int index=0;
    for(j=1;j<n;j++)
    {
        if(arr[i][j]>=arr[i][index]) index=j;
    }
    return index;
}

int fun2(int arr[][7],int i,int n)
{
    int j;
    int index=0;
    for(j=1;j<n;j++)
    {
        if(arr[j][i]<=arr[index][i]) index=j;
    }
    return index;
}
int main()
{
   int n;
   scanf("%d",&n);
   int arr[7][7];
   int i,j;
   for(i=0;i<n;i++)
   {
       for(j=0;j<n;j++)
       {
           scanf("%d",&arr[i][j]);
       }
   }
   int l=0;
   int temp1,temp2;
   for(i=0;i<n;i++)
   {
       temp1=fun1(arr,i,n);
       temp2=fun2(arr,temp1,n);
       if(arr[i][temp1]==arr[temp2][temp1])
       {
           l=1;break;
       }
   }
   if(l==1) printf("%d %d\n",temp2,temp1);
   else printf("NONE\n");
   return 0;
}

45、练习5-1 求m到n之和

本题要求实现一个计算m~n(m<n)之间所有整数的和的简单函数。

函数接口定义:

int sum( int m, int n );

其中m和n是用户传入的参数,保证有m<n。函数返回的是m~n之间所有整数的和。

裁判测试程序样例:

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

输入样例:

-5 8

输出样例:

sum = 21

代码:

代码语言:javascript
复制
int sum(int m, int n)
{
    int i;
    int sum=0;
    for(i=m;i<=n;i++)
    {
        sum=sum+i;
    }
    return sum;
}

46、练习5-2 找两个数中最大者

本题要求对两个整数a和b,输出其中较大的数。

函数接口定义:

int max( int a, int b );

其中a和b是用户传入的参数,函数返回的是两者中较大的数。

裁判测试程序样例:

代码语言:javascript
复制
#include <stdio.h>
    
int max( int a, int b );
    
int main()
{    
   int a, b;
   scanf("%d %d", &a, &b);
   printf("max = %d\n", max(a, b));
   return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

-5 8

输出样例:

max = 8

代码:

代码语言:javascript
复制
int max( int a, int b )
{
  if(a>=b)return a;
  else return b;
}

47、练习5-3 数字金字塔

本题要求实现函数输出n行数字金字塔。

函数接口定义:

void pyramid( int n );

其中n是用户传入的参数,为[1, 9]的正整数。要求函数按照如样例所示的格式打印出n行数字金字塔。注意每个数字后面跟一个空格。

裁判测试程序样例:

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

输入样例:

5

输出样例:

1 2 2 3 3 3 4 4 4 4 5 5 5 5 5

代码:

代码语言:javascript
复制
void pyramid( int n )
{
    int i;
    int temp=n;
    for(i=1;i<=n;i++)
    {
        int j=1;
        for(;j<temp;j++)
            printf(" ");
        for(j=1;j<=i;j++)
        {
            printf("%d ",i);
        }
        printf("\n");
        temp--;
    }
}

48、习题5-1 符号函数

本题要求实现符号函数sign(x)。

函数接口定义:

int sign( int x );

其中x是用户传入的整型参数。符号函数的定义为:若x大于0,sign(x) = 1;若x等于0,sign(x) = 0;否则,sign(x) = −1。

裁判测试程序样例:

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

输入样例:

10

输出样例:

sign(10) = 1

代码:

代码语言:javascript
复制
int sign( int x )
{
  if(x>0) return 1;
  else if(x==0) return 0;
  else return -1;
}

49、习题5-2 使用函数求奇数和

本题要求实现一个函数,计算N个整数中所有奇数的和,同时实现一个判断奇偶性的函数。

函数接口定义:

int even( int n ); int OddSum( int List[], int N );

其中函数even将根据用户传入的参数n的奇偶性返回相应值:当n为偶数时返回1,否则返回0。函数OddSum负责计算并返回传入的N个整数List[]中所有奇数的和。

裁判测试程序样例:

代码语言:javascript
复制
#include <stdio.h>
#define MAXN 10
int even( int n );
int OddSum( int List[], int N );
int main() 
{
 int List[MAXN], N, i;
 scanf("%d", &N);
 printf("Sum of ( ");
 for ( i=0; i<N; i++ ) 
 {
  scanf("%d", &List[i]);
  if ( even(List[i])==0 )
      printf("%d ", List[i]);
 }
 printf(") = %dn", OddSum(List, N));
        return 0;
    }
/* 你的代码将被嵌在这里 */

输入样例:

6 2 -3 7 88 0 15

输出样例:

Sum of ( -3 7 15 ) = 19

代码:

代码语言:javascript
复制
int even( int n )
{
  if(n%2==0) return 1;
  else return 0;
}

int OddSum( int List[], int N )
{
  int i;
  int sum=0;
  for(i=0;i<N;i++)
  {
    if(List[i]%2!=0) sum+=List[i];
  }
  return sum;
}

50、习题5-3 使用函数计算两点间的距离

本题要求实现一个函数,对给定平面任意两点坐标(x~1~ ,y~1~ )和(x~2~ ,y~2~),求这两点之间的距离。

函数接口定义:

double dist( double x1, double y1, double x2, double y2 );

其中用户传入的参数为平面上两个点的坐标(x1, y1)和(x2, y2),函数dist应返回两点间的距离。

裁判测试程序样例:

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

输入样例:

10 10 200 100

输出样例:

dist = 210.24

代码:

代码语言:javascript
复制
double dist( double x1, double y1, double x2, double y2 )
{
  return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 41、习题4-4 特殊a串数列求和
  • 42、习题4-6 水仙花数
  • 43、习题4-7 最大公约数和最小公倍数
  • 44、习题7-5 找鞍点
  • 45、练习5-1 求m到n之和
  • 46、练习5-2 找两个数中最大者
  • 47、练习5-3 数字金字塔
  • 48、习题5-1 符号函数
  • 49、习题5-2 使用函数求奇数和
  • 50、习题5-3 使用函数计算两点间的距离
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档