为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

计算机二级C

2017-09-26 50页 doc 373KB 11阅读

用户头像

is_721103

暂无简介

举报
计算机二级C计算机二级C 第一套 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;...
计算机二级C
计算机二级C 第一套 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
,并为各结点数据域赋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; } 3. 程序设计 请编写函数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); 2. 程序修改 给定程序MODI1.C中函数fun的功能是:在字符串的最前端加入n个*号,形成新串,差且覆盖原串。注意:字符串的长度最长允许 为79. void fun(char s[ ],int n) { char a[80],*p; int i; /*****found******/ p=s; for(i=0;i10)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;ib[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 /*****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;ia[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;inext; 第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 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 # include #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;inext; 第3处 q=r; 2程序修改 给定程序MODI1.C中函数fun的功能是:将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第 一个字符放在第0位中)。 #include #include #define N 80 void fun(char *s,char t[]) {int i,j=0; for(i=0;i void fun (int (*s)[10],int *b, int *n, int mm, int nn) { int i,j,np=0; for(i=0;inext; 第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;inext; 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=0)&&(chs; STREC *p; p=h->next; while(p) { if(p-s>max) max=p->s; p=p->next; } return max; } 第十六套 1程序填空 给定程序中,函数fun的功能是:求出形参ss所指字符串数组中最长字符串的长度,将其余字符串右边用字符*补齐,使其与最长 的字符串等长。Ss所指字符串数组中共有M个字符串,且串长 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;i0) 2程序修改 给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原 字符向后顺序移动。 fun (char *p) { char max, *q; int i=0; max=p[i]; while( p[i]!=0) { if(maxp) {*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=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;iscore[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 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=0) num[i]++; } } 3程序设计 请编写函数fun,函数的功能是求出二级数组周边元素之和,作为函数值返回。二维数组中的值在主函数中赋予。 int fun(int a [M][N]) { int tot = 0, i,j; for(i=0;i /*******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; ia[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 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] #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;ia[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 #include void fun (char *s, char t[]) { int i, j=0; for(i=0;inext; 第3处 q=q->next; 2程序修改 给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。 void fun (int a[], int n) { int i, j, t, p; for (j=0;j=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 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;it)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=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 (ieps) { 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;jmaxlen) { 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;idata=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;i0) { 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=’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 /*******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=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=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=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;i0) { 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(maxa[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;iave=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) 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;iscore[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(1?m?10)个字符串连接起来,组成一个新串,放入pt所指存储区中。 int fun(char str[][10],int m,char *pt) { /*******found******/ int k,q,i; for(k=0;k=’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;i0;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=?a?&&*p<=?z?) pp[*p-„a?]+=1; p++; } } 第63套 1程序填空 给定程序中,函数fun的功能是:有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边值为0。 第1处 for(i=0;i0.000001); return x1; } 第64套 1程序填空 给定程序中,函数fun的功能是:将a所指3×5矩阵中第k列的元素左移到第0列,第k列以后的每列元素行依次左移,原来左 边的各列依次绕到右边。 第1处for(p=1;p<=k;p++) 第2处 for(j=0;jt[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.agett[j][i]) { min=tt[j][i]; k=j; } pp[i]=tt[k][i]; } } 第67套 1程序填空 给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。 第1处 while(n=?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;ia[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;ie) 第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=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;i0) { 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;ihigh,查找结束。 /*******found******/ fun(int a[],int m) { int low=0,high=N-1,mid; while(low<=high) { mid=(low+high)/2; if(ma[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=’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*4„1/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;ib?(b>c?b:(a>c?c:a)):((ac)?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;ic&&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=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) 2程序修改 数列中,第一项值为3,后一项都比前一项的值增5;给定程序MODI1.C中函数fun的功能是:计算前n(41&&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;inext; 第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=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;idata==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=?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答案
for(i=0; iave = a->ave + a->s[i] ; a->ave /= N ; 37. 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把低于平均分的学生数据放在b所指的数组中,低于平均分的学生人数通过形参 n传回,平均分通过函数值返回。 ,1,1空*a 2空2 3空i+1 ,2,1错 题中为sun=0; 正确答案sum=0; 2错 题中为if(i+1%5==0) 正确答案if((i+1)%5==0) ,3,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; 38. 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把分数最高的学生数据放在b所指的数组中,注意:分数最高的学生可能不止一个,函数返回分数最高的学生的人数。 ,1,1空1 2空i 3空a[p+i] ,2,1错 题中为float *k; 正确答案float k; 2错 题中为if(*a>*c) 正确答案if(*c>*a) ,3,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] ; return n; 39. 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:函数返回指定学号的学生数据,指定的学号在主函数中输入。若没找到指定学号,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。(用于字符串比较的函数是strcmp,strcmp(a,b)当a和b字符串相等时返回值为0)。 ,1,1空n/2 2空i 3空a[n-i-1] ,2,1错 题中为n=*P-’o’; 正确答案n=*p-’0’; 2错 题中为n=n*8+*P-’o’; 正确答案n=n*8+*p-’0’; ,3,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; 40. N 名学生的成绩已在主函数中放入一个带头节点的连接表结构中,h指向链表的头节点。请编写函数fun,它的功能是:求出平均分,由函数值返回。例如,若学生的成绩是:85,76,69,85,91,72,64,87,则平均分应当是:78.625. ,1,1空char 2空ch<=’9’ 3空’0’ ,2,1错 题中为b[k]=p; 正确答案b[k]=*p; 2错 题中为b[k++]=” “; 正确答案b[k]=’ ’;k++; ,3,STREC *p=h->next; double av=0.0; int n = 0 ; while(p!=NULL) { av = av + p->s ; p=p->next;n++;} return ,av/n,; 52. 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:按分数的高低排列学生的记录,高分在前。 ,1,1空999 2空t/10 3空x ,2,1错 题中为void fun(long s,long t) 正确答案void fun(long s,long *t) 2错 题中为while(s<0) ) 正确答案while(s>0) ,3,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;} 62.已知学生的记录有学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。 ,1,1空0 2空x[i]/N 3空 j++ ,2,1错 题中为fun(int m) 正确答案double fun(int m) 2错 题中为for(i=100,i<=m,i+=100) 正确答案for(i=100; i<=m;i+=100) ,3,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] ; 73. m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。例如,当scorre数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据为:10、20、30、40。 ,1,1空j; 2空0 3空i++ ,2,1错 题中为for(i=2;i>m;i++) 正确答案for(i=2);i<=m;i++) 2错 题中为y-=1/(i*i) 正确答案y-=1.0/i/i; 3,float av=0.0 ; int i, j=0 ;for(i=0; iscore[i]) below[j++]=score[i]; return j; 86.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数 fun,它的功能是:把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数 通过形参n传回,平均分通过函数值返回。 ,1, 1空sno 2空name 3空&t ,2, 1错 题中为double fun (double a, double) 正确答案double fun (double a, double x0) 2错 题中为if(fabs(x1-x0).>0.0 正确答案if(fabs(x1-x0).>0.00001 ,3,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 ; 87.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数 fun,它的功能是:步分数最低的学生数据放在b所指的数组中,注意:分数最低的学生可能不止一 个,函数返回分数最低的学生的人数。 ,1,1空struct student 3空a.name 4空a.score[i] ,2,1错 题中为if(P= =n)return -1; 正确答案if(p= =n)return -1; 2错 题中为a[i+1]=a[i]; 正确答案a[i]=a[i+1]; ,3,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 ; 89.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数 fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数有函数值返回。例如,输入的分数是60 69,则应当把分数在60到69的学生数据进行输出,包含60分和 69分的学生数据。主函数中将把60放在low中,把69放在heigh中。 ,1,1空struct 2空 student3空n-1 a[i].name,a[j].name ,2,1错 题中为q=p+i 正确答案q=p+i, 2错 题中为while(q>p-) 正确答案while(q>p) ,3,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 ; 90. N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,它的功能是:找出学生的最高分,由函数返回。 ,1,1空,fp, 2空= = 3空 fp ,2,1错 题中为n=strlen[aa] 正确答案n=strlen(aa) 2错 题中为c=aa[i], 正确答案 ch=aa[i]; ,3,double max=h->s;STREC*p; p=h->next; while(p){ if(p->s>max ) max=p->s; p=p->next; } return max;p=p->next;} return max; 第三类:字符串,奇偶性,转化或者删除 8. 请编写一个函数fun,它的功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若该位置上不是字母,则不转换)。 例如,若输入”abc4EFg”,则应输出” aBc4EFg”。 ,1,1空0 2空n 3空head,ch ,2,1错 题中为 For(i=0,t=0;p[i];i++) 正确答案for(i=0,t=0;p[i];i++) 2错 题中为c[t]=”\0”; 正确答案c[t]=0; ,3,int i; for(i=1;i=’a’&&ss[i]<=’z’) ss[i]-=32;} 71.请编写一个函数fun,其功能是:将ss所指字符串中所有下标为奇数位置上的字母转换为大写(若在位置上不是字母,则不转换)。例如,若输入”abc4EFg”,则应输出”aBc4EFg”。 ,1, 1空K 2空N 3空a[k][i] ,2, 1错 题中为for(i=strlen(t)-1) 正确答案,for(i = strlen ( t )-1; i ; i--) 2错 题中为( t[ j ] t [ j + 1 ]) ,3,char *p = ss ; int i = 0 ;while(*p) { if((i % 2) && (*p >= 'a' && *p <= 'z')) *p - = 32 ; p++ ; i++ ; } return ss ; 9. 函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。例如,若s所指字符串中的内容为:”ABCDEFG123456”,其中字符A的ASCII码值也为偶数的字符外,因此应当删除;其中字符B的ASCII码值为偶数,但数组中的下标为奇数,因此也应当删除;其中字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其它依此类推。最后t所指的数组中的内容应是:”246”。 ,1,1空*n 2空next 3空head ,2,1错 题中为a=NULL; 正确答案a=0; 2错 题中为 if(r= =p) 正确答案if(*r= =*p) ,3,int i,j=0; for,i=0;ij) 正确答案while(i0 正确答案 if (k>0) 2错 题中为 else if(k=0) 正确答案 else if (k= =0) ,3,int i , j; for(i = 0 ; i 3空,2*i+1, ,2,1错 题中为void fun(int n) 正确答案double fun (int n) 2 错 题中为s=s+(Double)a/b, 正确答案s=s+(double)a/b, ,3,int i, j, max=a[0][0]; for(i=0; i<2; i++) for(j=0; j 正确答案#include “stdio.h 2错 题中为upfst(char p) 正确答案upfst(char *p) ,3,int i, j, n=0; double sum=0; for ( i =0; inext 2空p->next 3空>= ,2,1错 题中为p=h; 正确答案p=h->next; 2错 题中为p=h->next; 正确答案p=p->next; ,3,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 ; 93.请编写函数fun,函数的功能是:将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中,函数fun中给出的语句仅供参考。 例如,二维数组中的数据为: 33 33 33 33 44 44 44 44 55 55 55 55 则一维数组中的内容应是: 33 44 55 33 44 55 33 44 55 33 44 55 ,1,1空k = a[i] ; 2空NODE* 3空next ,2,1错 题中为if(i%2&&s[i]%2==0) 正确答案if(i%2|| s [i] %2= =0) 2错 题中为t[j]=’\0’; 正确答案t[j]=0; ,3,for(i = 0 ; i < nn ; i++) for(j = 0 ; j < mm ; j++) { b[np] = s[j][i] ; np = i * mm + j + 1; } 97. 请编写函数fun,函数的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。 例如,二维数组中的数据为: W W W W S S S S H H H H 则字符串中的内容应是:WSHWSHWSH ,1,1空FILE* 2空fp 3空ch ,2,1错 题中为s[j] =s[i]; 正确答案s[j++]=s[i] ; 2错 题中为s[j]=”\0” 正确答案s[j]=0; ,3,for(j = 0 ; j < M ; j++) { b[n] = s[j][i] ; n = i * M + j + 1; 15. 请编一个函数void fun(int tt[M] [N], int pp[N],tt指向一个M行N列的二维数组,求出二维数组每列中最小元素,并依次放入pp所指一维数组中。二维数组中的数已在主函数中赋予。 ,1,1空 *std 2空 std[i].age 3空max.name ,2,1错 题中为void fun ( int a , b) 正确答案void fun ( int *a , int * b) 2错 题中为t=b; b=a;a=t; 正确答案 t=*b; *b=*a; *a=t; ,3,int i , j, min, k=0; for(i=0; i tt[j][i]) { min=tt[j][i]; } pp[k++]=min;} 第五类:字符串删除‘*’ 31. 规定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串中是前导*号全部删除,中间和尾部的*号不删除。 例如,字符串中的内容为:*******A*BC*DEF*G****,删除后,字符串中的内容应当是:A*BC*DEF*G****。在编写函数时,不得使用C语言提供的字符串函数。 ,1,1空 [ N ] 2空 t [i] [j] 3空 t[j] [i] ,2, 1错 题中为 #define FU(m,n)(m/n)正确答案#define FU(m,n) ,,m,/ (n), 2错 题中为Reurn (Value); 正确答案 reurn (value); ,3,int j=0; char *p = a ; while(*p == '*') p++ ; while(*p) { a[j++] = *p ; p++; 32. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其它*号全部删除。形参p已指向字符串中最后的一个字母。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG*******。 ,1,1空 t[][N] 2空i=0; ia[maid]) 正确答案else if(m>a[mid]) ,3,char *q=a; int j=0; while(*q && q0.001) ,3, int j=0; char *q=a; while(*q && q < h) a[j++] = *q++ ; while(*h && *p && h < p) { if(*h != '*') a[j++] = *h ; h++;, 34. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:删除字符串中所有的*号。在编写函数时,不得使用C语言提供的字符串函数。 例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG. ,1,1空1 2空j++ 3空j ,2,1错 题中为t=a;b=a;a=t正确答案t=a;a=b;b=t; 2错 题中为return(a); 正确答案return(b); ,3,int j =0 ; char *p=a; while(*p) { if(*p != '*') a[j++]=*p ; p++ ;, 号。请编写函数fun,它的功能是:使字符串尾部的*号不得35. 假定输入的字符串中只包含字母和* 多余n个;若多余的n号;则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和前面的*号不删除。 例如。字符串中的内容为:****A*BC*DEF*G*******,若n的值为4,删除后,字符串中的内容应当是:****A*BC*DEF*G****;若n的值为7,则字符串中的内容仍为:****A*BC*DEF*G*******。N的追在主函数中输入。在编写函数时,不得使用C语言提供的字符串函数。 ,1,1空a[i]%2 2空a[j] 3空j ,2,1错 题中为fun,n,正确答案fun,int n, 2错 题中为if,n=1,正确答案if,n==1, ,3,char *p=a ,*q=a;int j=0;while(*p) p++; p--; while(*p == '*') p--;p++;while(j=0&&K<=6) 正确答案if(k>=0&&k<=6) ,3,double s=1 ;long t=1;int i; for(i=1; i<=n; i++) { t=t*i; s+=1./t;} return s; 43. 请编写函数fun,其功能是:计算并输出当x<0.97时下列多项是的值,直到Sn-Sn-1|<0.000001为止。 例如,在函数中从键盘给x输入0.21后,输出为:s=1.100000。 ,1,1 空x 2空n 3空fabs(t) ,2,1错 题中为for(i=1;i=0.000001) {double j,a=1,b=1; xn1=xn; for (j=1;j1 && n<=100) {for(i=1; i<=n; i++) sum+=1.0/(2*i-1)-1.0/(2*i);} return sum; 47. 请编写函数fun,其功能是:计算并输出下列多项式的值: 例如,在主函数中从键盘给n输入50后,输出为:s=1.718282。 注意:要求n的值大于1但补大于100。 ,1,1空n%10 2空break 3空break ,2, 1错 题中为if(t=0)正确答案if(t==0) 2错 题中为zero=count;正确答案*zero=count; ,3,int i,j;double sum=0.0,temp; for(i=1; i<=n; i++){temp=1.0; for(j=1;j<=i;j++) temp*=1.0/j;sum+=temp;} return sum; 49. 请编写函数fun,其功能是:计算并输出3到n之间(含3和n)所有素数的平方根之和。 例如,在主函数中从键盘给n输入100后,输出为:sum=148.874270。 注意:要求n的值大于2但不大于100。 ,1,1空i 2空 t++ 3空 count ,2,1错 题中为void fun(int a,int b int c) 正确答案int fun(int a,int b,int c) 2错 题中为else return 1 正确答案else return 1; ,3,int i,j=0; double s=0; for (i=3; i<=n; i++) { for (j=2; j=eps){ s+=t; n++; t=t*n/(2.0*n+1); } return (s*2.0); 77. 编写函数fun,功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数且要求m>n。 例如:m=12,n=8时,运行结果为495.000000。 ,1,1空*s 2空s++ 3空 n ,2,1错 题中为int j,c=0,double 正确答案int j,c=0; double xa=0. 2错 题中为if(x[j]=>xa) 正确答案if (x[j]>=xa) ,3,float p,jcn=1.0,jcmm=1.0; int i; for(i=1;i<=m;i++)jcm*=i; for(i=1;i<=n;i++)jcn*=i; for(i=1;i<=m-n;i++)jcmn*=i; p=1.0*jcm/jcn/jcmn ; return p; 79. 编写函数fun,它的功能是:计算并输出下列级数和: 例如,当n=10时,函数值为:0.909091。 ,1,1空*s 2空1 3空k[n] ,2,1错 题中为void fun,int k, 正确答案float fun,int k, 2错 题中为return s 正确答案return s , ,3,double s = 0.0 ; int i ; for(i = 1 ; i <= n ; i++) s = s + 1.0 / (i * (i + 1)) ; return s ; 80. 编写函数fun,它的功能是计算下列级数和,和值由函数值返回。 例如,当n=10,x=0.3时,函数值为1.349859。 ,1,1空i 2空ps[ j ] 3空tp ,2,1错 题中为fun,int n, 正确答案double fun,int n, 2错 题中为return sum 正确答案return sum, ,3,double s = 1.0, y = x,jc=1.0 ; int i,j ; for(i = 1 ; i <= n ; i++) {jc*=i ;s+=y/jc; y *= x ; } return s ; 第七类,数学知识相关的编程 28. 编写函数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.739086. ,1,1空i++ 2空m 3空m ,2,1错 题中为while((high >=2) && (n < 10) 正确答案while((2<=high)&&(n<10)) 2错 题中为yes=0;break 确答案yes=0;break; ,3, float x0, x1=0.0; do { x0=x1; x1=cos(x0); } while(fabs(x0-x1)>0.000001); return x1; 45. 请编写函数fun,其功能是:计算并输出给定数组(长度为9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的9个元素依次为12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:s=35.951014。 ,1,1空x 2空n 3空t ,2,1错 题中为d=0;s=0; 正确答案d=1;s=0; 2错 题中为d=d\10; 正确答案d=d/10; ,3,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; 78. 编写函数fun,它的功能是:求小于形参n同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回。 例如若n为1000时,程序输出应为:s=153.909064。 ,1,1空48 2空s++ 3空sum ,2,1错 题中为if ,,k%13= = 0, 正确答案 if ,,k%13= = 0,|| ,k%17 = = 0,, 2 错 题中为____ 正确答案 } ,3, double sum=0.0;int i; for(i=21; i<=n; i++) if((i % 3==0) && (i % 7==0)) sum+=i; return sqrt(sum) ; 7.请编写一个函数fun,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。例如,若传送给m的值为50,则程序输出: 11 14 21 22 28 33 35 42 44 49 ,1,1空q 2空next 3空next ,2,1错题中为p=j 正确答案p=j; 2错题中为p=j; 正确答案p=i; ,3,int i ;*n=0; for(i=7 ; i<=m; i++)if ( (i % 7 = = 0) || ( i %11 = =0)) a[(*n)++]=i ; 21. 请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。 ,1,1空M 2空< 3空k ,2,1错 题中为if((‘a’<=tt[i]) || (tt[i]<=’z’)) 正确却答案if((‘a’<=tt[i])&&(tt[i]<=’z’)) 2错 题中为tt[i]+ =32 正确却答案tt[i]-=32, ,3,int j,tag=0,p,q; for(p=2;p=i) ,3,int i; *n=0; for(i=1; i <= x; i++) if((x % i== 0) && (i % 2)) pp[(*n)++]=i; 75.请编写一个函数fun,它的功能是:将大于形参m且紧靠m的k个素数存入xx所指的数组中。例如,若输入17,5,则应输出:19,23,29,31,37.函数fun中给出的语句仅供参考。 ,1,1空s 2空-- 3空return 0 ,2,1错 题中为fun(int n) 正确答案 double fun (int n) 2错 题中为c=a;a+=b;b+=c; 正确答案c=a; a+=b; b=c; ,3,for(i = 2 ; i < t; i++) if(t % i==0) break; if(i==t) { xx[j-1] = i; j++;} t++; 68. 编写函数fun,它的功能是求出小于或等于1im的所有素数并放在aa数组中,函数返回所求出的素数的个数。函数fun中给出的语句仅供参考。 ,1,1空a[0][i] 2空< 3空x,y ,2,1错 题中为void fun(int x,int 正确答案void fun(int *x,int*y) 2错 题中为 t=x;x=y;y=t; 正确答案t=*x;*x=*y;*y=t ,3,for(j = 2 ; j <= (i/2) ; j++) if(i % j == 0) break;if(j > (i/2)) aa[k++] = i; 第八类,统计个数类 20. 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asd mklo,字符串为:as,则应输出6 。 ,1,1空[N] 2空len 3空*n=len ,2,1错 题中为t+=1.0/k正确答案t+=1.0 1错 题中为----- 正确答案return t; ,3,int cnt=0;char *p=str,*q; while(*p){q=strstr(p,substr); if(q= =NULL) break;p=q+strlen(substr);cnt++;}return cnt; 22. 请编写函数fun ,他的功能是:求出ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串:123412132,数入字符为:1,则输出:3 。 ,1,1空j++ 2空s[i]=t1[i] 3空j ,2,1错 题中为for(j=i+1,j<6,j++) 正确答案for(j=i+1;j<6;j++) 2错 题中为*(pstr+i)= pstr+j; 正确答案*(pstr+i)=*(pstr+j); ,3,int cnt=0;char *p=ss; while(*p){ if(*p==c) cnt++;p++;} return cnt; 25. 请编写一个函数 void fun(char *tt, int pp [ ] ),统计在tt所指字符串中发’a’到’z’ 26个小写字母各自出现的次数,并依次放在pp所指数组中。 例如,当输入字符串:abcdefgabcdeabc后,程序的输出结果应该是: 3 3 3 2 2 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ,1,1空 1 2空 s[k] 3空 c ,2,1错 题中为long s=0,t=1; 正确答案long s=0,t=0; 2错 题中为t=t%10; 正确答案 t=t/10; ,3,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++ ; } 100. 请编写函数fun,函数的功能是:统计一行字符串中单词的个数,作为函数值返回。一行字符串在主函数中输入,规定所偶单词有小写字母组成,单词由若干个空格隔开,一行的开始没有空格。 ,1,1空filename 2空fp 3空fp ,2,1错 题中为p=(NODE )malloc(sizeof(NODE)); 正确答案p=(NODE*)malloc(sizeof(NODE)); 2错 题中为return p;正确答案return h; ,3,int k = 1 ; while(*s) { if(*s == ' ') k++ ; s++ ;, return k; 98. 请编写函数fun,函数的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。例如,一维数组中的数据是:2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10。删除后,数组中的内容应当是:2 3 4 5 6 7 8 9 10。 ,1,1空 FILE* 2空 fclose(fp) 2空 fp ,2,1错 题中为t=(STU*)calloc(sizeof(STU),m) 正确答案t=(STU*)calloc(sizeof(STU),m); 2错 题中为t(k)=b(j); 正确答案t[k]=b[j]; ,3,int i, j = 1, k = a[0] ; for(i = 1 ; i < n ; i++) if(k != a[i]) { a[j++]=a[i] ; k = a[i] ; 第九类,字符串类 94. 请编写函数fun,函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N), 按顺序合并组成一个新的字符串。函数fun中给出的语句仅供参考。 例如,字符串数组中的M歌字符串为 AAAA BBBBBBB CC 则合并后的字符串的内容应是:AAAABBBBBBBCC。 提示:strcat (a,b)的功能是将字符串b复制到字符串a的串尾上,成为一个新串。 ,1,1空 next 2空 0 3空 r ,2,1错 题中为r=p; 正确答案 r=t; 2错 题中为 if(*r=0) 正确答案if(*r==0) ,3,for(i = 0 ; i < M ; i++) strcat(b, a[i]) ; 96. 请编写函数fun,函数的功能是:移动字符串中的内容,移动的规则如下:把第1到第m个字符,平移到字符串的最后,把第m+1到最后的字符移到字符串的前部。 例如,字符串中原有的内容为:ABCDEFGHIJK,m的值为3,则移动后,字符串中的内容应该是:DEFGHIJKABDC。 ,1, 1空double 2空f 1 3空f 2 ,2, 1错 题中为char fun (char *s,char *t) 正确答案char *fun (char *s,char *t) 2错 题中为(*ss)++;正确答案ss++ ; 3错 题中为(*tt)++;正确答案tt++; ,3,int i; for(i = 0 ; i < m ; i++) fun1(w); 91. 请编写函数fun,函数的功能是:判断字符串是否为回文,若是,函数返回1,主函数中输出:YES,否则返回0,主函数中输出NO。回文是指顺读和倒读都一样的字符串。 例如,字符串LEVEL是回文,而字符串123312就不是回文。 ,1,1空double 2空f 1 3空f 2 ,2,1错 题中为p=h; 正确答案p=h->next; 2错 题中为p=h->next; 正确答案 p=p->next; ,3,int i, j = strlen(str) ; for(i = 0 ; i < j / 2 ; i++) if(str[i] != str[j - i - 1]) return 0 ; return 1 ; 69. 编写一个函数,从num个字符串中找出最长的一个字符串,并通过形参指针max传回该串地址。(注意:主函数中用****作为结束输入的标志,函数fun中给出的语句仅供参考。) ,1,1空[N] 2空i 3空i+1 ,2,1错 题中为aa[i]=m/k; 正确答案aa[i]=m%k 2错 题中为printf(%d”,aa[i]);正确答案printf(“%d”,aa[i-1]) ,3,if(strlen(a[i]) > maxlen) { maxlen = strlen(a[i]) ; k = i;} 70. 请编写一个函数,函数的功能是删除字符串中的所有空格。 例如,主函数中输入”asd af aa z67”,则输出为”asdafaaz67”。 ,1,1空0 2空|| 3空1 ,2,1错 题中为t=1.0-1/i 正确答案t-=1.0/i; 2错 题中为____ 正确答案return t ,3,char *p = str ; int i = 0 ; while(*p) { if(*p != ' ') str[i++] = *p ; p++ ;} str[i] = 0 ; 76.请编写函数fun,其功能是求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。 例如,输出如下整数:876 675 896 101 301 401 980 431 451 777 则输出结果为:6, 980 ,1,1空n++, 2空0 3空s++ ,2,1错 题中为t=s[k] 正确答案t+=s[k], 2错 题中为 *aver=Ave 正确答案*aver=ave; ,3,int i, pos = 0, max = *s ; for(i = 1 ; i < t ; i++) { if(max < *(s + i)) {max = *(s + i) ; pos = i ;}} *k = pos ; 95.请编写函数fun,函数的功能是:移动一维数组中的内容;若数组中有n个整数,要求把下标从0到p(含p,p小于等于n-1)的数组元素平移到数组的最后。 例如,一维数组中的原始内容为:1,2,3,4,5,6,7,8,9,10;p的值为3.移到后,一 ,10,1,2,3,4. 维数组中的内容为:5,6,7,8,9 ,1,填空答案,1空 p->next 2空 q 3空 p->next ,2,1错 题中为while(*s!=’@’) 正确答案while(*s) 2错 题中为(*s)++; 正确答案为s++; ,3,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] ; 18. 编写函数fun,函数的功能是:从s所指的字符串中删除给定的字符。同一字母的大、小写按不同字符处理。 若程序执行使输入字符串为:turbo c ad borlad c++ 如果输入的字符在字符串中不存在,则字符串照原样输出。 ,1,1空k 2空len 3空ss[i][j] ,2,1错题中为result*=- -n; 正确答案result*=(double)n- -; ,3,char *p =s; int i = 0; while(*p) { if(*p !=c ) s[i++] =*p; p++;} 19(请编写函数fun,对长度为7个字符串的字符串,除首、尾字符外,将其余5个字符按ASCII码降序排列。 例如,原来的字符串为CEAedca,排列后输出为CedcEAa. ,1,1空ss[i] 2空n+j 3空1 ,2,1错 题中为if(p==’ ’) 正确答案if (*p==’ ’) 2错 题中为*,p-1,=toupper(*,p-1)) 正确答案*(p-1)=toupper,*,p-1,,, ,3,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;}} 6(请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一字符串。例如,输入beijing shanghai (为回车键),函数将返回shanghai。 ,1,1空next 2空t->data 3空 t ,2,1错fun (char *a)// fun (char a) 2错printf(“%c”,*a);// printf(“%c”*a) ,3,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 ; 54. 编写一个函数fun,它的功能是:实现两个字符串的连接(不适用库函数strcat), 即把p2所指的字符串连接到p1所指的字符串后。 例如,分别输入下面两个字符串: FirstString- - SecondString 程序输出:FirstString- -SecondString ,1,1空0 2空10*x 3空n/10 ,2,1错 题中为t=0正确答案*t=0; 2错 题中为if(%d2==0)正确答案if(d%2!=0) ,3,char *p=p1; while(*p)p++; while(*p2) *p++=*p2++; *p=0; 17. 请编一个函数fun(char *s),函数的功能是把s所指字符串中的内容逆置。 例如:字符串中原有的字符串为:abcdefg, 则调用该函数后,串中的内容为:gfedcba. ,1,1空i+1 2空k=j 3空t ,2, 1错 题中为 viod fun (char str, char ch) 正确答案 void fun (char *str, char ch) 2错 题中为 if (*str= =ch) 正确答案if (*str!=ch) 3错 题中为 str [1]=’0’; 正确答案 str[l]=0; ,3,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 ); 26( 请编写一个函数void fun (chai a[ ] , char b [ ] ,int n ), 其功能是:删除一个字符串中指定下标的字符。其中,a指向原字符串,删除指定字符后的字符串存放在b 所指定数组中,n中存放指定的下标。 例如,输入一个字符串:Word,然后输入3,则调用该函数后的结果为:Woed。 ,1,1空t=i 2空i 3空0 ,2,1错 题中为 while(t>=num) 正确答案while((fabs(t))>=num) 2错 题中为 t=s%n 正确答案t=s/n ,3,strncpy(b, a, n) ; b[n] = 0 ; strcat(b, a + n + 1) ; 第十类,其它 16. 请编写一个函数 unsigned fun ( unsigned w ), w 是一个大于10的无符号整数,若 w 是 n (n?2)位的整数,函数求出w的低 n-1位的数作为函数值返回。 例如:w值为5923,则函数返回923;w值为923 则函数返回23。 ,1,1空tt 2空tt.score[i] 3空std ,2,1 错 题中为m=0; 正确答案m=i; 2 错 题中为if ( a [k] > a [m] ) k=m; 正确答案if ( a [k] > a [m] ) m=k; ,3,if(w>1000) w %=1000; else if( w>1000 ) w %=1000; else if( w>100 ) w %=100; else if( w>10 ) w %=10; return w; 55. 请编写一个函数fun,它的功能是:将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。例如输入字符串“-1234’,则函数把它转换为整数值-1234。函数fun中给出的语句仅供参考。 ,1,1空10 2空0 3空x ,2,1 错 题中为if n==0 正确答案if (n==0) 2错 题中为result*=n-- 正确答案result *= n--, ,3,while(*p) x = x*10-48+(*p++); 57. 请编写一个函数fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。 主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。 ,1,1空1 2空2*I 3空,-1, ,2,1错 题中为k++ 正确答案k++, 2错 题中为if(m=k)正确答案if(m==k) ,3,int i ;*max=a[0];*d = 0 ; for(i = 1; i < n; i++) if(*max < a[i]) { *max = a[i]; *d = i ; } 66. 请编写一个函数fun,函数的功能是使实型数保留2为小数,并对第三位进行四舍五入(规定实型数为正数)。 则函数返回 1234.570000; 例如:实型数为 1234.567 , 实型数为1234.564, 则函数返回 1234.560000。 ,1,1空’0’ 2空s++ 3空ctod(a)+ctod(b) ,2,1错 题中为void 正确答案void fun (char *s,int *a, int*b) 2错 题中为*a=a+1正确答案++(*a) 3错 题中为*b=b+1 正确答++(*b) ,3,long w ; w = h * 100 + 0.5 ; return (float) w / 100 ; 99. 请编写函数fun,函数的功能是:统计各年龄段的人数。N个年龄通过调用随机还是或得,并放在主函数的age数组中;要求函数吧0至29岁年龄段的人数放在d[0]中,把10至19岁年龄段的人数放在d[1]中,把20至29岁年龄段的人数放在d[2]中,其余依次类推,把100岁(含100)以上年龄的人数都放在d[10]中。结果在主函数中输出。 ,1,1空“rb” 2空 > 3空fwrite ,2,1错 题中为s=p; 正确答案p=s ; 2错 题中为while(*p+)正确答案while(*p++) ,3,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]++ ;}
/
本文档为【计算机二级C】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
相关资料
热门搜索
你可能还喜欢

历史搜索

    清空历史搜索