admin 管理员组

文章数量: 1086019


2024年4月21日发(作者:sidebardlg怎么关掉)

1.找出二维数组中最大的数.

int fun (int a[][M])

{

int i,j,max=a[0][0];

for(i=0;i<2;i++)

000000

00000

000000

000000

000000

for(j=0;j

000000

if(max

00000

max=a[i][j];

return max;

000000

000000

00000

}

2. 求出迭代法中的和,精度为epd。

double s=1.0,s1=1.0;

000000

000000

. int n=1;

while(s1>=eps) /*当某项大于精度要求时,继续求下一项*/

000000

000000

{s1=s1*n/(2*n+1); /*求多项式的每一项*/

s=s+s1; /*求和*/

n++;

}

return 2*s;

000000

000000

00000

000000

000000

3.求出能被整除的个数

{

000000

void fun (int *a, int *n)

000000

000000

int i,j=0;

组a中*/

000000

for(i=1;i<=1000;i++) /*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并放入数

000000

00000

if((i%7==0||i%11==0)&&i%77!=0)

a[j++]=i;

*n=j;

}

000000

00000

000000

00000

4.求出字符串中只有字母的字符

void fun( char *a )

{

000000

000000

int i,j=0;

for(i=0;a[i]!='0';i++)

000000

000000

if(a[i]!='*')

a[j++]=a[i]; /*若不是要删除的字符'*'则留下*/

000000

000000

a[j]='0';

}

000000

000000

000000

5.实现两个字符串的连接

void fun(char p1[], char p2[])

{int i,j;

000000

000000

000000

for(i=0;p1[i]!='0';i++) ;

for(j=0;p2[j]!='0';j++)

p1[i++]=p2[j];

000000

00000

p1[i]='0';

}

00000

6.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数

中给出,请编写函数fun,其功能是:求出该学生的平均分,并放入记录的ave成员中。

000000

000

000

void fun(STREC *a)

{double ave=0.0;

int i;

for(i=0;i

000000

00000

00000

000000

a->ave=a->ave+a->s[i];

000000

a->ave/=N;

}

7.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。

请编写函数fun,其功能是:求出平均分,并由函数值返回。

00000

000000

000000

000000

例如,若学生的成绩是:85 76 69 85 91 72 64 87,则平均分应当是:78.625。

000000

double fun( STREC *h )

{

double ave=0.0;

000000

000000

STREC *p=h->next;

while(p!=NULL)

{ave=ave+p->s;

p=p->next;

}

return ave/N;

}

000000

000000

000000

000000

000000

000000

000000

8.编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素

000000

数的个数通过k返回。

例如,若输入17,则应输出:4 6 8 9 10 12 14 15 16。

void fun( int m, int *k, int xx[] )

{

000000

000000

000000

/*int i,j;

int t=0;

000000

00000

for(i=2;i

{j=2;

while(j

{if(i%j==0)

{xx[t]=i;

t++;

break;}

000000

000000

000000

000000

000000

000000

000000

j++;}

*k=t;}*/

9.编写函数fun,其功能是:求ss所指字符串中指定字符的个数,并返回此值。

000000

000000

00

0000

例如,若输入字符串123412132,输入字符为1,则输出3。

int fun(char *ss, char c)

{

int i=0;

for(;*ss!='0';ss++)

000000

000000

000000

000000

000000

if(*ss==c)

i++;/*求出ss所指字符串中指定字符的个数*/

00000

000000

return i;

}

000000

000000

000000

10.其功能是计算n门课程的平均分,结果作为函数值返回。

float fun ( float *a , int n )

{

000000

000000

int i;

float av=0.0;

00000

000000

for(i=0; i

av=av+a[i];

000000

00000

return(av/n);

}

11.学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,

000000

000000

请编写函数fun,其功能是:把分数最高的学生数据放在b所指的数组中。注意:分数最高的

学生可能不止一个,函数返回分数最高的学生的人数。

000000

int fun( STREC *a, STREC *b )

{

000000

000000

00000

int i,j=0,max=a[0].s;

/*找出最大值*/

for(i=0;i

for(i=0;i

000000

000000

000000

if(max

if(max==a[i].s)

00000

000000

000000

b[j++]=a[i]; /*找出成绩与max相等的学生的记录,存入结构体b中*/

return j; /*返回最高成绩的学生人数*/

}

000000

000000

12.规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:除了字符串前

导的*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。

000000

例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当

是:****ABCDEFG。

void fun( char *a )

{

000000

00000

000000

int i=0;

000000

char *p=a;

000000

while(*p&&*p=='*')

{

a[i]=*p;

000000

00000

000000

i++;

000000

p++;

}

while(*p)

{

000000

000000

000000

000000

if(*p!='*')

000000

{a[i]=*p;i++;}

000000

p++;

}

a[i]='0';

}

000000

000000

00000

000000

13.下列给定程序中,函数fun的功能是:把形参s所指字符串中下标为奇数的字符右移到

下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符

不动(注:字符串的长度大于等于2)。

00000

例如,形参s所指字符串为"abcdefgh",执行结果为"ahcbedgf"。

void fun(char *tt, int pp[])

000000

000000

000000

{int i;

for(i=0;i<26;i++)

pp[i]=0; /*初始化pp数组各元素为0*/

000000

000000

for(;*tt!='0';tt++)

if(*tt>='a'&&*tt<='z')

000000

000000

pp[*tt-'a']++;

}

14.下列给定程序中,函数fun的功能是:在形参ss所指字符串数组中查找与形参t所指字

符串相同的串,找到后返回该串在字符串数组中的位置(即下标值),若未找到则返回-1。

000000

000000

ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。

void fun( char *a )

{while(*a!='0')

a++;

000000

000000

000000

000000

000000

a--; /*指针a指向字符串的尾部*/

while(*a=='*')

000000

000000

a--; /*指针a指向最后一个字母*/

}

*(a+1)='0'; /*在字符串最后加上结束标志符*/

000000

000000

15.下列给定程序中已建立了一个带头结点的单向链表,在main函数中将多次调用fun函

数,每调用一次,输出链表尾部结点中的数据,并释放该结点,使链表缩短。

000000

char *fun ( char *s, char *t)

{int i,j;

00000

00000

0000

000000

for(i=0;s[i]!= '0';i++); /*求字符串的长度*/

for(j=0;t[j]!= '0';j++);

000000

000000

if(i<=j) /*比较两个字符串的长度*/

return t; /*函数返回较长的字符串,若两个字符串长度相等,则返回第1个字符串*/

00

else

}

00000

return s;

000000

000000

16.学生的记录由学号成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请

编写函数fun,其功能是:函数返回该学号的学生数据,指定的学号在主函数中输入。若没

找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符

串比较的函数是strcmp)。

000000

STREC fun( STREC *a, char *b )

{int i;

000000

000000

STREC str={"0",-1}; /*若没找到指定的学号,在结构体变量中给学号置空串,给成绩置-1*/

000000

for(i=0;i

str=a[i];

}

000000

000000

if(strcmp(a[i].num,b)==0) /*找到指定学号的学生数据*/

000000

000000

return str; /*返回学生记录*/

000000

【考点分析】

本题考查:结构体类型;字符串比较函数strcmp()的应用。

000000

000000

000000

【解题思路】

本程序一开始先使结构体变量str中的学号为空串,成绩为-1。循环体的功能是搜索所有学

生的学号,并判断是否有学号与b所指字符串相同(即找到),若找到则给str重新赋值(str=

a[i]),若没找到则str成员的值还是原有值(即未找到时学号返回空串,成绩返回-1)。

00

0000

【解题宝典】

000000

000000

常见的字符串处理函数总结如下:

调用形式

000000

作 用

说 明

000000

000000

puts

(字符数组)

000000

00000

将一个字符串(以′0′结束)输出到终端设备

用该函数输出的字符串中可以包含转义字符

gets

(字符数组)

000000

00000

000000

00000

从终端输入一个字符串到字符数组中,并且得到一个函数值

puts()和gets()函数一次只能输入或输出一个字符串,不能写成puts(字符数组1,字符数组

000000

2)或gets(字符数组1,字符数组2)

strcpy(字符数组1,字符数组2)

000000

000000

把字符数组2所指字符串的内容复制到字符数组1所指存储空间中。函数返回字符数组1的

值,即目的串的首地址

000000


本文标签: 字符串 函数 字符 数组 所指