请编一个函数fun
经典C语言编程(20题)
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,它的功能是根据以下公式求∏的值
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 ,它的功能是计算下列级数和,和值由函数值返回。
C语言编程题
编程题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)本题主要考查数组和指针的概念。
2012计算机国二C语言等级考试 题库(内部资料)程序编辑
24. 假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能 是:将字符串的前导*号全部移到字符串的尾部。函数fun中给出的函数 仅供参考。 void fun(char *a) { int i=0,n=0; char *p; p=a; while(*p=='*') { n++; p++; } while(*p) { a[i]=*p; i++; p++; } while(n!=0) { a[i]='*'; i++; n--; } a[i]='\0'; } 25. 请编写函数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;
中‘a’至‘z’26个小写字母各自出现在的次数,并依次放在pp数组中。 void fun(char*tt, int 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++; } } 16 函数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; } 17.. 请编写函数fun,函数的功能是:求出1到1000之间能被7或11整除, 但不能同时被7和11整除的所有整数并将它们放在a所指的数组中,通过 n返回这些数的个数。 #include <stdio. h> viod 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; } 18. 请编写函数fun,函数的功能是:利用一下所示的简单迭代方法求方 程求方程:cos(x)-x=0的一个实根。xn+1=cos(xn)迭代步骤如下:
(加强版)程序设计答案word版
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 列)的转置(即行列互换)。
C语言程序设计题
if((k%13= =0) | | (k%17= =0))
{a=a+k;b++;}
}
Return a;
}
【第3题】题目:产生15个[20,80]上的随机整数:用顺序法(比较法)按从小到大排序输出。
void fun(int a[], int n)
{ int I,j,t;
for(i=0;i<n-1;i++)
int fun(int w)
{
int k,s=0;
do
{s=s+(w%10)*(w%10);
w=w/10;
}while(w!=0);
if(s%5= =0)k=1;
else k=0;
return(k);
}
【第8题】题目:编写函数fun其功能是:求给定正整数n以内的素数之积。(n<28)
long fun(int n)
if(average>a[i]) k++;
return(k);
}
【第13题】题目:用函数将第2个字符串连接到第1个字符串之后,不允许使用strcat函数。
void len_cat(char cl[],char c2[])
{
int i,j;
for(i=0;c1[i]!=’\0’;i++);
for(i=0;c2[i]!=’\0’;i++)
2 3 5 4 9 7 3 1
3 8 10 2 3 8 10 2
9 7 3 1 2 3 5 4
void fun(int pp[3][4])
{int t,n;
for(n=0;n<4;n++)
C语言题库(1-9)
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. 请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度
的函数), 函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。例如,输入:beijing shanghai<CR>(<CR>为回车键),函数将返回shanghai。
填空
t=t->next;
if(*str!=' ') *p++=*str;
*p='\0';
11. 请编一个函数fun(char *s),该函数的功能是把字符串中的内容逆置。例如:字符串中原有的字符串为abcdefg,则调用该函数后,串中的内容为gfedcba。该题的算法是先分别找出字符串的两头,然后同时逐一往中间移动,每移动一次都进行两字符的位置对换,直到中间字符(用s+i<s+n-1-i来控制)。由于s+i中一个地址,因此要注意把它的内容取出再进行换位。
for(;s+i<s+n-1-i;i++)
{ t=*(s+i);*(s+i)=*(s+n-1-i);*(s+n-1-i)=t;}
12. 编写一个函数,该函数可以统计一个长度为2的字符串在另一个字符串中出现的次数。例如,假定输入的字符串为:asd asasdfg asd as zx67 asdmklo,子字符串为as,则应输出6。
else return(s);
4. 请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。
例如,若输入字符串123412132,输入字符1,则输出3。
填空 (1) j++ (2) s[i]=t1[i] (3) j
3月全国计算机等级考试二级C语言上机题库(20~30套)
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函数中输出。
南开100后50题
91.请编写函数fun,其功能是:将两个两位数的正整数a b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。
100.请编写函数fun,其功能是:计算并输出 s=1+(1+2(0.5))+(1+2(0.5)+3(0.5))+...+(1+2(0.5)+3(0.5)+...+n(0.5))
文章出处:DIY部落(/course/comshiti/rank2/c2/cmn/2007520/34602.html)
74.学生的记录由学号和成绩组成N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能时:把分数最低的学生数据放在h所指的数组中,注意:分数最低的学生可能不止一个,函数返回分数最低的学生的人数。
75.请编写函数fun ,该函数的功能:将M行N列的二维数组中的数据,按列的顺学依次放到一维数组中。
78.请编写函数fun,其功能是:将s所指字符串中ASCII值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
79.已知学生的记录由学号和学习成绩构成,N名学生的数据已存入a结构体数组中。请编写函数fun,该函数的功能是:找出成绩最低的学生记录,通过形参返回主函数(规定只有一个最低分)。
80.程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun,该函数的功能是:使数组左下半三角元素中的值乘以n。
81.请编写函数fun,其功能使:将两个两位正整数a b合并形成一个整数放在c中。合并的方式使:将a数的十位和个位数依次放在c数的百位和个位上,b数的十位和个位数依次放在c数的千位和十位上。
模拟程序设计题(附参考答案)
1、请编一个函数fun(char *s),函数的功能是把字符串中的内容逆置。
例如:字符串中原有的内容为:abcdefg,则调用该函数后,串中的内容为:gfedcba。
注意:部分源程序存在考生文件夹下的文件prog.c中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <string.h>#include <conio.h>#include <stdio.h>#define N 81fun(char *s){int i, j;char t;for (i=0,j=strlen(s)-1; i<j; i++,j--){ t=s[i]; s[i]=s[j]; s[j]=t; }}main(){ char a[N];printf("Enter a string: ");gets(a);printf("The original string is: ");puts(a);fun(a);printf("\n");printf("The string after modified: ");puts(a);}2、请编一个函数fun(char *s),函数的功能是把字符串中所有的字符前移一个位置,串中的第一个字符移到最后。
例如:原有的字符串为:Mn.123xyZ,则调用该函数后,串中的内容为:n.123xyZM。
注意:部分源程序存在考生文件夹下的文件prog16.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <conio.h>#include <stdio.h>#include <stdlib.h>#define N 81fun(char *s){int i;char t=s[0];for (i=0; s[i]!='\0'; i++)s[i]=s[i+1];s[--i]=t;}main(){ char a[N];system("cls");printf("Enter a string: ");gets(a);fun(a);printf("The string after modified: ");puts(a);}3、请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。
编程答案
一、编程题:1、程序定义了N×N的二维数组,并在主函数中自动赋值。
请编写函数fun(int a[][N]),函数的功能是:使数组右上半三角元素中的值乘以m。
例如:若m的值为2,a数组中的值为|1 9 7|a= |2 3 8|,则返回主程序后a数组中的值应为|4 5 6||2 18 14||2 6 16||4 5 12|注意:部分源程序存在文件prog.c中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
#include <stdio.h>#include <conio.h>#include <stdlib.h>#define N 5void fun(int a[][N],int m){int i,j ;for(i=0;i<N;i++)for(j=0;j<N;j++)if(j>=i)a[i][j]=a[i][j]*m;}main( ){ int a[N][N],m,i,j;printf("***** The array *****\n");for (i=0;i<N;i++){ for (j=0;j<N;j++){ a[i][j]=rand()%20;printf("%4d",a[i][j]);}printf("\n");}do m=rand()%10;while (m>=3);printf("m=%4d\n",m);fun(a,m);printf("THE RESULT\n");for(i=0;i<N;i++){ for (j=0;j<N;j++) printf("%4d",a[i][j]);printf("\n");}}2、程序定义了N×N的二维数组,并在主函数中自动赋值。
C语言编程(函数)100道题
C语言编程(函数)100道题C10027 1、编写函数fun, 函数的功能是:根据以下公式计算 s,计算结果作为函数值返回;n 通过形参传入。
S = 1 + 1/ (1+2) + 1/ (1+2+3) + …… + 1/ (1+2+3+……+n) float fun ( int n ){ int i ;float s = 0.0 , t = 0.0 ;for ( i = 1 ; i <= n ; i++ ) { t += i ; s += 1 / t ; }return s ;}2、编写函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。
m 与 n 为两个正整数且要求 m > n。
m!P = ?????n!(m-n)!float fun ( int m , int n ){ int i ;float p , t ;for ( t = 1.0 , i = 1 ; i <= m ; i++ ) t *= i ;p = t ;for ( t = 1.0 , i = 1 ; i <= n ; i++ ) t *= i ;p = p / t ;for ( t = 1.0 , i = 1 ; i <= m – n ; i++ ) t *= i ;p = p / t ;return p ;}3、请编写一个函数fun, 它的功能是:根据以下公式求л 的值,(要求满足精度 0.0005,即某项小于 0.0005 时停止迭代):π 1 1×2 1×2×3 1×2×3×4 1×2×…×n? = 1 + ? + ?? + ???? + ????? + …… + ????????2 3 3×5 3×5×7 3×5×7×9 3×5×…×(2n+1) double fun ( double eps ){ int n = 0 ;double t = 1.0 , pi = 0.0 ;while ( t >= eps ){ pi += t ; n++ ; t *= ( double ) n / (2 * n + 1) ; }return pi * 2 ;}4、请编写函数fun, 其功能是:计算并输出下列多项式值:1 1 1 1s = 1 + ?? + ?? + ?? + …… + ??1! 2! 3! n!1double fun ( int n ){ int i ;double t = 1.0 , sn = 1.0 ;for ( i = 1 ; i <= n ; i++ ){ t *= i ; sn += 1 / t ; }return sn ;}5、请编写函数fun,它的功能是:计算并输出下列级数和:1 1 1s = ??? + ??? + …… + ?????1×2 2×3 n×(n+1) double fun ( int n ){ int i ;double s = 0.0 ;for ( i = 1 ; i <= n ; i++ ) s += 1.0 / i / ( i + 1 ) ;return s ;}6、请编写函数fun, 其功能是:计算并输出当 x < 0.97 时下列多项式的值,直到?Sn-(Sn-1)?< 0.000001 为止。
编程答题
65-3请编写一个函数fun,它的功能是:求出一个2×M整型二维数组中最大元素的值,并将此值返回调用函数。
fun (int a[][M]){int max=a[0][0],i,j;for(i=0;i<2;i++)for(j=0;j<M;j++)if(max<a[i][j])max=a[i][j];return max;}26-3请编写函数fun,其功能是:计算并输出3到n之间所有素数的平方根之和。
double fun(int n){inti,j;double s=0;for(i=3;i<=n;i++)//产生3-n之间的所有数{ for(j=2;j<i;j++)//判断i是否为素数if(i%j==0) break;if(i==j) s+=sqrt(i);//为素数时,对其开平方求和}return s;}30-3int fun(intlim,int aa[MAX]){inti,c=0,j;for(i=2;i<=lim;i++){ for(j=2;j<i;j++)if(i%j==0) break;if(i==j) aa[c++]=i;} return c; }36-3请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。
void fun(intm,int *k,int xx[]) {inti,c=0,j;for(i=2;i<=m;i++) { for(j=2;j<i;j++)if(i%j==0) break;if(i>j) xx[c++]=i;}*k=c;}2-3请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.0005,即某项小于0.0005时停止迭代):double fun ( double eps){double s=1,t,fz,fm;inti;fz=fm=1; for(i=1;fz/fm>=eps;i++){fz=fz*i;fm=fm*(2*i+1);t=(double)fz/fm;s+=t;}return 2*s;}47-3编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。
计算机二级C语言编程试题库(100题)
计算机二级C语言编程试题库(100题) work Information Technology Company.2020YEAR2011,2012年上机题 100题库1: 第1题 m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。
答案:int fun(int score[],int m,int below[]){int i,k=0,aver=0;for(i=0;i<m;i++)aver+=score[i];aver/=m;for(i=0;i<m;i++)if(score[i]<aver){below[k]=score[i];k++;}return k;}2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。
答案:void fun(int *a, int *n){int i,j=0;for(i=2;i<1000;i++)if ((i%7==0 || i%11==0) && i%77!=0)a[j++]=i;*n=j;}3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
答案:void fun(int x, int pp[ ], int *n){int i=1,j=0;k=0,*t=pp;for(i=0;i<=x;i++)if(i%2!=0){t[j]=I;j++;}for(i=0;i<j;i++)if(x%t[i]==0){pp[k]=t[i];k++;}*n=k;}4: 第4题请编写一个函数void fun(char *tt,int pp[]),统计在tt字符中"a"到"z"26各字母各自出现的次数,并依次放在pp所指的数组中。
计算机2级
类型一数列规律编程1、编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。
S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n)例如:若n的值为11时,函数的值为1.833333。
#include <stdlib.h>#include <conio.h>#include <stdio.h>#include <string.h>float fun(int n){}void main(){int n;float s;system("CLS");printf("\nPlease enter N: ");scanf("%d",&n);s=fun(n);printf("The result is:%f\n " , s);}【参考答案】float fun(int n){int i,s1=0;float s=0.0;for(i=1;i<=n;i++){s1=s1+i; /*求每一项的分母*/s=s+1.0/s1; /*求多项式的值*/}return s;}【解析】本题中s1用来表示式中每一项的分母,而每一项的分母都是由前一项分母加项数。
注意:由于s1定义成一个整型,所以在s=s+1.0/s1中不能把1.0写成1。
2、请编写一个函数fun,它的功能是:根据以下公式求π的值(要求满足精度0.005,即某项小于0.005时停止迭代)。
π/2=1+1/3+1*2/(3*5)+1*2*3/(3*5*7)+1*2*3*4/(3*5*7*9)+…+1*2*3*…*n/(3*5*7*…*(2n+1)) 程序运行后,如果输入精度0.0005,则程序输出3.14…。
#include <stdio.h>#include <conio.h>#include <math.h>double fun(double eps){}void main(){double x;printf("Input eps: ");scanf("%lf",&x);printf("\neps=%1f,PI=%1f\n",x,fun(x));}【参考答案】double fun(double eps){double s=1.0,s1=1.0;int n=1;while(s1>=eps) /*当某项大于精度要求时,继续求下一项*/{s1=s1*n/(2*n+1); /*求多项式的每一项*/s=s+s1; /*求和*/n++;}return 2*s;}【解析】从第2项开始以后的每一项都是其前面一项乘以n/(2*n+1),程序中用s1来表示每一项,s来表示求和后的结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
请编一个函数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数组中原有的数据,和删除后的数据。
考生可以对照所编函数是否正确。