C语言函数在线练习题1
1. 求最大值(1级)1
【题目描述】
请编写一个求两整数的最大值函数GetMax。要求在主函数中调用该函数,该函数的主要功能是判断从键盘任意输入两个整数的大小,计算并输出最大值。
【输入】
两个整数。
【输出】
两个整数中的最大值。
【样例输入】
15 30
【样例输出】
MAX=30
参考代码:#include int GetMax(int a,int b) { int c; c=a>b?a:b; return c; } int main() { int num1, num2, max; scanf("%d%d", &num1, &num2); max = GetMax(num1, num2); printf("MAX=%d ", max); return 0; }
2. 实现计算器基本功能(1级)1
【题目描述】
编写程序分模块设计实现计算器的基本运算功能(加减乘除,除数默认不为0)。
【输入】
两个数字,一个运算符号
【输出】
运算结果,结果保留2位小数。
【样例输入】
2*3
【样例输出】
6.00
参考代码:#include #include float sum(float a, float b) /*定义加法运算函数*/ { float c; c = a + b; return(c); } float sub(float a, float b) /*定义减法运算函数*/ { return(a - b); } float mult(float a, float b) { return a * b; /*定义乘法运算函数*/ } float pi(float a, float b) { return a / b; /*定义除法运算函数*/ } main() /*主函数*/ { float x, y, result; char c; scanf("%f%c%f", &x, &c, &y); if (c =="+") result = sum(x, y); /*有参函数调用*/ else if (c =="-") result = sub(x, y); else if (c == "*") result = mult(x, y); else if (c == "/") result = pi(x, y); printf("result is %.2f ", result); }
3. 判断三角形 (1级)1
【题目描述】
编写函数实现功能:若a,b,c 能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。
【输入】
三个整数
【输出】
三角形的形状用1、2或3表示
【样例输入】
3 3 3
【样例输出】
The shape : 3
参考代码:#include 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("The shape : %d ",shape); }
4. 交换两个变量的值 (1级) 2
【题目描述】
编写函数将两个变量的值交换,例如变量a中的值原为3,b中的值原为8,程序运行后a中的值为8,b中的值为3。
【输入】
两个整数
【输出】
交换后的两个整数
【样例输入】
3 5
【样例输出】
5 3
参考代码:#include void fun(int *x,int *y) { int t; t=*x; *x=*y; *y=t; } void main() { int a,b; scanf("%d %d",&a,&b); fun(&a,&b); printf("%d %d ",a,b); }
5. 存放数值(1级)Y 2
【题目描述】
从键盘输入3个数,将最大值放在变量a中,最小值放在变量c中,将中间值放在变量b中。
【输入】
三个整数
【输出】
按要求输出变量a、b和c的值
【样例输入】
55 12 34
【样例输出】
a=55,b=34,c=12
参考代码:#include void fun(int *a,int *b,int *c)//接收a,b,c的地址 { int t; if(*a<*b) { t=*a; *a=*b; *b=t; } if(*a<*c) { t=*a; *a=*c; *c=t; } if(*b<*c) { t=*b; *b=*c; *c=t; } } void main() { int a,b,c; scanf("%d%d%d",&a,&b,&c); fun(&a,&b,&c); printf("a=%d,b=%d,c=%d ",a,b,c); }
6. 进制转换(2级)Y 1
【题目描述】
将十进制正整数m转换成k进制数(2 k 9)并输出(m,k从键盘输入)。
【输入】
两个正整数m和k
【输出】
按进制转换后的数
【样例输入】
8 2
【样例输出】
1000
参考代码:#include void Trans( int m, int k ) { int aa[20], i, j; for( i = 0; m; i++ ) { aa[i] = m%k; m /= k; } for( j=i-1; j>=0; j-- ) printf("%d", aa[j]); } void main() { int b, n; scanf("%d %d", &n, &b ); Trans( n, b ); }
7. 统计个数(1级) 2
【题目描述】
统计从键盘输入的20个整数中有多少个正数、多少个负数、多少个零。
【输入】
20个整数
【输出】
交换后的两个整数
【样例输入】
-1 -2 9 0 3 0 -9 -7 -6 2 0 -2 23 9 0 -45 23 9 0 0
【样例输出】
正数:7 , 负数:7 , 零:6
参考代码:#include void fun(int *zs,int *fs,int *l,int aa[]) { int i; for(i=0; i<20; i++) { if(aa[i]>0) (*zs)++; if(aa[i]<0) (*fs)++; if(aa[i]==0) (*l)++; } } void main() { int num[20]; int i,czs,cfs,cl; czs=cfs=cl=0; for(i=0; i<20; i++) scanf("%d",&num[i]); fun(&czs,&cfs,&cl,num); printf("正数:%d , 负数:%d , 零:%d ",czs,cfs,cl); }
8. 输出数字图形 (1级)Y 1
【题目描述】
从键盘输入n 值,输出如下图形(n=6时)。
1 2 3 4 5 6
1 1 2 3 4 5
1 1 1 2 3 4
1 1 1 1 2 3
1 1 1 1 1 2
1 1 1 1 1 1
【输入】
正整数n
【输出】
n*n大小的数字图形(每个数字占3个域宽)
【样例输入】
5
【样例输出】
1 2 3 4 5
1 1 2 3 4
1 1 1 2 3
1 1 1 1 2
1 1 1 1 1
参考代码:#include void fun(int n) { int i,j; for(i=1; i<=n; i++) { for(j=1; j<=i; j++) printf("%3d",1); for(j=2; j<=n+1-i; j++) printf("%3d",j); printf(" "); } } void main() { int n; scanf("%d",&n); fun(n); }
9. 求两个整数的阶乘之和(1级) 1
【题目描述】
完成函数计算任意两个整数的阶乘之和。
【输入】
两个整数
【输出】
两个数字分别阶乘然后相加的运算结果
【样例输入】
2,3
【样例输出】
8
参考代码:#include #include int factorial(int n) //创建自定义函数 { int result = 1; while (n != 0) { result *= n--; } return result;//返回函数值 } main() { int num1, num2, result; scanf("%d,%d",&num1,&num2); result = factorial(num1) + factorial(num2);//调用两次factorial() printf("%d", result); }
10. 判别整数数组中各元素的值(1级)Y 2
【题目描述】
编写函数,判别整数数组中各元素的值,元素值大于0输出1,元素值小于0输出-1,元素值等于0则输出0。
【输入】
仅一行。输入五个整数。
【输出】
两行。第一行,输出五个1,-1或者是0的整数(用空格隔开),来代表输入数字大于零、小于零还是等于零。第二行,输出刚才输入的五个整数对应的a[i]的值。
【样例输入】
4,6,20,0,-7
【样例输出】
1 1 1 0 -1
a[0]=4 a[1]=6 a[2]=20 a[3]=0 a[4]=-7
参考代码:#include void f(int n) /*定义函数f()及形式参数n, n为整型变量*/ { if (n > 0) printf("%d ", 1); else if (n == 0) printf("%d ", 0); else printf("%d ", -1); } main() { int a[5], i; for (i = 0; i < 5; i++) { scanf("%d,",&a[i]); f(a[i]); /*调用5次函数,数组元素a[i]作实参*/ } printf(" "); for (i = 0; i < 5; i++) printf("a[%d]=%d ",i,a[i]); printf(" "); }