1

                  计算机等级考试中心上机题库

第一套

1.   程序填空

给定程序中,函数fun的功能是:将形参n所指变量中,各位上为偶数的数去除,剩余的数按原来从高位到低位的顺序组成一个新的数,并通过形参指针n传回所指变量。如输入一个数:27638496,新的数为729

第一空:{ t=*n%10;    

第二空:if(t%2!=0)

第三空:*n=x;

2.程序修改

   给定程序modi1.c中函数fun的功能是:计算n!。例如,给n输入5,则输出120.000000。

double fun(int n )

{ double result=1.0;

/*****found******/

if(n==0)

  return 1.0;

while(n>1&&n<170)

/*****found******/

result*=n--;

return  result;

}

3.   程序设计

请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如,若输入字符串-1234,则函数把它转换为整数值-1234。

long  fun(char  *p)

{

int i,len,t;

long x=0;

len=strlen(p);

if(p[0]==’-‘)

{ t=-1;len--;p++;}

else t=1;

while(*p)

x=x*10-48+(*p++);

return x*t;

}

第二套

1.    给定程序中,函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中,再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。

    请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:源程序存放在考生文件夹下的BLANK1.C中。

第1 处   FILE * fp;

第2 处 while (!feof(fp)) {

第3 处  putchar(ch); ch = fgetc(fp);  }

2.程序修改

给定程序MODI1.C中函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。

void fun( char *s )

{ int i,j;

 for(i=0,j=0;s[i]!=’\0’;i++)

   if(s[i]>=’0’&&s[i]<=’9’)

/*****found******/

s[j++]=s[i];

/*****found******/

s[j]=’\0’;

}

3.程序设计题

请编写函数fun,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。

void fun(char s[][N],char *b)

{

int i,j,n=0;

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

/*请填写其相应语句完成其功能*/

{ 

for(j=0;j<M;j++) {

b[n]=s[j][i];

n=i*M+j+1;

}

}

b[n]=’\0’;

}

第三套

  1. 程序填空

程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数 fun的功能是重写形参filename所指的文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其它学生的数据不变。

第1处:fp=fopen(filename,

rb+)

第2处:fseek(fp,-1L*

sizeof(STU),SEEK_END);

第3处:fwrite(&n,

sizeof(STU),1,fp);

  1. 程序修改

给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表,并为各结点数据域赋0到m-1的值。请改正函数Creatlink中指定部位的错误,使它能得出正确的结果。

NODE *Creatlink(int n,int m)

{ NODE *h=NULL,*p,*s;

 int i;

/*****found******/

p=( NODE *) malloc(sizeof(NODE));

h=p

p->next=null;

for(i=1;i<=n;i++)

{s=( NODE *) malloc(sizeof(NODE));

 s->data=rand()%m;

s->next=p->next;

p->next=s;

p=p->next;

}

/*****found******/

return h;

}

  1. 程序设计

请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格格开,一行的开始没有空格。

int fun(char *s)

{

int k=1;

while(*s)

{  if(*s==’’)k++;

s++;  }

return k;

}

第四套

  1. 程序填空

程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。

第1处fp = fopen(filename, "rb");

第2处if (s[i].sno >s[j].sno)

第3处 fwrite(s,sizeof(STU),N,fp);

  1. 程序修改

给定程序MODI1.C中函数fun的功能是:在字符串的最前端加入n个*号,形成新串,差且覆盖原串。注意:字符串的长度最长允许为79.

void fun(char s[ ],int n)

{

char a[80],*p;

int i;

/*****found******/

p=s;

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

a[i]=’*’;

do

{a[i]=*p;

i++;

}

/*****found******/

while(*p++)

a[i]=0;

strcpy(s,a);

}

  1. 程序设计

请编写函数fun,函数的功能是:统计各年龄段的人数,N个年龄能过调用随机函数获得,并放在主函数的age 数组中:要求函数把0至9岁的年龄段的人数放在d[0]中,把10至19岁的年龄段的人数放在d[1]中,把20至29岁的年龄段的人数放在d[2]中,其余依次类推,把100岁(含100岁)以上年龄的人数都放在d[10]中。结果在主函数中输出。

void fun(int *a, int *b)

{

int i,j;

for(i=0;i<M;i++)b[i]=0;

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

{  j=a[i]/10;

if(j>10)b[M-1]++;

else b[j]++;

}

}

 

第五套

1.   程序填空

给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文件文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串换成相应的整数和浮点数,然后将其显示在屏幕上。

第1处: FILE *fp;

第2处:fclose(fp);

第3处:fscanf(fp,%s%s%s,str,str1,str2);

2.程序修改

给定程序MODI1.C中函数fun的功能是:对N名学生的学生成绩,按从高到低的顺序找出前m(m<10) 名学生来,将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

STU *fun(STU a[ ],int m)

{  STU b[N],*t;

  int i,j,k;

/*****found******/

t=(STU *)calloc(sizeof(STU),m);

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

b[i]=a[i];

for(k=0;k<m;k++)

 {  for(i=j=0;i<N;i++)

   if(b[i].s>b[j].s)j=i;

/*****found******/

t[k]=b[j];

b[j].s=0;

}

return t;

}

3. 程序设计

请编写函数fun,函数的功能是,删去一维数组中所有相同的数,使之只剩一个。数组中的数已按从小到大的顺序排序,函数返回删除后数组中数据的个数。

int fun(int a[ ],int n)

{

int i,j=1,k=a[0];

for(i=1;i<n;i++)

if(k!=a[i]){

a[j++]=a[i];

k=a[i];}

a[j]=0;

return j;

}

第六套

1.   程序填空

给定程序中,函数fun的功能是根据形参i的值返回某个函数年值。当调用正确时,程序输出:x1=5.000000

x2=3.000000.

x1*x1+x1*x2=40.000000

 第一处:double fun(int i,double x,double y)

第二处:return f1(x);

第三处:return f2(x,y);

2.程序修改

给定程序MODI1.C中函数fun的功能是:比较两个字符串,将长的那个字符串的首地址作为函数值返回。

#include <stdio.h>

/*****found******/

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

{

int sl=0,tl=0;

char *ss,*tt;

ss=s; tt=t;

while(*ss)

{  sl++;

/*****found******/

ss++;

}

while(*tt)

{ tl++;

/*****found******/

tt++;

}

if(tl>sl) return t;

else return s;

}

 

3. 程序设计

请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平均移到字符串的最后,把第m+1个到最后的;字符移到字符串的前部。

void fun(char *w, int  m )

{

int i;

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

fun1(w);

}

第七套

1.   程序填空

程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息,函数fun的功能是输出这位学生的信息。

第1处  void show( STU  tt)

第2处 printf(%5.1f,tt.score[i]);

第2处 show(std)

2.程序修改

给定程序MODI1中函数fun的功能是:求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。

int fun(int *a,int n)

{  int i,m,t,k;

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

/*****found******/

m=i;

for(k=i+1;k<n;k++)

/*****found******/

if(a[k]>a[m])m=k;

t=a[i];a[i]=a[m];a[m]=t;

}

}

3.程序设计

请编写一个unsigned fun(unsigned w),w是一个大于10的无符号整数,若w是n(n>=2)位的整数,函数求出w的后n-1位的数作为函数值返回。

例如:w值为5923,则函数返回923;w值为923则函数返回23。

unsigned fun( unsigned w )

{

if(w>=10000) return w%10000;

if(w>=1000) return w%1000;

if(w>=100) return w%100;

return w%10;

}

第八套

1.   程序填空

给定程序通过定义并赋值的方式,利用结构体变量存储了一名学生学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系统a。

第1处 void modify(STU *ss,float a )

第2处 ss->score[i]*=a;

第3处 modify(&std,a);

2.程序修改

给定程序MODI1.C中函数fun的功能是:求k!<13>,所求阶乘的值作为函数值返回。例如:若k=10,则应输出:3628800。

long fun(int  k)

{

/*****found******/

if(k>0)

 return (k*fun(k-1));

/*****found******/

else if(k==0)

return 1L;

}

3.程序设计

程序定义了N*N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[ ][N],int n),函数的功能是:使数组左下三角元素中的值乘以n。

int fun(int a[ ][N],int n)

{ int  i,j;

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

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

a[i][j]*=n;

}

第九套

1.程序填空

给定程序中,函数fun的功能是将不带头节点的单向链表结点数据域中的数据从小到大排序。即若原链表结点数据域从头到尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为2、4、6、8、10。

第1处 q=p->next;

第2处 while(q)

第3处 p=p->next;

2.程序修改

给定程序MODI1.C中函数fun的功能是:将s所指字符串中的字母转换为按字母序列的后续字母(但Z转换为A,z转换成a ),其它字符不变。

 void fun(char *s)

{

/*****found******/

while(*s)

{ if(*s>’A’&&*s<=’Z

||*s>=’a’&&*s<=’z’)

{ if(*s==’Z’)*s=’A’;

  else if(*s==’z’)*s=’a’;

  else *s=*s+1;}

/*****found******/

s++;

}

}

3.程序设计

void fun(int *w,int p, int n)

{

int i,j=0,b[N];

for(i=p+1;i<n;i++)b[j++]=w[i];

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

b[j++]=w[i];

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

w[i]=b[i];

}

第十套

1程序填空

给定程序中,函数fun的功能是:判定形参a所指的N×N(规定N为奇数)的矩阵是否是幻方,若是,函数返回值为1;不是,函数返回值为0。幻方的判定条件是:矩阵每行、每列、主对角线及反对角线上元素之和都相等。

第1处 row=colum=0;

第2处 if((row!=colum)||(row!=m1))return 0;

第3处 return 1;

2程序修改

给定MODI1.Cfun函数的功能是:根据整型形参m,计算如下公式的值。t=1-1/2-1/3-……-1/m.

#include <sdio.h>

double fun( int m )

{

double t = 1.0;

int i;

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

/********found***********/

t=t-1.0/i;

/********found***********/

return t;

}

3程序设计

请编写一个函数,函数的功能是删除字符串中的所有空格。

int fun(char *str)

{

char *p =str;

int i=0;

while(*p){

if(*p!=’’)str[i++]=*p;

p++;

}

str[i]=0;

}

第十一套

1程序填空

给定程序中,函数fun的功能是将带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2、。

第1处 p=h->next;

第2处 if (p==0) return;

第3处 p=q; q=r;

2.程序修改

给定MODI1.Cfun函数的功能是:计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。

# include <stdio.h>

# include <string.h>

#define N 80

int fun(char *s, char *t)

{int n;

char *p,*r;

n=0;

while (*s)

{ p=s;

/*******found******/

r=t;

 while (*r)

 if(*r==*p){r++;p++;}

else break;

/*******found******/

if(*r==0)

n++;

s++;

}

return n;

}

3程序设计

请编写函数fun,函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串,函数fun中给出的语句供供参考。

void fun (char a[M][N]),char *b)

{int i;*b=0;

for(i=0;i<M;i++)strcat(b,a[i]);

}

第十二套

1程序填空

给定程序中,函数fun的功能是将不带头结点的单向链表逆置。即若原链表中从头至尾结点数据域依次为:2、4、6、8、10,逆置后,从头至尾结点数据域依次为:10、8、6、4、2。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

第1处 NODE * fun (NODE *h)

第2处 r=q->next;

第3处 q=r;

2程序修改

给定程序MODI1.C中函数fun的功能是:将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。

#include<stdio.h>

#include<string.h>

#define N 80

void fun(char *s,char t[])

{int i,j=0;

for(i=0;i<strlen(s);i++)

/*******found******/

if(i%2|| s[i]%2==0)

t[j++]=s[i];

/*******found******/

t[j]=\0;

}

3程序设计

请编写函数fun,函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。函数fun中给出的语句仅供参考。

#include <stdio.h>

void fun (int (*s)[10],int *b, int *n, int mm, int nn)

{

int i,j,np=0;

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

 for(j=0;j<mm;j++)

{

b[np]=s[j][i];

 np=i*mm+j+1;

}

*n=np;

}

第十三套

1程序填空

给定程序中,函数fun的功能是将带头节点的单向链表结点数据域中的数据从小到大排序,即若原链表结点数据域从头至尾的数据为:10、4、2、8、6,排序后链表结点数据域从头至尾的数据为:2、4、6、8、10。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

第1处 p = h->next;

第2处 q=p->next;

第3处 if(p->data>=q->data))

2程序修改

给定程序MODI1.C是建立一个带头结点的单向链表,并用随机函数为各结点数据域赋值。函数fun的作用是求出单向链表结点(不包括头结点)数据域中的最大值,并且作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。

fun ( NODE *h)

{ int max=-1;

NODE *p;

/*******found******/

p=h->next;

while(p)

{ if (p->data>max)

max=p->data;

/*******found******/

p=p->next;

}

return max;

}

3程序设计

请编写函数fun,函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中。一维数组中数据的个数存放在形参n所指的存储单元中。

