请编一个函数fun
- 格式:doc
- 大小:23.00 KB
- 文档页数:2
1.请编写一个函数fun,其功能是:删除字符串中的数字字符。
例如,输入字符串为:48CTYP9R6,则输出:CTYPR。
部分源程序已经给出,请勿改动主函数的内容。
main(){ char item[100];gtes(item);fun(item);printf(“The string:%s\n”,item);}解答:#include<stdio.h>#include<string.h>void fun(char s[]){int i,j;for(i=j=0;s[i]!='\0';i++)if(s[i]>='0' && s[i]<='9') i++;elses[j++]=s[i]; s[j]='\0';}main(){ char item[100];gets(item);fun(item);printf("The string:%s\n",item); }2. 从键盘上读入一字符串存入字符数组xx中,请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应位置上,最后调用函数WriteDat()将结果xx输出。
替代关系如下:f(p)=p*11%256其中,p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符的ASCII值是偶数或计算后f(p)值小于32,则该字符不变,否则用f(p)所对应的字符进行替代。
设字符串的长度小于80个字符,部分源程序已给出。
除增加必要的数据定义、函数参数外,请勿改动主函数的内容。
#include <stdio.h>main(){ char xx[80];gets(xx);encryptChar();WriteDat();}解答:#include<stdio.h>#include<string.h>void encryptChar(char a[]) {int i,j;for(i=j=0;a[i]!='\0';i++) if(a[i]%2==0 ||(a[i]*11%256<32))a[j++]=a[i];elsea[j++]=a[i]*11%256; } WriteDat(char a[]) {puts(a);}main(){ char xx[80];gets(xx);encryptChar(xx); WriteDat(xx);} _3. 设有数组:int a[10]={6012,5099,9012,7025,8088,9096,8080,3046,5082,2345};请编制函数jssort(),其功能是:要求按每个数的后三位的大小进行升序排序,然后调用函数WriteDat()将结果输出。
1. 请编写一个函数fun ,它的功能是:根据以下公式求∏的值(要求满足精度0.0005,即 某项小于O .0005时停止迭代):程序运行后,如果输入精度O .0005,则程序输出为3.14…。
)12(...753...321 (97534)32175332153213112+⨯⨯⨯⨯⨯⨯⨯⨯++⨯⨯⨯⨯⨯⨯+⨯⨯⨯⨯+⨯⨯++=n nπ#include <stdio.h>#include <math.h>double fun ( double eps){}main( ){ double x;printf("Input eps:") ;scanf("%lf",&x);printf("\neps = %lf, PI=%lf\n", x, fun(x));}2.请编写一个函数fun ,它的功能是:计算并输出给定整数n 的所有因子(不包括l 与自身)之和。
规定n 的值不大于1000。
例如,若主函数从键盘给n 输入的值为856,则输出为sum=763。
#include <stdio.h>int fun(int n){ }main(){ int n,sum;printf("input n: ");scanf("%d",&n);sum=fun(n);printf("sum=%d\n",sum);}3.请编写函数fun ,其功能是:计算并输出下列多项式值:)21121(...)4131()211(nn S n --++-+-= 例如,若主函数从键盘给n 输入8后,则输出为S=O .662872。
注意:n 的值要求大于l 但不大于100。
部分源程序给出如下。
#include <stdio.h>double fun(int n){ }main(){ int n; double s;printf("\ninput n: ");scanf("%d",&n);s=fun(n);printf("\ns=%f\n",s);}4.请编写函数fun ,它的功能是计算下列级数和,和值由函数值返回。
编程题1.请编写函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。
例如,若有5门课程的成绩是90.5、72、80、61.5、55,则函数的值为:71.80。
注意:部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>float fun(float *a,int n){}main(){float score[30]={90.5,72,80,61.5,55},aver;aver=fun(score,5);printf("Average score is:%5.2f\n",aver);}【答案与解析】(1)本题主要考查求累加和的运算。
仔细阅读题目和程序以及所给函数头floatfun(float *a,int n),得知是对a数组中的n个数求平均值,首先要计算其和值再除n,即可。
(2)按上述分析写出的函数是:float fun(float *a,int n){float s=0.0;int i;for(i=0; i<n; i++)s+=a[i];return s/n;}2.请编写函数fun,它的功能是:将M行N列的二维数组中的字符数据,按列的顺序依次放到一个字符串中。
例如,二维数组中的数据为:W W W WS S S SH H H H则字符串中的内容应是:WSHWSHWSH。
注意:部分源程序已给出。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
#include <stdio.h>#define M 3#define N 4voidfun(char(*s)[N], char *b){}main(){char a[100],w[M][N]={{'W','W','W','W'},{'S','S','S','S'},{'H','H','H','H'}};int i,j;printf("The matrix:\n");for(i=0;i<M;i++){for(j=0;j<N;j++)printf("%3c",w[i][j]);printf("\n");}fun(w,a);printf("The A string:\n");puts(a);printf("\n\n");}【答案与解析】(1)本题主要考查数组和指针的概念。
1.1题目:请编写函数fun,该函数的功能是: 将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串。
例如: 若字符串数组中的M个字符串为{AAAA",“BBBBBB","CC"则合并后的字符串内容应该是“AAABBBBBBCC"注意: 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语可。
int i,j, k=0;for (i=0;i<M;i++)for (j=0;a[i][j]!=’\0’;j++)b[k++]=a[i][j];b[k]=’\0’;1.2题目:题目: 请编写fun函数程序,从键盘输入某一年,判断该年是否为闰年。
闰年的条件是: (1) 能被4整除但不能被100整除。
(2) 能被400整除。
符合任何一个条件就是闰年。
输入年份为整型if ((year%4==0&&year%100!=0)||year%400==0)return 1;elsereturn 0;1.3题目:(待议)题目: 编写函数fun; 其功能是: 根据以下公式求的值,结果由函数值带回。
m与n为两个正整数且要求m>n.如“样张”。
P=m!/n!(m-n)!)例如: m=12,n=8时,运行结果为495 000000注意请勿改动主函数main和其他函数中的任何内容。
仅在函数fun的花括号中填入你编写的若干语句。
(参考百度)float p ;p=1.0*jc(m)/jc(n)/jc(m-n);return p;2.1功能: 对长度为8个字符的字符串,将8个字符按降序排列。
例如: 原来的字符串为CEAedcab,排序后输出为edcbaECAint i,j;char t;for(i=0;i<mum; i++)for (j=i+1;j<num;j++)if(s[i]<s[j]){t=s[i];s[i]=s[j];s[j]=t;}2.2编写程序,实现矩阵(3 行、3 列)的转置(即行列互换)。
1、程序填空题目:请编写函数void fun (int x, int pp[ ], int *n),它的功能是求出能整除x 且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如:若x中的值为30,则有4个数符合要求,它们是1,3,5,15。
#include <stdio.h>#include <conio.h>void fun(int x, int pp[], int *n){ int i,j=0;for( i=1;i<=x; i=i+2)if(x%i == 0)pp[j++]=i;*n=j;}void main(){ int x, aa[1000], n, i;printf("\nplease enter an integer number:\n");scanf("%d",&x);fun(x,aa,&n);for(i=0;i<n;i++)printf("%d ", aa[i]);printf("\n");}2、程序填空题目:请编写一个函数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#include<stdio.h>#include<conio.h>void fun(char *tt,int pp[]){ int i;for(i=0; i<26; i++)pp[i]=0;for( ; *tt; tt++)if(*tt<='z'&&*tt>='a')pp[*tt-97]++;}void main(){ char aa[1000];int bb[26],k;printf("\nPlease enter a char string:");scanf("%s",aa);fun(aa,bb);for(k=0; k<26; k++) printf("%d",bb[k]);printf("\n");}3、程序填空题目:请编写一函数void fun(int m, int k, int xx[ ]),该函数的功能是:将大于整数m且紧靠m的k个素数存入xx所指的数组中。
3月全国计算机等级考试二级C语言上机题库(20~30套)3月全国计算机等级考试二级C语言上机题库(20~30套)考试频道小编收集整理计算机等级考试资料,免费提供给大家交流参考。
第二十一套1. 程序填空给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串右边的字符删去,只保留左边的k个字符。
ss所指字符串数组中共有N个字符串,且串小于M。
第一处void fun(char (*ss)[M], int k)第二处while (i第三处ss[i][k]=0;i++;}2. 程序修改给定程序MODI1.C中函数fun的功能是:根据以下公式求值,并作为函数值返回。
例如,给指定精度的变量eps输入0.0005时,应当输出Pi=30140578.。
/**found**/t=1;/**found**/return(2*s);3. 程序设计假定输入字符串中只包含字母和*号。
请编写函数fun,它的功能是:将字符串的前导*号不得多于n个;若多于n个,则删除多余的*号;若少于或等于n个,则什么也不做,字符串中间和尾部的*号不删除。
函数fun中给出的语句仅供参考。
void fun(char*a,int n){int i=0,k=0;while(a[k]= =*)k++;if(kn){i=n;j=k;for(;a[j]!=0;j++)a[i++]=a[j];a[i]=0;}}第二十二套1. 程序填空给定程序中,函数fun的功能是:a所指43矩阵中第k行的元素与第0行元素交换。
例如:有下列矩阵1 2 34 5 67 8 910 11 12若k为2,程序执行结果为7 8 94 5 61 2 310 11 12第一处void fun(int (*a)[N],int k)第二处for(i=0;i第三处a[0][i]=a[k][i];2. 程序修改给定程序MODI1.C中函数fun的功能是:读入一个字符串(长度20),将该字符串中的所有字符串按ASCII码升序排序后输出。
1、功能:编写函数fun对主程序中用户输入的具有10个数据的数组a按由大到小排序,并在主程序中输出排序结果。
/**********Program**********/int k,j,t;for (k=0;k<n-1;k++)for (j=k+1;j<n;j++)if (array[k]<array[j]){t=array[k];array[k]=array[j];array[j]=t;}/********** End **********/ 2、功能:从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的结论信息。
例如:7是素数,8不是素数。
请编写fun函数。
素数是仅能被1和自身整除的数/**********Program**********/ int i ,j=1;for(i=2;i<n;i++){if(n%i==0)j=0;}return(j);/********** End **********/3、功能:从字符串s中删除指定的字符c。
/**********Program**********/int i,k=0;for(i=0;s[i]!='\0';i++) if(s[i]!=c) s[k++]=s[i]; s[k]='\0'; /********** End **********/4、功能:求n阶方阵主、副对角线上的元素之积。
/**********Program**********/int i,j;float t=1;for(i=0;i<N;i++)for(j=0;j<N;j++)if(i==j||i+j==N-1)t=t*arr[i][j];return(t);/********** End **********/ 5、题目:用while语句求1~100的累计和。
/**********Program**********/ int i=1,sum=0;while(i<=n){sum=sum+i;i++;}return sum;/********** End **********/ 6、功能:从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main函数中输出。
请编一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即,某项小于0.0005时停止迭代):
程序运行后,如果输入精度0.0005,则程序输出多少。
注意:部分源程序存在PROG1.C中,请勿改动主函数和其他函数中的内容,仅在函数fun的指定的部位填入你编写的若干语句。
试题源程序如下:
#include <stdio.h>
#include <math.h>
double fun(double eps)
{
}
main()
{ double x;
printf("Input eps:");
scanf("%lf",&x); printf("\neps=%lf, PI=%lf\n",x,fun(x));
}
分析:
(1)本题所用基本算法应为累加。
假设累加值放在变量s中,累加项放在变量t中,累加操作由语句s=s+t;来实现。
(2)若称为第1累加项,则其前的1为第0累加项,其后的一项为第2累加项,按给定的公式可知,从第1累加项开始,后一项的累加项是前一项的值乘以。
所以当前的累加项应当是:t=t*n/(2.0*n+1.0)。
表达式右边的t中是前一项的值,表达式左边的t为当前的每累加累加项。
请注意,不要写成:t*n/(2*n+1)而进行整除。
(3)若第0累加项的1作为s的初值,语句:s=s+t;执行n次,就把第1到第n项累加到了s中。
每进行一次累加,n值增1。
(4)把以上操作放在循环中。
按本题规定,当某项小于eps(0.0005)时停止迭代,因此若用while循环,可用t>=eps作为控制循环进行的条件:while( t>=eps ){ s+=t; n++; t=t*n/(2.0*n+1); }
(5)注意应给所用变量赋适当的初值。
(6)退出循环后,函数的返回值应是:2*s。
请编一个函数fun,其中n所指存储单元中存放了数组中元素的个数。
函数的功能是:删除所有值为y的元素。
已在主函数中给数组元素赋值,y的值由主函数通过键盘读入。
注意:部分源程序存在PROG1.C中,请勿改动主函数和其他函数中的内容,仅在函数fun的指定的部位填入你编写的若干语句。
试题源程序如下:
#include <stdio.h>
#define M 20
void fun(int bb[],int *n, int y)
{
}
main()
{ int aa[M]={1,2,3,3,2,1,1,2,3,4,5,4,3,2,1}, n=15, y, k;
printf("The original data is: \n");
for(k=0; k<n; k++ ) printf("=",aa[k]);
printf("\nEnter a number to deleted: "); scanf("%d",&y);
fun(aa, &n, y);
printf("The data after deleted %d: \n",y);
for(k=0; k<n; k++ ) printf("=",aa[k]);
printf("\n\n");
}
分析:
(1)本题的基本算法是查找和删除。
(2)若循环控制变量是i,通过for循环逐个检查元素中的值,把数组元素中不等于y的值从头开始重新放入bb所指的数组中。
用i作为下标,逐个引用数组元素;用i作为下标,把不等于y的元素中的值逐一重新放入bb所指的数组中。
这一操作可用以下语句来实现:
if(bb[i]!=y)bb[j++]=bb[i];
(3)因为已删除了与y值相等的元素,因此,数组中数据的个数已经改变;所以循环结束后,需要重新给n所指变量赋值。
退出循环后,变量j中存放的是删除后数组中数据的个数,通过语句*n=j;把它赋给n所指变量即可。
(4)主函数中输出aa数组中原有的数据,和删除后的数据。
考生可以对照所编函数是否正确。