a[maid]) 正确答案else if(m>a[mid]) ,3,char *q=a;
int j=0;
while(*q && q0.001) ,3, int j=0;
char *q=a;
while(*q && q < h) a[j++] = *q++ ;
while(*h && *p && h < p) {
if(*h != '*') a[j++] = *h ;
h++;,
34. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG.
,1,1空1 2空j++ 3空j
,2,1错 题中为t=a;b=a;a=t正确答案t=a;a=b;b=t;
2错 题中为return(a); 正确答案return(b);
,3,int j =0 ;
char *p=a;
while(*p) {
if(*p != '*') a[j++]=*p ;
p++ ;,
号。请编写函数fun,它的功能是:使字符串尾部的*号不得35. 假定输入的字符串中只包含字母和*
多余n个;若多余的n号;则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。
例如。字符串中的内容为:****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为:****A*BC*DEF*G*******。N的追在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。
,1,1空a[i]%2 2空a[j] 3空j
,2,1错 题中为fun,n,正确答案fun,int n,
2错 题中为if,n=1,正确答案if,n==1,
,3,char *p=a ,*q=a;int j=0;while(*p) p++; p--;
while(*p == '*') p--;p++;while(j=0&&K<=6) 正确答案if(k>=0&&k<=6)
,3,double s=1 ;long t=1;int i;
for(i=1; i<=n; i++) {
t=t*i; s+=1./t;} return s;
43. 请编写函数fun,其功能是:计算并输出当x<0.97时下列多项是的值,直到Sn-Sn-1|<0.000001为止。
例如,在函数中从键盘给x输入0.21后,输出为:s=1.100000。
,1,1 空x 2空n 3空fabs(t)
,2,1错 题中为for(i=1;i=0.000001)
{double j,a=1,b=1; xn1=xn; for (j=1;j1 && n<=100) {for(i=1; i<=n; i++)
sum+=1.0/(2*i-1)-1.0/(2*i);} return sum;
47. 请编写函数fun,其功能是:计算并输出下列多项式的值:
例如,在主函数中从键盘给n输入50后,输出为:s=1.718282。
注意:要求n的值大于1但补大于100。
,1,1空n%10 2空break 3空break
,2, 1错 题中为if(t=0)正确答案if(t==0)
2错 题中为zero=count;正确答案*zero=count;
,3,int i,j;double sum=0.0,temp;
for(i=1; i<=n; i++){temp=1.0; for(j=1;j<=i;j++)
temp*=1.0/j;sum+=temp;} return sum;
49. 请编写函数fun,其功能是:计算并输出3到n之间(含3和n)所有素数的平方根之和。
例如,在主函数中从键盘给n输入100后,输出为:sum=148.874270。
注意:要求n的值大于2但不大于100。
,1,1空i 2空 t++ 3空 count
,2,1错 题中为void fun(int a,int b int c) 正确答案int fun(int a,int b,int c)
2错 题中为else return 1 正确答案else return 1; ,3,int i,j=0;
double s=0;
for (i=3; i<=n; i++) {
for (j=2; j=eps){ s+=t; n++; t=t*n/(2.0*n+1); }
return (s*2.0);
77. 编写函数fun,功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数且要求m>n。
例如:m=12,n=8时,运行结果为495.000000。
,1,1空*s 2空s++ 3空 n
,2,1错 题中为int j,c=0,double 正确答案int j,c=0; double xa=0.
2错 题中为if(x[j]=>xa) 正确答案if (x[j]>=xa) ,3,float p,jcn=1.0,jcmm=1.0;
int i;
for(i=1;i<=m;i++)jcm*=i;
for(i=1;i<=n;i++)jcn*=i;
for(i=1;i<=m-n;i++)jcmn*=i;
p=1.0*jcm/jcn/jcmn ;
return p;
79. 编写函数fun,它的功能是:计算并输出下列级数和:
例如,当n=10时,函数值为:0.909091。
,1,1空*s 2空1 3空k[n]
,2,1错 题中为void fun,int k, 正确答案float fun,int k,
2错 题中为return s 正确答案return s ,
,3,double s = 0.0 ;
int i ;
for(i = 1 ; i <= n ; i++) s = s + 1.0 / (i * (i + 1)) ;
return s ;
80. 编写函数fun,它的功能是计算下列级数和,和值由函数值返回。
例如,当n=10,x=0.3时,函数值为1.349859。
,1,1空i 2空ps[ j ] 3空tp
,2,1错 题中为fun,int n, 正确答案double fun,int n,
2错 题中为return sum 正确答案return sum,
,3,double s = 1.0, y = x,jc=1.0 ; int i,j ;
for(i = 1 ; i <= n ; i++)
{jc*=i ;s+=y/jc; y *= x ; } return s ;
第七类,数学知识相关的编程
28. 编写函数fun, 它的功能是:利用以下所示的简单迭代方法求方程:
cos(x)-x=0的一个实根。
Xn+1=cos(Xn)
迭代步骤如下:
(1) 取x1初值为0.0;
(2) x0=x1,把x1的值赋给x0;
(3) x1=cos(x0),求出一个新的x1;
(4) 若x0-x1的绝对值小于0.000001,执行步骤(5),否则执行步骤(2); (5) 所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回。
程序输出结果Root=0.739086.
,1,1空i++ 2空m 3空m
,2,1错 题中为while((high >=2) && (n < 10) 正确答案while((2<=high)&&(n<10))
2错 题中为yes=0;break 确答案yes=0;break;
,3, float x0, x1=0.0;
do {
x0=x1;
x1=cos(x0);
} while(fabs(x0-x1)>0.000001);
return x1;
45. 请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。
例如,给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:s=35.951014。
,1,1空x 2空n 3空t
,2,1错 题中为d=0;s=0; 正确答案d=1;s=0;
2错 题中为d=d\10; 正确答案d=d/10;
,3,int i ; double avg=0.0,sum=0.0;
for (i=0;i<8;i++) { avg=(x[i]+x[i+1])/2;
sum+=sqrt(avg);} return sum;
78. 编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。
例如若n为1000时,程序输出应为:s=153.909064。
,1,1空48 2空s++ 3空sum
,2,1错 题中为if ,,k%13= = 0, 正确答案 if ,,k%13= = 0,|| ,k%17 = = 0,,
2 错 题中为____ 正确答案 }
,3, double sum=0.0;int i; for(i=21; i<=n; i++)
if((i % 3==0) && (i % 7==0)) sum+=i;
return sqrt(sum) ;
7.请编写一个函数fun,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出: 11 14 21 22 28 33 35 42 44 49 ,1,1空q 2空next 3空next
,2,1错题中为p=j 正确答案p=j;
2错题中为p=j; 正确答案p=i;
,3,int i ;*n=0; for(i=7 ; i<=m; i++)if ( (i % 7 = = 0) || ( i %11 = =0)) a[(*n)++]=i ;
21. 请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。
,1,1空M 2空< 3空k
,2,1错 题中为if((‘a’<=tt[i]) || (tt[i]<=’z’)) 正确却答案if((‘a’<=tt[i])&&(tt[i]<=’z’))
2错 题中为tt[i]+ =32 正确却答案tt[i]-=32,
,3,int j,tag=0,p,q; for(p=2;p=i)
,3,int i; *n=0; for(i=1; i <= x; i++)
if((x % i== 0) && (i % 2)) pp[(*n)++]=i;
75.请编写一个函数fun,它的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,31,37.函数fun中给出的语句仅供参考。 ,1,1空s 2空-- 3空return 0
,2,1错 题中为fun(int n) 正确答案 double fun (int n)
2错 题中为c=a;a+=b;b+=c; 正确答案c=a; a+=b; b=c; ,3,for(i = 2 ; i < t; i++) if(t % i==0) break; if(i==t)
{ xx[j-1] = i; j++;} t++;
68. 编写函数fun,它的功能是求出小于或等于1im的所有素数并放在aa数组中,函数返回所求出的素数的个数。函数fun中给出的语句仅供参考。
,1,1空a[0][i] 2空< 3空x,y
,2,1错 题中为void fun(int x,int 正确答案void fun(int *x,int*y)
2错 题中为 t=x;x=y;y=t; 正确答案t=*x;*x=*y;*y=t ,3,for(j = 2 ; j <= (i/2) ; j++)
if(i % j == 0) break;if(j > (i/2)) aa[k++] = i;
第八类,统计个数类
20. 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,字符串为:as,则应输出6 。 ,1,1空[N] 2空len 3空*n=len
,2,1错 题中为t+=1.0/k正确答案t+=1.0
1错 题中为----- 正确答案return t;
,3,int cnt=0;char *p=str,*q; while(*p){q=strstr(p,substr);
if(q= =NULL) break;p=q+strlen(substr);cnt++;}return cnt;
22. 请编写函数fun ,他的功能是:求出ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串:123412132,数入字符为:1,则输出:3 。
,1,1空j++ 2空s[i]=t1[i] 3空j
,2,1错 题中为for(j=i+1,j<6,j++) 正确答案for(j=i+1;j<6;j++)
2错 题中为*(pstr+i)= pstr+j; 正确答案*(pstr+i)=*(pstr+j); ,3,int cnt=0;char *p=ss; while(*p){
if(*p==c) cnt++;p++;} return cnt; 25. 请编写一个函数 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
,1,1空 1 2空 s[k] 3空 c
,2,1错 题中为long s=0,t=1; 正确答案long s=0,t=0;
2错 题中为t=t%10; 正确答案 t=t/10;
,3,char *p = tt ; int i ; for(i = 0 ; i < 26 ; i++) pp[i] = 0 ;
while(*p) {if(*p >= 'a' && *p <= 'z')
pp[*p - 'a'] += 1 ; p++ ; }
100. 请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所偶单词有小写字母组成,单词由若干个空格隔开,一行的开始没有空格。
,1,1空filename 2空fp 3空fp
,2,1错 题中为p=(NODE )malloc(sizeof(NODE));
正确答案p=(NODE*)malloc(sizeof(NODE));
2错 题中为return p;正确答案return h;
,3,int k = 1 ;
while(*s) {
if(*s == ' ') k++ ;
s++ ;,
return k;
98. 请编写函数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。
,1,1空 FILE* 2空 fclose(fp) 2空 fp
,2,1错 题中为t=(STU*)calloc(sizeof(STU),m)
正确答案t=(STU*)calloc(sizeof(STU),m);
2错 题中为t(k)=b(j); 正确答案t[k]=b[j];
,3,int i, j = 1, k = a[0] ;
for(i = 1 ; i < n ; i++)
if(k != a[i]) {
a[j++]=a[i] ;
k = a[i] ;
第九类,字符串类
94. 请编写函数fun,函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),
按顺序合并组成一个新的字符串。函数fun中给出的语句仅供参考。
例如,字符串数组中的M歌字符串为
AAAA
BBBBBBB
CC
则合并后的字符串的内容应是:AAAABBBBBBBCC。
提示:strcat (a,b)的功能是将字符串b复制到字符串a的串尾上,成为一个新串。 ,1,1空 next 2空 0 3空 r
,2,1错 题中为r=p; 正确答案 r=t;
2错 题中为 if(*r=0) 正确答案if(*r==0)
,3,for(i = 0 ; i < M ; i++)
strcat(b, a[i]) ;
96. 请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。
例如,字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:DEFGHIJKABDC。
,1, 1空double 2空f 1 3空f 2
,2, 1错 题中为char fun (char *s,char *t)
正确答案char *fun (char *s,char *t)
2错 题中为(*ss)++;正确答案ss++ ;
3错 题中为(*tt)++;正确答案tt++;
,3,int i;
for(i = 0 ; i < m ; i++) fun1(w);
91. 请编写函数fun,函数的功能是:判断字符串是否为回文,若是,函数返回1,主函数中输出:YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。
例如,字符串LEVEL是回文,而字符串123312就不是回文。
,1,1空double 2空f 1 3空f 2
,2,1错 题中为p=h; 正确答案p=h->next;
2错 题中为p=h->next; 正确答案 p=p->next;
,3,int i, j = strlen(str) ;
for(i = 0 ; i < j / 2 ; i++) if(str[i] != str[j - i - 1])
return 0 ;
return 1 ;
69. 编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:主函数中用****作为结束输入的标志,函数fun中给出的语句仅供参考。) ,1,1空[N] 2空i 3空i+1
,2,1错 题中为aa[i]=m/k; 正确答案aa[i]=m%k
2错 题中为printf(%d”,aa[i]);正确答案printf(“%d”,aa[i-1])
,3,if(strlen(a[i]) > maxlen) { maxlen = strlen(a[i]) ; k = i;}
70. 请编写一个函数,函数的功能是删除字符串中的所有空格。
例如,主函数中输入”asd af aa z67”,则输出为”asdafaaz67”。
,1,1空0 2空|| 3空1
,2,1错 题中为t=1.0-1/i 正确答案t-=1.0/i;
2错 题中为____ 正确答案return t
,3,char *p = str ; int i = 0 ; while(*p) {
if(*p != ' ') str[i++] = *p ; p++ ;} str[i] = 0 ;
76.请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。
例如,输出如下整数:876 675 896 101 301 401 980 431 451 777
则输出结果为:6, 980
,1,1空n++, 2空0 3空s++
,2,1错 题中为t=s[k] 正确答案t+=s[k],
2错 题中为 *aver=Ave 正确答案*aver=ave;
,3,int i, pos = 0, max = *s ; for(i = 1 ; i < t ; i++) { if(max < *(s + i)) {max = *(s + i) ; pos = i ;}} *k =
pos ;
95.请编写函数fun,函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。
例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;p的值为3.移到后,一
,10,1,2,3,4. 维数组中的内容为:5,6,7,8,9
,1,填空答案,1空 p->next 2空 q 3空 p->next
,2,1错 题中为while(*s!=’@’) 正确答案while(*s)
2错 题中为(*s)++; 正确答案为s++;
,3,int i, j = 0, b[N] ;
for(i = p + 1 ; i < n ; i++) b[j++] = w[i] ;
for(i = 0 ; i <= p ; i++) b[j++] = w[i] ;
for(i = 0 ; i < n ; i++) w[i]= b[i] ;
18. 编写函数fun,函数的功能是:从s所指的字符串中删除给定的字符。同一字母的大、小写按不同字符处理。
若程序执行使输入字符串为:turbo c ad borlad c++ 如果输入的字符在字符串中不存在,则字符串照原样输出。
,1,1空k 2空len 3空ss[i][j]
,2,1错题中为result*=- -n; 正确答案result*=(double)n- -; ,3,char *p =s;
int i = 0;
while(*p) {
if(*p !=c ) s[i++] =*p; p++;} 19(请编写函数fun,对长度为7个字符串的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。
例如,原来的字符串为CEAedca,排列后输出为CedcEAa.
,1,1空ss[i] 2空n+j 3空1
,2,1错 题中为if(p==’ ’) 正确答案if (*p==’ ’)
2错 题中为*,p-1,=toupper(*,p-1)) 正确答案*(p-1)=toupper,*,p-1,,, ,3,char ch; int i,j; for(i=1;i<6;i++) for(j=i+1;j<6;j++){
if(*(s+i)<*(s+j)){ch=*(s+j);*(s+j)=*(s+i);
*(s+i)=ch;}}
6(请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一字符串。例如,输入beijing shanghai (为回车键),函数将返回shanghai。
,1,1空next 2空t->data 3空 t
,2,1错fun (char *a)// fun (char a)
2错printf(“%c”,*a);// printf(“%c”*a)
,3,int i; char *p=s, *q=t; for(i=0;*p && *q; i++ ){ p++; q++; }
if(*p = =0 && *q = = 0) return s ;If(*p) return s ;
else return t ;
54. 编写一个函数fun,它的功能是:实现两个字符串的连接(不适用库函数strcat), 即把p2所指的字符串连接到p1所指的字符串后。
例如,分别输入下面两个字符串:
FirstString- -
SecondString
程序输出:FirstString- -SecondString
,1,1空0 2空10*x 3空n/10
,2,1错 题中为t=0正确答案*t=0;
2错 题中为if(%d2==0)正确答案if(d%2!=0)
,3,char *p=p1;
while(*p)p++;
while(*p2) *p++=*p2++;
*p=0;
17. 请编一个函数fun(char *s),函数的功能是把s所指字符串中的内容逆置。 例如:字符串中原有的字符串为:abcdefg,
则调用该函数后,串中的内容为:gfedcba.
,1,1空i+1 2空k=j 3空t
,2, 1错 题中为 viod fun (char str, char ch) 正确答案 void fun (char *str, char ch)
2错 题中为 if (*str= =ch) 正确答案if (*str!=ch)
3错 题中为 str [1]=’0’; 正确答案 str[l]=0;
,3,char b[N];int i = 0, j ; memset(b, 0, N);
for (j=strlen(s) – 1 ; j >=0 ; j-- ) b[i++] =s[j];
strcpy(s , b );
26( 请编写一个函数void fun (chai a[ ] , char b [ ] ,int n ), 其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b 所指定数组中,n中存放指定的下标。
例如,输入一个字符串:Word,然后输入3,则调用该函数后的结果为:Woed。 ,1,1空t=i 2空i 3空0
,2,1错 题中为 while(t>=num) 正确答案while((fabs(t))>=num)
2错 题中为 t=s%n 正确答案t=s/n
,3,strncpy(b, a, n) ;
b[n] = 0 ;
strcat(b, a + n + 1) ;
第十类,其它
16. 请编写一个函数 unsigned fun ( unsigned w ), w 是一个大于10的无符号整数,若 w 是 n (n?2)位的整数,函数求出w的低 n-1位的数作为函数值返回。
例如:w值为5923,则函数返回923;w值为923 则函数返回23。
,1,1空tt 2空tt.score[i] 3空std
,2,1 错 题中为m=0; 正确答案m=i;
2 错 题中为if ( a [k] > a [m] ) k=m;
正确答案if ( a [k] > a [m] ) m=k;
,3,if(w>1000) w %=1000;
else if( w>1000 ) w %=1000;
else if( w>100 ) w %=100;
else if( w>10 ) w %=10;
return w;
55. 请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如输入字符串“-1234’,则函数把它转换为整数值-1234。函数fun中给出的语句仅供参考。
,1,1空10 2空0 3空x
,2,1 错 题中为if n==0 正确答案if (n==0)
2错 题中为result*=n-- 正确答案result *= n--,
,3,while(*p) x = x*10-48+(*p++);
57. 请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。 主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。 ,1,1空1 2空2*I 3空,-1,
,2,1错 题中为k++ 正确答案k++,
2错 题中为if(m=k)正确答案if(m==k)
,3,int i ;*max=a[0];*d = 0 ; for(i = 1; i < n; i++)
if(*max < a[i]) { *max = a[i]; *d = i ; }
66. 请编写一个函数fun,函数的功能是使实型数保留2为小数,并对第三位进行四舍五入(规定实型数为正数)。
则函数返回 1234.570000; 例如:实型数为 1234.567 ,
实型数为1234.564, 则函数返回 1234.560000。
,1,1空’0’ 2空s++ 3空ctod(a)+ctod(b)
,2,1错 题中为void 正确答案void fun (char *s,int *a, int*b)
2错 题中为*a=a+1正确答案++(*a)
3错 题中为*b=b+1 正确答++(*b)
,3,long w ;
w = h * 100 + 0.5 ; return (float) w / 100 ;
99. 请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机还是或得,并放在主函数的age数组中;要求函数吧0至29岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依次类推,把100岁(含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。
,1,1空“rb” 2空 > 3空fwrite
,2,1错 题中为s=p; 正确答案p=s ;
2错 题中为while(*p+)正确答案while(*p++)
,3,int i, j ;
for(i = 0 ; i < M ; i++) b[i] = 0 ;
for(i = 0 ; i < N ; i++) {
j = a[i] / 10 ;
if(j > 10) b[M - 1]++ ; else b[j]++ ;}