void fun( int (*s)[10],int *b, int *n, int mm, int nn)

{

int i,j,k;

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

 for(j=0;j<nn;j++)

{

k=i*nn+j;

b[k]=s[i][j];

}

*n=mm*nn;

}

第十四套

1程序填空

给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。规定在_2_处使f指向函数f1,在_3_处使f指向函数f2。当调用正确时,程序输出:x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

第1处 double ( *f)();

第2处 f = f1 ;

第3处 f = f2 ;

2程序修改

给定程序MODI1.C是建立一个带头点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。请改正函数fun中指定部位的错误,使它能得出正确的结果。

int fun(NODE *h)

{int sum = 0;

NODE *p;

/*******found******/

p=h->next;

while (p)

{if(p->data%2==0)

sum +=p->data;

/*******found******/

p=p->next;

}

return sum;

}

3程序设计

    请编写函数fun,函数的功能是:判断字符串是否为回文?叵是,函数返回1,主函数中输出:YEX,否则返回0,主函数中输出NO。回文是指顺读t和倒读都一样的字符串。

int fun(char *str)

{

 int i,j=strlen(str);

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

if (str[i]!=str[j-i-1]) return 0;

return 1;

}

第十五套

1程序填空

    程序通过定义学生结构体变量,存储了学生的学号,姓名和3门课的成绩。所有学生数据均以二进制方式输出到student.dat文件中。函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的背后数据覆盖原数据,其它学生数据不变;若找不到,则什么都不做。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

第1处 while(!feof(fp))

第2处 if(n.sno==sno) break;

第3处 fseek(fp,-1L*sizeof(STU),SEEK CUR);

2程序修改

给定程序MODI1.C中函数fun的功能是:利用插入排序法对字符串中的字符按从小到大的顺序进行排序,插入法的基本算法是:先对字符串中的头两个元素进行排序,然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……。待排序的字符串已在主函数中赋予。请改正函数fun中指定部位的错误,使它能得出正确的结果。

void insert(char *aa)

{int i,j,n; char ch;

/*******found******/

n=strlen(aa);

for(i=1;i<n;i++){

/*******found******/

ch=aa[i];

j=i-1;

while((j>=0)&&(ch<aa[j]))

{aa[j+1]=aa[j];

j--;

}

aa[j+1]=ch;

}

}

3程序设计

N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数值返回。

double fun ( STREC *h)

{

double max=h->s;

STREC *p;

p=h->next;

while(p)

{ if(p-s>max)

max=p->s;

p=p->next;

}

return max;

}

第十六套

1程序填空

    给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长的字符串等长。Ss所指字符串数组中共有M个字符串,且串长<N。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

第1处 n=strlen(ss[i]) ;

第2处 ss[i][n+j]=*;

第3处 ss[i][n+j+1]=\0;

2程序修改

给定程序MODI1.C中fun函数的功能是:将p所指字符串中每个单词的最后一个字母改成大写。(这里的单词是指由空格隔开的字符串)。请改正程序中的错误之处,使它能得出正确的结果。

#include<ctype.h>

void fun(char *p)

{

int k = 0;

for( ; *p; p++ )

   if( k )

/*******found******/

if( *p ==’’)

{

k = 0;

/*******found******/

* (p-1)=toupper(*(p-1));

}

}

else

k=1;

}

3程序设计

    请编写函数fun,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符ASCII码降序排列。

int fun(char *s, int num)

{

char ch;

int i,j;

for(i=1;i<6;i++)

for(j=i+1;j<6;j++){

if(*(s+i)<(s+j))

{

  ch = *(s+j);

  *(s+j)=*(s+i);

*(s+i)=ch ;

}

}

}

第十七套

1程序填空

    程序通过定义学生结构体数组,存储了若干名学生的学号、姓名和3门课的成绩。函数fun的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大)排序。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

第1处 struct student t;

第2处 for(i=0;i<n-1;i++)

第3处 if(strcmp(a[i].name,a[j].name)>0)

2程序修改

给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。

fun (char *p)

{ char max, *q; int i=0;

max=p[i];

while( p[i]!=0)

{ if(max<p[i])

{ max=p[i];

/*******found******/

q=p+i;

}

i++;

}

/*******found******/

while(q>p)

{*q=*(q-1);

q--;

}

p[0]=max;

}

3程序设计

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。

int fun (STREC *a, STREC *b,int l, int h)

{int i,j = 0;

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

if((a[i].s>=l&&a[i].s<=h)b[j++]=a[i];

return j;

}

/*程序中l是用L的小写*/

第十八套

1程序填空

给定程序中,函数fun的功能是:将形参s所指字符串中的所有字母字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。

第1处 t[j]=s[i];j++;

第2处 for(i=0;i<k;i++) t[j+i]=p[i];

第3处 t[j+k]=0;

2程序修改

给定程序MODI1.C中函数fun的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。

int fun (char *s, char *t1, char *t2, char *w)

{

int i; char *p,*r,*a;

strcpy( w,s );

/*******found******/

while (*w)

{ p=w;r=t1;

while (*r)

/*******found******/

if ( *r==*p )

{r++;p++;}

else break;

if (*r==\0)

a=w;

  w++;

}

r=t2;

while (*r){*a=*r;a++;r++;}

}

3程序设计

函数fun的功能是:将s所指字符串中ASCII值为奇数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

void fun (char *s, char t[])

{ int i,j=0;

  for(i=0;i<strlen(s);i++)

if(s[i]%2==0)t[j++]=s[i];

t[j]=0;

}

第十九套

1程序填空

程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量s中的数据进行修改,并把a中地址作为函数值返回主函数,在主函数中输出修改后的数据。

第1处 struct student *

 fun(struct student *a)

第2处 for(i=0;i<3;i++) a->score[i]+=1;

第3处 return a;

2程序修改

给定程序MODI1.C中函数fun的功能是:从N个字符串中找出最长的那个串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。

/*******found******/

char *fun(char (*sq)[M])

{ int i; char *sp;

sp=sq[0];

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

if (strlen(sp)<strlen(sq[i]))

sp=sq[i];

/*******found******/

return sp;

}

3程序设计

函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的十位和千位上。

#include <stdio.h>

void fun (int a, int b, long *c)

{ *c=(b%10)*1000+(a/10)*100+(b/10)*10+a%10;

}

第二十套

1程序填空

给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值,(规定所有数均为正数),将所指桑骂槐数组中小于平均值的数据移至数据的前部,大于等于平均值的数据移至x决指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。

第1处 for(i=0; i<N; i++)  av+=x[i]/N

第2处 y[j]=x[i]; x[i]=-1; j++;}

第3处 i++;

2程序修改

给定程序MODI1.C函数fun的功能是:统计字符串各元音字母(即:A、E、I、O、U)的个数。注意字母不分大、小写。

fun (char *s, int num[5])

