删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参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函数,不得增行或删行,也不得更改程序的结构。 试题程序: