if(av<=a[i].s)
{ b[*n]=a[i];*n=*n+1;} return av;
}
28◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序中已建立了一个带头结点的单向链表,链表中的各结点按数据域递增有序链接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。 【答案】【1】q 【2】next 【3】next
【改错】下列给定程序中函数fun的功能是:用选择法对数组中的n个元素进行升序排列。 【答案】【1】p=j;【2】p=i;
【编程】编写函数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) a[j++]=i; *n=j;
}
29◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序中函数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]
【改错】下列给定程序中函数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);
【编程】规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:将字符串中的前导*号全部删除,中间和尾部的*号不删除。
例如,字符串中的内容为:*******A*BC*DEF*G****,删除后字符串中的内容应当是:A*BC*DEF*G****。编写函数时,不得使用C语言提供的字符串函数。 【答案】
void fun (char *a) {
char *p=a;
while(*p==′*′) p++;
for(;*p!=′\\0′;p++,a++) *a=*p;
*a=′\\0′; }
30◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是:从文件中找出指定学号的学生数据,读入此学生数据,对该学生的分数进行修改,使每门课的分数加3分,修改后重写文件中学生的数据,即用该学生的新数据覆盖原数据,其它学生数据指定不变;若找不到,则不做任何操作。 【答案】【1】fp 【2】== 【3】fp
【改错】下列给定程序中函数fun的功能是:用插入排序法对字符串中的字符进行升序排列。插入法的基本算法是:先对头两个字符进行排序,然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,??。待排序的字符串已在主函数中赋予。 【答案】【1】n=strlen( aa ) ;
【2】ch=aa[i];
【编程】N名学生的成绩已在主函数中放入一个带有头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:找出学生的最高分,并由函数值返回。 【答案】
double fun(STREC *h) {
double max=h->s; while(h!=NULL)
{ if(max
}
return max; }
31◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序中函数fun的功能是:计算下式前n项的和,并作为函数值返回。
例如,当形参n的值为10时,函数返回:-0.204491 【答案】【1】1【2】2*i 【3】(-1)
【改错】下列给定程序中函数fun的功能是:判断一个整数是否为素数,若是素数返回1,否则返回0。
在main()函数中,若fun返回1输出YES,若fun返回0输出NO!。
【答案】【1】k++ ; 【2】if(m==k)
【编程】请编写函数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
}
32◆◆◆◆◆◆◆◆◆◆◆◆◆◆
【填空】下列给定程序中函数fun的功能是计算下式 直到,并将计算结果作为函数值返回。例如,若形参e的值为1e-3,函数的返回值为2.985678。 【答案】【1】0 【2】i++ 【3】2.0*i 【改错】下列给定程序中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成的新串放在t所指的数组中。
例如,当s所指字符串为:\时,t所指字符串中的内容应为:\。 【答案】
【1】void fun ( char *s , char *t ) 【2】t[d+i]=0;
【编程】编写函数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]; j++; } t[j]=′\\0′; } 33◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 【填空】下列给定程序中函数fun的功能是:在形参s所指字符串中的每个数字字符之后插 入一个*号。例如,形参s所指的字符串为def35adh3kjsdf7,执行后结果为def3*5*adh3*kjsdf7* 【答案】【1】&& 【2】0 【3】s[j] 【改错】下列给定程序中函数fun的功能是:根据整型形参m,计算如下公式的值。 例如,若m的值为5,则应输出1.463611。 【答案】 【1】for(i=2;i<=m;i++) 【2】y+=1.0/(i*i); 【编程】编写函数fun,其功能是:实现B=A+A',即将矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。例如,输入下面的矩阵: 其转置矩阵为: 1 2 3 1 4 7 4 5 6 2 5 8 7 8 9 3 6 9 程序输出: 2 6 10 6 10 14 10 14 18 【答案】 void fun (int a[3][3], int b[3][3]) { int i,j; for(i=0;i<3;i++) for(j=0;j<3;j++) b[i][j]=a[i][j]+a[j][i]; } 34◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 【填空】给定程序中,函数fun的功能是将不带头结点的单向链表逆置,即若原链表中从头至尾结点数据域一次为2,4,6,8,10,逆置后,从头至尾结点数据域依次为10,8,6,4,2. 【答案】【1】NODE 【2】next 【3】r 【改错】下列给定程序中,函数fun的功能是:将字符串s中的位于奇数位置的字符或ASCII码为偶数的字符依此放入字符串t中。例如,字符串中的数据为AABBCCDDEEFF,则输出应当是ABBCDDEFF。 【答案】【1】if(i%2 || s[i]%2==0) 【2】t[j]=0; 【编程】请编写函数fun,该函数的功能是:将M行N列的二维数组中的数据,按列的顺序依此放到一维数组中。一维数组中数据的个数存放在形参n所指的存储单元中。 例如,若二维数组中的数据为: 33 33 33 33 44 44 44 44 55 55 55 55 则一维数组中的内容应是: 33 44 55 33 44 55 33 44 55 33 44 55 【答案】 void fun(int (*s)[10],int *b,int *n,int mm,int nn) { int i,j; for(j=0;j b[*n]=*(*(s+i)+j); *n=*n+1; } } 35◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 【填空】程序通过定义学生结构体变量,存储学生的学号、姓名和3门课的成绩。函数fun的功能是:将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。 例如,若传给形参a的数据中学号、姓名和三门课的成绩依次是:10001、\、95、80、88,修改后的数据应为:10002、\、96、81、89。 【答案】【1】 struct student 【2】a.name 【3】a.score[i] 【改错】假定整数数列中的数不重复,并存放在数组中。下列给定程序中函数fun的功能是:删除数列中值为x的元素。变量n中存放数列中元素的个数。 【答案】【1】if(p==n) return -1; 【2】a[i]=a[i+1]; 【编程】学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请编写函数fun,其功能是:把分数最低的学生数据放入b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数。 【答案】 int fun(STREC *a,STREC *b) { int i,j=0,n=0,min; min=a[0].s; for(i=0;i *(b+j)=a[i];j++;n++; } return j; } 36◆◆◆◆◆◆◆◆◆◆◆◆◆◆ 【填空】给定程序中,函数fun的功能是将带头结点的单向链表逆置,即若原链表中从头至尾结点数据域依次为2,4,6,8,10,逆置后,从头至尾结点数据域依次为10,8,6,4,2. 【答案】【1】next【2】NULL【3】r 【改错】下列给定程序中函数fun的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。 【答案】【1】r=t;【2】r=t;