{ int k, i=5;

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

/*******found******/

 num[k]=0;

for( ; *s;s++)

{ i=-1;

/*******found******/

switch( *s)

{ case acase A

{i=0;break;}

{ case ecase E

{i=1;break;}

{ case icase I

{i=2;break;}

{ case ocase O

{i=3;break;}

{ case ucase U

{i=4;break;}

}

   if (i>=0)

   num[i]++;

}

}

3程序设计

请编写函数fun,函数的功能是求出二级数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。

int fun(int a [M][N])

{

int tot = 0, i,j;

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

{

 tot +=a[0][i];

tot +=a[M-1][i];

}

for (i=1;i<M-1;i++){

 tot +=a[i][0];

 tot +=a[i][N-1];

}

 return tot;

}

第21套

1程序填空

    给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),将所指数组中大于平均值的数据移至数组的前部,小于等于平均值的数据移至x所指数组的后部,平均值作为函数值返回,在主函数中输出平均值和移动后的数据。

第1处 av=s/N;

第2处 y[j++]=x[i];x[i]=-1;}

第3处 if(x[i]!=-1) y[j++]=x[i];

2程序修改

给定程序MODI1.C的功能是:读入一英文文本行,将其中每个单词的第一个字母改成大写,然后输出此文本行(这里的单词是指由空格隔开的字符串)  

/*******found******/

#include <stdio.h>

/*******found******/

upfst (char *p)

{int k=0;

 for ( ; *p; p++)

if (k)

{ if (*p==’’)k=0;}

else if (*p!=’’)

{k=1; *p=toupper(*p);}

}

3程序设计

程序定义了N×N的二级数组,并在主函数中赋值,请编写函数fun,函数的功能是:求出数组周边元素的平均值并作出函数值返给主函数中的s。

double fun (int w[][N])

{ int i, j, n=0;

double sum=0;

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

{ sum+=w[0][i]+w[N-1][i];n+=2;}

for (i=1;i<N-1;i++)

{ sum+=w[i][0]+w[i][N-1];

n+=2;

}

return sum/n;

}

第22套

1程序填空

    给定程序中,函数fun的功能是:将自然数1~10以及它们的平方根写到名为myfile3.txt的文本文件中,然后再顺序读出显示在屏幕上。

第1处  fprintf(fp,〝%d%f\n〞,i,sqrt((double)i));

第2处  fclose(fp);

第3处 if ((fp=fopen(fname,〝r〞))==NULL)

2程序修改

给定程序MODI1.C中fun函数的功能是:将n个无序整数从小到大排序。  

fun (int n,int *a )

{ int i,j,p,t;

for(j=0; j<n-1;j++)

{ p=j;

/*******found******/

for (i=j+1; i<n;i++)

if (a[p]>a[i])

/*******found******/

p=i;

if (p!=j)

{ t=a[j];a[j]=a[p];a[p]=t;}

} }

3程序设计

    函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上。

#include <stdio.h>

void fun (int a, int b, long *c)

{

*c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10);}

第23套

1程序填空

    给定程序中,函数fun的功能是:找出N*N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。

第1处 b[i]=a[0][i];

第2处 if (b[i]<a[j][i]) b[i]=a[j][i];

第3处 fun(x,y);

2程序修改

给定程序MODI1.C中fun函数的功能是:交换主函数中两个变量的值。 

/*******found******/

int fun(int *x,int *y)

{ int t;

/*******found******/

t=*x;*x=*y;*y=t;

}

3程序设计

编写函数fun,函数的功能是求出小于或等于lim的所有素数并放在aa数组中,函数返回所求出的素数的个数。函数fun中给出的语句仅供参考。

#include <stdio.h>

#define MAX 100

int fun(int lim, int aa [MAX])

{int i, j, k=0;

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

{

for(j=2;j<=(i/2);j++)

if(i%j==0)break;

if(j>(i/2)) aa[k++]=i;

} return k;}

第24套

1程序填空

程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a中的数据进行修改,把修改后的数据作为函数值返回主函数进行输出。

第1处 struct student fun(struct student a)

第2处 strcpy(a.name,〝LiSi〞);

第3处 a.score[i]+=1;

2程序修改

假定整数数列中的数不重复,并存放在数组中。给定程序MODI1.C中函数fun的功能是:删除数列中值为x的元素。N中存放的是数列中元素的个数。  

fun(int *a, int n,int x)

{ int p=0,i;

a[n]=x;

while(x!=a[p])

p=p+1;

/*******found******/

if(p==n) return -1

else

{ for (i=p;i<n;i++)

/*******found******/

a[i]=a[i+1];

return n-1;

}  }

3程序设计

学生的记录由学号和成绩组成。N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最低的学生数据放在b所指的数组中,注意:分阶段数最低的学生可能不止一个,函数返回分数最低的学生的人数。

int fun(STREC *a, STREC *b)

{

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

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

{ if (min>a[i].s){j=0;b[j++]=a[i];min=a[i].s;

}

else if (min ==a[i].s)

b[j++]=a[i];

}

return j;

}

第25套

1程序填空

人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中,且编号唯一。函数fun的功能是:找出指定编号人员的数据,作为函数值返回,由主函数输出,若指定编号不存在,返回数据中编号为空串。

第1处 STU fun(STU *std, char *num)

第2处 if(strcmp(std[i].num,num)==0)

第3处 return (std[i]);

2程序修改

给定程序MODI1.C中函数fun的功能是:从s所指字符串中,找出与t所指字符串相同的子串的个数作为函数值返回。

int fun(char *s,char *t)

{ int n; char *p,*r;

n=0;

while (*s)

{p=s;r=t;

while (*r)

if (*r==*p){

/*******found******/

r++; p++;

}

else break;

/*******found******/

if (*r==0)

n++;

s++;

}  return n;

 }

3程序设计

函数fun的功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。

#include <stdio.h>

#include <string.h>

void fun (char *s, char t[])

{

int i, j=0;

for(i=0;i<strlen(s);i++) if (s[i]%2) t[j++]=s[i];

t[j]=0;

}

第26套

1程序填空

   给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。 函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。

第1处 free(q);

第2处 q=p->next;

第3处 q=q->next;

2程序修改

给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。

void fun (int a[], int n)

{ int i, j, t, p;

for (j=0;j<n-1;j++){

/*******found******/

p=j;

for(i=j;i<n;i++)

if (a[i]<a[p])

/*******found******/

p=i;

t=a[p];a[p]=a[j];

a[j]=t;

}

3程序设计

请编写一个函数fun,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。

void fun (int m, int *a, int *n)

{

int i;

*n=0;

for(i=7;i<=m;i++)

 if((i%7==0)||(i%11==0)) a[(*n)++]=i;

}

第27套

1程序填空

给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回。例如,当形参n的值为10时,函数返回:9.6125588

s=(1*3)/22+(3*5)/42+(5*7)/62+(2*n-1)* (2*n+1)/(2*n)2(考试时公式用分式表示)

第1处 s=0;

第2处 for(i=1;i<=n;i++)

第3处 s=s+(2.0*i-1)*(2.0*i+1)/(t*t);

2程序修改

给定程序MODI1.C中函数fun的功能是:统计substr所指子字符串在str所指字符串中出现伯次数。

fun(char *str, char *substr)

{ int i,j, k, num=0;

/*******found******/

for(i=0;str[i];i++)

for(j=i,k=0;substr[k]==str[j];k++,j++)

/*******found******/

if(substr[k+1]==\0)

{ num++;

break;

}

return num;

}

3程序设计

请编写一个函数fun,它的功能是:根据以下公式求Л的值(要求满足精度0.0005,即某项小于0.0005时停止送代):程序运行后,如果输入精度0.0005,则程序输出为3.14.

Л/2=1+1/3+(1*2)/(3*5)+(1*2*3)/(3*5*7)+……

double fun (double eps)

{ double s=1,t=1./3;

int n=1;

while (t>=eps) {s+=t;n++;t=t*n/(2.0*n+1);}

return(s*2.0);

}

第28套

1.程序填空  

 给定程序中函数fun的功能是统计形参s所指字符串中数字字符出现的次数并存放在形参t所指的变量中最后在主函数中输出。例如形参s所指的字符串为abcdef35adgh3kjsdf7。输出结果为4

1  for(i=0; s[i]!= NULL; i++)

2   if(s[i]>='0'&&s[i]<='9' ) n++;

3  *t=n ; 

2程序修改

给定程序MODI1.C中函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句和表达式。例如变量a中的值原为8,b中的值原为3,程序运行后a中的值为3,b中的值为8。  

int fun (int *x,int y)

{ int t;

/*******found******/

t=*x ; *x=y;

/*******found******/

return(t);

}

3程序设计

请编写函数fun,它的功能是:求出1到1000之间能被7或11整除,但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过n返回这些数的个数。

#include <stdio.h>

void fun (int *a, int *n)

{ int i;

*n=0;

for(i=7;i<1000;i++)

if(((i%7)==0||(i%11)==0&&(i%77)!=0) a[(*n)++]=i;

}

第29套

1程序填空

程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是对形参b所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。

第1处 b->sno = 10004;

第2处 strcpy(b->name,〝LiJie〞);

第3处 fun(&t);

2程序修改

给定程序MODI1.C中函数fun的功能是:应用递归算法求形参a的平方根。求平方根的迭代公式如下:例如,a为2时,平方根值为:1.414214  

x1=1/2*(x0+a/x0)(考试时是分数形式)

/*******found******/

double fun(double a,double x0)

{ double x1,y;

 x1=(x0+a/x0)/2.0;

/*******found******/

if(fabs(x1-x0)>0.00001)

y=fun(a,x1);

else y=x1;

return y;   }

3程序设计

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分数通过函数值返回。

double fun (STREC *a, STREC *b, int *n)

{  double t=0;

int i;

*n=0;

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

t=t+a[i].s;

t=t/N;

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

if(a[i].s>t)b[(*n)++]=a[i];

return t;

}

第30套

1程序填空

    程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun的功能是将形参a所指结构体变量中的数据赋给函数中的结构体变量b,并修改b中的学号和姓名,最后输出修改后的数据。

第1处 b=a;

第2处 strcpy(b.name,〝LiSi〞)

第3处 for(i=0;i<3;i++) printf(〝%6.2f〞,b.score[i]);

2程序修改

给定程序MODI1.C中函数fun的功能是:从s所指字符串中删除所有小写字母c。请改正程序中的错误,使它能计算出正确的结果。  

void fun (char *s)

{ int i, j;

for(i=j=0; s[i]!=\0;i++)

  if(s[i!=c])

/*******found******/

s[j++]=s[i];

/*******found******/

s[j]=\0;

}

3程序设计

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串的前导*号全部移到字符串的尾部。函数fun中给出的语句仅供参考。

void fun(char *a)

{ char *p,*q;

int n=0;

p=a;

while(*p==*)

{ n++;p++;}

q=a;

 while(*p){

*q=*p;

p++;q++;

}

for( ;n>0;n--)

*q++=*;

*q=\0;

}

第31套

1程序填空

    给定程序中,函数fun的功能是:对形参s所指字符串中下标为奇数的字符按ASCII码大小递增排序,并将排序后下标为奇数的字符取出,存入形参p所指字符数组中,形成一个新串。

第1处 t=i;

第2处 for(j=i+2; j<n;j=j+2)

第3处 p[j]=0;

2程序修改

给定程序MODI1.C中函数fun的功能是:用下面的公式求的近似值,直到最后一项的绝对值小于指定的数(参数num)为止:例如:程序0.0001,则程序输出3.1414  

/41-1/3+1/5-

1/7+……

 

float fun (float num)

{ int s ;

  float n, t, pi;

t=1;pi=0;n=1;s =1;

/*******found******/

 while((fabs(t)) >=num)

  { pi=pi+t;

n=n+2;

s=-s;

/*******found******/

   t=s/n;

}

   pi=pi*4;

return pi;

}

3程序设计

请编写一个函数void fun (char a[] ,char b[], int n),其功能是:删除一个字符串指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b所指的n中存入指定的下标。

void fun (char a[],char b[],int n)

{

 strncpy (b,a,n);

b[n]=0;

strcat(b,a+n+1);

}

第32套

1程序填空

    给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。

第1处 void fun(char (*ss) [M], int k)

第2处 while (i<N) {

第3处 ss[i][k]=0;i++;}

2程序修改

给定程序MODI1.C中函数fun的功能是:根据以下公式求值,并作为函数值返回。例如,给指定精度的变量eps输入0.0005时,应当输出Pi=3.140578。

Л/2=1+1/3+1/3*2/5

+1/3*2/5*3/7+……(考试时是分数形式)

double fun(double eps)

{ double s,t;int n=1;

s=0.0;

/*******found******/

t=1;

while(t>eps)

{ s+=t;

t=t*n/(2*n+1);

n++;

}

/*******found******/

return (2*s);

}

3程序设计

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串的前导*号不得多于n个;若多于n个,则删除多于的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。函数fun中给出的语句仅供参考。

void fun(char *a,int n)

{

int i=0,j,k=0;

while(a[k]==*)k++;

if(k>n)

{

i=n;j=k;

for(;a[j]!=0;j++)

  a[i++]=a[j];

a[i]=0;

}

}

第33套

1程序填空

给定程序的功能是:调用    函数fun将指定源文件中的内容复制到指定的目标文件中,复制成功时函数返回值为1,失败时返回值为0。在复制的过程中,把复制的内容输出到终端屏幕。主函数中源文件名放在变量sfname中,目标文件名放在变量tfname中。

第1处  if((fs=fopen(source,r))==NULL)

第2处 while(!feof(fs))

第3处 fputc(ch,ft);

2程序修改

给定程序MODI1.C中函数fun的功能是:将长整型中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。

void fun(long s,long *t)

{ int d;

long s1=1;

*t=0;

while(s>0)

{ d=s%10;

/*******found******/

if(d%2==0)

{ *t=d*sl+*t;

  sl*=10;

}

/*******found******/

s/=10;

}

}

3程序设计

函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。

void fun(int a,int b,long *c)

{

*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);

}

第34套

1程序填空

用筛选法可得到2~n(n<10000)之间的所有素数,方法是:首先从素数2开始,将所有2的倍数的数从数表中删去(把数表中相应位置的值置成0);接着从数表中找下一个非0数,并从数表中删去该数的所有倍数,依此类推,直到所找的下一个数等于n为止。这样会得到一个序列:2,3,5,7,11,13,17,19,23,……函数fun用筛选法找出所有小等于n的素数,并统计素数的个数作为函数值返回。

第1处 for(j=a[i]*2;j<=n;j+=a[i])

第2处 while(a[i]==0)

第3处 if(a[i]!=0)

 2程序修改

给定程序MODI1.C中函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数,并将这两个素数通过形参指针传回主函数。  

void fun(int a,int *b,int *c)

{ int i,j,d,y;

for(i=3;i<=a/2;i=i+2)

{

/*******found******/

y=1;

for(j=2;j<=sqrt((double)i);j++)

if(i%j==0)y=0;

if(y==1){

/*******found******/

d=a-i;

for(j=2;j<=sqrt((double)d);j++)

  if(d%j==0)y=0;

if(y==1)

{ *b=1;

*c=d;

}}}}

3程序设计

请编写函数fun,它的功能是:计算并输出n(包括n)以内能被5或9整除的所有自然数的倒数之和。

double fun(int n)

{

int i;

double sum=0.0;

for(i=1;i<=n;i++)

  if(i%5==0||i%9==0)

   sum+=1.0/i;

return sum;

}

第35套

1程序填空

    给定程序中,函数fun的功能是建立一个N×N的矩形。矩阵元素的构成规律是:最外层元素的值全部为1;从外向内第2层元素的值全部为2;第3层元素的值全部为3,依次类推。

第1处 void fun(int (*a)[N])

第2处 for(j=i;j<N-i;j++)

第3处 a[k][i]=a[k][N-i-1]=i+1;

2程序修改

给定程序MODI1.C中函数fun的功能是:将十进制正整数m转换成k(2k9)进制数,并按高位到低位顺序输出。

void fun(int m,int k)

{

int aa[20],i;

for(i=0;m;i++)

{

/*******found******/

aa[i]=m%k;

m/=k;

}

for( ; i; i--)

/*******found******/

printf(%d,aa[i-1]);

}

3程序设计

编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:主函数中用****作为结束输入的标志,函数fun中给出的语句仅供参考)

fun(char (*a)[81],int num,char **max)

{

int i,k=0,maxlen;

maxlen=strlen(a[k]);

for(i=1;i<num;i++)

{

if(strlen(a[i])>maxlen)

{ maxlen=strlen(a[i]);

k=i;

}

}

*max=a[k];

}

第36套

1程序填空

    给定程序中,函数fun的功能是:统计出带有头结点的单向链表中结点的个数,存放在形参n所指的存储单元中。

第1处  *n=0;

第2处 p=p->next;

第3处 fun(head,&num);

2程序修改

给定程序MODI1.C中函数fun的功能是:求出s所指字符串最后一次出现的t所指子字符串的地址,通过函数值返回,在主函数中输出从此地址开始的字符串;若未找到,则函数值NULL。  

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

{
char *p,*r,*a;

/*******found******/

a=NULL;

while(*s)

{ p=s;r=t;

while(*r)

/*******found******/

if(*r==*p)

{r++;p++;}

else break;

if(*r==\0)a=s;

s++;

}

return a;

}

3程序设计

函数fun找功能是:将s所指字符串中除了下标为偶数,同时ASCII值也为偶数的字符外,其余的全部都删除;串中剩余字符所形成的一个新串放在t所指的数组中。

void fun(char *s,char t[ ])

{

int i,j=0;

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

if(s[i]%2==0)t[j++]=s[i];

t[j]=0;

}

第37套

1程序填空

    给定程序中,函数fun的功能是:在形参ss所指字符串数组中,查找含有形参substr所指子串的所有字符串并输出,若没找到输出相应信息。ss所指字符串数组中共有N个字符,且串长小于M。程序中库函数strstr(s1,s2)的功能是在s1串中查找s2子串,若没有,函数值为0,若有,为非0。

第1处 for(i=0;i<N;i++)

第2处 if(strstr(ss[i],substr)!=NULL)

第3处 if(find==0)

2程序修改

给定程序MODI1.C中函数fun的功能是:求三个数的最小公倍数。  

/*******found******/

fun(int x,int y,int z)

{ int j,t,n,m;

j=1;

t=j%x;

m=j%y;

n=j%z;

while(t!=0||m!=0||n!=0)

{ j=j+1;

 t=j%x;

m=j%y;

n=j%z;

/*******found******/

return j;

}

3程序设计

假定输入的字符串中只包含中只包含字母和*号。请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形参e 给出了字符串中最后*号的个数。在编写函数时,不得使用C语言提供的字符串函数。

void fun(char *a,int n,int h,int e)

{

char *p=a;

int j=0,len=0;

while(*p){ p++;len++;}

while(j<len-h-e){

a[j]=a[h+j];

j++;

}

a[j]=0;

}

 

第38套

1程序填空

    函数fun的功能是:反形参a所指数组中的奇数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把偶数从数组中删除,奇数个数通过函数值返回。例如:若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除偶数后a所指数组中的数据为:9、1、3、5、7,返回值为5。

第1处if(a[i]%2==1)

第2处 j++;

第3处 return j;

2程序修改

给定程序MODI1.C中函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。  

int fun(int a,int b)

{ int r,t;

if(a<b){

/*******found******/

t=a;a=b;b=t;

}

r=a%b;

while(r!=0)

{ a=b;b=r;r=a%b;}

/*******found******/

return (b);

}

 

3程序设计

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。

void fun(char *a)

{

int j=0;

char *p=a;

while(*p){

if(*p!=*)

a[j++]=*p;

p++;

}

a[j]=0;

}

 

第39套

1程序填空

    给定程序中,函数fun的功能是:在形参ss所指字符串数组中,删除所有串长超过k的字符串,函数返回所剩字符串的个数。ss所指字符串数组中共有N个字符串,且串长小于M。

第1处for(i=0;i<N;i++)

第2处 if(len<=k)

第3处 strcpy(ss[j++],ss[i]);

2程序修改

给定程序MODI1.C中函数fun的功能是:逐个比较p、q所指两个字符串对应位置中的字符,把ASCII值大或相等的字符依次存在放到c所指数组中,形成一个新的字符串。  

void fun(char *p,char *q,char *c)

{

/*******found******/

int k=0;

/*******found******/

while(*p||*q)

{ if(*p<*q)

  c[k]=*q;

else

c[k]=*p;

if(*p)p++;

if(*q)q++;

k++;

}

}

3程序设计

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导*号之外,将串中其它*号全部删除。在编写函数时,不得使用C语言提供的字符串函数。函数fun中给出的语句仅供参考。

void fun(char *a)

{

int i=0,k;

while(a[i]==*)i++;

k=i;

while(a[i]!=\0)

{

if(a[i]!=*)

a[k++]=a[i];

i++;

}

a[k]=\0;

}

第40套

1程序填空

    给定程序中已建立一个带头结点的单向链表,链表中的各结点按结点数据域中的数据递增有序链接。函数fun的功能是:把形参x的值放入一个新结点并插入到链表中,插入后各结点数据域的值仍保持递增有序。

第1处 s->data=x;

第2处 q=p;

第3处 q->next=s;

2程序修改

给定程序MODI1.C中函数fun的功能是:计算正整数num的各位上的数字之积。  

long fun(long num)

{

/*******found******/

long k=1;

do

{ k*=num%10;

/*******found******/

num/=10;

}while(num);

return (k);

}

3程序设计

请编写一个函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数返回。

float fun(float *a,int n)

{

int i;

float ave=0.0;

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

ave=ave+a[i];

ave=ave/n;

return ave;

}

第41套

1程序填空

    给定程序中,函数fun的功能是:计算x所指数组中N个数的平均值(规定所有数均为正),平均值通过形参返回主函数,将小于平均值且最接近平均值的数作为函数值返回,在主函数中输出。

第1处 *av=s/N;

第2处 d=*av-x[i];j=i;}

第3处 return x[j];

2程序修改

给定程序MODI1.C中函数fun的功能是:根据整型形参n计算如下公式的值。例如:若n=10,则应输出:0.617977。  

A1=1,A2=1/(1+A1),A3=1/(1+A2),An=1/(1+An-1)

/*******found******/

float fun(int n)

{ float A=1;int i;

/*******found******/

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

A=1.0/(1+A);

return A;

}

3程序设计

程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun,函数的功能是:使数组右上三角元素的值乘以m。

int fun(int a[][N],int m)

{

int i,j;

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

  for(j=i;j<N;j++)

a[i][j]* = m;

}

第42套

1程序填空

    给定程序中,函数fun的功能是:将s所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。

第1处j++;

第2处 s[i]=t1[i];

第3处 for(i=0;i<j;i++)

2程序修改

给定程序MODI1.C中函数fun的功能是:用冒泡法对6个字符串按由小到大的顺序进行排序。 

fun(char *pstr[6])

{ int i,j;

char *p;

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

/*******found******/

for(j=i+1;j<6;j++)

{

if(strcmp(*(pstr+i),*(pstr+j))>0)

{

p=*(pstr+i);

/*******found******/

*(pstr+i)=*(pstr+j);

*(pstr+j)=p;

}

}

}

}

