(新手向)中国大学mooc高级语言程序设计相关OJ解答(三)

本文详细解析了中国大学MOOC吉林大学的《高级语言程序设计》课程中的编程题目,涵盖模块化程序、数组应用等多个主题,包括组合问题、逆序数、数组元素操作等实例,旨在帮助初学者理解并解决相关编程问题。
摘要由CSDN通过智能技术生成

中国大学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;
    
}

暴力模拟就完事(但是如果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;
}

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

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",
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值