C语言函数练习题2
1. 数组逆序存放(1级)2
【题目描述】
编写程序,输人一组数据存入数组,调用函数将这组数据按原来顺序的逆序存放,输出函数调用之前和调用之后的存放情况。
【输入】
输入任意一组数据
【输出】
函数调用之前和调用之后的存放
【样例输入】
ABC 123
【样例输出】
Before oppsite():
str[0]=A str[1]=B str[2]=C str[3]= str[4]=1 ste[5]=2 str[6]=3
After oppsite():
str[0]=3 str[1]=2 str[2]=1 str[3]= str[4]=A ste[5]=B str[6]=C
参考代码:# include # include void opposite (char retrt[],int n); //声明自定义函数原型 void main() { char str[60]; //定义实参数组str[] int n, i; gets(str); //实参数组str[]大小 n = strlen(str); puts("Before opposite():"); for (i = 0; i < n; i++) printf("str[%d]=%c ", i, str[i]); putchar(" "); opposite(str, n); //调用opposite() puts("After opposite():"); for (i = 0; i < n; i++) printf("str[%d]=%c ", i, str[i]); putchar(" "); } void opposite(char retr[], int n) //定义函数,以数组retr[]作为实参 { int i; char c; for (i=0; i 参考代码:#include int lenght(char *p) { int n = 0; while(*p != " ") { n++; p++; } return n; } int main() { int len; char str[200]; scanf("%s", str); len = lenght(str); printf("%d ", len); return 0; }
3. 数的合并(1级)1
【题目描述】
编写一个能将两个数合并成一个数的函数MergeData,具体合并的方式是:将两个两位数的正整数num1、num2合并形成一个整数放在newnum中,并将num1的十位和个位依次存放在newnum数的十位和千位上,num2的十位和个位依次存放在newnum数的个位和百位上。
【输入】
两个整数num1、num2。
【输出】
合并后的新数据newnum。
【样例输入】
45 12
【样例输出】
newnum=5241
参考代码:#include int MergeData(int num1,int num2) { int a,b,c,d,newnum; a=num1%100/10; b=num1%10; c=num2%100/10; d=num2%10; newnum=a*10+b*1000+c*1+d*100; return newnum; } int main() { int num1, num2, newnum; scanf("%d%d", &num1, &num2); newnum = MergeData(num1, num2); printf("newnum=%d ", newnum); return 0; }
4. 素数的判断(1级) 1
【题目描述】
请编写一个判断素数的函数PrimeJudge。具体功能是对录入的一个整数num进行判断,判断其是否为素数,如果是素数,则返回1,否则返回0。
【输入】
一个整数num。
【输出】
num如果是素数,则返回1,否则返回0。
参考代码:#include #include int PrimeJudge(int num) { int i,f=0; for(i=2; i0,则输出1-n的阶乘值;否则,提示输入数据错误
【输入】
正整数n。
【输出】
如果n>0,则输出1-n的阶乘值;否则,提示输入数据错误。
参考代码:#include #include double Facto(int n) { int i; double p=1; for(i=1; i<=n; i++) { p=p*i; } return p; } int main() { int n, i; double result = 1; scanf("%d", &n); if(n <= 0) { printf("Input data error! "); } else { for(i = 1; i <= n; i++) { result = Facto(i); printf("%d!=%.0f ", i, result); } } return 0; }
6. 求级数(1级) 1
【题目描述】
请编写一个计算级数和的函数fun,从键盘录入整数x和整数n,按给出的算式进行计算,其结果值S由函数值返回。
【输入】
两个整数x和n。
【输出】
级数的和s。
【样例输入】
0.3 10
【样例输出】
1.349859
参考代码:#include double fun(double a, int b) { double sum = 1.0; double i, y = 1.0, x = 1.0; for(i = 1; i <= b; i++) { y = y * i; x = x * a; sum += x / y; } return sum; } int main() { double x; int n; scanf("%lf%d", &x, &n); printf("%f ", fun(x, n)); return 0; }
7. 浮点数四舍五入(1级) 1
【题目描述】
请编一个将浮点数四舍五入的函数Fun,其功能是使浮点数保留2位小数,并对第3位进行四舍五入(规定实型数为正数)。
例如:实型数为1234.567,则函数返回1234.570000;实型数为1234.564,则函数返回1234.560000。
【输入】
一个浮点数。
【输出】
精确到小数点后面2位的浮点数。
【样例输入】
1234.567
【样例输出】
1234.570000
参考代码:#include #include double fun(double x) { int n=(int)(x*100+0.5); return n/100.0; } int main( ) { double a; scanf ("%lf", &a); printf ("%lf ", fun( a )); return 0; }
8. 长整型截短(1级) 1
【题目描述】
编写一个函数Fun,其功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位的顺序组成一个新的数,并作为函数值返回。
【输入】
一个整数n。
【输出】
按照要求形成的新整数。
【样例输入】
27638496
【样例输出】
The result is: 26846
参考代码:#include int Fun(int n) { int z=0,i=1,k; while(n!=0) { k=n%10; n=n/10; if(k%2==0) { z=z+k*i; i=i*10; } } return z; } int main() { int n; scanf("%d",&n); printf("The result is: %d ",Fun(n)); return 0; }
9. 偶数分解(1级)Y 1
【题目描述】
编写函数实现对整数进行分解。具体要求是:输入若干个大于2的正整数,如果该数是偶数,则将其分解为两个素数(只需找出第一对素数)并输出;如果输入的奇数,则输出" is odd number!" ;输入为0时程序结束。只有1和它本身这两个因数的自然数叫做素数,0和1既不是素数也不是和数。
【输入】
大于2的整数序列。
【输出】
如果是偶数,则输出偶数被分解为两个素数和的表达式,否则,输出是奇数。
【样例输入】
3 4 0
【样例输出】
3 is odd number!
4=2+2
参考代码:#include int fun(int n) { int i; for(i=2; i 【样例输出】
s=2.718282
参考代码:#include double GetSum(int n) { double z,i=1,s=1; for(z=1;z<=n;z++) { i=i/z; s=s+i; } return s; } int main() { int n; double s; scanf("%d",&n); s=GetSum(n); printf("s=%f ",s); return 0; }