当前位置:   article > 正文

(新手向)中国大学mooc高级语言程序设计相关OJ解答(三)_问题描述:编写程序,输入m,n的值,计算并输出函数f的值。 输入:一个整数m和一个整数

问题描述:编写程序,输入m,n的值,计算并输出函数f的值。 输入:一个整数m和一个整数

中国大学mooc高级语言程序设计地址:https://www.icourse163.org/course/JLU-62001

第五讲:模块化程序 & 数组初步–编程题

1组合问题(10分)

问题描述:编写程序,输入m,n的值,计算并输出函数f的值。
在这里插入图片描述

输入:一个整数m和一个整数n。

输出:函数f的值。

样例:输入 4 2 输出 6

#include<stdio.h>
int t(int x){
   
	int sum;
	sum=x;
    while(x>1){
   
	 sum*=(x-1);
    x--;}
    return sum;

}
int main(){
   
    int m,n,l;
    scanf("%d %d",&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("%d",t(m)/t(l)/t(n));
	}
    else printf("-1");
    return 0;
    
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

暴力模拟就完事(但是如果m,n值很大会tle),可以参考杨辉三角优化算法。

2逆序数(10分)

问题描述:编写函数,求任意四位自然数的逆序数,例如5432就是2345的逆序数。

输入:任意一个整数

输出:如果输入的不是四位自然数,则输出0;否则输出对应的逆序数。

样例1:输入 12 输出 0

样例2:输入 654 输出456

#include<stdio.h>
int main(){
   
	long a,i[4],t;
	scanf("%ld",&a);
	if(a<1000||a>9999)printf("0");
	else{
   
		for(t=1;t<=4;t++){
   
			i[t]=a%10;
			a/=10;
		}
		for(t=1;t<=4;t++){
   
			printf("%ld",i[t]);
		}
		
	}
	return 0;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

还是那套求每位数的方法。这里注意跟对应的位数比较。

3转移0元素(10分)

问题描述:编写程序,把给定长度为10的整数数组中所有0元素全部移到后面,且所有非0元素的顺序不变。

输入:从键盘随机输入十个整数,作为数组a的元素。

输出:已将所有0元素串到后面的整数数组a的所有元素,各元素间无间隔字符。

样例:输入 0 1 1 0 0 0 1 3 2 0 输出1113200000

#include <stdio.h>
int main()
{
   
    long a[10], i, t = 0;
    for (i = 0; i <= 9; i++)
        scanf("%ld", &a<
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/704325
推荐阅读
相关标签
  

闽ICP备14008679号