6-1 sdut-C语言实验-计算组合数

分数 10
作者 马新娟
单位 山东理工大学
计算组合数。C(n,m),表示从n个数中选择m个的组合数。
计算公式如下:
若:m=0,C(n,m)=1
否则, 若 n=1,C(n,m)=1
否则,若m=n,C(n,m)=1
否则 C(n,m) = C(n-1,m-1) + C(n-1,m).

函数接口定义:
在这里描述函数接口。例如:
int fun(int n,int m);
其中 n 和 m 都是用户传入的参数(0 <= m <= n <= 20)。

裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
#include <stdlib.h>
int fun(int n,int m);

int main()
{
int t,n,m,i;
scanf(“%d”,&t);
for(i=1;i<=t;i++)
{
scanf(“%d %d”,&n,&m);
printf(“%d\n”,fun(n,m));
}
return 0;
}

/* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:

3
2 1
3 2
4 0
输出样例:
在这里给出相应的输出。例如:

2
3
1

#include<stdio.h>
#include<stdlib.h>
int fun(int n,int m)
{if(m==0)return 1;else if(n==1)return 1;else if(n==m)return 1;elsereturn fun(n-1,m-1)+fun(n-1,m);
}

6-2 sdut-C语言实验- n个数的排序

分数 5
作者 马新娟
单位 山东理工大学
Qiao当上了体育委员,现在老师让他去给班级里的人排队,Qiao刚学了排序,所以他想以这种方式给班级里的人排队(从矮到高),他想知道排序完成后的结果。

函数接口定义:

void sort(int *p,int n);
其中 p 和 n 都是用户传入的参数。 p 的值为传递过来的地址; n 的为正整数(1<=n<=100)。函数不需要返回数据。

裁判测试程序样例:

#include <stdio.h>

void sort(int *p,int n);

int main()
{
int a[100];
int n,i;
int *p1;
while(scanf(“%d”,&n)!=EOF)
{
for(p1=a; p1<a+n; p1++)
scanf(“%d”,p1);
sort(a,n);
for(i=0; i<n-1; i++)
printf(“%d “,a[i]);
printf(”%d\n”,a[n-1]);
}
return 0;
}

/* 请在这里填写答案 */
输入样例:
多组输入,每组的第一行是一个正数n(1<=n<=100),第二行是n个数,表示每一个人的高度。比如:

3
176 175 174
输出样例:
174 175 176

#include<stdio.h>
void sort(int *p,int n)
{int i,j,temp;for(i = 0; i < n - 1; i++){for(j = i + 1; j < n; j++){if(*(p+i) > *(p+j)){temp = *(p+i);*(p+i) = *(p+j);*(p+j) = temp;}}}
}

6-3 sdut- C语言实验——矩阵下三角元素之和

分数 10
作者 马新娟
单位 山东理工大学
输入一个正整数n(1<=n<=10),再输入n*n的矩阵,要求求该矩阵的下三角元素之和。

函数接口定义:

int f(int (*p)[10],int n);
其中 p 和 n 都是用户传入的参数。 p 的值为地址; n 是[1, 10]区间内的个位数。函数不需要返回数据。

裁判测试程序样例:

#include<stdio.h>
int f(int (*p)[10],int n);

int main()
{
int n,i,j,sum;
int a[10][10];
scanf(“%d”,&n);
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
scanf(“%d”,&a[i][j]);
}
}
sum=f(a,n);
printf(“%d”,sum);
return 0;
}

/* 请在这里填写答案 */
输入样例:
5
1 2 3 4 5
2 3 4 5 6
3 4 5 6 7
4 5 6 7 8
5 6 7 8 9
输出样例:
75

int f(int (*p)[10],int n)
{int i,j,m;m=0;for(i=0;i<=n-1;i++){for(j=0;j<=i;j++){m=m+*(*(p+i)+j);}}return m;
}
/*下三角:
*
* *
* * *
.........
*/

6-4 sdut-C语言实验- N!

分数 12
作者 马新娟
单位 山东理工大学
给出两个数 n, m。求
1.png

2.png

计算公式:

3.png
输入数据有多组(数据组数不超过 250),到 EOF 结束。

对于每组数据,输入两个用空格隔开的整数 n, m (0 <= m <= n <= 20) 。
对于每组数据输出一行,
1.png

2.png
,用空格隔开。

提醒:因为n!和 m! 数据较大,定义数据类型应用 long long int,输出格式%lld

函数接口定义:

long long int f(long long int n);
其中 n 是用户传入的参数。函数须返回n!的值。

裁判测试程序样例:

