基本计算(空军工程大学)

第1关:1 三角形类型

100

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

本关任务:给定程序中函数fun的功能是:根据输入的三条边长(整型),判断能否构成三角形,是构成等边三角形,还是等腰三角形。若能构成等边三角形,函数返回3;若能构成等腰三角形,函数返回2;若能构成一般三角形,函数返回1;若不能构成三角形函,数返回0。

相关知识

为了完成本关任务,你需要掌握:

  1. 逻辑表达式
  2. if语句

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。 提示:错误通常在/******found******/注释行的下一行。

测试说明

平台会对你编写的代码进行测试:

测试输入: 1 2 3 预期输出: 0

测试输入: 4 5 6 预期输出: 1

测试输入: 6 6 6 预期输出: 3


开始你的任务吧,祝你成功!

#include 
/********found********/
int  fun(int a, int b, int c)
{	if (a+b>c && b+c>a && a+c>b)
	{	
		if (a==b && b==c)
			return 3;
		else if (a==b || b==c || a==c)
			return 2;
		else       
		    return 1;     
	}
	else
		return 0;
}
void main()
{	int  a,b,c,shape;
	scanf("%d%d%d",&a,&b,&c);
	shape = fun(a,b,c);
	printf("%d",shape);
}

第2关:2 整除

100

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

本关任务:给定程序中函数fun的功能是:计算小于形参k的最大的10个能被13或17整除的自然数之和。k的值由主函数传入。

相关知识

为了完成本关任务,你需要掌握:1.算术运算符和逻辑运算符;2.累加求和。

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。 提示:错误通常在/******found******/注释行的下一行。

测试说明

平台会对你编写的代码进行测试:

测试输入:500

预期输出: 4622


开始你的任务吧,祝你成功!

#include 
int fun(int k)
{	
	int  m = 0, mc = 0;
	while((k>=2) && (mc<10))
	{
		/********found********/
		if((k%13==0) || (k%17==0))
		{	m = m+k;
			mc++;
		}
		k--;
	}
	return m;
}
/********found********/
int  main()
{	
	int a;
    scanf("%d",&a);
	printf("%d", fun(a));
}

第3关:3 低三位

100

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

本关任务:函数fun的功能是:求整数x的y次方的低3位值。

相关知识

为了完成本关任务,你需要掌握:

  1. 算数运算符
  2. 循环结构

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。 提示:错误通常在/******found******/注释行的下一行。

测试说明

平台会对你编写的代码进行测试:

测试输入: 15625 预期输出: 625


开始你的任务吧,祝你成功!

#include
long fun(int x,int y,long *p)
{	int i;
	long t = 1;
	/********found********/
	for (i=1; i<=y; i++)
		t = t*x;
	*p = t;
	/********found********/
	t = t%1000;
	return t;
}
void main()
{	long t,r;
	int x,y;
	scanf("%d%d",&x,&y);
	t = fun(x,y,&r);
	printf("%ld\n",t);
}

第4关:4 摸彩球

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

本关任务:给定程序中函数fun的功能是:从3个红球、5个白球、6个黑球中任意取出8个作为一组,并输出组合数。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。

相关知识

为了完成本关任务,你需要掌握:

  1. 循环嵌套
  2. 穷举

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

预期输出: 15


开始你的任务吧,祝你成功!

#include 
int fun()
{	int i,j,k,sum = 0;
	/********found********/
	for(i=1;i<=3;i++)
		for(j=1;j<=5;j++)
		{	k=8-i-j;
			/********found********/
			if(k>=0&&k<=6)
			{
				sum=sum+1;
			}
		}
	return sum;
}
void main()
{	int sum;
	sum=fun();
	printf("%4d",sum);
}

第5关:5 求函数值

100

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