3程序设计

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

int fun(char *ss,char c)

{

int cnt=0;

char *p=ss;

while(*p){

if(*p==c)cnt++;

p++;

}

return cnt;

}

 

第43套

1程序填空

    给定程序中,函数fun的功能是:在形参ss所指字符串中查找与形参t所指字符串相同的串,找到后返回该串在字符串中的位置(下标值),未找到则返回-1。ss所指字符串数组中共有N个内容不同的字符串,且串长小于M。

第1处 for(i=0;i<N;i++)

第2处  if(strcmp(ss[i],t)==0)

         return i;

第3处  if(n==-1)

        printf(\nDont found!\n);

2程序修改

给定程序MODI1.C中函数fun的功能是:从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1放个位数,a2放十位数。  

fun(int *b)

{  int k,a1,a2,i=0;

for(k=10;k<=55;k++){

/*******found******/

a2=k/10;

a1=k-a2*10;

if((k%3==0&&a2==5)||k%3==0&&a1==5))

{ b[i]=k;i++;}

/*******found******/

return i;

}

3程序设计

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。

void fun(char *a)

{

char *p=a;

while(*p)p++;p--;

while(*p==*)p--;

p++;

*p=0;

}

 

第44套

1程序填空

    函数fun的功能是进行数字字符转换。若形参ch中是数字字符0--9,则0转换成91转换成82转换成7……9转换成0;若是其它字符则保持不变;并将转换后的结果作为函数值返回。

第1处char fun(char ch)

第2处 if(ch>=0&&ch<=9)

第3处 return 9-(ch-0);

2程序修改

给定程序MODI1.C中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求复制第三个字符之后插入一个空格。  

void fun(char *p,char *b)

{  int i,k=0;

while(*p)

{ i=1;

while(i<=3&&*P)

{

/*******found******/

b[k]=*p;

k++;p++;i++;

}

if(*p)

{

/*******found******/

b[k++]=’’;

}

}

b[k]=\0;

}

3程序设计

N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。

double fun(STREC *h)

{

STREC *p=h->next;

double av=0.0;

int n=0;

while(p!=NULL)

{

av=av+p->s;

p=p->next;

n++;

}

av/=n;

return av;

}

第45套

1程序填空

    函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]、……中,把奇数从数组中删除,偶数个数通过函数值返回。

第1处if(a[i]%2==0){

第2处  a[j]=a[i];j++;

第3处 return j;

2程序修改

给定程序AODI1.C中函数fun的功能是:按以下递归公司求函数值。例如,当给n输入5时,函数值为18;当给n输入3时,函数值为14。  

      10  (n=1)

fun(n)=  fun(n-1)+2(n>1)

 

#include <stdio.h>

/*******found******/

fun(int n)

{ int c;

/*******found******/

if(n==1)

c=10;

else

c=fun(n-1)+2;

return (c);

}

3程序设计

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:使字符串中尾部的*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前的*号不删除。

void fun(char *a,int n)

{

char *p=a;

int j=0;

while(*p)p++;  p--;

while(*p==*)p--;

p++;

while(j<n&&*p){

p++;

j++;

}
*p=0;

}

第46套

1程序填空

    给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输入排序结果。ss所指字符串数组中共有N个字符串,且串长小于M。

第1处k=i;

第2处 if(strlen(ps[k])<strlen(ps[j]))k=j;

第3处 tp=ps[i];ps[i]=ps[k];ps[k]=tp;

2程序修改

已知一个数列从第0项开始的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和。给定程序MODI1.C中函数fun的功能是:计算并输出该数列前n项的平方根之和。n的值通过形参传入。  

/*******found******/

double fun(int n)

{ double sum,s0,s1,s2,s;

int k;

sum=1.0;

if(n<=2)sum=0.0;

s0=0.0;s1=0.0,s2=1.0;

for(k=4;k<=n;k++)

{ s=s0+s1+s2;

sum+=sqrt(s);

s0=s1;s1=s2;s2=s;

}

/*******found******/

return sum;

}

3程序设计

编写函数fun,它的功能是计算下列级数和,和值由函数值返回。例如,当n=10,x=0.3时,函数值为1.349859.

S=1+x+x2/2!+x3/3!+……xn/n!

double fun(double x,int n)

{

double s=1.0,y=x;

int i;

for(i=1;i<=n;i++)

{

s+=y/(double)jc(i);

y*=x;

}

return s;

}

 

第47套

1程序填空

给定程序中,函数fun的功能是:找出形参s所指字符串中出现频率最高的字母(不区分大小写),并统计出其出现的次数。

第1处ch=tolower(*s);

第2处 k[n]+=1;

第3处 if(max<k[n])max=k[n];

2程序修改

给定程序MODI1.C中函数fun的功能是:求S的值。例如,当K为10时,函数值应为1.533852。

s=12/(1*3) * 42/(3*5)

*62/(5*7)  +……

 

/*******found******/

float fun(int k)

{ int n;float s,w,p,q;

n=1;

s=1.0;

while(n<=k)

{ w=2.0*n;

p=w-1.0;

q=w+1.0;

s=s*w*w/p/q;

n++;

}

/*******found******/

return s;

}

3程序设计

编写函数fun,它的功能是计算并输出下列级数和:例如,当n=10时,函数值为0.909091。

s=1/(1*2)+1/(2*3)+……+1/n(n+1)

double fun(int n)

{

double s=0.0;

int i;

for(i=1;i<=n;i++)

s=s+1.0/(i*(i+1));

return s;

}

第48套

1程序填空

    给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。

第1处 if(isdigit(*s))sum+=*s-48;

第2处 s++;

第3处 return sum;

2程序修改

给定程序MODI1.C中函数fun的功能是:计算小于形参k的最大的10个能被13或17整除的自然数之和。K的值由主数传入,若k的值为500,则函数值为4622。  

int fun(int k)

{  int m=0,mc=0,j;

while((k>=2)&&(mc<10))

{

/*******found******/

if((k%13==0)||(k%17==0))

 { m=m+k;mc++;}

k--;}

return m;

/*******found******/

}

3程序设计

编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。

double fun(int n)

{

double sum=0.0;

int i;

for(i=21;i<=n;i++)

if((i%3==0)&&(i%7==0))sum+=i;

return sqrt(sum);

}

第49套

1程序填空

    给定程序中,函数fun的功能是:将形参s所指字符串所有ASCII码小于97的字符存入形参t所指字符数组中,形成一个新串,并统计出符合条件的字符个数作为函数值返回。

第1处 *(t+n)=*s;n++;}

第2处 s++;

第3处 return n;

2程序修改

给定程序MODI1.C中函数fun的功能是:由形参给定n个实数,输出平均值,并统计在平均值以上(含平均值)的实数个数。  

 

int fun(float x[],int n)

{

/*******found******/

int j,c=0;float xa=0.0;

for(j=0;j<n;j++)

xa+=x[j]/n;

printf(ave=%f\n,xa);

for(j=0;j<n;j++)

/*******found******/

if(x[j]>=xa)

c++;

return c;

}

3程序设计

编写函数fun,其功能是:根据以下公式求p的值,结果由函数值带回。m与n为两个正整数且要求m>n。

p=m!/(n!*(m-n)!)

float fun(int m,int n)

{

float p;

p=1.0*jc(m)/jc(n)/jc(m-n);

return p;

}

第50套

1程序填空

    给定程序中,函数fun的功能是:有N×N 矩阵,以主对角线为对称线,对称元素相加并将结果存放在左下三角元素中,右上三角元素来。

第1处 void fun(int (*t)[N])

第2处 t[i][j]=t[i][j]+t[j][i];

第3处 t[j][i]=0;

2程序修改

给定程序MODI1.C中函数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。 

/*******found******/

#define FU(m,n) ((m)/(n))

float fun(float a,float b,float c)

{ float value;

value=FU(a+b,a-b)+FU(c+b,c-b);

/*******found******/

return (value);

}

3程序设计

规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中的前导*号全部删除,中和尾部的*号不删除。

 

void fun(char *a)

{

int j=0;

char *p=a;

while(*p==*)p++;

while(*p){

a[j++]=*p;

p++;

}

a[j]=0;

}

第51套

1程序填空

    给定程序中,函数fun的功能是:计算出形参s所指字符串中包含的单词个数,作为函数值返回。为便于统计,规定各单词之间用空格隔开。

第1处 n++;flag=1;}

第2处 if(*s==’’)flag=0;

第3处 s++;

2程序修改

给定程序MODI1.C中函数fun的功能是:从n(形参)个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在形参aver所指的存储单元中。  

