类型一:与*号有关的操作
43. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G
int i,j=0;
  for(i=h;i< n-e ;i++) a[j++]=a[i];
  a[j]= ‘\0’ ;
改错:[1] fun(int  xint  yint  z)
[2] return j
填空:[1]N [2]substr [3]0
45.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部移到字符串的尾部。例如,若字符串中的内容为*******A*BC*DEF*G****,移动后,字符串中的内容应当是A*BC*DEF*G**********。在编写函数时,不得使用C语言提供的字符串函数。
int i=0,n=0 ; char *p ; p=a;
while (*p=='*') {n++ ; p++; }
while (*p) { a[i]= *p ;  i++;  p++ ; }
while(n!=0) { a[i]= '*' ;i++ ;n-- ; }
a[i]= '\0' ;
改错:[1] s[j++]=s[i][2] s[j]='\0'
填空:[1] struct student [2] a.name [3] a.score[i]
31、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串的前导*号不得多于n;若多于n,则删除多余的*;若少于或等于n,则什么也不做,字符串中间和尾部的*号不删除。
例如,若字符串中的内容为*******A*BC*DEF*G****,假设n的值为4,删除后,字符串中的内容则应当是****A*BC*DEF*G****;n的值为8,则字符串中的内容仍为*******A*BC*DEF*G****n的值在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。
编程:int i=0, k=0; char *p, *t;
  p=t=a;
  while(*t=='*') {k++; t++;}
  if(k>n)
  {  while(*p) { a[i]= *(p+k-n) ; i++; p++; }
      a[i]='\0'; }
