超星高级语言程序设计实验作业 (实验03 模块化程序设计)

超星高级语言程序设计实验作业

实验03 模块化程序设计

注:以下内容仅供交流,代码都是本人自己写的,还请同学们先自己编写再进行交流。

1.组合问题

题目描述:编写程序,输入m,n的值,计算并输出函数f的值。
GJBook3-05-02.jpg

输入:一个整数m和一个整数n(m,n≤20)。
输出:函数f的值。
样例1:
输入:-1 2
输出:-1
样例2:
输入:2 2
输出:1

#include<stdio.h>
long long t(long x) {

    long long sum;

    sum = x;

    while (x > 1) {

        sum *= (x - 1);

        x--;

    }

    return sum;



}

int main() {

    long long m, n, l;

    scanf("%lld %lld", &m, &n);

    if (m < n && m>0 && n > 0)printf("0");

    else if (m == n && m > 0 && n > 0)printf("1");

    else if (m > n && m > 0 && n > 0) {

        l = m - n;

        printf("%ld", t(m) / t(l) / t(n));

    }

    else printf("-1");

    return 0;

}

啥也不说了,还是用long long 满满的都是泪

2.逆序数

题目描述:编写函数,求任意位自然数的逆序数,例如5432就是2345的逆序数。
输入:任意一个整数(<10^18) 。
输出:如果输入的不是自然数,则输出NULL;否则输出对应的逆序数。
样例1:
输入:120
输出:21
样例2:
输入:999999999999999999
输出:999999999999999999
样例3:
输入:-1357
输出:NULL

#include<stdio.h>
int a[18];
long long px(int i) {
	int n;
	long long sum = 0;
	for ( n = 0; n <i; n++)
	{
		sum = sum * 10 + a[n];
	}
	return sum;
}
int main() {
	long long d;
	int i;
	scanf_s("%lld", &d);
	if (d<0)
	{
		printf("NULL");
	}
	else {
		for (i = 0; d > 0; i++)
		{
			a[i] = d % 10;
			d = d / 10;
		}
		d = px(i);
		printf("%lld", d);
	}
	return 0;
}

3.多边形周长

题目描述:编写程序,求由键盘按顺时针方向输入n(0<n<=10)个顶点坐标的多边形周长(测试数据已保证当n>2时,各点按输入方向依次连接可构成封闭的n边形)。
输入:第一行输入一个整数,作为n值;以后每行两个浮点数(doulbe),为多边形各顶点的坐标。
输出:多边形的周长,精确到小数点后2位。
样例1:
输入:
4
0 0
0 1
1 1
1 0
输出:4.00
样例2:
输入:
1
2 3
输出:
0.00
样例3:
输入:
2
2 3
2 4
输出:
1.00

#include<stdio.h>
#include<math.h>
double out(double x1,double y1,double x2,double y2) {
	 double sum=0;
	 sum = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1-y2));
	 return sum;
}
int main() {
	 int n,i,k;
	 double outcome=0;
	 scanf_s("%d", &n);
	 double a[10][2];
	 for ( i = 0; i < n; i++)
	 {
		 for ( k = 0; k < 2; k++)
		 {
		 	scanf_s("%lf", &a[i][k]);
		 }
	 }
	 if (n != 2)
	 {
		 for (i = 0; i < n - 1; i++){
		 	outcome = outcome + out(a[i][0], a[i][1], a[i + 1][0], a[i + 1][1]);
		 }
	 }
	 outcome = outcome + out(a[0][0], a[0][1], a[n - 1][0], a[n - 1][1]);
	 printf("%.2lf",outcome);
	 return 0;
 }
  • 24
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值