inf fun(float *s,int n,float *aver)

{ float ave,t=0.0;

  int count=0,k,i;

 for(k=0;k<n;k++)

/*******found******/

t+=s[k];

ave=t/n;

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

if(s[i]<ave)count++;

/*******found******/

*aver=ave;

return count;

}

3程序设计

请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元。

int fun(int *s,int t,int *k)

{

int i,pos=0,max=*s;

for(i=1;i<t;i++)

{

if(max<*(s+i)){

max=*(s+i);

pos=i;

} }

*k=pos;

}

 

第52套

1程序填空

    给定程序中,函数fun的功能是将N×N矩阵中元素的值按列右移1个位置,右边被称出矩阵的元素绕回左边。

第1处for(i=0;i<N;i++)

第2处 x=t[i][N-1];

第3处 t[i][0]=x;

2程序修改

给定程序MODI1.C中函数fun的功能是:计算并输出下列级数的前N项之和Sn,直到Sn+1 大于q为止,q的值通过形参传入。

SN=2/1+3/2+4/3+……+N+1/N

double fun(double q)

{ int n;double s,t;

n=2;

s=2.0;

while(s<=q)

{

t=s;

/*******found******/

s=s+(n+1.0)/n;

n++;

}

printf(n=%d\n,n);

/*******found******/

return t;

}

3程序设计

编写函数fun,它的功能是:求Fibonacci数列中大于t的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)定义为:F(0)=0,F(1)=1,

F(n)=F(n-1)+F(n-2)

int fun(int t)

{

int f0=0,f1=1,f;

do

{  f=f0+f1;

   f0=f1;

f1=f;

}while(f<t);

return f;

}

 

 

 

第53套

1程序填空

函数fun的功能是:计算f(x)=1+x-x2/2!+x3/3!-x4/4!

直到|xn/n!|<10-6若x=2.5,函数值为:1.917915。

第1处 t=x;

第2处 t*=(-1.0)*x/n;

第3处 while(fabs(t)>=1e-6)

2程序修改

给定程序MODI1.C中函数fun的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。  

long fun(int x,int y,long *p)

{ int i;

long t=1;

/*******found******/

for(i=1;i<=y;i++)

t=t*s;

*p=t;

/*******found******/

t=t%1000;

return t;

}

3程序设计

请编写函数fun,其功能是:计算并输出当x<0.97时下列多项式的值,直到|Sn-Sn-1|<0.000001为止

         0.5(0.5-1)      0.5(0.5-1)(0.5-2)      0.5(0.5-1)(0.5-2)…(0.5-n+1)

S=1+0.5x+─────x^2+

─────────x^3

 +

──────────────x^n

             2!                3!                           n!

double fun(double  x)

{

  int n=1;  

  double sn=1;  

  double xn=1,xn1=0; 

  while(fabs(xn-xn1)>=0.000001)

       {

 xn=xn*x*(0.5-n+1)/n;

n+=1;

 sn+=xn;     

 }

  return(sn);

}

第54套

1程序填空

    给定程序中,函数fun的功能是:计算出带有头节点的单向链表中各节点数据域中值之和作为函数值返回。

第1处 s+=p->data;

第2处 p=p->next;

第3处 printf(\nsum=%d\n,fun(head));

2程序修改

给定程序MODI1.C中函数fun的功能是:将s所指字符串中出现的与t1所指字符串相同的子串全部替换成t2所指字符串,所形成的新串放在w所指的数组中。在此处,要求t1和t2所指字符串的长度相同。   

int fun(char *s,char *t1,char *t2,char *w)

{

int i; char *p,*r,*a;

strcpy(w,s)

while(*w)

{ p=w;r=t1;

/*******found******/

while(*r)

  if(*r==*p)

{r++;p++;}

else break;

if(*r==\0)

{ a=w;r=t2;

while(*r) {

/*******found******/

*a=*r;a++;r++;

}

w+=strlen(t2);

}

else w++;

}

}

3程序设计

函数fun的功能是:将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。

void fun(char *s,char t[])

{

int i,j=0;

for(i=1;i<strlen(s);i+=2)

 t[j++]=s[i];

t[j]=0;

}

第55套

1程序填空

    给定程序中,函数fun的功能是:判断形参s所指字符串是否是回文(Palindrome)若是,函数返回值为1;不是,函数返回值为0,回文是正读和反读都是一样的字符串(不区分大小写字母)。

第1处lp=s;

第2处 lp++;rp--;}

第3处 if(lp<rp)return 0;

2程序修改

给定程序MODI1.C中函数fun的功能是:求出以下分数序列的前n项之和。

2/1+3/2+5/3+8/5+13/8+21/13+……和值通过函数值近回main函数。例如,若n=5,则应输出:8.391667。  

/*******found******/

double fun(int n)

{ int a=2,b=1,c,k;

double s=0.0;

for(k=1;k<=n;k++)

{  s=s+1.0*a/b;

/*******found******/

c=a;a+=b;b=c;

}

return (s);

}

3程序设计

请编写函数fun,函数的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,31,37,函数fun中给出的语句仅供参考。

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

{

int i,j=1,t=m+1;

while(j<=k)

{

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

if(t%i==0)break;

if(i==t){

xx[j-1]=i;

j++;

}

t++;

}

}

 

第56套

1程序填空

    给定程序的功能是:从键盘输入若干行文本(每行不得超过80个字符),写到文件myfile4.txt中,用-1作为字符串输入结束的标志。然后将文件的内容读出显示在屏幕上。文件的读写分别由自定义函数ReadText和WriteText实现。

第1处void WriteText(FILE *fw)

第2处 fputs(str,fw);fputs(\n,fw);

第3处 printf(%s,str);

2程序修改

给定程序MODI1.C中函数fun的功能是:从低位开始取出长整型变量s中奇数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。  

/*******found******/

void fun(long s,long *t)

{  long s1=10;

*t=s%10;

while(s>0)

{ s=s/100;

*t=s%10*s1+*t;

/*******found******/

s1=s1*10;

}

}

3程序设计

函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c 中。合并的方式是:将a数的十位和个位数依次放在c数个位和百位上,b数的十位和个位数依次放在c数的千位和十位上。

void fun(int a,int b,long *c)

{

*c=(b/10)*1000+(a%10)*100+(b%10)*10+(a/10);

}

 

第57套

1程序填空

    函数fun的功能是:把形参a所指数组中的最小值放在元素a[0]中,接着把形参a所指数组中的最大值放在a[1]元中;再把a所指数组中的次小值放在a[2]中,把a所指数组元素中的次大值放在a[3];其余以此类推。

第1处max=min=a[i];

第2处 if(max<a[j])

第3处 if(min>a[j])

2程序修改

给定程序MODI1.C中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第1项起,斐波拉契数列为:1、1、2、3、5、8、13、21、……  

long fun(int g)

{

/*******found******/

switch(g)

{ case 0:return 0;

/*******found******/

case 1:return 1;

case 2:return 1;

}

return (fun(g-1)+fun(g-2));

}

3程序设计

某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程成绩已在主函数中给出。请编写函数fun,它的功能是:求出该学生的平均分放在记录的ave成员中。

void fun(STREC *a)

{  int i;

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

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

a->ave/=N;

}

第58套

1程序填空

    给定程序中,函数fun的功能是;把形参s所指字符串中左边的n个字符复制到形参t所指字符数组中,形成一个新串,若s所指字符串的长度小于n,则将整个字符串复制到形参t所指字符数组中。

第1处 if(n>=len)strcpy(t,s);

第2处 t[j++]=s[i];

第3处 t[j]=0;

2程序修改

给定程序MODI1.C中函数fun的功能是:找出一个大于形参m且紧随m的素数,并作为函数值返回。  

int fun(int m)

{  int i,k;

for(i=m+1; ; i++)

{

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

/*******found******/

if(i%k==0)

break;

/*******found******/

if(k>=i)

  return (i);

}

3程序设计

编写函数fun,它的功能是:求出能整除形参x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。

void fun(int x,int pp[],int *n)

{

int i;

*n=0;

for(i=1;i<=x;i++)

 

if((x%i==0)&&(i%2))pp[(*n)++]=i;

}

第59套

1程序填空

给定程序中,函数fun的功能是:在3×4的矩阵中找出在行上最大,在列上最小的那个元素,若没有符合条件的元素则输出相应信息。

第1处 max=a[i][j];c=j;}

第2处 find=0;

第3处 i++;

2程序修改

给定程序MODI1.C中函数fun的功能是:根据整形形参m的值,计算如下公式的值。……例如:若m中的值为:5,则应输出:0.536389。

t=1-1/(2*2)-1/(3*3)-……-1/(m*m)  

double fun(int m)

{ double y=1.0;

int i;

/*******found******/

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

/*******found******/

 y-=1.0/(i*i);

return (y);

}

 

3程序设计

m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。

int fun(int score[],int m,int below[])

{

float av=0.0;

int i,j=0;

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

av+=score[i];

av/=m;

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

if(av>score[i])

below[j++]=score[i];

return j;

}

第60套

1程序填空

    给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。

第1处 void fun(PERSON * std)

第2处 PERSON temp;

第3处 fun(std);

2程序修改

给定程序MODI1.C中函数fun的功能是:将m(1m10)个字符串连接起来,组成一个新串,放入pt所指存储区中。  

int fun(char str[][10],int m,char *pt)

{

/*******found******/

int k,q,i;

for(k=0;k<m;k++)

{  q=strlen(str[k]);

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

/*******found******/

pt[i]=str[k][i];

pt+=q;

pt[0]=0;

}

}

3程序设计

程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[ ][N]),函数的功能是:使数组左下三角元素中的值全部置成0。

int fun(int a[][N])

{

int i,j;

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

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

  a[i][j]=0;

}

第61套

1程序填空

  函数fun的功能是进行字母转换。若形参ch中是小写英文字母,则转换成对应的大写英文字母;若ch中是大写英文字母,则转换成对应的小写英文字母;并将转换的结果作为函数值返回。

第1处  if((ch>=a)&&(ch<=z))

第2处 return ch+a-A

第3处 return ch;

2程序修改

给定程序MODI1.C中函数fun的功能是:给一维数组a输入任意4个整数,并按下列的规律输出。例如输入1、2、3、4,程序运行后将输出以下方阵。

4 1 2 3

3 4 1 2

2 3 4 1

1 2 3 4

 

/*******found******/

void fun(int *a)

{ int i,j,k,m;

printf(Enter4 number:)

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

scanf(%d,&a[i]);

printf(\n\nThe result :\n\n:);

for(i=M;i>0;i--)

{  k=a[M-1];

for(j=M-1;j>0;j--)

/*******found******/

a[j]=a[j-1];

a[0]=k;

for(m=0;m<M;m++)

printf(%d,a[m]);

printf(\n);

}

3程序设计

请编写一个函数fun,它的功能是:计算并输出给定整数n的所有因子(不包括1与n自身)之和。规定n的值不大于1000。

int fun(int n)

{

int s=0,i;

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

if(n%i==0)s+=i;

return s;

}

第62套

1程序填空

    给定程序中,函数的功能是:把形参s所指字符串下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注:字符串的长度大于等于2)。例如,形参s所指的字符串为:abcdefgh,执行结果为:ahcbedg。

第1处 if(n%2==0) k=n-1;

第2处 c=s[k];

第3处 s[1]=c;

2程序修改

给定程序MODI1.C中fun函数的功能是:求s=aaaa--aaa-aa-a(此处aaaa表示n个a,a和n的值在1至9之间)  

long fun(int a,int n)

{ int j;

/*******found******/

long s=0,t=0;

for(j=0;j<n;j++)

  t=t*10+a;

s=t;

for(j=1;j<n;j++)

{

/*******found******/

t=t/10;

s=s-t;

}

return (s);

}

3程序设计

请编写一个函数void fun(char *tt, int pp[ ]),统计在tt所指字符串中az26个小字母各出现的次数,并依次放在pp数组中。

void fun(char *ttint pp[])

{

char *p=tt;

int i;

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

pp[i]=0;

while (*p)

{ if(*p>=a&&*p<=z)

pp[*p-a]+=1;

p++;

}

}

第63套

1程序填空

    给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边值为0。

第1处 for(i=0;i<N;i++)

第2处 t[i][j+m]=t[i][j];

第3处 for(j=0;j<m;j++)

2程序修改

给定程序MODI1.C是函数fun的功能是:计算并输出high以内最大的10个素数之和。high的值由主函数传给fun函数。  

int fun(int high)

{ int sum=0,n=0,j,yes;

/*******found******/

while((2<=high)&&(n<10))

{  yes=1;

for(j=2;j<=high/2;j++)

if(high%j==0){

/*******found******/

yes=0;break;

}

if(yes){sum+=high;n++}

high--;

}

return sum;

}

 

3程序设计

编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程:cos(x)-x=0的一个实根。xn+1=cos(xn)迭代步骤如下:

