计算机等级考试二级C语言程序设计专项训练题——程序设计题(二)
11、请编写函数fun,它的功能是计算下列级数和,和值由函数值返回。
例如,当n=10,x=0.3时,函数值为1.349859。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h> double fun(double x, int n) { } int main() { printf("%f\n",fun(0.3,10)); return 0; }
double fun(double x, int n) { double sum=1,item=1; int i; for (i=1;i<=n;i++) { item=item*x/i; sum+=item; } return sum; }
12、编写函数fun,其功能是:求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。
注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> void fun (int *a, int *n) { } int main() { int aa[1000], n, k ; fun (aa, &n ) ; for ( k = 0 ; k < n ; k++ ) if ((k + 1) % 10 == 0) printf("\n") ; else printf("%5d", aa[k]) ; return 0; }
void fun (int *a, int *n) { int i,k=0; for (i=1;i<=1000;i++) if ((i%7==0 || i%11==0) && i%77!=0) a[k++]=i; *n=k; }
13、请编写函数void fun (int x, int pp[], int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1、3、5、15。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> void fun (int x, int pp[], int *n) { } int main() { int x,aa[1000], n, i ; printf("\nPlease enter an integer number : \n ") ; scanf ("%d", &x) ; fun (x, aa, &n) ; for (i=0 ; i<n ; i++) printf ("%d ", aa [i]); printf ("\n ") ; return 0; }
void fun (int x, int pp[], int *n) { int i,k=0; for (i=1;i<=x;i+=2) if (x%i==0) pp[k++]=i; *n=k; }
14、请编函数fun,其功能是将一个数字字符串转换成与其面值相同的长整型整数。可调用strlen函数求字符串的长度。例如:在键盘输入字符串2345210,函数返回长整型数2345210。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。
#include <stdio.h> #include <string.h> long fun(char *s ) { } int main() { char s[10]; long r; printf("请输入一个长度不超过9个字符的数字字符串 : "); gets(s); r = fun( s ); printf(" r = %ld\n" , r ); return 0; }
long fun(char *s ) { long num=0; int i; for (i=0;s[i]!='\0';i++) num=num*10+s[i]-'0'; return num; }
15、假定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了尾部的*号之外,将字符中的其它的*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容应当是ABCDEFG*******。
注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> void fun( char *a, char *p ) { } int main() { char s[81],*t; printf("Enter a string:\n"); gets(s); t=s; while(*t) t++; t--; while(*t=='*') t--; fun(s ,t); printf("The string after deleted:\n");puts(s); return 0; }
void fun( char *a, char *p ) { char *q1,*q2; q1=a; q2=a; while (q1!=p) { if (*q1!='*') { *q2=*q1; q2++; } q1++; } while (*q1) *q2++=*q1++; *q2='\0'; }
16、编写函数void fun(char *tt,int pp[]),统计在tt所指的字符串中'a'到'z'26个小写字母各自出现的次数,并依次放在pp所指的数组中。
例如,当输入字符串abcdefgabcdeabc后,程序的输出结果应该是:
3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> #include <string.h> void fun(char *tt, int pp[]) { } int main() { char aa[1000] ; int bb[26], k ; printf( "\nPlease enter a char string:" ) ; scanf("%s", aa) ; fun(aa, bb ) ; for ( k = 0 ; k < 26 ; k++ ) printf ("%d ", bb[k]) ; printf( "\n" ) ; return 0; }
void fun(char *tt, int pp[]) { int i; for (i=0;i<26;i++) pp[i]=0; for (i=0;tt[i]!='\0';i++) pp[tt[i]-'a']++; }
17、下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:将数组左下半三角元素中的值全部置成0。例如a数组中的值为:
1 9
7
2 3
8
4 5
6
则返回主程序后a数组中的值应为:
0 9
7
0 0
8
0 0
0
注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> #include <stdlib.h> #define N 5 void fun (int a[][N]) { } int main() { int a[N][N],i,j; printf("*****The array*****\n"); for(i=0;i<N;i++) /*产生一个随机的5*5矩阵*/ { for(j=0;j<N;j++) { a[i][j]=rand()%10; printf("%4d", a[i][j]); } printf("\n"); } fun(a); printf("THE RESULT\n"); for(i=0;i<N;i++) { for(j=0;j<N;j++) printf("%4d",a[i][j]); printf("\n"); } return 0; }
void fun (int a[][N]) { int i,j; for (i=0;i<N;i++) for (j=0;j<=i;j++) a[i][j]=0; }
18、请编写函数fun,该函数的功能是:删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。
例如,若一维数组中的数据是:
2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
删除后,数组中的内容应该是:
2 3 4 5 6 7 8 9 10。
注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h> #define N 80 int fun(int a[], int n) { } int main() { int a[N]={ 2,2,2,3,4,4,5,6,6,6,6,7,7,8,9,9,10,10,10,10}, i, n=20; printf("The original data :\n"); for(i=0; i<n; i++) printf("%3d",a[i]); n=fun(a,n); printf("\nThe data after deleted :\n"); for(i=0; i<n; i++) printf("%3d",a[i]); printf("\n"); return 0; }
int fun(int a[], int n) { int i,j; for (i=1,j=0;i<n;i++) if (a[j]!=a[i]) a[++j]=a[i]; return j+1; }
19、请编写函数fun,其功能是:找出2×M整型二维数组中最大元素的值,并将此值返回调用函数。
注意:请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h> #define M 4 int fun (int a[][M]) { } int main() { int arr[2][M]={5,8,3,45,76,-4,12,82} ; printf("max =%d\n", fun(arr)) ; return 0; }
int fun (int a[][M]) { int max=a[0][0]; int i,j; for (i=0;i<2;i++) for (j=0;j<M;j++) if (max<a[i][j]) max=a[i][j]; return max; }
20、请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置的字母转换为大写(若该位置上不是字母,则不转换)。
例如,若输入"abc4Efg",则应输出"aBc4EFg"。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include<stdio.h> #include<string.h> void fun(char *ss) { } int main() { char tt[81]; printf("\nPlease enter an string within 80 characters:\n"); gets(tt); printf("\nAfter changing, the string\n %s",tt); fun(tt); printf("\nbecomes\n %s\n",tt); return 0; }
void fun(char *ss) { int i; for (i=1;i<strlen(ss);i+=2) if (ss[i]>='a' && ss[i]<='z') ss[i]=ss[i]-32; }