请编一个函数fun

合集下载

经典C语言编程(20题)

经典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,它的功能是根据以下公式求∏的值

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语言编程题

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语言等级考试 题库(内部资料)程序编辑

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版

(加强版)程序设计答案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语言程序设计题

C语言程序设计题
{k--;
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)

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
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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数组中原有的数据,和删除后的数据。

考生可以对照所编函数是否正确。

相关文档
最新文档