(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.739058。

float fun()

{

float x0,x1=0.0;

do {

x0=x1;

x1=cos(x0);

}while(fabs(x0-x1)>0.000001);

return x1;

}

第64套

1程序填空

    给定程序中,函数fun的功能是:将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左边的各列依次绕到右边。

第1处for(p=1;p<=k;p++)

第2处 for(j=0;j<N-1;j++)

a[i][j]=a[i][j+1];

第3处 a[i][N-1]=temp;

2程序修改

给定程序MODI1.C是函数fun的功能是:根据形参m的值(2m9),在m行m列的二维数组中存放如下所示规律的数据,由main函数输出。例如,若输入2则输出

1 2

2 4

 

/*******found******/

fun(int a[][M],int m)

{ int j,k;

for(j=0;j<m;j++)

  for(k=0;k<m;k++)

/*******found******/

a[j][k]=(k+1)*(j+1);

}

3程序设计

函数fun的功能是:将a、b中的两正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的十位和千位上,b中的十位和个位数依次放在变量c的个位和百位上。

void fun(int a,int b,int *c)

{

*c=(a%10)*1000+(b%10)*100+(a/10)*10+(b/10);

}

第65套

1程序填空

给定程序中,函数fun的功能:将a所指4×3矩阵中第k行的元素与第0行元素交换。例如:有下列矩阵

1 2 3

4 5 6

7 8 9

10 11 12

若k为2,程序执行结果为

7 8 9

4 5 6

1 2 3

10 11 12

第1处 void fun(int (*a)[N],int k)

第2处 for(i=0;i<N;i++)

第3处 a[0][i]=a[k][i];

2程序修改

给定程序MODI1.C中函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。例如,若输入edcba,则应输出:abcde。 

void fun(char t[])

{

char c;

int i,j;

/*******found******/

for(i=strlen(t)-1;i;i--)

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

/*******found******/

if(t[j]>t[j+1])

{

c=t[j];

t[j]=t[j+1];

t[j+1]=c;

}

}

3程序设计

请编写一个函数fun,其功能:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

void fun(char *ss)

{

char *p=ss;

int i=0;

while(*p){

if((i%2)&&(*p>=a&&*p<=z))

*p-=32;

p++;

i++;

}

}

第66套

1程序填空

    给定程序中,函数fun的功能是:将形参std所指结构体数组中年龄最大者的数据作为函数值返回,并在main函数中输出。

第1处 max=*std;

第2处 if(max.age<std[i].age)

       max=std[i];

第3处 printf(\n Name:%s,Age:%d\n,max.name,max.age);

2程序修改

给定程序MODI1.C中函数fun的功能是:实现两个整数的交换。例如给a和b分别输入:60和65,输出为:a=65 b=60  

/*******found******/

void fun(int *a,int *b)

{ int t;

/*******found******/

t=*b;*b=*a;*a=t;

}

 

3程序设计

请编一个函数void fun(int tt[M][N],int pp[N]),tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。

void fun(int tt[M][N],int pp[N])

{

int i,j,min,k;

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

{

min=tt[0][i];k=0;

for(j=1;j<M;j++)

if(min>tt[j][i])

{ min=tt[j][i];

k=j;

}

pp[i]=tt[k][i];

}

}

 

第67套

1程序填空

    给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所数组中(此数组在主函数中已置0)。

第1处 while(n<N)

第2处 if(x==a[i])break;

第3处 if(i==n){ a[n]=x;n++;}

2程序修改

给定程序MODI1.C中函数fun的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和。  

int fun()

{

int a[3][3],sum;

int i,j;

/*******found******/

sum=0;

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

{  for(j=0;j<3;j++)

/*******found******/

scanf(%d,&a[i][j]);

}

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

 sum=sum+a[i][i];

printf(Sum=%d\n,sum);

}

 

3程序设计

编写程序,实现矩阵(3行3列)的转置(即行列互换)

int fun(int array[3][3])

{

int i,j,arr[3][3];

memcpy(arr,array,9*sizeof(int));

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

  for(j=0;j<3;j++)

array[i][j]=arr[j][i];

}

第68套

1程序填空

    给定程序中,函数fun的功能是:求ss所指字符串数组中长度最长的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。ss所指字符串数组中共M个字符串,且串长<N。

第1处int fun(char (*ss)[N],int *n)

第2处 if(i==0)*n=len;

第3处 *n=len

2程序修改

给定程序MODI1.C中函数fun的功能是:根据形参m计算如下公式的值。例如,若输入5,则应输出2.283333。  

t=1+1/2+1/3+1/4+ +1/m

double fun(int m)

{

double t=1.0;

int i;

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

/*******found******/

t+=1.0/i;

/*******found******/

return t;

}

3程序设计

编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。

int fun(char *str,char *substr)

{

int cnt=0;

char *p=str,*q;

while(*p){

q=strstr(p,substr);

if(q==NULL)break;

p=q+strlen(substr);

cnt++;

}

第69套

1程序填空

   给定程序中,函数fun的功能是将a和b所指的两具字符串转达换成面值相同的整数,并进行相加作为函数值返回,规定字符串只含9个以下数字字符。

第1处 d=d*10+*s-0;

第2处 s++;

第3处 return ctod(a)+ctod(b);

2程序修改

给定程序MODI1.C中函数fun的功能是:分别统计字符串大写字母和小写字母的个数和。

void fun(char *s,int *a,int *b)

{

while(*s)

{ if(*s>=A&&*s<=Z)

/*******found******/

*a=*a+1;

if(*s>=a&&*s<=z)

/*******found******/

*b=*b+1;

s++;

}

3程序设计

请编写函数fun,函数的功能是使用实型整数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)

float fun(float h)

{

long w;

w=h*100+1.5;

return (float)w/100;

}

第70套

1程序填空

    给定程序中,函数fun的功能是:计算形参x所指数组中N个数的平均值(规定所有数均为正数),作为函数值返回,并将大于平均值的数放在形参Y所指数组中,在主函数中输出。

第1处av=0;

第2处 av=av+x[i]/N;

第3处 y[j++]=x[i];

2程序修改

给定程序MODI1.C中函数fun的功能是:根据整型形参m,计算如下公式的值。1/100*100+1/200*200+1/300*300+……+1/m*m

/*******found******/

double fun(int m)

{ double y=0,d;

int i;

/*******found******/

for(i=100;i<=m;i+=100)

{ d=(double)i*(double)i;

y+=1.0/d;

}

return (y);

}

3程序设计

已知学生的记录由学号和学生成绩构成,N名学生的数据已存入a结构体数组中,请编写函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)

fun(STU a[],STU *s)

{ 

int i,min=a[0],s,j=0;

for(i=1;i<N;i++)

if(min>a[i].s){

j=i;

min=a[i].s;

}

*s=a[j];

}

第71套

1程序填空

    给定程序中,函数fun的功能是,将形参s所指字符串中的所有数字字符顺序前移,其他字符顺序后移,处理后新字符串的首地址作为函数值返回。

第1处p[j]=s[i];j++;}

第2处 for(i=0;i<k;i++)p[j+i]=t[i];

第3处 return p;

2程序修改

给定程序MODI1.C中函数fun的功能是:首先把b所指字符串中的字符按逆序存放,然后将a所指字符串中的字符和b所指字符串中的字符,按排列的顺序交叉合并到c所指数组中,过长的剩余字符接在c所指数组的尾部。  

void fun(char *a,char *b,char *c)

{

int i,j;

char ch;

i=0;j=strlen(b)-1;

/*******found******/

while(i<j)

{ ch=b[i];b[i]=b[j];b[j]=ch;

i++;j--;

}

while(*a||*b){

/*******found******/

if(*a)

{ *c=*a;c++;a++;}

if(*b)

{*c=*b;c++;b++;}

}

*c=0;

}

3程序设计

函数fun的功能是:将s所指字符串中下标为偶数同时ASCII值为奇数的字符删除,s所指串中剩余的字符形成的新串放在t所指的数组中。

void fun(char *s,char t[])

{

int i,j=0;

for(i=0;i<strlen(s);i++)

if(!((i%2)==0&&(s[i]%2)))

t[j++]=s[i];

t[j]=0;

}

第72套

1程序填空

    给定程序中,函数fun的功能是:计算下式s=1/22+3/42+5/62++(2×n-1)/(2×n)2直到 | 2×n-1/(2×n)2|10-3并把计算结果作为函数值返回。例如,若形参e的值为 1e-3,函数值的返回值2.735678.

第1处 i=0;

第2处 i++;

第3处 x=(2.0*i-1)/((2.0*i)*(2.0*i));

2程序修改

给定程序MODI1.C中函数fun的功能是:将s所指字符串的正序和反序进行连接,形成一个新串放在t所指的数组中。  

/*******found******/

void fun(char *s,char *t)

{

int i,d;

d=strlen(s);

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

t[i]=s[i];

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

t[d+i]=s[d-1-i];

/*******found******/

t[2*d]=\0;

}

3程序设计

函数fun的功能是:将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。

void fun(char *s,chat t[])

{

 int i,j=0;

for(i=1;i<strlen(s);i+=2)

if(s[i]%2)

t[j++]=s[i];

t[j]= 0;

}

 

第73套

1程序填空

    给定程序中,函数fun的功能是计算下式s=3/22-5/42+7/62-+(-1)n-1(2×n-1) /(2×n)2直到 | 2×n-1/(2×n)2|10-3并把计算结果作为函数值返回,例如:若形参e的值为1e-3,函数的返回值为 0.551690

第1处x=3.0/4;

第2处 while(x>e)

第3处 x=(2*i+1)/(t*t);

2程序修改

给定程序MODI1.C中函数fun的功能是:求出以下分数序列的前n项之和。 2/1,3/2,5/2,8/5,13/8,31/13和值通过函数值返回到main函数。

 

/*******found******/

double fun(int n)

{ int a,b,c,k;

double s;

s=0.0;a=2;b=1;

for(k=1;k<=n;k++)

{ 

/*******found******/

s=s+(double)a/b;

c=a;a=a+b;b=c;

}

return s;

}

3程序设计

请编写一个函数fun,它的功能是:求出一个2×M整型二维数组中最大元素的值,并将此值返回调有函数。

fun(int a[][M])

{

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

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

  for(j=0;j<M;j++)

if(max<a[i][j])

max=a[i][j];

return max;

}

第74套

1程序填空

人员的记录由编号和出生年、月、日组成,N名人员的数据已在主函数中存入结构体数组std中。函数fun的功能是:找出指定出生年份的人员,将其数据放在形参k所指的数组中,由主函数输出,同时由函数值返回满足指定条件的人数。

第1处 if(std[i].year==year)

第2处 k[n++]=std[i];

第3处 return (n);

2程序修改

给定程序MODI1.C的功能是:读入一个整数k (2k10000) ,打印它的所有质因子(即所有为素数的因子)。 

/*******found******/

IsPrime(int n)

{  int i,m;

m=1;

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

/*******found******/

if(!(n%i))

{ m=0;

break;}

return (m);

}

 

3程序设计

已知学生的记录由学号和学习成绩构成,N名学生的数据已存入结构体数组a中。请编写函数fun,函数的功能是:找出成绩最高的学生的记录,通过形参指针传回主函数(规定只有一个最高分)。已给出函数的首部,请完成该函数。

fun(STU a[],STU *s)

{

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

for(i=1;i<N;i++)

{ if(max<a[i].s) {

j=i;

max=a[i].s;

}

*s=a[j];

}

第75套

1程序填空

    给定程序中,函数fun的功能是:对行参ss所指字符串数组中的M个字符串按长度有短到长进行排序。ss所指字符串数组中共有M个字符,且串长<N。

第1处for(j=i+1;j<M;j++)

第2处 k=j;

第3处 strcpy(ss[k],t);

2程序修改

给定程序MODI1.C中函数fun的功能是:判断ch中的字符是否与str所指串中的某个字符相同:若相同,什么也不做,则将其插在串的最后。 

void fun(char *str,char ch)

{ while(*str&&*str!=ch) str++;

/*******found******/

if(*str!=ch)

{ str[0]=ch;

/*******found******/

str[1]=0;

}

}

3程序设计

请编写一个函数fun(chae*s),函数的功能是把s所指的字符串中的内容逆置。

fun(char *s)

{

char b[N];

int i=0,j;

memset(b,0,N);

for(j=strlen(s)-1;j>=0;j--)

b[i++]=s[j];

strcpy(s,b);

}

第76套

1程序填空

    给定程序中,函数fun的功能是:计算下式前5项的和作为函数值返回。s=1×3/22-3×5/42+5×7/62-……+(-1) n-1(2×n-1) × (2×n+1)/( 2×n) 2

例如,当形参n的值为10时,函数返回:-0.204491。

第1处k=1;

第2处 t=2*j;

第3处 k=k*(-1);

2程序修改

给定程序MODI1.C中函数fun的功能是:判断一个整数是否是素数,若是返回1,否则返回0。  

int fun(int m)

{ int k=2;

while(k<=m&&(m%k))

/*******found******/

k++;

/*******found******/

if(m==k)

return 1;

else return 0;

}

 

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=1;i<n;i++)

