1.找出二维数组中最大的数.int fun (int a[][M]){int i,j,max=a[0][0]; for(i=0;i<2;i++) for(j=0;j=eps) /*当某项大于精度要求时,继续求下一项*/ {s1=s1*n/(2*n+1); /*求多项式的每一项*/ s=s+s1; /*求和*/ n++; } return 2*s;3. 求出能被整除的个数void fun (int *a, int *n){ int i,j=0; for(i=1;i<=1000;i++) /*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并放入数组a中*/ if((i%7==0||i%11==0)&&i%77!=0) a[j++]=i; *n=j; }4.求出字符串中只有字母的字符void fun( char *a ){int i,j=0; for(i=0;a[i]!='\0';i++) if(a[i]!='*') a[j++]=a[i]; /*若不是要删除的字符'*'则留下*/ a[j]='\0';}5.实现两个字符串的连接void fun(char p1[], char p2[]){int i,j; for(i=0;p1[i]!='\0';i++) ; for(j=0;p2[j]!='\0';j++) p1[i++]=p2[j]; p1[i]='\0';}6.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。
void fun(STREC *a){double ave=0.0; int i; for(i=0;iave=a->ave+a->s[i]; a->ave/=N;}7.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点请编写函数fun,其功能是:求出平均分,并由函数值返回例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应当是:78.625double fun( STREC *h ){ double ave=0.0; STREC *p=h->next; while(p!=NULL) {ave=ave+p->s; p=p->next; } return ave/N;}8.编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k返回例如,若输入17,则应输出:4 6 8 9 10 12 14 15 16void fun( int m, int *k, int xx[] ){/*int i,j;int t=0;for(i=2;i
例如,若输入字符串123412132,输入字符为1,则输出3int fun(char *ss, char c){int i=0; for(;*ss!='\0';ss++) if(*ss==c) i++;/*求出ss所指字符串中指定字符的个数*/ return i;}10.其功能是计算n门课程的平均分,结果作为函数值返回float fun ( float *a , int n ){int i;float av=0.0; for(i=0; i
请编写函数fun,其功能是:除了字符串前导的*号之外,将串中其它*号全部删除在编写函数时,不得使用C语言提供的字符串函数例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:****ABCDEFGvoid fun( char *a ){ int i=0; char *p=a; while(*p&&*p=='*') { a[i]=*p; i++; p++; } while(*p) { if(*p!='*') {a[i]=*p;i++;} p++; } a[i]='\0';}13.下列给定程序中,函数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)例如,形参s所指字符串为"abcdefgh",执行结果为"ahcbedgf"void fun(char *tt, int pp[]){int i; for(i=0;i<26;i++) pp[i]=0; /*初始化pp数组各元素为0*/ for(;*tt!='\0';tt++) if(*tt>='a'&&*tt<='z') pp[*tt-'a']++; }14.下列给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与形参t所指字符串相同的串,找到后返回该串在字符串数组中的位置(即下标值),若未找到则返回-1。
ss所指字符串数组中共有N个内容不同的字符串,且串长小于Mvoid fun( char *a ){while(*a!='\0') a++; a--; /*指针a指向字符串的尾部*/ while(*a=='*') a--; /*指针a指向最后一个字母*/ *(a+1)='\0'; /*在字符串最后加上结束标志符*/}15.下列给定程序中已建立了一个带头结点的单向链表,在main函数中将多次调用fun函数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短char *fun ( char *s, char *t){int i,j; for(i=0;s[i]!= '\0';i++); /*求字符串的长度*/ for(j=0;t[j]!= '\0';j++); if(i<=j) /*比较两个字符串的长度*/ return t; /*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/ else return s;}16.学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:函数返回该学号的学生数据,指定的学号在主函数中输入。
若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回用于字符串比较的函数是strcmp) STREC fun( STREC *a, char *b ){int i; STREC str={"\0",-1}; /*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1*/ for(i=0;i
函数返回字符数组1的值,即目的串的首地址 为保证复制的合法性,字符数组1必须指向一个足够容纳字符数组2的存储空间strcat(字符数组1,字符数组2) 该函数将字符数组2所指字符串的内容连接到字符数组1所指的字符串后面,并自动覆盖字符数组1串末尾的′\0′,该函数返回字符数组1的地址值 字符数组1所指定字符串应有足够的空间容纳两串合并后的内容strlen(字符数组) 此函数计算出以字符数组为起始地址的字符串的长度,并作为函数值返回 这一长度不包括串尾的结束标志′\0′strcmp(字符数组1,字符数组2) 该函数用来比较字符数组1和字符数组2所指字符串的大小若字符数组1>字符数组2,函数值大于0(正数);若字符数组1=字符数组2,函数值等于0;若字符数组1<字符数组2,函数值小于0(负数) 根据字符的ASCII码值依次对字符数组1和字符数组2所指字符串对应位置上的字符两两进行比较,当出现第一对不同的字符时,即由这两个字符决定所在串的大小17.函数fun的功能是:将s所指字符串中除下标为偶数同时ASCII码值也为偶数的字符外,其余的全部删除;字符串中剩余字符所形成的新串放在t所指的数组中。
例如,若s所指字符串中的内容为"ABCDEFG123456",其中字符A的ASCII码值为奇数,因此应当删除;字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;字符2的ASCII码值为偶数,在数组中的下标也为偶数,因此不应当删除,其他依此类推最后t所指的数组中的内容应是"246"参考答案】 void fun(char *s, char t[]){ int i,j=0; for(i=0;s[i]!='\0';i++) if(i%2==0 && s[i]%2==0) /*将s所指字符串中下标和ASCII码值都为偶数的字符放入数组t中*/ t[j++]=s[i]; t[j]='\0'; /*在字符串最后加上结束标识*/}【考点分析】本题考查:循环判断结构;字符串的操作;逻辑运算符的使用解题思路】 本题要求删除除了下标为偶数同时ASCII码值也为偶数的字符,即保留下标为偶数同时ASCII码值也为偶数的字符循环语句用于遍历字符串,条件语句用于判断当前字符是否符合要求注意判断条件是下标为偶数,同时ASCII码值也为偶数,所以应使用逻辑与"&&"运算符。
18编写函数fun,其功能是:利用下面的简单迭代方法求方程cos(x)-x=0的一个实根迭代步骤如下:(1)取x1初值为0.0;(2)x0=x1,将x1的值赋给x0;(3)x1=cos(x0),求出一个新的x1;(4)若x0-x1的绝对值小于0.000001,执行步聚(5),否则执行步聚(2);(5)所求x1就是方程cos(x)-x=0的一个实根,作为函数值返回程序将输出结果Root=0.739086double fun(){double x0,x1;x1=0.0;do{x0=x1;x1=cos(x0);}while(fabs(x0-x1)>=1e-6);return x1;}19.规定输入的字符串中只包含字母和*号请编写函数fun,其功能是:将字符串中的前导*号全部移到字符串的尾部例如,字符串中的内容为:"*******A*BC*DEF*G****",移动后,字符串中的内容应当是:"A*BC*DEF*G***********"在编写函数时,不得使用C语言提供的字符串函数void fun( char *a ){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';}20.学生记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组中,请编写函数fun,其功能是:把分数最低的学生数据放入b所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生人数。
参考答案】int fun( STREC *a, STREC *b ){int i,j=0,min=a[0].s; for(i=0;ia[i].s) min=a[i].s; /*找出最小值*/ for(i=0;i
【解题思路】首先计算从1到m的对数的和,因此循环变量的范围是1~m,每次循环都进行一次累加求和该题需要注意的是,log()函数的形式参数应当为double型变量,而用于循环的基数变量为整数,需要进行强制转换在返回的时候求出平方根22.规定输入的字符串中只包含字母和*号请编写函数fun,其功能是:只删除字符前导和尾部的*号,串中字母间的*号都不删除形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e给出了字符串中尾部*号的个数在编写函数时,不得使用C语言提供的字符串函数例如,字符串中的内容为:"****A*BC*DEF*G*******",删除后,字符串中的内容应当是:"A*BC*DEF*G"void fun( char *a, int n,int h,int e ){int i,j=0; for(i=h;i
解题思路】本题使用了一种i永远是奇数的循环方法,即for(i=1;i