#include <stdio.h>
long long int f(long long int n);
int main()
{
long long int n,m,i;
while(~scanf(“%lld %lld”,&n,&m))
{
long long int a,c;
a=f(n)/f(n-m);
c=f(n)/f(n-m)/f(m);
printf(“%lld %lld\n”,a,c);
}
return 0;
}

/* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:

1 1
5 3
4 3
输出样例:
在这里给出相应的输出。例如:

1 1
60 10
24 4

#include <stdio.h>
#include <stdlib.h>
long long int f(long long int n)
{long long int  sum=1,i;for(i=1;i<=n;i++){sum *= i;}return sum;
}

6-5 sdut-C语言实验-使用函数验证哥德巴赫猜想

分数 8
作者 马新娟
单位 山东理工大学
本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。输入一个不小于6的偶数n,找出两个素数,使它们的和为n。注意:1不是素数,2是素数。

函数接口定义:
int isPrime( int x );
void Goldbach( int n );
其中函数isPrime当用户传入参数x为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24可以分解为5+19,还可以分解为7+17),要求必须输出所有解中p最小的解。

裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
int isPrime( int x );
void Goldbach( int n );
int main()
{
int n;
scanf(“%d”,&n);
if(n%2==0)
Goldbach( n );
return 0;
}

/* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:

80
输出样例:
在这里给出相应的输出。例如:

80=7+73

int prime( int p )
{     if( p < 2 )  return 0;for ( int i = 2; i <= p / i; i++ )if(p % i == 0)  return 0;return 1;
}void Goldbach( int n )
{      if(n % 2)  return;for ( int i = 2; i < n; i++ ) {if( prime(i) && prime(n - i) ){     printf("%d=%d+%d", n, i, n - i);break;}}
}

6-6 sdut-C语言实验- 求数列的和

分数 12
作者 马新娟
单位 山东理工大学
数列的定义如下: 数列的第一项为n,以后各项为前一项的平方根,求数列的前m项的和。

函数接口定义:
double s(double n,int m);
其中 n 和 m 都是用户传入的参数。 n 的值不超过double的范围; m 的值不超过int`的范围。函数须返回数列前m项的和。

裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:
#include <stdio.h>
#include <stdlib.h>
double s(double n,int m);

int main()
{
int a,b,n,m,i;
double sum;
while (scanf(“%d %d”,&n,&m)!=EOF)
{
sum=s(n,m);
printf(“%.2lf\n”,sum);
}

return 0;

}

/* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:

81 4
2 2
输出样例:
在这里给出相应的输出。例如:

94.73
3.41

#include<stdio.h>
#include<math.h>
double f(int n,int m);
int main()
{int n,m;while(~scanf("%d %d",&n,&m)){printf("%.2lf\n",f(n,m));}return 0;
}double f(int n,int m)
{double j=n,i;double sum=0;for(i=0;i<m;i++){sum=sum+j;j = sqrt(j);}return sum;
}

6-7 递归实现顺序输出整数

分数 15
作者 张高燕
单位 浙大城市学院
本题要求实现一个函数,对一个整数进行按位顺序输出。

函数接口定义:
void printdigits( int n );
函数printdigits应将n的每一位数字从高位到低位顺序打印出来,每位数字占一行。

裁判测试程序样例:
#include <stdio.h>

void printdigits( int n );

int main()
{
int n;

scanf("%d", &n);
printdigits(n);return 0;

}

/* 你的代码将被嵌在这里 */
输入样例:
12345
输出样例:
1
2
3
4
5

void printdigits(int n)
{if(n<=9)printf("%d\n",n);else{printdigits(n/10);printf("%d\n",n%10);}
}

7-1 sdut- C语言实验—计算表达式

分数 10
作者 马新娟
单位 山东理工大学
计算下列表达式值:

输入格式:
输入x和n的值,其中x为非负实数,n为正整数。

输出格式:
输出f(x,n),保留2位小数。

输入样例:
3 2
输出样例:
在这里给出相应的输出。例如:

2.00

#include <stdio.h>
#include <math.h>double f(double x, int n)
{if(n == 1) return sqrt(1 + x);return sqrt(n + f(x, n - 1));
}int main()
{double x;int n;scanf("%lf %d", &x, &n);printf("%.2f", f(x, n));return 0;
}

7-2 求组合数


#include<stdio.h>
double fact(int n)
{double sum1 = 1;for(int x=1;x<=n;x++){sum1 = sum1*x;}return sum1;
}int main()
{int m,n;double result;scanf("%d %d",&m,&n);result = fact(n)/(fact(m)*fact(n-m));printf("result = %.0f",result);return 0;
}

7-3 求算式的和[1]