if(*max<a[i])

{ *max=a[i];

*d=i;

}

}

第77套

1程序填空

    给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到底位相反的顺序组成一个新的数。并作为函数值返回。

第1处if(t%2==0)

第2处 x=10*x+t;

第3处 n=n/10;

2程序修改

给定程序MODI1.C中函数fun的功能是:将长整型数中每一位上为奇数的数依次取出,构成一个新数放在t中。高位仍在高位,低位于仍在低位。 

void fun(long s,long *t)

{ int d;

long s1=1;

/*******found******/

*t=0;

while(s>0)

{ d=s%10;

/*******found******/

if(d%2!=0)

{ *t=d*sl+*t;

s1*=10;

}

s/=10;

}

}

3程序设计

编写一个函数fun,它的功能是:实现两个字符串的连接(不使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后。

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

{

char *p=p1;

while(*p)p++;

while(*p2)*p++=*p2++;

*p=0;

}

第78套

1程序填空

给定程序中,函数fun的功能是:将N×N矩阵主对角线元素中的值与反向对角线对应位置上元素中的值进行交换。例如,若N=3有下列矩阵:

1 2 3

4 5 6

7 8 9

交换后:

3 2 1

4 5 6

9 8 7

第1处 void fun(int t[][N],int n)

第2处 for(i=0;i<n;i++)

第3处 t[i][n-i-1]=s;

2程序修改

由N个有序整数组成的数列已放在一维数组中,给定程序MODI1.C中函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,返回其下标值;反之,返回-1。折半查找的基本算法是:每次查找前先确定数组中待查的范围:low和high(low<high),然后把m与中间位置(mid)中元素的值进行比较。如果m的值大于中间位置元素中的值,则下一次的查找范围落在中间位置之后的元素中:反之,下一次的查找范围落在中间位置之前的元素中。直到low>high,查找结束。  

/*******found******/

fun(int a[],int m)

{ int low=0,high=N-1,mid;

while(low<=high)

{ mid=(low+high)/2;

if(m<a[mid])

high=mid-1;

/*******found******/

else if(m>a[mid])

low=mid+1;

else return (mid);

}

return (-1);

}

 

3程序设计

假定输入的字符串中只包含字母和*号,请编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其它*全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言提供的字符串函数。

void fun(char *a,char *p)

{

char *q=a;

int j=0;

while(*q&&q<p){

if(*q!=*)

a[j++]=*q;

q++;

}

while(*p)a[j++]=*p++;

a[j]=0;

}

第79套

1程序填空

    给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指变量中。Ss所指字符串数组中共的M个字符串,且串长<N。

第1处 for(i=0;i<M;i++)

第2处 if(len<*n)

第3处 return (k);

2程序修改

给定程序MODI1.C函数fun的功能是:将功能是:将tt所指字符串中的小写字母都改为对应的大写字母,其它字符不变。  

char *fun(char tt[])

{

int i;

for(i=0;tt[i];i++)

/*******found******/

if((a<=tt[i])&&(tt[i]<=z))

/*******found******/

tt[i]-=32;

return (tt);

}

3程序设计

请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。

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

{

int i,cnt=0;

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

if(isP(i))xx[cnt++]=i;

*k=cnt;

}

第80套

1程序填空

    给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低们的顺序组成一个新的数。并作为函数值返回。

第1处i=1;

第2处 while(s)

第3处 x=x+t*i;i=i*10;

2程序修改

给定程序MODI1.C中函数fun的功能是:输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。  

/*******found******/

int fun(int n,int xx[][M])

{ int i,j,sum=0;

printf(\nThe %d x%d matrix:\n,M,M);

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

{ for(j=0;j<M;j++)

/*******found******/

printf(%d,xx[i][j]);

printf(\n);

}

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

sum+=xx[i][i]+xx[i][n-i-1];

return (sum);

}

 

3程序设计

函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c 的个位和百位上。

void fun(int a,int b,long *c)

{

*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);

}

第81套

1程序填空

给定程序中,函数fun的功能是:在形参s所指字符串中的每个数字字符之后插入一个*号。

第1处 if(s[i]>=0&&s[i]<=9)

第2处 while(s[i+1+n]!=0)n++;

第3处 s[j+1]=s[j];

2程序修改

给定程序MODI1.C中函数fun的功能是:根据整形形参m=1,计算如下公式的值。m=1+1/2*2+1/3*3+1/4*41/m*m

例如,若m中的值为:5,则应输出1.463611。

double fun(int m)

{ double y=1.0;

int i;  

/*******found******/

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

/*******found******/

y+=1.0/(i*i);

return (y);

}

3程序设计

编写函数fun,函数的功能是:实现B=A+A,即把矩阵A加上A的转置,存放在矩阵B中。计算结果在main函数中输出。

void fun(int a[3][3],int b[3][3])

{

int c[3][3];

int i,j;

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

  for(j=0;j<3;j++)

{

c[i][j]=a[j][i];

b[i][j]=a[i][j]+c[i][j];

}

}

 

第82套

1程序填空

    给定程序中,函数fun的功能是:找出100~999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出:符合条件的整数个数作为函数值返回。

第1处while(t<=999)

第2处 s1=t%10;s2=(t/10)%10;s3=t/100;

第3处 if(s1+s2+s3==x)

2程序修改

给定程序MODI1.C中fun函数的功能是:从低位开始取出长整型变量s中偶数位上的数,依次构成一个新数放在t中。高位仍在高位,低位仍在低位。  

/*******found******/

void fun(long s,long *t)

{ long s1=10;

s/=10;

*t=s%10;

/*******found******/

while(s>0)

{ s=s/100;

*t=s%10*s1+*t;

s1=s1*10;

}

}

3程序设计

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。

int fun(STREC a[])

{

STREC tmp;

int i,j;

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

  for(j=i+1;j<N;j++)

if(a[i].s<a[j].s)

{  tmp=a[i];

a[i]=a[j];

a[j]=tmp;

}

}

第83套

1程序填空

    给定程序中,函数fun的功能是:找出100至x(x999)之间各位上的数字之和为15的所有整数,然后输出:符合条件的整数个数作为函数值返回。

第1处n=0;

第2处 while(t<=x)

第3处 t++;

2程序修改

给定程序MODI1.C中函数fun的功能是:先将s所指字符串中的字符按逆序存放到t所指字符串中,然后把s所指字符串中的字符按正序连接到t所指串的后面。  

void fun(char *s,char *t)

{

/*******found******/

int i,s1;

s1=strlen(s);

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

/*******found******/

t[i]=s[s1-i-1];

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

s[s1+i]=s[i];

t[2*s1]=\0;

}

3程序设计

函数fun的功能是:将a、b中的两个两位位整数合并形成一个新的整数放在c中。合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位依次放在变量c的千位和十位上。

void fun(int a,int b ,int *c)

{

*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);

}

第84套

1程序填空

    函数fun的功能是:从三个形参a,b,c中找出中间的那个数,作为函数值返回。

第1处 t=a>b?(b>c?b:(a>c?c:a)):((a<c)?a:((b>c)?c:b));

 

2程序修改

给定程序MODI1.C中函数fun的功能是:首先将大写字母转换为对应小写字母:若小写字母为a~u,则将其转换为其后的第5个字母;若小写字母为v~z,使其值减21。转换后的小写字母作为函数值返回。

char fun(char c)

{ if(c>=A&&c<=Z)

/*******found******/

c=c+32;

if(c>=a&&c<=u)

/*******found******/

c=c+5;

else

if(c>=v&&c<=z)

c=c-21;

return c;

}

3程序设计

请编写函数fun,其功能是:计算并输出……例如,在主函数中从键盘给n输入20后,输出为:s=534.188884。注意:要求n的值大于1但不大于100。

double fun(int n)

{

int i;

double fac=1.0;

double sum=1.0;

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

{ fac+=sqrt(i);

sum+=fac;

}

return sum;

}

 

第85套

1程序填空

给定程序的功能是调用   fun函数建立班级通讯录。通讯录中记录每位学生的编号、姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。

第1处int fun(STYPE *std)

第2处 FILE *fp;int i;

第3处 fwrite(&std[i],sizeof(STYPE),1,fp);

2程序修改

给定程序MODI1.C中函数fun的功能是:先将在字符串s中的字符按正序存放到t串中,然后把s中的字符按逆序连接到t串的后面。  

void fun(char *s,char *t)

{ int i,s1;

s1=strlen(s);

/*******found******/

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

t[i]=s[i];

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

t[s1+i]=s[s1-i-1];

/*******found******/

t[2*s1]=0;

}

3程序设计

函数fun的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。

void fun(int a,int b,long *c)

{

*c=(a/10)*1000+(b/10)*100+(a%10)*10+(b%10);

}

 

第86套

1程序填空

    甲乙丙丁四人同时开始放鞭炮,甲每隔t1秒放一次,乙每隔t2秒放一次,两每隔t3秒放一次,丁每隔t4秒放一次,每人各放n次。函数fun的功能是根据形参提供的值,求出总共听到多少次鞭炮声作为函数值返回。注意,当几个鞭炮同时炸响,只算一次响声,第一次响声是在第0秒。

第1处 maxt=t1;

第2处 for(t=1;t<maxt*(n-1);t++)

第3处 return count;

2程序修改

给定程序MODI1.C中函数fun的功能是:根据输入的三个边长(整型值),判断能否构成三角形,还是等腰三角形。若能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。  

/*******found******/

int fun(int a,int b,int c)

{ if(a+b>c&&b+c>a&&a+c>b){

if(a==b||b==c)

return 3;

else

if(a==b||b==c||a==c)

return 2;

/*******found******/

else return 1;

}

else return 0;

}

 

3程序设计

编写函数fun,其功能是:计算并输出3到n之间(含3和n)所有素数的平方根之和。

double fun(int n)

{

int i,j=0;

double s=0;

for(i=3;i<=n;i++){

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

  if(i%j==0)break;

if(j==i)

s=s+sqrt(i);

}

return s;

}

第87套

1程序填空

    函数fun的功能是:统计长整数n的各个位上出现数1、2、3的次数,并通过外部(全局)变量c1,c2,c3返回主函数。

第1处 switch(n%10)

第2处 case 1: c1++;break;

第3处 case 2:c2++;break;

2程序修改

给定程序MODI1.C中函数fun的功能是:统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数并把该整数中各位上最大的数字值作为函数值返回。  

int fun(unsigned n,int *zero)

{ int count =0,max=0,t;

do

{ t=n%10;

/*******found******/

if(t==0)

count++;

if(max<t)max=t;

n=n/10;

} while(n);

/*******found******/

*zero=count;

return max;

}

3程序设计

请编写函数fun,其功能是:计算并输出下列多项式的值:s=1+1/1*2+1/1*2*3++1/1*2*3*50

例如,在主函数中从键盘给n输入50后,输出为:s=1.718282。

 

double fun(int n)

{

double s=0,t=1;

int i;

for(i=1;i<=n;i++)

{ t*=i;

s+=1.0/t;

}

return s;

}

第88套

1程序填空

    函数fun的功能是:反形参a所指数组中的最大值放在a[0]中,接着求出a所指数组中的最小值放在a[1]中;再把a所指数组元素中的次大值放在a[2]中,把a数组元素中的次小值放在a[3]中;蓁以此类推。

第1处 void fun(int *a,int n)

第2处 for(i=0;i<n-1;i+=2)

第3处 for(j=i+1;j<n;j++)

2程序修改

给定程序MODI1.C中函数fun的功能是:按顺序给s所指数组中元素赋予从2开始的偶数,然后再按顺序对每五个元素求一个平均值,并将这些值依次存放在w所指的数组中,若s所指数组中元素的个数不是5的倍数,多余部分忽略不计。  

fun(double *s,double *w)

{

int k,i;double sum;

for(k=2,i=0;i<SIZE;i++)

{ s[i]=k;

k+=2; }

/*******found******/

sum=0.0;

for(k=0,i=0;i<SIZE;i++)

{ sum+=s[i];

/*******found******/

if((i+1)%5==0)

{ w[k]=sum/5;

sum=0;k++;}

}

return k;

}

 

3程序设计

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参n传回。平均分通过函数值返回。

double fun(STREC *a,STREC *b,int *n)

{

int i;

double ave=0.0;

*n=0;

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

  ave=ave+a[i].s;

ave/=N;

for(i=0;i<N:i++)

 if(a[i].s<ave)

{ b[*n]=a[i];

 (*n)++;

}

return ave;

}

第89套

1程序填空

    给定程序中,函数fun的功能是:求出形参aa所指字符串数组中最长的字符串的长度,其余字符串左边用字符*补齐,使其与最长的字符串等长。字符串数组中共有M个字符串,且串长<N。

