不得使用C语言提供的字符串函数。
例如,字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容应当是ABCDEFG*******。 void fun(char *a,char *p) {
char *t=a;
for(;t<=p;t++) if(*t!=′*′)
*(a++)=*t; /*将p以前所有不是*号的字符保留下来*/ for(;*t!=′\\0′;t++)
*(a++)=*t; /*将p以后的所有*号保留下来*/ *a=′\\0′; /*在字符串最后加上字符串结束标识*/ }
第二十六套
1.下列给定程序中,函数fun的功能是:找出100~999之间(含100和999)所有整数中各位上数字之和为x(x为正整数)的整数,并输出;符合条件的整数个数作为函数值返回。
例如,当x值为5时,100~999之间各位上数字之和为5的整数有:104、113、122、131、140、203、212、221、230、302、311、320、401、410、500,共有15个。当x值为27时,各位数字之和为27的整数是:999,只有1个。
请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1) 999 (2) t/10 (3) x
2.下列给定程序中函数fun的功能是:从低位开始依次取出长整型变量s中偶数位上的数,构成一个新数放在t中。高位仍在高位,低位仍在低位。 例如,当s中的数为7654321时,t中的数为642。 请改正程序中的错误,使它能得出正确的结果。 (1)void fun(long s,long *t) (2)while(s>0)
3.学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:按分数降序排列学生的记录,高分在前,低分在后。 void fun (STREC a[]) {
int i,j; STREC t;
for(i=1;i for(j=0;j /*按分数的高低排列学生的记录,高分在前*/ } 第二十七套 1.程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:对形参b所指结构体变量中的数据进行修改,并在主函数中输出修改后的数据。 例如,若b所指变量t中的学号、姓名和三门课的成绩依次是:10002、\、93、85、87,修改后输出t中的数据应为:10004、\、93、85、87。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1) ->sno (2) ->name (3) &t 2.下列给定程序中函数fun的功能是:用递归算法求形参a的平方根。求平方根的迭代公式如下: 例如,a为2时,平方根值为:1.414214。 请改正程序中的错误,使它能得出正确的结果。 (1)double fun(double a,double x0) (2)if(fabs(x1-x0)>=0.00001) 3.学生的记录由学号和成绩组成。N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。 double fun (STREC *a,STREC *b, int *n) { int i; double av=0.0; *n=0; for(i=0;i av=av/N; /*求平均值*/ for(i=0;i { b[*n]=a[i];*n=*n+1;} /*将高于等于平均分的学生存入b所指存储单元中,并统计人数*/ return av; /*返回平均分*/ } 第二十八套 1.下列给定程序中已建立了一个带头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1) q (2) next (3) next 2.下列给定程序中函数fun的功能是:用选择法对数组中的n个元素进行升序排列。 请修改程序中的错误,使它能得出正确的结果。 (1)p=j ; (2)p=i; 3.编写函数fun,其功能是:将1到m之间(含m)能被7或11整除的所有整数放在数组a中,并通过n返回这些数的个数。例如,若传给m的值为50,则程序输出: 7 11 14 21 22 28 33 35 42 44 49 void fun(int m, int *a, int *n) { int i,j=0; for(i=1;i<=m;i++) if(i%7==0||i==0) /*求出1到m(含m)之内能被7或11整除的所有整数放在数组a中*/ a[j++]=i; *n=j; /*返回这些数的个数*/ } 第二十九套 1.下列给定程序中,函数fun的功能是:有N×N矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素置为0。 例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 计算后结果为 1 0 0 6 5 0 10 14 9 请在程序的下划线处填入正确的内容并把下划线删除。使程序得出正确的结果。 (1) [N] (2) t[i][j] (3) t[j][i] 2.下列给定程序中函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-y)的值。其中x和y的值不相等,z和y的值不相等。 例如,当x的值为9,y的值为11,z的值为15时,函数值为-3.50。 请改正程序中的错误,使它能得出正确的结果 (1)#define FU(m,n) (m)/(n) (2)return (value); 3.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。 例如,字符串中的内容为:*******A*BC*DEF*G****,删除后字符串中的内容应当是:A*BC*DEF*G****。编写函数时,不得使用C语言提供的字符串函数。 void fun (char *a) { char *p=a; while(*p==′*′) p++; /*指针p指向字符串第一个字母*/ for(;*p!=′\\0′;p++,a++) *a=*p; /*从第一个字母开始,其后的字符都放入指针a所指的字符串中*/ *a=′\\0′; /*在字符串最后加上字符串结束标识*/ } 第三十套 1.程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是:从文件中找出指定学号的学生数据,读入此学生数据,对该学生的分数进行修改,使每门课的分数加3分,修改后重写文件中学生的数据,即用该学生的新数据覆盖原数据,其它学生数据指定不变;若找不到,则不做任何操作。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1)fp (2) == (3) fp 2.下列给定程序中函数fun的功能是:用插入排序法对字符串中的字符进行升序排列。插入 法的基本算法是:先对头两个字符进行排序,然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……。待排序的字符串已在主函数中赋予。 请改正程序中的错误,使它能得出正确的结果。 (1)n=strlen( aa ) ; (2)ch=aa[i]; 3.N名学生的成绩已在主函数中放入一个带有头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:找出学生的最高分,并由函数值返回。 double fun(STREC *h) { double max=h->s; while(h!=NULL) /*通过循环找到最高分数*/ { if(max return max; } 第三十一套 1.下列给定程序中,函数fun的功能是:计算下式前n项的和,并作为函数值返回。 例如,若主函数从键盘给n输入50后,则输出为S=1.960784。? 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1) double (2) j (3)1.0/t或(double)1/t 2.下列给定程序中函数fun的功能是:判断一个整数是否为素数,若是素数返回1,否则返回0。 在main()函数中,若fun返回1输出YES,若fun返回0输出NO!。 请改正程序中的错误,使它能得出正确的结果。 (1)正确:k++ ; (2)正确:if(m==k) 3.请编写函数fun,其功能是:找出一维整型数组元素中最大的值及其所在的下标,并通过形参传回。数组元素中的值已在主函数中赋予。 主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。 void fun(int a[],int n, int *max, int *d) { int i; *max=a[0]; *d=0; for(i=0;i } 第三十二套 1.下列给定程序中,函数fun的功能是计算下式 直到 ,并将计算结果作为函数值返回。 例如,若形参e的值为1e-3,函数的返回值为2.985678。 请在下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。 (1) 0 (2) i++或++i或i+=1或i=i+1 (3)2.0] 2.下列给定程序中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成的新串放在t所指的数组中。 例如,当s所指字符串为:\时,t所指字符串中的内容应为:\。 请改正程序中的错误,使它能得出正确的结果。 (1)void fun ( char *s , char *t ) (2)t[2] 3.编写函数fun,其功能是:将s所指字符串中除了下标为奇数同时ASCII值也为奇数的字符之外,其余的所有字符全部删除,串中剩余字符所形成的一个新串放在t所指的数组中。 例如,若s所指字符串的内容为:\,其中字符A的ASCII码值为奇数,但所在元素的下标为偶数,因此需要删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其它依此类推。最后t所指数组中的内容应为:\。 void fun(char *s,char t[]) { int i,j=0,n; n=strlen(s); for(i=0;i if(i%2!=0&&s[i]%2!=0) { t[j]=s[i]; /*将下标为奇数同时ASCII码值为奇数的字符放入数组t中*/ j++; } t[j]=′\\0′; /*最后加上结束标识符*/ } 第三十三套 1.下列给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。例如,形参s所指的字符串为def35adh3kjsdf7,执行后结果为def3]注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! (1) && (2) 0或′\\0′ (3) s[j]或*(s+j) 2.下列给定程序中函数fun的功能是:根据整型形参m,计算如下公式的值。 例如,若m的值为5,则应输出1.463611。 请改正程序中的错误,使它能得出正确的结果。 (1)for(i=2;i<=m;i++) (2)y+=1.0/(i*i);或y+=(double)1.0/(i*i) 3.编写函数fun,其功能是:实现B=A+A',即将矩阵A加上A的转置,存放在矩阵B中。