本关任务:给定程序中函数fun的功能是:计算函数f(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值,其中x和y的值不等,z和y的值不等。

相关知识

为了完成本关任务,你需要掌握:算数运算符。

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 9 11 15 预期输出: -3.50


开始你的任务吧,祝你成功!

#include 
#include 
/********found********/
#define FU(m,n) (m/n)
float fun(float a,float b,float c)
{	float value;
	value=FU((a+b),(a-b))+FU((c+b),(c-b));
	/********found********/
	return(value);
}
void main()
{
	float x,y,z,sum;
	scanf("%f%f%f",&x,&y,&z);
	if (x==y||y==z)
	{	printf("Data error!\n");
		exit(0);
	}
	sum=fun(x,y,z);
	printf("%5.2f",sum);
}

第6关:6 最小公倍数

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 测试说明

任务描述

给定程序中函数fun的功能是:求三个数的最小公倍数。

相关知识

为了完成本关任务,你需要掌握:

  1. 最小公倍数的概念
  2. 循环结构

测试说明

平台会对你编写的代码进行测试:

测试输入: 15 11 2

预期输出: 330


开始你的任务吧,祝你成功!

#include 
/********found********/
int fun(int x,int y,int z){
    int j,t,n,m;
    j=1;
    t=j%x;
    m=j%y;
    n=j%z;
    while(t!=0||m!=0||n!=0){
        j=j+1;
        t=j%x;
        m=j%y;
        n=j%z;
    }
    /********found********/
    return j;
}
void main(){
    int x1,x2,x3,j;
    scanf("%d%d%d",&x1,&x2,&x3);
    j=fun(x1,x2,x3);
    printf("%d",j);
}

第7关:7 最大公约数

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。

相关知识

为了完成本关任务,你需要掌握:

  1. 最大公约数的概念
  2. 循环结构

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 4921; 预期输出: 7

测试输入: 2781

预期输出: 27

-- 开始你的任务吧,祝你成功!

#include 
int fun(int a,int b){
    int r,t;
    if(a

第8关:8 二分法求方程根

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中fun和funx函数的功能是:用二分法求方程 2x3−4x2+3x−6=0 的一个根,并要求绝对误差不超过0.001。

相关知识

为了完成本关任务,你需要掌握:

  1. while语句
  2. 迭代法

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: -100 90

预期输出: 2.000


开始你的任务吧,祝你成功!

#include 
#include 
double funx(double x){
    return (2*x*x*x-4*x*x+3*x-6);
}
double fun(double m,double n){
    /********found********/
    double r;
    r=(m+n)/2;
    /********found********/
    while(fabs(n-m)>0.001){
        if(funx(r)*funx(n)<0)
            m=r;
        else
            n=r;
        r=(m+n)/2;
    }
    return r;
}
void main(){
    double m,n,root;
    scanf("%lf%lf",&m,&n);
    root=fun(m,n);
    printf("%6.3f",root);
}

第9关:9 各就各位

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中。

相关知识

为了完成本关任务,你需要掌握:

  1. if语句
  2. 关系运算符

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 55 12 34

预期输出: 55.0,34.0,12.0


开始你的任务吧,祝你成功!

#include 
void fun(float *p,float *q,float *s)
{
	/********found********/
	float k;
	if (*p<*q)
	{	k=*p;
		*p=*q;
		*q=k;
	}
	/********found********/
	if(*p<*s)
	{	k=*s;
		*s=*p;
		*p=k;
	}
	if(*q<*s)
	{	k=*q;
		*q=*s;
		*s=k;
	}
}
void main()
{	float a,b,c;
	scanf("%f%f%f",&a,&b,&c);
	fun(&a,&b,&c);
	printf("%4.1f,%4.1f,%4.1f\n",a,b,c);
}

第10关:10 交换整数之一

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:实现两个整数的交换。

相关知识

为了完成本关任务,你需要掌握:变量值交换算法。

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 60 65

预期输出: 65,60


开始你的任务吧,祝你成功!

#include 
/********found********/
void fun(int  *a, int  *b) {
    int  t;
    /********found********/
    t = *b;
    *b = *a;
    *a = t;
}
void main() {
    int  a, b;
    scanf("%d%d", &a, &b);
    fun(&a, &b);
    printf("%d,%d\n", a, b);
}

第11关:11 交换整数之二

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:交换主函数中两个变量的值

相关知识

为了完成本关任务,你需要掌握:变量值交换算法。

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 8 3

预期输出: 3,8


开始你的任务吧,祝你成功!

#include 
/********found********/
void fun(int *x,int *y){
    int t;
    /********found********/
    t=*x;
    *x=*y;
    *y=t;
}
void main(){
    int a,b;
    scanf("%d%d",&a,&b);
    fun(&a,&b);
    printf("%d,%d\n",a,b);
}

第12关:12 交换整数之三

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是通过某种方式实现两个变量的交换,规定不允许增加语句和表达式。

相关知识

为了完成本关任务,你需要掌握:

  1. 变量值交换算法
  2. 函数参数传递

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 8 3

预期输出: 3,8


开始你的任务吧,祝你成功!

#include 
int fun(int *x,int y){
    int t;
    /********found********/
    t=*x;
    *x=y;
    y=t;
    /********found********/
    return(y);
}
void main(){
    int a,b;
    scanf("%d%d",&a,&b);
    b = fun(&a,b);
    printf("%d,%d\n",a,b);
}

第13关:13 素数判断

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:判断一个整数m是否是素数,若是返回1,否则返回0。在main()函数中,若fun返回1输出YES,若fun返回0输出NO!

相关知识

为了完成本关任务,你需要掌握:

  1. 素数的概念
  2. 循环结构

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 17

预期输出: YES


开始你的任务吧,祝你成功!

#include 
int fun(int m){
    int k=2;
    while(k<=m&&(m%k))
        /********found********/
        k++;
        /********found********/
        if(m==k)
            return 1;
        else
            return 0;
}
void main(){
    int n;
    scanf("%d",&n);
    if (fun(n))
        printf("YES\n");
    else
        printf("NO!\n");
}

第14关:14 哥德巴赫猜想

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数

相关知识

为了完成本关任务,你需要掌握:

  1. 素数的概念
  2. 循环结构

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 56

预期输出: 56=19+37


开始你的任务吧,祝你成功!

#include 
#include 
void fun(int a,int *b,int *c){
    int i,j,d,y;
    for(i=3;i

第15关:15 m后的第一个素数

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。

相关知识

为了完成本关任务,你需要掌握:

  1. break语句
  2. 循环结构

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 19

预期输出: 23


开始你的任务吧,祝你成功!

#include 
int fun(int m)
{	int i,k;
	for(i=m+1; ;i++)
	{	for(k=2;k

第16关:16 素数之和

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:计算并输出high以内最大的10个素数之和。high由主函数传给fun函数。

相关知识

为了完成本关任务,你需要掌握:

  1. 素数的概念
  2. 循环结构

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 100

预期输出: 732


开始你的任务吧,祝你成功!

#include 
#include 
int fun(int high){
    int sum=0,n=0,j,yes;
    /********found********/
    while((high>=2)&&(n<10)){
    yes=1;
    for(j=2;j<=high/2;j++)
            if(high%j==0){
                yes=0;
                /********found********/
                break;
            }
        if(yes){
            sum+=high;
            n++;
        }
        high--;
    }
    return sum;
}
void main(){
    int n;
    scanf("%d",&n);
    printf("%d\n",fun(n));
}

第17关:17 全部质因子

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序的功能是:读入一个整数k(2≤k≤10000),打印它的所有质因子(即所有素数的因子)。

相关知识

为了完成本关任务,你需要掌握:

  1. 质因子的概念
  2. 循环结构

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 2310

预期输出:
2, 3, 5, 7, 11,


开始你的任务吧,祝你成功!

#include 
/********found********/
int IsPrime(int n)
{
    int i,m;
    m=1;
    for(i=2;i

第18关:18 求阶乘之一

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。

相关知识

为了完成本关任务,你需要掌握:

  1. 循环结构
  2. 函数递归调用

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 10

预期输出: 3628800 `


开始你的任务吧,祝你成功!

#include 
long fun(int k){
    /********found********/
    if (k>0)
    return (k*fun(k-1));
    /********found********/
    else if (k==0)
        return 1L;
}
void main() {
    int  k;
    scanf("%d",&k);
    printf("%ld\n",fun(k));
}

第19关:19 求阶乘之二

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:计算整数n的阶乘。

相关知识

为了完成本关任务,你需要掌握:

  1. 循环结构
  2. 累乘

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 5

预期输出: 5!=120


开始你的任务吧,祝你成功!

#include 
double fun(int  n) {
    double  result = 1.0;
    while (n>1 && n<170)
        /********found********/
        result *= n--;
    /********found********/
    return  result;
}
void main() {
    int  n;
    scanf("%d", &n);
    printf("\n\n%d!=%1g\n",n,fun(n));
}

第20关:20 求阶乘之三

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:计算n!。

相关知识

为了完成本关任务,你需要掌握:

  1. 循环结构
  2. 累乘

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 5

预期输出: 120.000000 `


开始你的任务吧,祝你成功!

#include 
double fun(int n){
    double result=1.0;
    /********found********/
    if (n==0)
    return 1.0;
    while(n>1&&n<170)
        /********found********/
        result *= n--;
    return result;
}
void main(){
    int n;
    scanf("%d",&n);
    printf("%1f\n",fun(n));
}

第21关:21 斐波那契数列

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中fun函数的功能是:用递归算法计算斐波那契数列中第n项的值。

相关知识

为了完成本关任务,你需要掌握:

  1. 斐波那契数列
  2. 迭代法

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 7

预期输出: 13


开始你的任务吧,祝你成功!

#include 
long fun(int g){
    /********found********/
    switch(g)
    {
    case 0:
        return 0;
        /********found********/
    case 1:
    case 2:
        return 1;
    }
    return(fun(g-1)+fun(g-2));
}
void main(){
    long fib;
    int n;
    scanf("%d",&n);
    fib=fun(n);
    printf("%d\n",fib);
}

第22关:22 递归调用

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:按以下递归公式求函数值。 n=1时,fun(n)=10 n>1时,fun(n)=fun(n−1)+2

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 5

预期输出: 18


开始你的任务吧,祝你成功!

#include 
/********found********/
int fun(int n){
    int c;
    /********found********/
    if(n==1)
        c=10;
    else
        c=fun(n-1)+2;
    return(c);
}
void main(){
    int n;
    scanf("%d",&n);
    printf("%d\n",fun(n));
}

第23关:23 递归法求平方根

300

  • 任务要求
  • 参考答案
  • 评论2
  • 关卡排行榜
  • 任务描述
  • 相关知识
  • 编程要求
  • 测试说明

任务描述

给定程序中函数fun的功能是:应用递归算法求a的平方根。求平方根的迭代公式如下: x1=(1/2)∗(x0+(a/x0))

相关知识

为了完成本关任务,你需要掌握:

  1. 循环结构
  2. 递归调用

编程要求

请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。

测试说明

平台会对你编写的代码进行测试:

测试输入: 2

测试输出: 1.414214

开始你的任务吧,祝你成功!

#include 
#include 
/********found********/
double fun(double a,double x0){
    double x1,y;
    x1=(x0+a/x0)/2.0;
    /********found********/
    if (fabs(x1-x0)>0.00001)
        y=fun(a, x1);
    else
        y=x1;
    return y;
}
void main(){
    double x;
    scanf("%lf",&x);
    printf("%lf\n",fun(x,1.0));
}

你可能感兴趣的:(算法,c语言,数据结构)