第1处 k=i;

第2处 for(j=len;j>=0;j--)

第3处 ss[i][j]=*;

2程序修改

给定程序MODI1.C中fun函数的功能是:计算整数n的阶乘。请改正程序中的错误或在下划线处填上适当的内容并把下划线删除,使它能计算出正确的结果。  

double fun(int n)

{

double result=1.0;

while(n>1&&n<170)

/*******found******/

result*=n--;

/*******found******/

return result;

}

3程序设计

编写函数fun,它的功能是:从s所指的字符串删除给定的字符。同一字母的大、小写按不同字符处理。

int fun(char s[],char c)

{

char *p=s;

int i=0;

while(*p){

if(*p!=c)s[i++]=*p;

p++;}

s[i]=0;

}

 

第90套

1程序填空

    函数fun的功能是:统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。

第1处 for(j=2;j<i;j++)

第2处 if(i%j==0)

第3处 if(j>=i)

2程序修改

数列中,第一项值为3,后一项都比前一项的值增5;给定程序MODI1.C中函数fun的功能是:计算前n(4<n<50)项的累加和;每累加一次把被4除后余2的当前累加值放入数组中,符合此条件的累加值的个数作为函数值返回主函数。  

int fun(int m,int *a)

{ int i,j,k,sum;

/*******found******/

sum=0;j=0;

for(k=3,i=0;i<n;i++,k+=5)

{ sum=sum+k;

/*******found******/

if(sum%4==2)

a[j++]=sum;

}

return j;

}

3程序设计

请编写函数fun,其功能是:计算并输出下列多项式的值:……例如,在主函数中从键盘给n输入8后,输出为s=0.662872。注意:要求n的值大于1但不大于100。

double fun(int n)

{

int i;

double sum=0.0;

if(n>1&&n<=100)

{ for(i=1;i<=n;i++)

sum+=1.0/(2*i-1)-1.0/(2*i);

}

return sum;

}

第91套

1程序填空

给定程序中,函数fun的功能是计算f(x)=1+x+x2/2!++xn/n!直到|x/n!|<10-6若x=2.5,函数值为:12.182494。

第1处 f=1.0+x;

第2处 t*=x/n

第3处 f+=t;

2程序修改

给定程序MODI1.C中函数fun的功能是:计算n的5次方的值(规定n的值大于2小于8),通过形参指针传向主函数;并计算该值的个位、十位、百位上数字之和作为函数值返回。  

int fun(int n,int *value)

{  int d,s,i;

/*******found******/

d=1;s=0;

for(i=1;i<=5;i++)

d=d*n;

*value=d;

for(i=1;i<=3;i++)

{ s=s+d%10;

/*******found******/

d=d/10;

}

return s;

}

3程序设计

编写函数fun,它的功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。

double fun(double x[9])

{

int i;

double avg=0.0,sum=0.0;

for(i=0;i<8;i++){

avg=(x[i]+x[i+1])/2;

sum+=sqrt(avg);

}

return sum;

}

第92套

1程序填空

    给定程序中,函数fun的功能是:计算f(x)=1+x+x2/2!++xn/n!的前n项。若x=2.5,函数值为:12.182340

的前n项。若x=2.5,函数值为:12.182340。

第1处 t=1;

第2处 for(i=1;i<n;i++)

第3处 t*=x/i;

2程序修改

给定程序MODI1.C中函数fun的功能是;找出100至n(不大于1000)之间三位数字相等的所有整数,把这些整数放在s所指数组中,把这些整数放在s所指数组中,个数作为函数值返回。  

int fum(int *s,int n)

{ int i,j,k,a,b,c;

j=0;

for(i=100;i<n;++){

/*******found******/

k=i;

a=k%10;k/=10;

b=k%10;k/=10;

/*******found******/

c=k%10;

if(a==b&&a==c)

s[j++]=i;

}

return j;

}

3程序设计

请编写函数fun的功能是:计算并输出给定10个数的方差:例如:给定的10个数为95.0,89.0,76.0,65.0,88.0,72.0,85.0,81.0,90.0,56.0,l输出为s=11.730729。

double fun(double x[10])

{

int i;

double avg=0.0,sum=0.0,abs=0.0,fc;

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

sum+=x[i];

avg=sum/10;

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

abs+=(x[i]-avg)*(x[i]-avg);

fc=sqrt(abs/10);

return fc;

}

 

第93套

1程序填空

    给定程序中已建立一个带有头结点的单向链表,在main函数中将多次调用fun函数,每调用一次fun函数,输出链表尾部结点中的数据,并释放该结点,使链表缩短。

第1处 t=t->next;

第2处 printf(%d,t->data);

第3处 free(t);

2程序修改

给定程序MODI1.C中fun函数的功能是:将字符串中的字符按逆序输出,但不改变字符串的内容。  

/*******found******/

fun(char *a)

{ if(*a)

{ fun(a+1);

/*******found******/

printf(%c,*a);

}

}

3程序设计

编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。

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

{

int i;

char *p=s,*q=t;

for(i=0;*p&&*q;i++){

p++;q++;

}

if(*p==0&&*q==0)

return s;

if(*p)return s;

else return t;

}

 

第94套

1程序填空

    函数fun的功能是计算f(x)=1+x-2/2!+3/3!-4/4!+……的前n项和。若x=2.5,n=15时,函数值为1.917914

前n项之和。若x=2,n=5时,函数值为:1.917914。

第1处 f=1;

第2处 t*=(-1)*x/i;

第3处 f+=t;

2程序修改

给定程序MODI1.C中函数fun的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。  

int fun()

{  int i,j,k,sum=0;

printf(\nThe result :\n\n);

/*******found******/

for(i=1;i<=3;i++)

{ for(j=1;j<=5;j++)

{ k=8-i-j;

/*******found******/

if(k>=0&&k<=6)

{ sum=sum+1;

printf(red:%4d white:%4d black:%4d\n,i,j,k);

}

}

}

return sum;

}

3程序设计

请编写函数fun,其功能是:计算并输出下列多项式的值:sn=1+1/1!+1/2!+1/3!+1/4!+1/n!

例如:在主函数中从键盘给n输入15,则输出为:s=2.718282。注意:要求n的值大于1但不大于100。

double fun(int n)

{

double s=1;

long t=1;

int i;

for(i=1;i<=n;i++){

t=t*i;

s+=1.0/t;}

return s;

}

第95套

1程序填空

    给定程序中,函数fun的功能是:计算N*N矩阵的主对角线元素和反向对角线元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素的值。

第1处 sum=0;

第2处 sum+=t[i][i];

第3处 sum+=t[i][n-i-1];

2程序修改

给定程序MODI1.C中函数fun和funx的功能是:用二分法求方程2x3-4x2+3x-6=0的一个根,并要求绝对误差不超过0.001。

double fun(double m,double n)

{

/*******found******/

double r;

r=(m+n)/2;

/*******found******/

while(fabs(n-m)>0.001)

{  if(funx(r)*funx(n)<0)

m=r;

esle n=r;

r=(m+n)/2;

}

return r;

}

 

3程序设计

假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。在编写函数时,不得使用c语言提供的字符串函数。

void fun(char *a,char *h,char *p)

{

int j=0;

char *q=a;

while(*q&&q<h)a[j++]=*q++;

while(*h&&*p&&h<p)

{ 

if(*h!=*)a[j++]=*h;

h++;

}

while(*p)a[j++]=*p++;

a[j]=0;

}

第96套

1程序填空

    给定程序中,函数fun的功能是:有N*N矩阵,将矩阵的外围元素顺时针旋转。操作顺序是:首先将第一行元素的值存入临时数组r ,然后使第一列成为第一行,最后一行成为第一列,最后一列成为第一行,临时数组中和元素成为最后一列。

第1处t[0][N-j-1]=t[j][0];

第2处 for(j=N-1;j>=0;j--)

第3处 t[j][N-1]=r[j];

2程序修改

给定程序MODI1.C中函数fun的功能是:计算s=f(-n)+f(-n+1)+……+f(0)+f(1)+f(2)+……+f(n)的值。例如,当n为5时,函数值应为:10.407143。  

/*******found******/

double f(double x)

{

if(x==0.0||x==2.0)

return 0.0;

else if(x<0.0)

return (x-1)/(x-2);

else

return (x+1)/(x+2);

}

double fun(int n)

{ int i;double s=0.0,y;

for(i=-n;i<=n;i++)

{ y=f(1.0*i);s+=y;}

/*******found******/

return s;

}

3程序设计

编写函数fun,它的功能是计算:s=根号下(ln(1)+ln(2)+ln(3)+……ln(m))S作为函数返回,在C语言中可调用log(n)函数求ln(n)。log函数的引用说明是:Double log(double x)例如,若m的值为:20,fun函数值为:6.506583。

double fun(int m)

{

double s=0.0;

int i;

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

s+=log(1.0*i);

s=sqrt(s);

return s;

}

第97套

1程序填空

    函数fun的功能是:逆置数组元素是的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数组中数据的个数。

第1处for(i=0;i<n/2;i++)

第2处 a[i]=a[n-1-i];

第3处 a[n-i-1]=t;

2程序修改

给定程序MODI1.C中函数fun的功能是: 将一个由八进制数字字符组成的字符串转换为与其面值相等的十进制整数。规定输入的字符串最多只能包含5位八进制数字字符。  

int fun(char *p)

{ int n;

/*******found******/

n=*p-0;

p++;

while(*p!=0){

/*******found******/

n=n*8+*p-0;

p++;

}

return n;

}

3程序设计

学生的记录由学号和成绩组成,N名学生的数据已在主函数中的放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入,若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp)。

STREC fun(STREC *a,char *b)

{

STREC c;

int i;

c.num[0]=\0;

c.s=-1;

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

if(strcmp(a[i].num,b)==0)

 { strcpy(c.num,a[i].num);

c.s=a[i].s; break;}

return c;

}

 

第98套

1程序填空

    给定程序中,函数fun的功能是:在带有头结点的单向链表中,查找数据域中值为ch的结点。找到后通过函数值返回该结点在链表中所处的顺序号:若不存在值为ch的结点,函数返回0值。

第1处while(p!=0)

第2处 if(p->data==ch)return n;

第3处 k=fun(head,ch);

2程序修改

给定程序MODI1.C中函数fun的功能是:删除p所指字符串的所有空白字符(包括制表符、回车符及换行符)。输入字符串时用#结束输入。

fun(char *p)

{ int i,t;char c[80];

/*******found******/

for(i=0,t=0;p[i];i++)

if(!isspace(*(p+i)))

c[t++]=p[i];

 

/*******found******/

c[t]=\0;

strcpy(p,c);

}

3程序设计

请编写一个函数fun,将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。

void fun(char *ss)

{

int i;

for(i=1;i<strlen(ss);i+=2)

{  if(ss[i]>=a&&ss[i]<=z)

ss[i]-=32;

}

}

 

第99套

1程序填空

    函数fun的功能是:将形参观者工所指数组中的前半部分元素中的值和后半部分元素中的值对换。形参n中存放数组中数据的个数,若n为奇数,则中间的元素不动。

第1处 p=(n%2==0)?n/2:n/2+1;

第2处 a[i]=a[p+i];

第3处 a[p+i]=t;

2程序修改

给定程序MODI1.C中函数fun的功能是:把主函数中输入的3个数,最大的放在a中,最小的放在c中,中间的放在b中。

void fun(float *a,float *b,float *c)

{  

/*******found******/

float  k;

if(*a<*b)

{ k=*a;*a=*b;*b=k;}

/*******found******/

if(*a<*c)

{ k=*a;*a=*c;*c=k;}

if(*b<*c)

{k=*b;*b=*c;*c=k;}

}

 

3程序设计

学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。

int fun(STREC *a,STREC *b)

{

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

for(i=1;i<N;i++)

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

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

if(max==a[i].s)b[n++]=a[i];

reutnr n;

}

第100套

1程序填空

    给定程序中,函数fun的功能是在形参s所指字符串中寻找与参数c相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则函数不做任何处理。

第1处 for(i=0;s[i]!=\0;i++)

第2处 n=0;

第3处 s[j+1]=c;

2程序修改

在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。给定程序MODI1.C中函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)  

double fun(int x[])

{

/*******found******/

double sum=0.0;

int c=0,i=0;

while(x[i]!=\0)

{ if(x[i]!=0){

sum+=x[i];c++;}

i++;

}

/*******found******/

sum/=c;

return sum;

}

3程序设计

编写函数fun,它的功能是:根据以下分工计算s,计算结果作为函数值返回:n通过形参传入。s=1+1/(1+2)+1/(1+2+3)++1/(1+2+3++n)例如:若n 的值为11时,函数的值为1.833333

float fun(int n)

{

int i,j,t;

float s=0;

for(i=1;i<=n;i++){

t=0;

for(j=1;j<=i;j++)

t+=j;

s=s+1.0/t;

}

return s;

}