输入样例:
3
输出样例:
sum = 1.183333

#include<stdio.h>
double f(double n)
{double i;double z=1;for(i=n;i<=2*n-1;i++){z*=i;}return z;
}
int main()
{int n,i=1;int r=1;double sum=0;scanf("%d",&n);f(n);
for(i=1;i<=n;i++)
{sum+=1.0/f(i);
}printf("sum = %.6f\n",sum);return 0;
}

7-4 计算圆柱体的体积

分数 15
作者 张高燕
单位 浙大城市学院
输入圆柱的高和半径,求圆柱体积,volume=π×r 2×h 。要求定义和调用函数cylinder (r, h )计算圆柱体的体积。

输入格式:
输入在一行中给出2个实数,分别为半径r和高h。

输出格式:
在一行中以“Volume = 值”的形式输出圆柱体的体积,结果保留三位小数。

输入样例:
3.0 10
输出样例:
Volume = 282.743

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
double volume(double r,double h);
int main()
{double r,h;scanf("%lf%lf",&r,&h);printf("Volume = %.3f",volume(r,h));system("pause");
}
double volume(double r,double h)
{double volume;volume = 3.1415926*pow(r,2)*h;return volume;
}

7-5 出生年

分数 15
作者 陈越
单位 浙江大学

输入样例1:
1988 4
输出样例1:
25 2013
输入样例2:
1 2
输出样例2:
0 0001