填空:[1 [M]2    N3'\0'
改错:[1        t=1.0;[2while(t>=eps)
3return(s*2)
18套:.假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。
编程:while(*a!='\0') a++;
  a--;
  while(*a=='*') a--;
  *(a+1)='\0';
填空:N
i
      -1
改错:改为:a2=k/10
      改为:return  i
类型二:套用公式计算型
37.请编写函数fun,其功能是:计算并输出下列多项式
:例如,若主函数从键盘给n输入50,则输出为
S=1.960784s=1+1/(1+2)+1/(1+2+3)+..1/(1++50)
int i; double s=0.0,s1=0.0;
  for(i=1;i<=n;i++)
  {  s1=s1+i; 
      s=s+1.0/s1; }
  return s;
改错:[1] if(t==0)  [2] * zero=count
填空:[1]n%10  [2]break  [3]break
40. 请编写函数fun,其功能是:计算并输出下列多项式值:
Sn=1+1/1!+1/2!+1/3!+1/4!++1/n!
例如,若主函数从键盘给n输入15,则输出为s=2.718282。注意:n的值要求大于1但不大于100
double t,sn=1.0; int i,j;
  for(i=1;i<n;i++)
  {  t=1.0;
      for(j=1;j<=i;j++)
        t*=j; sn+=1.0/t;}
  return sn;
改错:[1] for(i=1i<=3i++)
填空:[2] if((k>=1&&k<=6)&&(i!=0&&j!=0)||k==0)
[1]x  [2]n  [3]fabs(t)
9、请编写函数fun,其功能是:计算并输出下列多项式值
Sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n)
例如,若主函数从键盘给n输入8,则输出为S=0.662872
int i;
double sum=0.0;
if (n>1&&n<=100)
{for(i=1;i<=n;i++) sum+=1.0/(2*i-1)-1.0/(2*i);}
return sum;
填空 [1]a[i] [2]0[3]0
改错 [1]sum=j=0[2]if(sum%4==2)
11、请编写函数fun,其功能是:计算并输出下列多项式值
Sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n)
  例如,若主函数从键盘给n输入8,则输出为S=0.662872
编程:int i;
  double sum=0.0;
  if (n>1&&n<=100)
  {  for(i=1;i<=n;i++) sum+=1.0/(2*i-1)-1.0/(2*i);}
  return sum;
填空 [1]a[i][2]0[3]    0
改错 [1]sum=j=0[2]if(sum%4==2)
13、请编写函数fun,其功能是:计算并输出
S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+……+(1+2^0.5+3^0.5+……+n^0.5)
例如,若主函数从键盘给n输入20,则输出为s=534.188884
编程    int i;  double s=0.0,s1=0.0;
for(i=1;i<=n; i++)
{s1=s1+pow(i,0.5);  s=s+s1;  }
return s;
填空:[1]a[2]a[3]b
改错 [1]c=c+32[2]c=c+5
32、请编写函数fun,其功能是:计算并输出3n之间所有素数的平方根之和。例如,若主函数从键盘给n输入100,则输出为sum=148.874270
编程:int i,j=0; double s=0;
  for (i=3;i<=n;i++)
  {  for (j=2;j<=i;j++)
        if (i%j==0) break;
        if(j==i) s=s+sqrt(i); }
  return s;
填空 1i2t++3count
改错 1int  fun(int  aint  bint  c)
2return 3
3else  return  1
30、请编写函数fun,其功能是:计算并输出给定10个数的方差:
例如,给定的10个数为95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,
56.0,则输出为S=11.730729。编程:double x1=0.0, s=0.0;
int i;
for(i=0;i<10;i++)
x1=x1+x[i];
x1=x1/10;
for(i=0;i<10;i++)
s=s+(x[i]-x1)*(x[i]-x1);
return sqrt(s/10);
填空:[1x2n3t
改错:[1    k=i[2]b=k%10[3]c=k/10
21套:请编写函数fun,其功能是:计算并输出下列多项式值
Sn=(1-1/2)+(1/3-1/4)+...+(1/(2n-1)1/2n)
例如,若主函数从键盘给n输入8,则输出为S=0.662872
编程:int i;
  double sum=0.0;
  if (n>1&&n<=100)
{for(i=1;i<=n;i++) sum+=1.0/(2*i-1)-1.0/(2*i);}
  return sum;
填空:[1]j=2[2]i[3]j改错:改为:if(*r == '\0')
改为:if(sum%4==2)
23套:请编写函数fun,其功能是:计算并输出当x<0.97时下列多项
式的值,
到|Sn-S(n-1)<0.000001为止。Sn=1+0.5x+0.5(0.5-1)/2!x(2)+...+
0.5(0.5-1)(0.5-2).....(0.5-n+1)/n!x(n)
例如,若主函数从键盘给x输入0.21,则输出为s=1.100000
double s1=1.0,p=1.0,sum=0.0,s0,t=1.0;
  int n=1;
  do
  {s0=s1;sum+=s0;t*=n;p*=(0.5-n+1)*x;
s1=p/t; n++;}while(fabs(s1-s0)>1e-6);
return sum;
填空:[1] x[2]n[3]fabs(t)
改错:[1]改为:for(i=1i<=yi++) [2]改为:t=t%1000
类型三:调整一个数的个、十、百、千位
2、请编写函数fun,其功能是:将两个两位数的正整数
ab合并形成一个整数放在c中。合并的方式是:a数的十位和个位数依次放在c数的个位和百位上,b
的十位和个位数依次放在c数的千位和十位上。
例如,a=45,b=12,调用该函数后c=1524
*c=(b/10)*1000+(a%10)*100+(b%10)*10+a/10 ;
填空:[1]sturct student
      [2]a.name
      [3]a.score[i]
改错:[1]if(p==n) return -1;[2]a[i]=a[i+1];
6、请编写函数fun,其功能是:将两个两位数的正整数ab合并形成一个整数放在c中。合并的方式是:a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。
例如,a=45,b=12,调用该函数后c=4152
*c=(a/10)*1000+(b/10)*100+(a%10)*10+b%10 ; }
填空:[1]STYPE [2]FILE[3]fp
改错:[1]for(i=0i< sli ++)[2]t[2*sl]='\0'
26、请编写函数fun,其功能是:将两个两位数的正整数ab合并形成一个整数放在c中。合并的方式是:a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。
例如,a=45,b=12,调用该函数后c=2514
本题的关键在于如何表示出个、十、百、千位数。对于一个两位的整数,10对它求余得到个位数上的数,将它除10得到十位数上的数。
*c=(b%10)*1000+(a%10)*100+(b/10)*10+a/10 ; }
填空:[1fp    2fclose(fp)3fname
改错:[1for(i=j+1i<ni++)    [2]p=i
类型四:与下标或ASCII码有关
38. 请编写函数fun,其功能是:s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。
int i,j=0;
  for(i=0;s[i]!= '\0' ;i++)
    if(i%2==0 && s[i]%2==0) t[j++]=s[i];
  t[j]='\0';
改错:[1] while(i<j)  [2] *c=‘\0'
填空:[1]j  [2]k [3]p
49编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。
例如,若原来的字符串为CEAedca,则排序后输出为CedcEAa
int i,j,t;
  for(i=1;i<num-2;i++)
    for(j=i+1;j<num-1;j++)
      if(s[i]<s[j])
      {  t=s[i];s[i]=s[j];s[j]=t;.
改错:[1] if(* p == ' ')[2] * (p-1)=toupper(*(p - 1))
填空:[1] ss[i] [2]n+j [3]1
50. 请编写函数fun,其功能是:s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。
例如,s所指字符串中的内容为ABCDEFGl23456,其中字符AASCII码值为奇数,因此应当删除;其中字符BASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是246
int i,j=0;
  for(i=0;s[i]!= '\0' ;i++)
    if(i%2==0 && s[i]%2==0) t[j++]=s[i];
  t[j]='\0';
改错:[1] if (d%2==0)  [2] s/= 10
填空:[1]r  [2]fs  [3]ft
24套:请编写函数fun,其功能是:s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
编程:int i=0;
  for(;*s!='\0';s++)
    if(*s%2==1) t[i++]=*s;
  t[i]='\0';
填空:STU
        std[i].num
        std[i]
改错:
改为:r++ p++
改为:if(*r == '\0')
类型五:数组和矩阵操作
39. 下列程序定义了NXN的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N],int n),该函数的功能是:使数组右上半三角元素中的值乘以m
int i,j;
  for(i=0; i<N; i++)
  for(j=N-1; j>=i; j--)
  a[i][j]*=m;
改错:[1] float  fun(int n)  [2] for (i=2i<=ni++)
填空:[1] *av  [2]i  [3]x[j]
44. 请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。例如:若二维数组中的值为
1  3  5  7  9
2  9  9  9  4
6  9  9  9  8
1  3  5  7  0  则函数值为61
int sum=0,i;
for(i=0;i<N;i++) sum+=a[0][i]+a[M-1][i];
  for(i=1;i<M-1;i++) sum+=a[i][0]+a[i][N-1];
  return sum;
改错:[1] num[k]=0[2] switch(*s)
填空:[1] x[i]/N [2] j++ [3]i++
46. 程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(inta[][N],int n),该函数的功能是:使数组左下半三角元素中的值乘以n。例如:n的值为3,a数组中的值为
,则返回主程序后a数组中的值应为
int i,j;
  for(i=0; i<N; i++)
    for(j=0; j<=i; j++) a[i][j]*=n;
改错:[1] if(k > 0)  [2] else if(k==0)
填空:[1] STU  [2] score[i]  [3] &std
48. 编写程序,实现矩阵(33)的转置(即行列互换)
int i,j,t;
for(i=0;i<2;i++)
for(j=i+1;j<3;j++)
{t=array[i][j];array[i][j]=array[j][i];array[j][i]=t;
改错;[1] sum=0
[2] scanf("%d"&a[i][j])
填空:[1]N [2]break [3]n
4、请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个MN列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。该题用for(i=0;i<N;i++)来控制一列一列地,而内嵌循环for(j=0;j<M;j++)用于控制同列内元素的比较。多重循环的嵌套总是最里层循环变化最快,即外层循环改变一个值,内层循环就要循环完一次,对于多重循环一定要好好去体会和理解,在多数题目中都要用到多重循环(一般为二重)
编程:int i,j;
c语言二维数组转置  for(i=0;i<N;i++)
  {  pp=tt[0][i];
      for(j=0;j<M;j++)
    if(tt[j][i]<pp[i]) pp[i]=tt[j][i];}   
填空:[1]    std[0] [2]    std[i].age[3]max.name
改错:[1]void  fun(int *aint *b) [2]t=*b *b=*a *a=t
29、下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的s。例如:a数组中的值为
则返回主程序后s的值应为3.375。注意不能重复计算,第一个for循环求出第一列与最后一列的和,第二个for循环求出第一行与最后一行(已除去两头元素),要注意第二个for中起始为1,最后为N-2
编程:int i,t=0; double s=0;
for(i=0;i<N;i++)
  {s+=w[i][0]+w[i][N-1];t+=2;} for(i=1;i<N-1;i++)
{  s+=w[0][i]+w[N-1][i];t+=2;}
s=s/t;return s;
填空:[1*av2i3x[j]
改错:[1    # include  stdio.h
2upfst(char  *p)
20套:下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N]),该函数的功能是:使数组左下半三角元素中的值全部置成0
编程:
int i,j;
for(i=0;i<N;i++)
for(j=0;j<=i;j++)
a[i][j]=0;   
填空:[1]std[ ][2]PERSON[3]Std
改错:[1]改为:int  kqi
      [2]改为:pt[i]=str[k][i]
类型六:学生分数操作
36. 已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。已给出函数的首部,请完成该函数。
int k,i;
  (*s).s=a[0].s;
  for( i=0;i<N; i++)
    if (a[i].s<(*s).s) { (*s).s=a[i].s; k=i; }
  strcpy ( (*s).num, a[k].num);
改错:[1] double  fun(int  m)
[2] for(i=100i<=mi += 100)
填空:[1]*av  [2]i  [3]x[j]
10、已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:出成绩最高的学生记录,通过形参返回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。
编程:int i;
  *s=a[0];
  for( i=1;i<N; i++)
    if (a[i].s>(*s).s) *s=a[i];
填空 [1]STU[2]std[i].num    [3]std[i]
改错 [1]IsPrime(int  n)[2]if (!(n%i))
16、请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。
  例如:若有5门课程的成绩是:90.5,72,80,61.5,55,则函数的值为71.80
编程:float av=0.0; int i;
  for(i=0;i<n;i++)
    av=av+a[i];
  return (av/n);
填空:[1]x[2]    p[3]x
改错:[1]long k=1[2]    num/=10
27、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s,请编写函数fun,它的功能是:把分数最低的放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。
编程:int i,j=0, n=0, min ;
  min=a[0].s ;
  for (i=0 ; i<N ; i++)
    if( a[i].s<min) min=a[i].s ;
  for (i=0 ; i<N ;i++)
    if( a[i].s==min) { *(b+j)=a[i] ; j++; n++; }
  return  n ;
填空:[1*fw2str3str
改错:[1void fun (long  slong *t)[2]while(s > 0)
25、学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s,请编写函数fun,它的功能是:把高于等于平均分的放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。
编程:int i;double av= 0.0 ;
  *n=0;
  for(i=0;i<N;i++) av=av+a[i].s;
  av=av/N;
  for(i=0;i<N;i++)
    if(av<=a[i].s) { b[*n]=a[i];*n=*n+1;}
  return  av ;
填空:[1STU2score[i]3&std
改错:[1double fun(double adouble x0)
2if(fabs(x1-x0)>=0.00001)
1、去掉一个最高分和一个最低分求平均值
编程没答案
填空:[1]a[i]=0[2]m%10[3]m/10
改错:[1] b[i] = a[i][0];
[2]for (j=1; j<=N-1; j++)
[3]if ( b[i] > a[i][j] )
类型七:字符和字符串操作

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。