删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include 
void fun (char *a, int n ,int h ,int e) { }
main ( )
{ char s[81],*t,*f; int m=0,tn=0, fn=0;
printf(\:\\n\ t=f=s; while (*t)
{t++;m++; } /*m为字符串的长度* /
t--; /*指针t指向字符串尾部*/ while (*t==' * ' )
{t--; tn++; } /*指针t指向最后一个字母,tn统计尾部'*'的个数*/ while (*f==' * ' ) { f++; fn++; } fun( s, m, fn, tn);
printf (\: \\n\ puts (s); }
第17套
填空题:请补充main函数,该函数的功能是:从键盘输入一个字符串及一个指定字符,然后把这个字符及其后面的所有字符全部删除。结果仍然保存在原串中。 例如,输入“abcdef'’,指定字符为‘e’,则输出“abcd”。 注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。
试题程序:
#include 
{ int i=0;
char str [N], ch;
printf (\:In\
printf (\ scanf (\ while (str [i] !='\\0') { if (str [i]==ch) 【1】 【2】; }
str[i]= 【3】;
printf(\ puts (str); }
改错题:下列给定程序中,函数fun()的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。例如,当a所指字符串中的内容为abcdefg,b所指字符串中的内容为1234时,c所指数组中的内容应该为a4b3c2d1efg;而当a所指字符串中的内容为1234,b所指字符串中的内容为ab0defs时,c所指数组中的内容应该为1g2f3e4dcba。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。
试题程序:
#include 
void fun(char *a, char *b, char *c) { int i, j; char ch; i=0; j=strlen (b) -1;
********************************** while (i>j)
{ ch=b[i]; b[i]=b[j]; b[j]=ch; i++; j--; }
while (*a||*b)
{ if (*a) {*c=*a; c++; a++;} if(*b) {*c=*b; c++; b++;} }
********************************** *c=0 ; }
main ( )
{ char s1[100],s2[100],t[200];
printf(\: \ printf(\: \ fun (s1, s2,t);
printf(\:%s\\n\
}
编程题:请编写函数fun(),其功能是:将所有大于1小于整数m的非素数存入.xx所指数组中,非素数的个数通过k传回。
例如,输入17,则应输出4 6 8 9 10 12 14 15 16。 注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include
void fun(int m, int *k, int xx[]) { }
main ( )
{ int m, n, zz[100];
printf (\:\ scanf (\ fun (n, &m, zz);
     printf(\:\     for (n=0; n         printf(\} 第18套  填空题:请补充main函数,该函数的功能是;输入两个正整数m和n,求这两个数的最大公约和最小公倍数。      注意:部分源程序给出如下。      请勿改动主函数main和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。  试题程序:  #include  { int a, b,  n,  m,  t;      printf (\: \\n\    scanf  (\    if (n        { a=m; b=n; }     else        { a=n; b=m; }     while(【1】)        { t= 【2】  a=b; b=t; }      printf (\:%d\\n\    printf (\:%d\\n\【3】 ); }  改错题:下列给定程序中函数fun()的功能是:计算n!。例如,给n输入5,则输出 120.000000。      请改正程序中的错误,使它能得出正确的结果。      注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。     试题程序:      #include  **********************************    if n==0         return 1.0;    while(n>l&&n<170)  **********************************        result *=n--    return result; } main() {  int n;      printf (\:\ scanf (\     printf (\}  编程题:请编写函数fun(),该函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得,并放在主函数的age数组中。要求函数把0至9岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,依次类推,把100岁(含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。     注意:部分源程序给出如下。      请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。  试题程序:  #include  void fun(int *a, int *b) { }  double rnd()  {  static t=29, c=217,m=1024, r=0;     r= (r*t+c) %m;      return ((double) r/m); }  main ( )  { int age[N], i,d[M];    for(i=0; i        age[i]=(int) (115*rnd());/*产生一个随机的年龄数组*/    printf (\: \\n\   for(i=0; i       printf ((i+l) = =0 ?\每行输出10个数*/    printf (\   fun (age, d);     for(i=0; i<10; i++)        printf(\:M\\n\   printf(\:M\\n\}  第19套  填空题:请补充main函数,该函数的功能是:把1-100间的所有素数保存在数组aa中,然后输出这些素数并计算它们的和。     注意:部分源程序给出如下。      请勿改动主函数main和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。  试题程序:  #include {  int n, i, j, k, flag, sum;      int aa[50];      sum=0; k=0;       for (i=2; i<100; i++)         {  【1】;             for (j=2; j             { sum+=i; 【3】;  }         }       printf(\     for (i=0; i       {  if (i=0) printf (\         printf ( \       }       printf (\}  改错题:下列给定程序中,函数fun()的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序。插入法的基本方法是:先对字符串中的头两个元素进行排序,然后把第3个字符插入到前两个字符中,插入后前3个字符依然有序;再把第4个字符插入到前3个字符中,待排序的字符串已在主函数中赋予。     请改正程序中的错误,使它能得出正确的结果。      注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。  试题程序: