第1关:1 三角形类型
100
- 任务要求
- 参考答案
- 评论2
- 关卡排行榜
任务描述
本关任务:给定程序中函数fun的功能是:根据输入的三条边长(整型),判断能否构成三角形,是构成等边三角形,还是等腰三角形。若能构成等边三角形,函数返回3;若能构成等腰三角形,函数返回2;若能构成一般三角形,函数返回1;若不能构成三角形函,数返回0。
相关知识
为了完成本关任务,你需要掌握:
- 逻辑表达式
- if语句
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。 提示:错误通常在/******found******/
注释行的下一行。
测试说明
平台会对你编写的代码进行测试:
测试输入: 1 2 3
预期输出: 0
测试输入: 4 5 6
预期输出: 1
测试输入: 6 6 6
预期输出: 3
开始你的任务吧,祝你成功!
#include <stdio.h>
/********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 <stdio.h>
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位值。
相关知识
为了完成本关任务,你需要掌握:
- 算数运算符
- 循环结构
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。 提示:错误通常在/******found******/
注释行的下一行。
测试说明
平台会对你编写的代码进行测试:
测试输入: 15625
预期输出: 625
开始你的任务吧,祝你成功!
#include<stdio.h>
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个作为一组,并输出组合数。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。
相关知识
为了完成本关任务,你需要掌握:
- 循环嵌套
- 穷举
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
预期输出: 15
开始你的任务吧,祝你成功!
#include <stdio.h>
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 <stdio.h>
#include <stdlib.h>
/********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的功能是:求三个数的最小公倍数。
相关知识
为了完成本关任务,你需要掌握:
- 最小公倍数的概念
- 循环结构
测试说明
平台会对你编写的代码进行测试:
测试输入: 15 11 2
预期输出: 330
开始你的任务吧,祝你成功!
#include <stdio.h>
/********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的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。
相关知识
为了完成本关任务,你需要掌握:
- 最大公约数的概念
- 循环结构
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 49
,21
; 预期输出: 7
测试输入: 27
,81
预期输出: 27
-- 开始你的任务吧,祝你成功!
#include <stdio.h>
int fun(int a,int b){
int r,t;
if(a<b){
/********found********/
t=a;
a=b;
b=t;
}
r=a%b;
while(r!=0) {
a=b;
b=r;
r=a%b;
}
/********found********/
return(b);
}
void main(){
int num1,num2,a;
scanf("%d%d",&num1,&num2);
a=fun(num1,num2);
printf("%d",a);
}
第8关:8 二分法求方程根
300
- 任务要求
- 参考答案
- 评论2
- 关卡排行榜
任务描述
给定程序中fun和funx函数的功能是:用二分法求方程 2x3−4x2+3x−6=0 的一个根,并要求绝对误差不超过0.001。
相关知识
为了完成本关任务,你需要掌握:
- while语句
- 迭代法
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: -100 90
预期输出: 2.000
开始你的任务吧,祝你成功!
#include <stdio.h>
#include <math.h>
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中。
相关知识
为了完成本关任务,你需要掌握:
- if语句
- 关系运算符
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 55
12
34
预期输出: 55.0,34.0,12.0
开始你的任务吧,祝你成功!
#include <stdio.h>
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 <stdio.h>
/********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 <stdio.h>
/********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的功能是通过某种方式实现两个变量的交换,规定不允许增加语句和表达式。
相关知识
为了完成本关任务,你需要掌握:
- 变量值交换算法
- 函数参数传递
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 8 3
预期输出: 3,8
开始你的任务吧,祝你成功!
#include <stdio.h>
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!
相关知识
为了完成本关任务,你需要掌握:
- 素数的概念
- 循环结构
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 17
预期输出: YES
开始你的任务吧,祝你成功!
#include <stdio.h>
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的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数
相关知识
为了完成本关任务,你需要掌握:
- 素数的概念
- 循环结构
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 56
预期输出: 56=19+37
开始你的任务吧,祝你成功!
#include <stdio.h>
#include <math.h>
void fun(int a,int *b,int *c){
int i,j,d,y;
for(i=3;i<a/2;i=i+2){
/********found********/
y=1;
for(j=2;j<=sqrt((double)i);j++)
if(i%j==0)
y=0;
if (y==1) {
/********found********/
d = a-i;
for(j=2;j<=sqrt((double)i);j++)
if (d%j== 0)
y=0;
if (y==1){
*b=i;
*c=d;
}
}
}
}
void main(){
int a,b,c;
do{
scanf("%d",&a);
} while(a%2);
fun(a,&b,&c);
printf("%d=%d+%d\n",a,b,c);
}
第15关:15 m后的第一个素数
300
- 任务要求
- 参考答案
- 评论2
- 关卡排行榜
任务描述
给定程序中函数fun的功能是:找出一个大于给定整数m且紧随m的素数,并作为函数值返回。
相关知识
为了完成本关任务,你需要掌握:
- break语句
- 循环结构
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 19
预期输出: 23
开始你的任务吧,祝你成功!
#include <stdio.h>
int fun(int m)
{ int i,k;
for(i=m+1; ;i++)
{ for(k=2;k<i;k++)
/********found********/
if(i%k==0)
break;
/********found********/
if(k==i)
return(i);
}
}
void main()
{
int n;
scanf("%d",&n);
printf("%d\n",fun(n));
}
第16关:16 素数之和
300
- 任务要求
- 参考答案
- 评论2
- 关卡排行榜
任务描述
给定程序中函数fun的功能是:计算并输出high以内最大的10个素数之和。high由主函数传给fun函数。
相关知识
为了完成本关任务,你需要掌握:
- 素数的概念
- 循环结构
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 100
预期输出: 732
开始你的任务吧,祝你成功!
#include <stdio.h>
#include <math.h>
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),打印它的所有质因子(即所有素数的因子)。
相关知识
为了完成本关任务,你需要掌握:
- 质因子的概念
- 循环结构
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 2310
预期输出:2, 3, 5, 7, 11,
开始你的任务吧,祝你成功!
#include <stdio.h>
/********found********/
int IsPrime(int n)
{
int i,m;
m=1;
for(i=2;i<n;i++)
/********found********/
if(!(n%i)){
m=0;
break;
}
return(m);
}
void main(){
int j,k;
scanf("%d",&k);
for(j=2;j<k;j++)
if((!(k%j))&&(IsPrime(j)))
printf("%4d,",j);
}
第18关:18 求阶乘之一
300
- 任务要求
- 参考答案
- 评论2
- 关卡排行榜
任务描述
给定程序中函数fun的功能是:求k!(k<13),所求阶乘的值作为函数值返回。
相关知识
为了完成本关任务,你需要掌握:
- 循环结构
- 函数递归调用
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 10
预期输出: 3628800
`
开始你的任务吧,祝你成功!
#include <stdio.h>
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的阶乘。
相关知识
为了完成本关任务,你需要掌握:
- 循环结构
- 累乘
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 5
预期输出: 5!=120
开始你的任务吧,祝你成功!
#include <stdio.h>
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!。
相关知识
为了完成本关任务,你需要掌握:
- 循环结构
- 累乘
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 5
预期输出: 120.000000
`
开始你的任务吧,祝你成功!
#include <stdio.h>
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项的值。
相关知识
为了完成本关任务,你需要掌握:
- 斐波那契数列
- 迭代法
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 7
预期输出: 13
开始你的任务吧,祝你成功!
#include <stdio.h>
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 <stdio.h>
/********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))
相关知识
为了完成本关任务,你需要掌握:
- 循环结构
- 递归调用
编程要求
请改正程序中的错误,使它能得出正确的结果,不要改动main函数,不得增行或删行,也不得更改程序的结构。
测试说明
平台会对你编写的代码进行测试:
测试输入: 2
测试输出: 1.414214
开始你的任务吧,祝你成功!
#include <stdio.h>
#include <math.h>
/********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));
}