{ int low=0,high=N-1,mid; while(low<=high) { mid=(low+high)/2;
if(ma[mid])low=mid+1; else return(mid); } return(-1); }
main(){ int i,a[N]={-3,4,7,9,13,45,67,89,100,180},k,m; …… k=fun(a,m);…… }
40、在主函数中从键盘输入若干个数放入数组中,输入0结束输入并放在最后一个元素中。给定程序modi.c中函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。 例如:数组中元素中的值依次为:39,-47,21,2,-8,15,0,程序运行结果:19.250000 double fun ( int x[])
{ int sum = 0.0; int c=0, i=0; while (x[i] != 0)
{ if (x[i] > 0) { sum += x[i]; c++; } i++; } sum \\= c; return sum; }
69、给定程序modi.c中函数fun的功能是:找出100至n(不大于1000)之间三个位上的数字都相等的所有整数,把这些整数放在s所指数组中,个数作为函数值返回。 #define N 100 int fun(int *s, int n) { int i,j,k,a,b,c; j=0; for(i=100; i { k=n; a=k; k/=10; b=k; k/=10; c=k/10; if( a==b && a==c ) s[j++]=i; } return j; } 71、数列中,第一项值为3,后一项都比前一项的值增5。给定程序modi.c中函数fun的功能是:计算前n(4 例如,当n的值为20时,该数列为3,8,13,18,23,28,??,93,98。符合此条件的累加值应为42,126,366,570,1010。 #define N 20 int fun(int n,int *a) { int i,j,k,sum; sum=0; for(k=3,i=0;i 66、给定程序modi.c中函数fun的功能是:给一维数组a输入任意4个整数,并按下例的规律输出。例如输入1、2、3、4,程序运行后将输出以下方阵。 4 1 2 3 3 4 1 2 2 3 4 1 1 2 3 4 #define M 4 void fun(int a) { int i,j,k,m; for(i=0; i { k=a[M-1]; for(j=M-1;j>0;j--) a[j]=a[j+1]; a[0]=k; for(m=0; m main(){ int a[M]; fun(a); } 28、给定程序modi.c中,函数fun的功能是:用选择法对数组中的n个元素按升序进行排序 void fun(int a[],int n) {int i,j,t,p; for (j=0;j for (i=j;i fun(int *a,int n,int x) { int p=0,i; a[n]=x; while(x!=a[p]) p=p+1; if(P==n) return -1; else { for(i=p;i 14、给定程序modi.c中,函数fun的功能是:从整数1到55之间,选出能被3整除且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1中放个位数,a2放十位数。 fun (int *b) { int k,a1,a2,i=0; for (k=10;k<=55;k++) a2=k; a1=k-a2*10; if((k%3==0 && a2==5)|| (k%3==0 && a1==5)) { b[i]=k;i++;} } return k; } 61、给定程序MODI1.C中函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。 #define N 20 void fun ( int *a, int n ); { int i, m, t, k ; for(i=0;i<2;i++) { m=0; for(k=i+1;k 19、给定程序modi.c中,函数fun的功能是:从字符串s中删除所有小写字母c。 void fun(char *s) { int i,j; for(i=j=0;s[i]!='\\0';i++) if(s[i]!='c') s[j]=s[i]; s[i]='\\0'; } 二维数组: 51、给定程序modi.c中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上各元素之和,返回此和数。 #define M 5 int fun(int n, int xx[][]) { int i, j, sum=0; printf( \ for( i = 0; i < M; i++ ) { for( j = 0; j < M; j++ ) printf( \ printf(\ } for( i = 0 ; i < n ; i++ ) sum += xx[i][i]+xx[i][ n-i-1 ]; return( sum ); } 82、给定程序modi.c中,fun函数的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之积。 void fun() { int a[3][3],sum; int i,j; sum=1; for (i=0;i<3;i++) { for (j=0;j<3;j++) scanf(\ for(i=0;i<3;i++) sum=sum+a[i][i]; printf(\} void main() { fun();} 90、函数fun的功能是:根据形参m的值(2<=m<=9),在m行m列的二维数组中存放如下所示的数据,由main()函数输出。 例如若输入2 | 若输入 4 则输出: | 则输出: 1 2 | 1 2 3 4 2 4 | 2 4 6 8 | 3 6 9 12 | 4 8 12 16 #define M 10 int a[M][M] = {0} ; void fun(int **a, int m) { int j, k ; for (j = 0 ; j < m ; j++ ) for (k = 0 ; k < m ; k++ ) a[j][k] = k * j ; } main ( ) { int i, j, n ; scanf (\ fun ( a, n ) ; for ( i = 0 ; i < n ; i++) { for (j = 0 ; j < n ; j++) printf ( \ printf ( \ } } 第四类 第十章:字符串 共31题 56、给定程序modi.c中,函数fun的功能是:从s所指字符串中,找出t所指子串的个数作为函数值返回。如当s所指字符串的内容为:\,t所指字符串内容为:\,则函数返回整数3。 int fun(char *s,char *t) {int n; char *p,*r; n=0; while (*s) { p=s; r=t; while (*r) if(*r==*p) {r++;p++ } else break; if(r=='\\0') n++; s++; } return n; } 89、给定程序modi.c中,函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。 例如:若输入:edcba,则应输出:abcde。 #define M 20 void fun(char t[]) {char c; int i,j; for(i=strlen(t);i;i--) for(j=0;j } 2、给定程序modi.c中,函数fun的功能是:统计子字符串substr在字符串str中出现的次数。 例如,若字符串为aaas lkaaas,子字符串为as,则应输出2。 fun(char *str,char *substr) { int i,j,k,num=0; for(i=0,str[i],i++) for(j=i,k=0;substr[k]==str[j];k++,j++) If(substr[k+1]=='\\0') { num++; break; } return num; } main(){charstr[80],substr[80]; …… printf(\\\n\ 50、给定程序modi.c中函数fun的功能是:删除p所指字符串中的所有空白字符(包括制表符、回车符及换行符)。输入字符串时用'#'结束输入 fun(char *p) { int i,t;char c[80]; For (i=0,t=0;p[i];i++)if(!isspace(*(p+i))) c[t++]=p[i]; c[t]=\ strcpy(p,c); } 8、给定程序MODI1.C中函数fun的功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。 例如,若输入\,则输出\。 char* fun( char tt[] ) { int i; for( i = 0; tt[i]; i++ ) if(( 'a' <= tt[i] )||( tt[i] <= 'z' ) ) tt[i] += 32; return( tt ); } 81、给定程序modi.c中 fun 函数的功能是:分别统计字符串中大写字母和小写字母的个数。 例如:给字符串ss输入:\,则输出结果应为:upper = 6, lower = 8 void fun ( char *s, int a, int b ) { while ( *s ) { if ( *s >= 'A' && *s <= 'Z' ) *a=a+1 ; if ( *s >= 'a' && *s <= 'z' ) *b=b+1; s++; } } main( ){ char s[100]; int upper = 0,lower = 0 ; … fun(s, &upper,&lower ); … } 62、给定程序modi.c中函数fun的功能是:判断字符ch 是否与字符串str中的某个字符相同,若相同,什么也不做;若不同,则插在串的最后。 void fun(char str, char ch ) { while ( *str && *str != ch ) str++; if( *str == ch ) { str [ 0 ] = ch; str[1] = '0'; } } 59、给定程序modi.c中函数fun的功能是:把 m(1≤m≤10)个字符串连接起来,组成一