6-1 实验5_1_设计函数fun
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知分段函数,当x<1时,y=x;当1<=x<=10时,y=2x-1;当10< x <=100时,y=3x-11;当x>100时,y=x*x-24。
设计函数int fun(int x),根据分段函数计算y值。
函数返回值范围不会超过int型变量。
输入为一个整数x,即自变量x。输出为函数值y的结果
函数接口定义:
函数原型 如下: int fun ( int x );
其中 x
是用户传入的参数。 x
的值不超过int
的范围。函数须返函数值y的结果。
裁判测试程序样例:
#include<stdio.h> int fun(int) ; int main() { int x ; scanf("%d",&x); printf("The result is:y=%d\n",fun(x)) ; return 0 ; } /* 请在这里填写答案 */
输入样例:
-99
输出样例:
The result is:y=-99
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
answer:
int fun ( int x)
{
int res;
if(x < 1){
res = x;
}else if(x >= 1&&x <= 10 ){
res = 2*x - 1;
}
else if(x > 10&&x <= 100){
res = 3*x - 11;
}else{
res = x*x-24;
}
return res;
}
6-2 实验5_3_设计函数getDays
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
设计函数int getDays(int year,int month),根据给定的年year和月份month,计算该月的天数并返回。
提示:注意闰年的判断。
输入与输出要求:
输入两个整数y,m,即年份与月份。输出该年内该月的天数,占一行。
测试用例保证输入合法。
函数接口定义:
函数原型如下: int getDays(int year,int month);
其中 year
和 month
都是用户传入的参数,分别代表年份和月份。函数须返回该月的天数。
裁判测试程序样例:
函数被调用的例子如下: #include<stdio.h> int getDays(int,int) ; int main() { int year, month ; scanf("%d%d",&year,&month); printf("There are %d days in month %d year %d.",getDays(year,month), month, year) ; return 0 ; } /* 请在这里填写答案 */
输入样例:
1995 7
输出样例:
There are 31 days in month 7 year 1995.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
answer:
int getDays(int year, int month)
{
int day;
if( month == 2){
if((year%4==0&&year%100!=0)||(year%400==0)) day = 29;
else day = 28;
}else{
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12) day = 31;
else day = 30;
}
return day;
}
6-3 实验5_4_设计函数getDigit
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
设计函数int getDigit(long long n),计算并返回正整数n的长度。
输入与输出要求:
输入一个正整数n,n的取值范围不会超过long long类型变量。输出该正整数的位数,如“The integer 20 has 2 digits.”,占一行。注意单词digits的单复数形式。
函数接口定义:
函数原型如下: int getDigit(long long n);
其中 n
是用户传入的参数。 n
的值不超过long long
的范围。函数须返回 n
的长度。
裁判测试程序样例:
函数被调用 的例子如下: #include<stdio.h> int getDigit(long long n); int main() { long long n ; int len ; scanf("%lld",&n); len = getDigit(n) ; if (len > 1) printf("The integer %lld has %d digits.\n",n, len) ; else printf("The integer %lld has %d digit.\n",n, 1) ; return 0 ; } /* 请在这里填写答案 */
输入样例:
1234567890
输出样例:
The integer 1234567890 has 10 digits.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
C (gcc)
answer:
int getDigit(long long n)
{
int len = 0;
while(n != 0){
len++;
n=n/10;
}
return len;
}
6-4 实验5_5_设计函数reverseNum
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
设计函数int reverseNum(int n),返回正整数n反转后的形式,如reverseNum(12345)的值为54321。
输入与输出要求:
输入一个正整数n,n的取值范围不会超过int类型变量,n不会有前导0,n的结尾也不会有0。输出该正整数的反转形式,输出如“The reverse form of number 12345 is 54321.”,占一行。
函数接口定义:
函数原型如下: int reverseNum(int n);
其中 n
是用户传入的参数。 n
的值不超过int
的范围。函数须返回 n
反转后的数字。
裁判测试程序样例:
函数被调用例子如下: #include<stdio.h> int reverseNum(int) ; int main() { int num ; scanf("%d",&num); printf("The reverse form of number %d is %d.\n",num,reverseNum(num)) ; return 0; } /* 请在这里填写答案 */
输入样例:
12345
输出样例:
The reverse form of number 12345 is 54321.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
answer:
数位拆分;
int reverseNum(int n)
{
int m = 0;
while(n != 0)
{
m = m*10 + n%10;
n = n/10;
}
return m;
}
6-5 实验5_6_设计函数mypow
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
设计函数int mypow(int x,int n),返回正整数x的n次幂,如mypow(2,10)值为1024。
输入与输出要求:
输入两个非负整数x、和n,x的n次幂不会超过int型范围。输出计算结果,占一行。
函数接口定义:
函数原型如下: int mypow(int x,int n);
其中 x
和 n
都是用户传入的参数。 x
、n
以及x
的n
次幂都不超过int
的范围。函数须返回 x
的 n
次幂。
裁判测试程序样例:
函数被调用的例子如下: #include<stdio.h> int mypow(int , int ) ; int main() { int x, n ; scanf("%d%d",&x,&n) ; printf("%d\n",mypow(x,n)) ; return 0; } /* 请在这里填写答案 */
输入样例:
在这里给出一组输入。例如:
2 10
输出样例:
在这里给出相应的输出。例如:
1024
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
answer:
之后可使用迭代来写
int mypow(int x, int n)
{
int res = 1;
for(int i = n;i > 0; i--)
{
res = res * x;
}
return res;
}
6-6 实验5_10_设计函数judgeTriangle
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
设计函数int judgeTriangle(int a,int b,int c),判断a、b、c三边是否能构成三角形,如果能,那么进一步判断是属于哪种三角形(等边、等腰、直角、不规则三角形)。这里的a、b、c没有顺序之分。
当a、b、c三边不能构成三角形时,返回-1;当a、b、c三边构成不规则三角形时,返回0;当a、b、c三边构成直角三角形时,返回1;当a、b、c三边构成等腰三角形时,返回2;当a、b、c三边构成等边三角形时,返回3。
输入与输出要求:
输入三个正整数a、b、c,分别代表三角形的三边,输出判断结果。当无法构成三角形时输出“It is not a triangle.”;当构成不规则三角形时输出“It is a scalenous triangle.”;当构成直角三角形时输出“It is a right-angled triangle.”;当构成等腰三角形时输出“It is an isosceles triangle.”;当构成等边三角形时输出“It is a equilateral triangle.”。
函数接口定义:
函数原型如下: int judgeTriangle(int a,int b,int c);
其中 a
、b
和 c
都是用户传入的参数。运算中所有整数均不超过int
范围。函数须按题目要求返回相应的值。
裁判测试程序样例:
函数被调用的例子如下: #include<stdio.h> int judgeTriangle(int,int,int) ; int main() { int a, b, c ; scanf("%d%d%d",&a,&b,&c); switch(judgeTriangle(a,b,c)) { case -1 : printf("It is not a triangle.\n") ; break ; case 0 : printf("It is a scalenous triangle.\n") ; break ; case 1 : printf("It is a right-angled triangle.\n") ; break ; case 2 : printf("It is an isosceles triangle.\n") ; break ; case 3 : printf("It is a equilateral triangle.\n") ; break ; } return 0; } /* 请在这里填写答案 */
输入样例:
13 5 12
输出样例:
It is a right-angled triangle.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
answer:
int judgeTriangle(int a, int b, int c)
{
int res = -1;
if((a+b)>c&&(a+c)>b&&(b+c)>a)
{
if((a*a+b*b)==(c*c)||(a*a+c*c)==(b*b)||(c*c+b*b)==(a*a))
res = 1;
else if(a==b&&b==c)
res = 3;
else if(a==b||b==c||a==c)
res = 2;
else
res = 0;
}
return res;
}
6-7 实验5_11_设计函数isPerfect与printPerfect
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
如果一个整数的各因子(包括1但不包括该整数本身)值之和等于该整数,则该整数称为“完全数”(perfect number)。例如,6是一个完全数,因为6=1+2+3。你的任务是设计函数isPerfect和printPerfect,判断并打印出区间[a,b](1<=a<b<=20000)内的所有完全数,并统计完全数的总个数。
isPerfect函数原型:int isPerfect(int n);
用于判断正整数n是否为完全数,若是,则返回值为1,否则为0。
printPerfect函数原型:void printPerfect(int n);
用于打印出一个完全数n的所有因子,当执行printPerfect(6)时,打印效果为:6=1+2+3。
输入与输出要求:
输入两个正整数a和b,输出区间[a,b]内的所有完全数及完全数的总个数。
函数接口定义:
void printPerfect(int n);
其中 n
是用户传入的参数。 函数没有返回值。
int isPerfect(int n);
其中 n
是用户传入的参数。如果 n
是完全数,则函数须返回 1
,否则返回0
。
裁判测试程序样例:
函数被调用的例子如下: #include <stdio.h> //判断一个数是否为完全数的函数 int isPerfect(int); //打印完全数的函数 void printPerfect(int); int main() { int i,a,b,count; scanf("%d%d",&a,&b); count = 0 ;//a,b两数间完全数的数量,初始化为0 for(i=a;i<=b;i++) { if (isPerfect(i)) //如果是完全数 { printPerfect(i) ;//打印该完全数 count ++ ; //计数器加1 } } printf("The total number is %d.\n",count);//输出a,b两数间完全数的数量 return 0 ; } /* 请在这里填写答案 */
输入样例:
1 10000
输出样例:
6=1+2+3
28=1+2+4+7+14
496=1+2+4+8+16+31+62+124+248
8128=1+2+4+8+16+32+64+127+254+508+1016+2032+4064
The total number is 4.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
answer:
int isPerfect(int n)
{
int res = 0;
for(int i = 1;i <= n/2;i++)
{
if(n%i == 0)
res += i;
}
if(res == n)
return 1;
else return 0;
}
void printPerfect(int n)
{
printf("%d=1", n);
for(int i = 2; i <= n/2; i++)
{
if(n%i == 0)
printf("+%d", i);
}
printf("\n");
}
7-1 实验4_6_不定方程求解
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
给定正整数a,b,c。求不定方程 ax+by=c 关于未知数x和y的所有非负整数解组数。
注:题目来自信息学奥赛一本通
输入格式:
只有一行,为三个用空格分隔的正整数,依次代表a,b,c。每个数均不大于1000。测试用例保证合法。
输出格式:
只有一个整数,即不定方程的非负整数解组数。
输入样例:
2 3 18
输出样例:
4
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include <stdio.h>
int main()
{
int count = 0;
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
for(int x = 0; x <= c; x++)
{
for(int y = 0; y <= c; y++){
if(a*x+b*y==c)
count++;
}
}
printf("%d", count);
return 0;
}
7-2 实验4_8_斐波那契数列
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardo Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。它指的是这样一个数列 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597,2584,4181,6765,10946,17711,28657,46368……..这个数列从第3项开始,每一项都等于前两项之和。
现请你写一个程序计算这个数列的第n项值除以101的余数。
输入格式:
只有一行,为一个正整数n(3<=n<=100000000)。
输出格式:
也只有一行,为一个正整数,代表斐波那契数列第n项的值除以101的余数。
输入样例:
38
输出样例:
58
代码长度限制
16 KB
时间限制
1000 ms
内存限制
64 MB
栈限制
8192 KB
answer:
#include <stdio.h>
int fibonacciMod101(int n)
{
if (n <= 2)
{
return 1;
}
int a = 1, b = 1, c;
for (int i = 3; i <= n; i++)
{
c = (a + b) % 101;
a = b;
b = c;
}
return c;
}
int main()
{
int n;
scanf("%d", &n);
int result = fibonacciMod101(n);
printf("%d\n", result);
return 0;
}
7-3 实验4_12_遍历搜寻
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
已知整数a、b、c。你的任务是求出区间[a,b]内的整数,满足该数与“该数的所有因数(不包括本身但包括1,1的因数和按0处理)相加之和”的差的绝对值小于等于c的数字。例如27的因数是1、3、9。那么27与27的所有因数和的差为:27-(1+3+9)=14。
输入格式:
只有一行,为三个用空格分隔的整数,依次代表a、b、c。a、b代表所求区间范围,满足1<=a<=b<=10000,c代表限制条件,c>=0且小于10。
输出格式:
若干个整数,即满足条件的全部整数,每五个数为一行,整数之间用tab分隔,最后一个数后为换行符。当该区间没有符合条件的整数时,输出“There is no proper number in the interval.”。
输入样例一:
1 10000 0
输出样例一:
6 28 496 8128
输入样例二:
900 1000 0
输出样例二:
There is no proper number in the interval.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
answer:
现在看起来完全没必要把这个输出复杂化
#include <stdio.h>
int Primesum(int n)
{
int sum = 0;
if(n == 1)
{
sum = 0;
}
else
{
for(int i = 1; i <= n/2; i++)
{
if((n%i) == 0){
sum += i;
}
}
}
return sum;
}
int main()
{
int a, b, c;
scanf("%d %d %d", &a, &b, &c);
int num[10000];
int sum = 0;
int count = 0;
for(int i = a; i <= b; i++)
{
sum = Primesum(i);
if((sum - i) <= c&&(sum -i) >= -c){
num[count] = i;
count++;
}
}
if(count == 0)
{
printf("There is no proper number in the interval.\n");
}
else if(count%5 == 0)
{
for(int j = 0; j < count; j++)
{
if((j+1)%5 == 0)
{
printf("%d\n", num[j]);
}else
{
printf("%d\t", num[j]);
}
}
}
else if(count%5 != 0)
{
for( int j = 0; j < count ; j++)
{
if(j < count - 1)
{
if((j+1)%5 == 0)
{
printf("%d\n", num[j]);
}
else
printf("%d\t", num[j]);
}
else if(j == count - 1)
printf("%d\n", num[j]);
}
}
return 0;
}