请编写函数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)本题主要考查数组和指针的概念。
(加强版)程序设计答案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语言程序设计(第四版 谭洪强)实验7 答案
实验七 参考答案(参考答案)(1) (sy7-1.c )请编写函数fun ,它的功能是:计算并输出n (包括n )以内能被5 或9 整除的所有自然数的倒数之和。
例如,若主函数从键盘给n 输入20后,则输出为s=0.583333。
注意:n 的值要求不大于100。
算法分析:使用for 循环i ,遍历n 包含n 以内的所有整数,逐一判断每个i ,是否满足条件(能被5 或9 整除),如果满足,则把它的倒数累加到累加器里。
注意:i 的倒数要表示成:1.0/i;参考子函数如下:double fun(int n){double sum=0;int i;for(i=5;i<=n;i++)if(i%5==0||i%9==0)sum=sum+1.0/i;return sum;}(2) (sy7-2.c ) 请编写函数fun ,其功能是:根据以下公式计算s ,并计算结果作为函数值返回,n 通过形参传入。
n s ⋯++++⋯++++++=321132112111例如:若n 的值为11时,函数的值为1.83333算法分析:等式右边从第二项(i=2)开始,其分母等于前一项的分母加上i ;一共有n 项;求出每项的分母,然后把每项进行累加。
参考子函数如下:float fun(int n){float sum=1; //sum 中已经累加了第一项的值int i,m=1; //m 表示每项的分母;for(i=2;i<=n;i++){ m=m+i;sum=sum+1.0/m;}return sum;}(3) (sy7-3.c)请编写函数fun,其功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。
合并的方式是:将 a 数的十位和个位依次放在c 数的十位和千位上,b 数的十位和个位数依次放在c 数的个位和百位上。
例如,当a=45,b=12,调用该函数后,c=5241。
算法分析:对一个两位数n,它的各位可以通过n%10求的,它的十位数可以通过n/10求的;所以分别用上述方法求的a和b的个位和十位,同时按照要求累加到c里。
C语言编程题
}STU;
fun(STU a[],STU *s)
{
int i;
*s=a[0];
for(i=0;i<N;i++)/*找出成绩最高的学生记录*/
if(s->s<a[i].s)
*s=a[i];
}
main()
{ STU a[N]={{"A01",81},{"A02",89},
int I, j;
system("cls");
fun(a,t);
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%7d",t[i][j]);
printf("\n");
}
}
3.程序设计题
请编写一个函数void fun(char orig[],char result[],int flg),其功能是:删除一个字符串中指定下标的字符。其中,orig指向原字符串,删除后的字符串存放在result所指的数组中,flg中存放指定的下标。
int I,j,n;
double ave;
ave=fun(s,h,&n);
printf("The %d student data which is
lower than %7.3f:\n ", n,ave);
for(i=0;i<n;i++)
/*输出成绩低于平均值的学生记录*/
注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
计算机二级C语言操作题高频考卷(四)
一、程序填空题1 [填空题]函数fun的功熊是:输出a所指数组中的前a个数据,要求每行输出5个数。
请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。
注意:源程序存放在考生文件夹下的BLANK1.C中。
不得增行或删行,也不得更改程序的结构!试题程序:参考解析:【参考答案】【解题思路】填空1:每行输出5个数,即当下标值能整除5时换行。
填空2:输出换行符'\n'。
填空3:输出数组元素。
二、程序修改题2 [简答题]下列给定程序中,函数fun的功能是:将s所指字符串中最后一次出现的与t1所指字符串相同的子串替换成t2所指字符串,所形成的新串放在W所指的数组中。
要求t1和t2所指字符串的长度相同。
例如,当s所指字符串中的内容为“abcdabfabc”,t1所指串中的内容为“ab”,t2所指子串中的内容为“99”时,结果在W所指的数组中的内容应为“abcdabf99c”。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:参考解析:【参考答案】【解题思路】(1)此处要判断的是值的真假,而不是地址,所以改为while( * w)。
(2)c语言中关键字区分大小写,只需运行程序,就可以根据错误提示找到。
三. 程序设计题3 [简答题]请编写函数fun,其功能是:判断t所指字符串中的字母是否由连续递增字母序列组成(字符串长度大于等于2)。
例如字符串:uvwxyz满足要求;而字符串:uvxwyz不满足要求。
注意:部分源程序存放在PROG1.C中,请勿改动主函数main和其他函数中的任何内容,仅在函数fun指定的部位填入所编写的若干语句。
试题程序:参考解析:【参考答案】【解题思路】函数fun的功能是判断指针t指向的字符串是否是由连续递增的字母构成,返回值为整数,0代表不满足条件。
根据题目要求,字符串长度必须大于等于2,所以首先需要对t指向的字符串进行长度判断,小于2的字符串返回0。
c语言编程题目大全
1、请编写函数fun,函数的功能是: 移动字符串中的内容,移动的规则如下: 把第1到第m个字符, 平移到字符串的最后, 把第m+1到最后的字符移到字符串的前部。
例如, 字符串中原有的内容为: ABCDEFGHIJK, m的值为3, 则移动后, 字符串中的内容应该是: DEFGHIJKABC。
{ char a[N];int i;for(i=0;i<m;i++) a[i]=w[i];while(w[i]) { w[i-m]=w[i]; i++;}i--;m--;for(;m>=0;m--,i--) w[i]=a[m];}2、编写函数fun,它的功能是:计算并输出下列级数和:1 1 1S = ── + ── + … + ───1×2 2×3 n(n+1)例如,当n = 10时,函数值为:0.909091。
{int i;double s;for(i=1;i<=n;i++){ s+=1.0/(i*(i+1));}return s;}3、假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:除了尾部的*号之外,将字符串中其它*号全部删除。
形参p已指向字符串中最后的一个字母。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:ABCDEFG*******。
{ char *q;while(a<p)if(*a=='*'){ for(q=a;*q;q++)*q=*(q+1);p--;}else a++;}4、函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。
合并的方式是:将a中的十位和个位数依次放在变量c的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。
例如,当a=45,b=12。
调用该函数后,c=1425。
{*c=a/10*100+a%10+b/10*1000+b%10*10;}5、某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出。
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码升序排序后输出。
计算机二级C上机考试题库3
填空:k N a[k][i]
改错:for( i = strlen( t )-1; i; i-- )
if(t[j]>t[j+1])
21.请编写—个函数void fun(char *ss),下标奇数位置子母改大写
c
填空:NULL n head,ch
改错:for (i = 0,t = 0; p[i] ; i++)
删除串中所有*号
i
填空:1 j++j
改错:t=a;a=b;b=t;
return(b);
13.
删除串尾*号
填空:N i -1
改错:a2=k/10;
return i;
14.
除前导*外其他删除*
填空:N k ss[i]
改错:int k=0;
while( *p || *q )
15.
删除前导和尾部*
填空:N substr 0
改错:double fun(double a, double x0)
if( fabs(x1-x0)>0.00001 )
54.
分数最低学生数据放在b所指数组
填空:struct student a.score[i]
改错:if(p==n) return -1;
a[i]=a[i+1];
55.找出成绩最低学生纪录
改错:int fun(int a[],int m)
else if(m > a[mid])
11.请编写函数fun,它的功能是:除了字符串前导和尾部的*号之外,将串中其他*号全部删除。
只删除中间*号
int j=0; char *q=a;
while(*q && q < h) a[j++] = *q++ ;
C语言编程题及答案09303
C语言编程题及答案093031请编写函数fun,其功能就是:找出2×M 整型二维数组中最大元素的值,并将此值返回调用函数。
int fun (int a[ ][M]){int i,j,max =a[0][0];for(i =0;i<2;i ++)for(j =0;j<="">if(max<a[i][j])< p="">max =a[i][j];return max;}2编写函数fun,其功能就是:根据以下公式求π的值(要求精度0、0005,即某项小于0、0005时停止迭代)。
()112123123412335357357123521nn π=++++?????+………… 程序运行后,若输入精度0、0005,则程序应输出为3、14…。
double fun( double eps){double s=1、0,s1=1、0;int n=1;while(s1>=eps) /*当某项大于精度要求时,继续求下一项*/{ s1=s1]s=s+s1; /*求与*/n++;}return 2]3编写函数fun,其功能就是:求出1到1000之间能被7或11整除,但不能同时被7与11整除的所有整数,并将其放在a 所指的数组中,通过n返回这些数的个数。
void fun(int *a,int *n){int i,j=0;for(i=1;i<=1000;i++) /*求1到1000之内能被7或11整除但不能同时被7与11整除的所有整数,并放入数组a中*/if((i%7==0||i%11==0)&&i%77!=0)a[j++]=i;*n=j; /*传回满足条件的数的个数*/}4规定输入的字符串中只包含字母与*号。
编写函数fun,其功能就是:删除字符串中所有的*号。
编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G*******,删除后字符串中的内容应当就是:ABCDEFG。
南开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、程序定义了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++练习题
1[简答题]学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中,请编写函数fun,其功能是:把分数最高的学生数据放在b所指的数组中。
注意:分数最高的学生可能不止一个,函数返回分数最高的学生人数。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句.试题程序:参考解析:【参考答案】【考点分析】本题考查:结构体数组操作;用循环判断结构查找数组中的最大值。
【解题思路】该程序使用两个循环判断语句,第1个循环判断语句的作用是找出最大值;第2个循环判断语句的作用是找出与max相等的成绩(即最高成绩)的学生记录,并存入b中.【解题宝典】’对于如何找出数组中最大值(多个相等)的方法,我们已经不陌生。
如何对结构体数组进行类似操作呢?掌握以下语句:2[单选题]下列定义数组的语句中,正确的是()。
参考答案:A参考解析:数组说明的一般形式为:类型说明符数组名[常量表达式]。
B选项中N是变量,不能用变量定义数组长度。
c选项中数组长度是非法的一串数字。
定义数组时必须为其指明长度,D选项中数组长度为空,所以非法。
3[单选题] 若有以下程序段则以下选项中值为6的表达式是A。
P-〉nB.(*p)。
nC.p—>n++D。
++(P—〉n)参考答案:D参考解析:本题考查结构体变量的引用,其中a为定义的结构体数组,D选项中P->n为5,++(P—〉11)为6,所以D选项正确.4[单选题]有以下程序程序运行后的输出结果是A。
4B.8C.9D。
6参考答案:B参考解析:本题考查宏定义,宏定义只是做个简单的替换,执行N UM=(N+l+1)*N+1/2=8,选项B正确。
5[单选题] 有以下程序程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是A.a.aB。
*P。
aC。
P—〉aD.(*p).a参考答案:B参考解析:本题考查结构体变量的引用,题目中要求输出结构体中成员a的数据,P为指针,* P为结构体变量,那么*P.a可以表示为结构体中成员a的数据。
计算机省二程序设计
程序设计【第1题】题目:请编写函数fun,对长度为7的字符串,除首、尾字符外,将其余5个字符按将序排列。
例如,雨来的字符串为CEAedca,排序后输出为CedcEAa。
Int fun(char *s,int num){Int i,j;chat t;for(i=1;i<num-1;i++)for(j=i+1;j<num-1;j++)if(s[i]<s[j]){ t=s[i];s[i]=s[j];s[j]=t;}}【第2题】题目:编写函数fun,其功能是:计算出k以内最大的10个能被13或17整除的自然数之和。
(k (3000)。
Int fun(int k){int a=0,b=0,j;while((k>=2)&&(b<10)){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++)for(j=i+1;j<n;j++)if(a[i]>[j]){t=a[i];a[i]=a[j];a[j]=t; }}【第4题】题目:请编写函数fun,它的功能是:判断m是否为素数。
主函数的功能是:求出100到200之间的素数的个数。
int fun(int m){int i,j;int k=1;if(m<=1) k=0;for(i=2;i<m;i++)if(m%i=0) k=0return k;}【第5题】题目:编写函fun,求一个字符串的长度,在main函数中输入字符串,并输出其长度。
int fun(char *pl){char *p;int n=0;p=pl;while(*p++) n++;rerurn n;}【第6题】题目;给定n个数据,求最大值出现的位置(如果最大值出现多次,求出第一次出现的位置即可)。
第1套上机题一、程序填空题下列给...
11机试重要二级 C_第1套上机题一、程序填空题下列给定程序中,函数fun的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标,作为函数值返回,并把其串长放在形参n所指的变量中。
ss所指字符串数组中共有M个字符串,且串长小于N。
请在下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。
注意:部分源程序在文件BLANK1.C中。
不得增行或删行,也不得更改程序的结构!【参考答案】(1) M (2) < (3) k二、程序修改题下列给定程序中函数fun的功能是:将tt所指字符串中的小写字母全部改为对应的大写字母,其它字符不变。
例如,若输入"Ab,cD",则输出"AB,CD"。
请改正程序中的错误,使它能得出正确的结果。
注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构!【参考答案】(1)if(( tt[i]>='a')&&( tt[i] <= 'z'))(2)tt[i]-=32;三、程序设计题编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx 所指数组中,非素数的个数通过k返回。
例如,若输入17,则应输出:4 6 8 9 10 12 14 15 16。
注意:部分源程序在文件PROG1.C中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
【参考答案】void fun( int m, int *k, int xx[] ){int i,j,n=0;for(i=4;i<m;i++)/*找出大于1小于整数m的非素数*/{ for(j=2;j<i;j++)if(i%j==0) break;if(j<i) xx[n++]=i;}*k=n;/*返回非素数的个数*/}二级 C_第2套上机题一、程序填空题函数fun的功能是:统计所有小于等于n(n>2)的素数的个数,素数的个数作为函数值返回。
程序题
程序设计【1 - 1】标记:假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是: 除了字符串前导和尾部的*号之外, 将串中其他*号全部删除。
形参h已指向字符串中第一个字母,形参p已指向字符串中最后一个字母。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G********,删除后,字符串中的内容应当是:****ABCDEFG********。
在编写函数时,不得使用C语言提供的字符串函数。
注意: 部分源程序在文件PROG1.C文件中。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
评析:试题分析:解本题可分以下三个步骤进行:①由于“形参h已指向字符串中第一个字母”,因此可先用while循环将该字符串的前导*(第一个字母之前的所有*)复制到数组a[] 中;②又由于“形参p已指向字符串中最后一个字母”,所以可以用while循环判断字符串第一个字母至最后一个字母之间(包括第一个字母和最后一个字母)的字符是否为“*”:若不是“*”,就将其复制到数组a[] 中;若是“*”,就什么也不做;③将字符串尾部的*号复制到数组a[] 中;最后在数组a[] 的末尾加上‘\0’即可;注意:以上过程中要用变量控制数组a[] 中各元素索引的变化;本题参考程序段如下:void fun(char *a,char *h,char *p){ int i=0;char *q=a;while(q<h){ a[i]=*q;q++;i++; }while(q<=p){if(*q!='*'){ a[i]=*q;i++;}q++;}while(*q){a[i]=*q;i++;q++;}a[i]='\0';}【2 - 2】标记:学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。
程序设计
题目:编写函数fun求1!+2!+3!+ ……+n!的和,在main函数中由键盘输入n值,并输出运算结果。
请编写fun函数。
例如:若n值为20,则结果为268040729。
--------------------------------------------------注意:部分源程序给出如下。
请勿改动主函数main和其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
------------------------------------------------*/#include<stdio.h>long fun(int n){/**********Program**********/int i;long f=1,s=0;for(i=1;i<=n;i++){f=f*i;s=s+f;}return s;/********** End **********/}main(){ int i,n;long int result;scanf("%d",&n);result=fun(n);printf("%ld\n",result);yzj();}yzj(){FILE *IN,*OUT;int i;int iIN;long int iOUT;IN=fopen("1.in","r");if(IN==NULL){printf("Please Verify The Currernt Dir..It May Be Changed");}OUT=fopen("1.out","w");if(OUT==NULL){printf("Please Verify The Current Dir.. It May Be Changed");} for(i=0;i<10;i++){ fscanf(IN,"%d",&iIN);iOUT=fun(iIN);fprintf(OUT,"%ld\n",iOUT);}fclose(IN);fclose(OUT);}题目:调用函数fun判断一个三位数是否"水仙花数"。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
计算机二级C语言上机真题(96)【附详解】作者:admin 发布时间:2012-02-08 15:29 来源:C语言中文网人围观分享到:QQ空间新浪微博人人网腾讯微博豆瓣12【真题1】下列给定程序中,函数fun()的功能是:求整数x 的y 次方的低3 位值。
例如,整数5 的6 次方为15625,此值的低3 位值为625。
试题程序:___1__< stdio.h >long fun(int x, int y, long *p){ int i;long t=1;for(i=1;__2__;i++)t=t*x;*p=t;__3___;return t;}main(){ long t, r; int x, y;printf("\nInput x and y: "); scanf("%1d%1d",&x,&y);t=fun(x,y,&r);printf("\n\nx=%d, y=%d,r=%ld, last=%ld\n\n ",x, y,r,t);}(2011年2月)解析:填空1:由C语言的学习我们知道这里是一个头文件的定义,定义头文件要用关键字include,而且要用"#"开头。
填空2:这里考查的是循环结束判断语句。
由题意知,这个循环是计算x的y次幂的,而i从1 开始,要计算y次,当然就要让i自加y次,于是这里用"< =",而不是"< " 。
填空3:题目的意思是求幂的最后3 位数字,而求一个十进制数的后几位的最常用的办法莫过于使用对其取余的操作。
答案:【1】#include 【2】i< =y 【3】t=t%1000;【真题2】给定程序modi.c 中函数fun 的功能是:求广义菲玻那级数的第n 项。
1,1,1,3,5,9,17,31,……项值通过函数值返回main( )函数。
例如,若n = 15,则应输出:2209。
请改正函数fun 中的语法错误,使它能计算出正确的结果。
注意:不要改动main 函数,#include < conio.h >#include < stdio.h >long fun ( int n ){ long a=1, b=1, c=1, d=1, k;/************found************/for (k=4,k< =n,k++){ d = a+b+c;/************found************/a=b,b=c,c=d}return d;}main( ){ int n = 15;clrscr( );printf( "The value is: %ld\n", fun ( n ) );}(2011年2月)解析:本题的考核点是C语言的一些基本用法。
"for(k=4,k< =n,k++) "应改为"for(k=4;k< =n;k++) "。
C 语言规定:每个语句和数据定义的最后必须有一个分号。
分号是C语句的必要组成部分。
因此,"a=b,b=c,c=d "应改为"a=b;b=c;c=d;"或相同作用的语句。
【真题3】编写函数fun,它的功能是:求Fibonacci 数列中大于s的最小的一个数,结果由函数返回。
其中Fibonacci 数列F(n)的定义为:F(0)=0,F(1)=1F(n)=F(n-1)+F(n-2) 例如:当s = 1000 时,函数值为:1597。
注意:部分源程序存在文件prog.c 中。
请勿改动主函数main 和其它函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。
#include < conio.h >#include < math.h >#include < stdio.h >int fun( int s){……}main() /* 主函数*/{ int n;clrscr(); n=1000;printf("n = %d, f = %d\n",n, fun(n)); }(2011年2月)解析:本题的考核点是循环语句的应用。
提示思路:在Fibonacci 数列中,每一项的值都是前两项之和。
设置一个中间变量f2,用来置放推出的最小数,所以可以用递推法求出大于s 的最小的一个数。
/*Fibonacci 数列是这么一个数列0,1,1,2,3,5,8,13……从它的第三项开始每一项的值都是其紧接着的前两项的和。
本也是采用函数的嵌套调用来完成,但若用嵌套调用方式会较难理解。
它要求求出比s 大的最小一个数。
在本题的编程中采用的是while(f2< =s)当它的条件这假时,即得到了第一个比t大的数。
*/int fun (int s){int f1=0,f2=1,temp;while(f2< =s){ temp=f2;f2=f1+f2;f1=temp; }return f2;}<br />本文来自【C语言中文网】:<a href="/cpp/html/630.html" target="_blank">/cpp/html/630.html</a>请编写函数fun,其功能是:计算并输出S=1+(1+2^0.5)+(1+2^0.5+3^0.5)+……+(1+2^0.5+3^0.5+……+n^0.5)例如,在主函数中从键盘给n 输入20 后,输出为:s=534.188884。
注意:要求n 的值大于1 但不大于100。
部分源程序在文件prog.c中。
请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括号中填入你编写的若干语句。
#include < math.h >#include < stdio.h >double fun(int n){……}main(){ int n; double s;printf("\n\nInput n: "); scanf("%d",&n);s=fun(n);printf("\n\ns=%f\n\n",s);}(2011年2月)解析:本题的考核点是c 语言中的基本算法和sqrt()函数的使用。
解题思路:本题要求计算并输出多项式的值,通式为:1+2^0.5+3^0.5+……+n^0.5,在给出的参考程序中,由于函数的返回值为双精度型,所以定义变量fac、sum为双精度型,再使用sqrt()函数求出每一个多项式的值,最后通过sum+=fac;计算出所有多项式之和,最终返回。
#include < math.h >#include < stdio.h >double fun(int n){int i; /*定义一个整形变量*/double fac=1.0; /*定义变量fac、sum 为双精度型*/double sum=1.0;if (n >1&&n< =100)for(i=2;i< =n;i++){fac+=sqrt(i); /*使用sqrt()函数求出每一个多项式的值*/sum+=fac; /*通过sum+=fac;计算出所有多项式之和*/}return sum; }<br />本文来自【C语言中文网】:<a href="/cpp/html/632.html" target="_blank">/cpp/html/632.html</a>【真题1】给定程序中,函数fun()的功能是:求输入的两个数中较小的数。
例如:输入5 10,结果为min is 5。
请改正fun()程序中的错误,使它能得出正确的结果。
试题程序:#include < stdio.h >#include< conio.h >int fun(int x,___1___){ int z;z=x< y__2__x:y;return(z);}main(){int a,b,c;scanf("%d,%d\n",__3___);c=fun(a,b);printf("min is %d",c);}(2011年2月)解析:填空1:根据题目的意思,这里应该是子函数的参数声明部分,C语言中规定,在函数的形参中不允许出现int x,y 之类的语句,必须指定每一个参数的类型,所以不能直接写y。
填空2:根据题目的意思,此处是使用三目运算符"?"比较两个数的大小,使用规则是如果运算符前面的表达式中哪个变量成立,则整个式子就取运算符后面的哪个变量。
填空3:由算法可以看出,此处是输入变量a和b的值,因为使用了scanf函数,所以应该使用符号"&",注意两个变量之间的","不能省略。
答案:【1】int y 【2】? 【3】&a,&b【真题2】下列给定程序中函数fun()的功能是计算1/n!的值。
例如:给n 输入5,则输出0.008333。
请改正程序中的错误,使它能得到正确结果。
注意:不要改动main 函数,不得增行或删行,也不得更改程序的结构。
试题程序:#include < stdio.h >#include < conio.h >/**********************found***********************/int fun(int n){ double result =1.0;if(n==0)return 1.0;while(n >1 && n < 170)/**********************found***********************/result *=n++ ;result=1/result;return result;main(){int n;printf("Input N:");scanf("%d",&n);printf("\n1/%d!=%lf\n",n,fun(n));}(2011年2月)解析:(1)错误:int fun(int n) 正确:double fun(int n)(2)错误:result *=n++ ; 正确:result *=n-- ;错误1:函数的返回值为实型数据,所以函数的返回类型应为double。