# include<stdio.h>
int main()
{int m,n,i,j=0,t,count,ch2[4];scanf("%d%d",&m,&n);for(t=m; ;m++,j++){int ch1[10]={0};  //对元素初始化count=0;t=m;for(i=0;i<4;i++){ch1[t%10]=1;  //数字出现则为1  ch2[i]=t%10;  t/=10;}for(i=0;i<10;i++) //判断出现数的个数{if(ch1[i])count++;}if(count==n)  //判断是否结束break;}printf("%d %d%d%d%d",j,ch2[3],ch2[2],ch2[1],ch2[0]); return 0;} 
# include<stdio.h>
int main()
{int m,n,i,j,k,l,ch[4];scanf("%d %d",&m,&n);for(i=m;i<10000;i++){j=1;l=i;for(k=0;k<4;k++,l/=10)ch[k]=l%10;if(ch[0]!=ch[1]&&ch[0]!=ch[2]&&ch[0]!=ch[3])j++;if(ch[1]!=ch[2]&&ch[1]!=ch[3])j++;if(ch[2]!=ch[3])j++;if(j==n)break;}printf("%d %04d",i-m,i);return 0;
}

7-6 sdut-C语言实验-斐波那契数列

分数 12
作者 马新娟
单位 山东理工大学
编写计算斐波那契(Fibonacci)数列的第n项函数fib(n)(n < 40)。
数列描述:
f1=f2==1;
fn=fn-1+fn-2(n>=3)。

输入格式:
输入整数 n 的值(0 < n < 40)。

输出格式:
输出fib(n)的值。

输入样例:
7
输出样例:
13

#include<stdio.h>
int flb(int n)
{int y;if(n==1||n==2){y=1;}else {y=flb(n-1)+flb(n-2);}return y;
}
int main()
{int n;scanf("%d",&n);printf("%d\n",flb(n));return 0;
}

7-7 sdut-C语言实验- 计算题

分数 12
作者 马新娟
单位 山东理工大学
一个简单的计算,你需要计算f(m,n),其定义如下:
当m=1时,f(m,n)=n;
当n=1时,f(m,n)=m;
当m>1,n>1时,f(m,n)= f(m-1,n)+ f(m,n-1)

输入格式:
第一行包含一个整数T(1<=T<=100),表示下面的数据组数。
以下T行,其中每组数据有两个整数m,n(1<=m,n<=2000),中间用空格隔开。

输出格式:
对每组输入数据,你需要计算出f(m,n),并输出。每个结果占一行。

输入样例:
在这里给出一组输入。例如:

2
1 1
2 3
输出样例:
在这里给出相应的输出。例如:

1
7

#include<stdio.h>
int f(int m,int n)
{int y;if(m==1){y=n;}else if(n==1){y=m;}else{y=f(m-1,n)+f(m,n-1);}return y;
}
int main()
{int t,n,m;scanf("%d",&t);while(t--){scanf("%d %d",&n,&m);printf("%d\n",f(m,n));}return 0;
}

2022山东理工大学pta程序设计---实验七(函数)题解相关推荐

  1. 山东理工大学pta程序设计---实验七函数 知识点+题目

    定义函数 返回类型 函数名(参数1, 参数2-) { //函数体 (返回值, 除了void类型都要有返回值, 跟返回类型对应) ; } int main() {return 0; //向操作系统返回0 ...

  2. 2022山东理工大学pta程序设计---实验五(一维数组)代码

    7-1 sdut- C语言实验-最值 有一个长度为n的整数序列,其中最大值和最小值不会出现在序列的第一和最后一个位置. 请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换.输出转换好 ...

  3. 2022山东理工大学pta程序设计---实验六(二维数组)题解

    7-1 sdut-C语言实验-求一个3*3矩阵对角线元素之和 分数 12 作者 马新娟 单位 山东理工大学 给定一个33的矩阵,请你求出对角线元素之和. 输入格式: 按照行优先顺序输入一个33矩阵,每 ...

  4. 2022山东理工大学pta程序设计---实验五(一维数组)详解

    ·## 7-1 sdut- C语言实验-最值 有一个长度为n的整数序列,其中最大值和最小值不会出现在序列的第一和最后一个位置. 请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换.输 ...

  5. c语言实验七 函数实验报告,C语言实验七函数实验报告.doc

    C语言实验七函数实验报告 C语言程序设计 实 验 报 告 实验题目 实验七 函数 实验目的 掌握函数定义的方法: 掌握函数实参与形参的对应关系,以及值传递的方式. 掌握函数的嵌套调用和递归调用的方法: ...

  6. 知到山东理工c语言答案,山东理工大学C语言实验.doc

    山东理工大学C语言实验 山东理工大学 C语言实验指导[答案] 实验一? 顺序结构程序设计(2学时) //姓名:*** //班级:*** //学号:*** //参考测试数据:输入:0 0 180 输出: ...

  7. python程序设计实验七_Python程序设计实验报告七:组合数据类型

    安徽工程大学 Python程序设计实验报告 班级物流192姓名芦靓学号3190505217成绩 日期2020.5.27指导老师修宇 [实验名称]实验七 组合数据类型 [实验目的] 熟悉通过序列索引迭代 ...

  8. linux实验报告山东科技大学,-linux程序设计实验报告

    -linux程序设计实验报告 (31页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 29.9 积分 实 验 报 告课程名称: Linux程序设计 学 院: ...

  9. 山东理工大学pta答案 C语言,山东理工大学高分子化学题库附答案.docx

    山东理工大学高分子化学题库附答案 一? 选择题 1. 聚乙烯醇的单体是(_____C___) A.乙烯醇 B.乙醛 C.醋酸乙烯酯 D.乙酸乙酯 从结构角度看聚乙烯醇的单体乙烯醇CH2=CH-OH,? ...

最新文章

  1. 商显行业高速发展,如何开启全新商务会议时代
  2. 关于如何清除某个特定网站的缓存---基于Chrome浏览器
  3. 求n的阶乘的算法框图_算法|从阶乘计算看递归算法
  4. python输入的方式有几种_Python输入方式具体的三种实现方式
  5. 如何使用GitLab和Rancher构建CI/CD流水线–Part 1
  6. NET中dictionary的一个小坑
  7. 《逻辑说服力》— 综合素质提升书籍
  8. MIPI D-PHY IP 使用说明(二)
  9. erp系统服务器维护,ERP系统维护服务器维护管理文档模板.doc
  10. python提取文件中含某一字符串的行,并写入新的文件中
  11. 前端代码 Jenkins 线上打包报错:TypeError: StackFrame is not a constructor
  12. php 下载 xlsx
  13. 类中成员方法和实例方法
  14. 贪心算法解决商场买赠问题(最简单,通俗易懂,附C++代码
  15. 【博主推荐】大数据可视化大屏(源码下载)
  16. 转: GSM信令流程
  17. 记录一位软件测试实习生的成长
  18. 【无标题】python利用公式法计算圆周率
  19. 雷达抗有源干扰主要方法分类
  20. Item 13: Prefer const_iterators to iterators.

热门文章

  1. 软件研发的项目经理都在用哪些好的设计和管理的软件工具?
  2. Python Turtle绘制炫酷漂亮图案(turtledemo模块实例)
  3. 音频编码之opus(一)
  4. CComObject 。。。(转)
  5. 16.WireShark学习-在WireShark中添加新协议
  6. 2013年中南大学复试-惠民工程
  7. IP欺骗种类有哪些?
  8. 新员工犯错续:解决问题
  9. NAS硬盘存储服务器维修,NAS存储服务器用NAS硬盘的原因有哪些?NAS存储硬盘该如何选择?...
  10. Minecraft 1.16.5模组开发(三十) 自定义成就系统(advancements)