第01套 给定程序中,函数fun的功能

第01套 给定程序中,函数fun的功能
第01套 给定程序中,函数fun的功能

第01套给定程序中函数fun的功能是将形参n所指变量中各位上为偶数的数去除剩余的数按原来从高位到低位的顺序组成一个新的数并通过形参指针n传回所指变量。例如输入一个数27638496新的数为739。请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。注意源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行也不得更改程序的结构给定源程序include ltstdio.hgt void fununsigned long n unsigned long x0 i int t i1 whilen tn __1__ ift2 __2__ xxti ii10 n n /10 n__3__ main unsigned long n-1 whilengt99999999nlt0 printfquotPlease input0ltnlt100000000: quot scanfquotldquotampn funampn printfquotnThe result is: ldnquotn 解题思路第一处t是通过取模的方式来得到n的个位数字所以应填10。第二处判断是否是奇数所以应填0。第三处最后通形参n来返回新数x 所以应填x。给定程序MODI1.C中函数fun 的功能是计算n。例如给n输入5则输出120.000000。请改正程序中的错误使程序能输出正确的结果。注意不要改动main函数不得增行或删行也不得更改程序的结构给定源程序include ltstdio.hgt double fun int n double result 1.0 if n 0 return 1.0 while n gt1 ampamp n lt 170 result n-- return result main int n printfquotInput N:quot scanfquotdquot ampn printfquotnnd lfnnquot n funn 解题思路第一处条件语句书写格式错误应

改为if n0。第二处语句后缺少分号。请编写一个函数fun 它的功能是将一个数字字符串转换为一个整数不得调用C语言提供的将字符串转换为整数的函数。例如若输入字符串quot-1234quot则函数把它转换为整数值-1234。函数fun中给出的语句仅供参考。注意: 部分源程序存在文件

PROG1.C文件中。请勿改动主函数main和其它函数中的任何内容仅在函数fun的花括号中填入你编写的若干语句。给定源程序include ltstdio.hgt include ltstring.hgt long fun char p int i len t / len为串长t为正负标识/ long x0 lenstrlenp ifp0- t-1 len-- p else t1 / 以下完成数字字符串转换为一个数

字/ return xt main / 主函数/ char s6 long n printfquotEnter a string:nquot getss n funs printfquotldnquotn NONO NONO / 本函数用于打开文件输入数据调用函数输出数据关闭文件。/ FILE fp wf int i char s20 long n fp

fopenquotc:testin.datquotquotrquot wf

fopenquotc:testout.datquotquotwquot fori 0 i lt 10 i fscanffp quotsquot s n funs fprintfwf quotldnquot n fclosefp fclosewf 解题思路本题是将一个数字字符串转换为一个整数。参考答案include ltstdio.hgt include ltstring.hgt long fun char p int i len t / len为串长t为正负标识/ long x0 lenstrlenp ifp0- t-1 len-- p else t1 / 以下完成数字字符串转换为一个数字/ whilep x x10-48p return xt main / 主函数/ char s6 long n

printfquotEnter a string:nquot getss n funs printfquotldnquotn NONO NONO / 本函数用于打开文件输入数据调用函数输

出数据关闭文件。/ FILE fp wf int i char s20 long n fp fopenquotc:testin.datquotquotrquot wf

fopenquotc:testout.datquotquotwquot fori 0 i lt 10 i fscanffp quotsquot s n funs fprintfwf quotldnquot n fclosefp fclosewf 注意由于NONO 这个函数是改卷人用的与考生没有什么关系故下面从第2套试题开始均省略NONO

※※※※※※※※※※※※※※※※※※※※※※※※※

第02套给定程序中函数fun的功能是将形参给定的字符串、整数、浮点数写到文本文件中再用字符方式从此文本文件中逐个读入并显示在终端屏幕上。请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。

注意源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行也不得更改程序的结构给定源程序include ltstdio.hgt void funchar s int a double f __1__ fp char ch fp fopenquotfile1.txtquot quotwquot fprintffp quots d fnquot s a f fclosefp fp fopenquotfile1.txtquot quotrquot printfquotnThe result :nnquot ch fgetcfp while feof__2__ putchar__3__ ch fgetcfp putcharn fclosefp main char a10quotHelloquot int

b12345 double c 98.76 funabc 解题思路本题是考察先把给

定的数据写入到文本文件中再从该文件读出并显示在屏幕

上。第一处定义文本文件类型变量所以应填FILE 。第二处判断文件是否结束所以应填fp。第三处显示读出的字符所以应填ch。给定程序MODI1.C中函数fun的功能是: 依次取出字符串中所有数字字符形成新的字符串并取代原字符串。请改正函数fun中指定部位的错误使它能得出正确的结果。注意: 不要改动main函数不得增行或删行也不得更改程序的结构给定源程序include ltstdio.hgt void funchar s int ij fori0j0 si0 i ifsigt0 ampamp silt9 sjsi sjquot0quot main char item80 printfquotnEnter a string : quotgetsitem printfquotnnThe string is : quotsquotnquotitem funitem printfquotnnThe string of changing is : quotsquotnquotitem 解题思路第一处: 要求是取出原字符串中所有数字字符组成一个新的字符串程序中是使用变量j 来控制新字符串的位置所以应改为sjsi。第二处: 置新字符串的结束符所以应改为sj0. 请编写函数fun 函数的功能是: 将M行N列的二维数组中的字符数据按列的顺序依次放到一个字符串中。例如二维数组中的数据为: W W W W S S S S H H H H 则字符串中的内容应是: WSHWSHWSH。注意部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容仅在函数fun的花括号中填入你编写的若干语句。给定源程序include ltstdio.hgt define M 3 define N 4 void funchar sN char b int ijn0 fori0 i lt Ni / 请填写相应语句完成

其功能/ bn0 main char a100wMNWWWWSSSSHHHH int ij printfquotThe matrix:nquot fori0 iltM i forj0jltN

jprintfquot3cquotwij printfquotnquot funwa printfquotThe A string:nquotputsa printfquotnnquot NONO 解题思路本题是

把二维数组中的字符数据按列存放到一个字符串中。1. 计算存放到一维数组中的位置。 2. 取出二维数组中的字符存放到一维数组已计算出的位置中。参考答案void funchar sN char b int ijn0 fori0 i lt Ni / 请填写相应语句完成其功能/ forj 0 j lt M j bn sji n i M j 1 bn0

※※※※※※※※※※※※※※※※※※※※※※※※※

第03套程序通过定义学生结构体变量存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是重写形参filename所指文件中最后一个学生的数据即用新的学生数据覆盖该学生原来

的数据其它学生的数据不变。请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。注意源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行也不得更改程序的结构给定源程序include ltstdio.hgt define N 5 typedef struct student long sno char name10 float score3 STU void funchar filename STU n FILE fp fp

fopen__1__ quotrbquot fseek__2__ -1LsizeofSTU SEEK_END fwriteampn sizeofSTU 1 __3__ fclosefp main STU tN

10001quotMaChaoquot 91 92 77 10002quotCaoKaiquot 75 60 88 10003quotLiSiquot 85 70 78 10004quotFangFangquot 90 82 87 10005quotZhangSanquot 95 80 88 STU

n10006quotZhaoSiquot 55 70 68 ssN int ij FILE fp fp fopenquotstudent.datquot quotwbquot fwritet sizeofSTU N fp fclosefp fp fopenquotstudent.datquot quotrbquot freadss sizeofSTU N fp fclosefp printfquotnThe original data :nnquot for j0 jltN j printfquotnNo: ld Name: -8s Scores: quotssj.sno https://www.360docs.net/doc/ba16442550.html, for i0 ilt3 i printfquot6.2f quot ssj.scorei printfquotnquot funquotstudent.datquot n printfquotnThe data after modifing :nnquot fp fopenquotstudent.datquot quotrbquot freadss sizeofSTU N fp fclosefp for j0 jltN j printfquotnNo: ld Name: -8s Scores: quotssj.sno https://www.360docs.net/doc/ba16442550.html, for i0 ilt3 i

printfquot6.2f quot ssj.scorei printfquotnquot 解题思路本题

是考察如何从文件中读出数据再把结构中的数据写入文件中。第一处从指定的文件中读出数据所以应填filename。第二处读取文件fp的最后一条记录所以应填fp。第三处再把读出的记录写入文件fp指定的位置上所以应填fp。给定程序MODI1.C中的函数Creatlink的功能是创建带头结点的单向链表并为各结点数据域赋0到m-1的值。请改正函数Creatlink中指定部位的错误使它能得出正确的结果。注意: 不要改动main函数不得增行或删行也不得更改程序的结

构给定源程序include ltstdio.hgt include ltstdlib.hgt typedef struct aa int data struct aa next NODE NODE Creatlinkint n int m NODE hNULL p s int i pNODE mallocsizeofNODE hp

p-gtnextNULL fori1 iltn i sNODE mallocsizeofNODE

s-gtdatarandm s-gtnextp-gtnext p-gtnexts pp-gtnext return p outlinkNODE h NODE p ph-gtnext printfquotnnTHE LIST :nn HEAD quot whilep printfquot-gtd quotp-gtdata pp-gtnext printfquotnquot main NODE head headCreatlink822 outlinkhead 解题思路第一处: 指向刚分配的结构指针所以应改为pNODE mallocsizeofNODE 第二处: 在动态分配内存的下一行语句是使用临时结构指针变量h保存p指针的初始位置最后返回不能使用p是因为p的位置已经发生了变化所以应改为返回h。请编写函数fun 函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入规定所有单词由小写字母组成单词之间由若干个空格隔开一行的开始没有空格。注意部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容仅在函数fun的花括号中填入你编写的若干语句。给定源程序include ltstdio.hgt include ltstring.hgt define N 80 int fun char s main char lineN int num0 printfquotEnter a

string :nquot getsline numfun line printfquotThe number of word is : dnnquotnum NONO 解题思路本题是统计字符串中

的单词数。1. 利用while循环语句和指针变量当字符为空格时则单词数k加1。2. 循环结束返回k。参考答案int fun char s int k 1 whiles ifs k s return k

※※※※※※※※※※※※※※※※※※※※※※※※※

第04套程序通过定义学生结构体变量存储了学生的学号、姓名和3门课的成绩。所有学生数据均以二进制方式输出到文件中。函数fun的功能是从形参filename所指的文件中读入学生数据并按照学号从小到大排序后再用二进制方

式把排序后的学生数据输出到filename所指的文件中覆盖原来的文件内容。请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。注意源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行也不得更改程序的结构给定源程序include ltstdio.hgt define N 5 typedef struct student long sno char name10 float score3 STU void funchar filename FILE fp int i j STU sN t fp fopenfilename __1__ freads sizeofSTU N fp fclosefp for i0 iltN-1 i for ji1 jltN j if si.sno __2__ sj.sno t si si sj sj t fp fopenfilename quotwbquot __3__s sizeofSTU N fp / 二进制输出/ fclosefp main STU tN 10005quotZhangSanquot 95 80 88 10003quotLiSiquot 85 70 78 10002quotCaoKaiquot 75 60 88 10004quotFangFangquot 90 82 87 10001quotMaChaoquot 91 92 77 ssN int ij FILE fp fp fopenquotstudent.datquot quotwbquot fwritet sizeofSTU 5 fp

fclosefp printfquotnnThe original data :nnquot for j0 jltN j printfquotnNo: ld Name: -8s Scores: quottj.sno https://www.360docs.net/doc/ba16442550.html, for i0

ilt3 i printfquot6.2f quot tj.scorei printfquotnquot funquotstudent.datquot printfquotnnThe data after

sorting :nnquot fp fopenquotstudent.datquot quotrbquot freadss sizeofSTU 5 fp fclosefp for j0 jltN j printfquotnNo: ld Name:

-8s Scores: quotssj.sno https://www.360docs.net/doc/ba16442550.html, for i0 ilt3 i printfquot6.2f quot ssj.scorei printfquotnquot 解题思路本题是考察把结构中的数据写入文件。第一处建立文件的类型考虑到是把结构中的数据结构中的数据包含不打印的字符从文件中读出所以应填quotrbquot。第二处判断当前学号是否大于刚读出的学号进行相比如果大于则进行交换所以应填gt。第三处把已排序的结构数据重新写入文件所以应填fwrite。给定程序MODI1.C中函数fun的功能是: 在字符串的最前端加入n个号形成新串并且覆盖原串。注意: 字符串的长度最长允许为79。请改正函数fun中指定部位的错误使它能得出正确的结果。注意: 不要改动main函数不得增行或删行也不得更改程序的结构给定源程序include ltstdio.hgt include ltstring.hgt void fun char s int n char a80 p int i sp fori0 iltn i ai do aip i whilep ai0 strcpysa main int n char s80 printfquotnEnter a string : quot getss printfquotnThe string quotsquotnquots printfquotnEnter n number of : quot scanfquotdquotampn funsn

printfquotnThe string after insert : quotsquot nquot s 解题思路第一处: 指针p应指向s所以应改为ps。第二处: 死循环当do while循环执行一次临时变量p应该指向字符串的下一位置所以应改为whilep。请编写函数fun函数的功能是:统计各年龄段的人数。N个年龄通过调用随机函数获得并放在主函数的age数组中要求函数把0至9岁年龄段的人数放在d0 中把10至19岁年龄段的人数放在d1中把20至29岁年龄段的人数放在d2中其余依此类推把100岁含100以上年龄的人数都放在d10中。结果在主函数中输出。注意部分源程序在文件PROG1.C中。请勿改动主函数main和其它函数中的任何内容仅在函数fun的花括号中填入你编写的若干语句。给定源程序include ltstdio.hgt define N 50 define M 11 void fun int a int b double rnd static t29c217m1024r0 rrtcm returndoubler/m main int ageN i dM fori0

iltNiageiint115rnd printfquotThe original data :nquot fori0iltNi printfi1100quot4dnquot:quot4dquotagei printfquotnnquot fun age d fori0ilt10iprintfquot4d---4d : 4dnquoti10i109di printfquot Over 100 : 4dnquotd10 NONOd 解题思路本题是统计各年龄段的人数。1. 初始化各年龄段人数为0。 2. 使用for循环以及求出各年龄的十位数字作为存放人数的地址如果大于

值大于10则存入d10中大于110岁的人。参考答案void fun int a int b int i j fori 0 i lt M i bi 0 fori 0 i lt N i j ai / 10 ifj gt

10 bM - 1 else bj double rnd static t29c217m1024r0 rrtcm returndoubler/m

※※※※※※※※※※※※※※※※※※※※※※※※※

第05套给定程序中函数fun的功能是将参数给定的字符串、整数、浮点数写到文本文件中再用字符串方式从此文本文件中逐个读入并调用库函数atoi和atof将字符串转换成相应的整数、浮点数然后将其显示在屏幕上。请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。注意源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行也不得更改程序的结构给定源程序include ltstdio.hgt include ltstdlib.hgt void funchar s int a double f

__1__ fp char str100 str1100 str2100 int a1 double f1 fp fopenquotfile1.txtquot quotwquot fprintffp quots d fnquot s a f __2__ fp fopenquotfile1.txtquot quotrquot

fscanf__3__quotsssquot str str1 str2 fclosefp a1 atoistr1 f1 atofstr2 printfquotnThe result :nns d fnquot str a1 f1 main char

a10quotHelloquot int b12345 double c 98.76 funabc 解题思路本题是考察先把给定的数据写入到文本文件中再从该文件

读出并转换成相应的整数、浮点数显示在屏幕上。第一处定义文本文件类型变量所以应填FILE 。第二处关闭刚写入的文件所以应填fclosefp。第三处从文件中读出数据所以应填fp。给定程序MODI1.C中函数fun的功能是: 对N名学

生的学习成绩按从高到低的顺序找出前mm≤10名学生来并将这些学生数据存放在一个动态分配的连续存储区中此存储区的首地址作为函数值返回。请改正函数fun中指定部位的错误使它能得出正确的结果。注意: 不要改动main函数不得增行或删行也不得更改程序的结构给定源程序include ltstdio.hgt include ltalloc.hgt include ltstring.hgt define N 10 typedef struct ss char num10 int s STU STU funSTU a int m STU bN t int ijk tSTU callocsizeofSTUm fori0 iltN i biai fork0 .

1请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得

1.请编写一个函数fun,它的功能是:比较两个字符串的长度,(不得调用C语言提供的求字符串长度的函数),函数返回较长的字符串。若两个字符串长度相同,则返回第一个字符串。例如,输入:beijing shanghai(为回车键),函数将返回shanghai。 #include char *fun ( char *s, char *t) { } main( ) { char a[20],b[10],*p,*q; int i; printf("Input 1th string:") ; gets( a); printf("Input 2th string:") ; gets( b); printf("%s\n",fun (a, b )); } 2.请编写一个函数fun,它的功能是:比较两个字符串的大小,(不得调用C语言提供的字符串比较函数strcmp()),函数返回较大的字符串。若两个字符串相同,则返回第一个字符串。例如,输入:abc abd,函数将返回abd。 #include char *fun ( char *s, char *t) { } main( ) { char a[20],b[10],*p,*q; int i; printf("Input 1th string:") ; gets( a); printf("Input 2th string:") ; gets( b); printf("%s\n",fun (a, b )); } 3. 程序填空题。在【】处填上适当语句,使程序能运行得到正确结果。给定程序中,函数fun的功能是:利用指针数组对形参ss所指字符串数组中的字符串按由长到短的顺序排序,并输出排序结果。ss 所指字符串数组中共有N个字符串,且串长小于M 。 #include #include #define N 5 #define M 8 void fun(char (*ss)[M])

编程题目

1. m 个人的成绩存在score 数组中,请编写函数fun,将低于平均数人数作为函数值返回,将低于平均分 的分数放在below 所指的数组为:10、20、30、40。 2. 将M 行N 列的二位数组中的数据,按行的顺序依次放在一维数组中,一维数组中数据的个数存放在 形参n 所指的存储单元中。 3. 编写函数void fun(char*tt,int x,int pp[ ]), 它的功能是:求出能整除x 且不能偶数的各整数,并按从小 到大的顺序放在pp 所指的数组中,这些除数的个数通过形参n 返回。例如,若x 中的值为:30,则有4个数符合要求,它们是1,3,5,15。 4. 编写一个函数void fun (char*tt m,int k,int xx[]),统计在tt 字符串中’a ’到’z ‘26字母各自出现的次数, 并依次放在pp 所指数组中。 5. 请编写一个函数void fun (int m ,int k ,int xx[]),该函数的功能是:将大于整数m 且紧靠m 的k 个素存 入xx 所指的数组中。 6. 请编写一个涵数void fun (char a [ ],char b [ ] ,int n ),其功能是:删除一个字符串中指定下标的字符。 其中,a 指向原字符串,删除后的字符串存放在b 所指的数组中,n 在存放指定的下标。 7. 请编写一个函数int fun (int *s,int t,int *k)用来求出数组的最大元数在数组中的下标,并存放在k 所指 的存储单元中。 8. 编写涵数fun ,涵数的功能是:根椐以下公式计算s ,计算结果作为函数值返回;n 通过形参传入。 n s +++++++++++= (3211) (3211) 211 1 9. 编写函数fun ,它的功能是:要据以下公式求p 的值,结果由函数的值带回。m 与n 为两个整数且求 m>n p=)!(!! n m n m - 10. 编写函数fun,它的功能是:利用以下所示的简单迭代方法求方程cos(x)-x=0的一个实根。 x x n n cos(1=+) 11. 下列程序定义了N ×N 的二维数组中,并在主函数中自动值。请编写函数fun(int a [][N],该函数的功 能是:使数组在左下半三角元素的值会全部置成0。 12. 下列程序定义了N+N 的二维数组,并在主函数中赋值。请编写函数fun ,函数的功能是:求出数组 周边元素平均值并作为函数值返回给主函数中的s. 13. 请编写一个函数void fun (int tt [M][N],int pp [N]), tt 提向一个M 行N 列的二维数组,求出二维组每 列中最小元素,并依次放放pp 所指一维数组中。二维数组中的数已在主函数中赋予。 14. 请编写函数fun,函数的功能是求二维数组周边元素之和,作为函数值返回。二维数组中的值在主函 中赋予。 15. 请编写一个函数unsigned fun (unsigned w),w 是上个大于10的无符号整数,若w 是n (n ≥2)位的 整数,则函数求出w 的后n-1位的数作为函数值返回。 16. 请编写一个函数float fun (double h),函数的功能是对变量h 中的值保留2位小数,并对第三位进行四 舍五入(规定h 在的值为正数)。 17. 请编写一个函数fun (char*s),该函数的功能是把字符串中的内容逆置。 18. 编写程序,实现矩阵(3行列)的转置(即行列互换) 19. 编写函数fun, 该函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。 20. 编写函数int fun (int ,int aa [MAX]),该函数的功能是求出小于或等于lim 的所有素数并放在aa 数组 中,该函数返回所求出素数的个数。 21. 请编写函数fun ,对长度为7个字符的字符串,除首、尾字符外,将其余5个字符按ASCII 码降序 排列。 22. N 名学生的成绩已在成绩主函数中放入一个带头节点的链表结构中,h 指向链表的头节点。请编写 函数fun,它的功能是:找出学生的最高分,由函数返回。 23. 请编写函数fun ,该函数的功能是:判断字符串是否为回文?若是则函数返回1,主函数中输出TES , 否则返回0,主函数中输出NO 。回文是指顺读和倒读都有一样的字符串。

请编写函数fun

计算机二级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************/

请编一个函数fun

请编一个函数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) { }

请编写一个函数fun

试题1 请编写一个函数fun,它的功能是:将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c 数的千位和十位上,b数的十位和个位数分别放在c数的个位和百位上。例如;当a=45,b=12,调用该函数后c=4251。函数形式void fun(int a,int b,long *c)。并写主函数验证,a,b两数从键盘输入。 #include void fun(int a,int b,long *c){ } void main() { int a,b; long c; printf(“Input a,b:”); scanf(“%d%d”,&a,&b); 此处函数调用,请填空; printf(“The result is:%d”,c); } 试题2 编写函数int f(int lim,int aa[ ]),该函数的功能是求出小于或等于1im的所有素数并放在aa数组中,该函数返回所求出的素数的个数。并写主函数验证。 #include #define MAX 100 int f(int lim,int aa[]){ } void main() { int limit,i,sum; int aa[MAX]; printf(“输入一个整数”); scanf(“%d”,&limit); 此处函数调用,请填空,用sum保存函数调用返回的结果; for(i=0;i

C语言程序设计(第3版)何钦铭-颜-晖-第10章--函数与程序结构

第10章函数与程序结构 【练习10-1】使用递归函数计算1到n之和:若要用递归函数计算sum=1+2+3+…+n(n为正整数),请写出该递归函数的递归式子及递归出口。试编写相应程序。 解答: 递归式子: sum(i) = sum(i-1) + i; 递归出口: sum(i) = 0; 【练习10-2】请完成下列宏定义: ① MIN(a,b) 求 a,b 的最小值 ② ISLOWER(c) 判断 c 是否为小写字母 ③ ISLEAP(y) 判断 y 是否为闰年 ④ CIRFER(r) 计算半径为 r 的圆周长 解答: ① MIN(a, b):求a,b的最小值。 #define MIN(a,b) (a='a'&&c<='z') ③ ISLEAP(y):判断y是否为闰年。 #define ISLEAP(y) (y%4==0&&y%100!=0)||y%400==0) ④ CIRFER(r):计算半径为r的圆周长。 #define PI 3.14159 #define CIRFER(r) 2*PI*(r) 【练习10-3】分别用函数和带参宏实现从 3 个数中找出最大数,请比较两者在形式上和使用上的区别。 解答: (1)函数实现 int max(int x,int y,int z) { int t; if(x>=y) if(x>=z) t=x; else t=z; else if(y>=z) t=y; else t=z; return t; } (2)宏实现 #define MAX( x, y, z ) x>=y? (x>=z? x:z) : (y>=z? y:z)两者在定义形

第01套 给定程序中,函数fun的功能

第01套给定程序中函数fun的功能是将形参n所指变量中各位上为偶数的数去除剩余的数按原来从高位到低位的顺序组成一个新的数并通过形参指针n传回所指变量。例如输入一个数27638496新的数为739。请在程序的下划线处填入正确的内容并把下划线删除使程序得出正确的结果。注意源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行也不得更改程序的结构给定源程序include ltstdio.hgt void fununsigned long n unsigned long x0 i int t i1 whilen tn __1__ ift2 __2__ xxti ii10 n n /10 n__3__ main unsigned long n-1 whilengt99999999nlt0 printfquotPlease input0ltnlt100000000: quot scanfquotldquotampn funampn printfquotnThe result is: ldnquotn 解题思路第一处t是通过取模的方式来得到n的个位数字所以应填10。第二处判断是否是奇数所以应填0。第三处最后通形参n来返回新数x 所以应填x。给定程序MODI1.C中函数fun 的功能是计算n。例如给n输入5则输出120.000000。请改正程序中的错误使程序能输出正确的结果。注意不要改动main函数不得增行或删行也不得更改程序的结构给定源程序include ltstdio.hgt double fun int n double result 1.0 if n 0 return 1.0 while n gt1 ampamp n lt 170 result n-- return result main int n printfquotInput N:quot scanfquotdquot ampn printfquotnnd lfnnquot n funn 解题思路第一处条件语句书写格式错误应

函数fun计算从1到10之间所有奇数之和并输出

函数fun计算从1到10之间所有奇数之和并输出 注意:部分源程序已经存在文件中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句,不得删除花括号中的原始注释。 #include int fun( int m) { /****/ /****/} main() { int n,s;void NONO(); n=10; s=fun(n); printf("奇数之和=%d\n",s); NONO(); } void NONO() { FILE *rf, *wf; int a; rf=fopen("d:\\programC\\1\\in.dat","r"); wf=fopen("d:\\programC\\1\\out.dat","w"); for(int i=0;i<5;i++) { fscanf(rf,"%d",&a); fprintf(wf,"%d\n",fun(a)); } fclose(rf); fclose(wf); } 编写一个函数,实现用 "气泡法" 对输入的10个整数按由小到大顺序排列 注意:部分源程序已经存在文件中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句,不得删除花括号中的原始注释。 #define N 10 #include"stdio.h" void sort(int a[ ],int n)

{ /****/ /****/} main( ) { int a[N],i; void NONO(); printf("Input %d numbers:\n", N ); for(i=0; i

实验三 函数与程序结构实验

C 语言程序设计 实验报告 专业 信息安全 班级 1103 日期 成绩 实验组别 第 1次实验 指导教师 学生姓名 严志颖 学号 U201114113 同组人姓名 实验名称 函数与程序结构实验 一、实验目的 1.熟悉和掌握函数的定义、声明;函数调用与参数传递方法;以及函数返回值类型的定义和返回值使用。 2.熟悉和掌握不同存储类型变量的使用。 3.熟悉多文件编译技术。 二、实验任务 1.源程序改错题 下面是计算s=1!+2!+3!+…+n!的源程序,在这个源程序中存在若干语法和逻辑错误。要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务。 #include "stdio.h" void main(void) { int k; for(k=1;k<6;k++) printf("k=%d\tthe sum is %ld\n",k,sum_fac(k)); } long sum_fac(int n) { long s=0; int i; long fac; for(i=1;i<=n;i++) fac*=i; s+=fac; return s; } 2.源程序修改替换题 (1)修改第1题中sum_fac 函数,使其计算量最小。 (2)修改第1题中sum_fac 函数,计算! 1!31!211n s ++++= 。 3.跟踪调试题 计算fabonacci 数列前n 项和的程序如下: 其中,long sum=0,*p=∑声明p 为长整型指针并用&sum 取出sum 的地址对p 初始化。*p 表示引用p 所指的变量(*p 即sum )。 void main(void) {

4. 请编写函数fun计算如下数组中元素的平均值、最高分和最低分。并通过主函数输出平均分,最高分和最低分。

4.请编写函数fun计算如下数组中元素的平均值、最高分和最低分。并通过主函数输出平均分,最高分和最低分。 float arr[10]={85,86,95,78,85,63,45,75,66,100} include "stdio.h" void fun(float a[],int n,float *max,float *min) { int i; float j=a[0],k=a[0]; for(i=0;i=j) j=a[i]; if(a[i]<=k) k=a[i]; } *max=j; *min=k; } //最大值存在max指针指向的地址中,最小值存在min指针指向的地址中。void main() { float arr[10]={85,86,95,78,85,63,45,75,66,100}; float max=arr[0]; float min=arr[0]; fun(arr,10,&max,&min); printf("max=%f\nmin=%f\n",max,min); } 1.5请编写程序将字符串中内部的星号删掉。 比如:输入字符串*****ABC**DE*F***GHI****** 删除内部星号后,结果应为:*****ABCDEFGHI****** #include #include #include void fun (char *a) { char *p=a; while(*p=='*') { *a++=*p; p++;

} while(*p) { if(*p!='*') *a++=*p; p++; } *a='\0'; } void main() { char s[81]; FILE *out; printf("Enter a string :\n"); gets(s); fun(s); printf("The string after deleted:\n"); puts(s); out=fopen("out.dat","w"); strcpy(s,"****A*BC*DEF*G*******"); fun(s); fprintf(out,"%s",s); fclose(out); }

函数与程序结构实验

C 语言程序设计实验报告 实验名称 函数与程序结构实验 一、实验目的 1.熟悉和掌握函数的定义、声明;函数调用与参数传递方法;以及函数返回值类型的定义和返回值使用。 2.熟悉和掌握不同存储类型变量的使用。 3.熟悉多文件编译技术。 二、实验任务 1.源程序改错题 下面是计算s=1!+2!+3!+…+n!的源程序,在这个源程序中存在若干语法和逻辑错误。要求在计算机上对这个例子程序进行调试修改,使之能够正确完成指定任务。 #include "stdio.h" void main(void) { int k; for(k=1;k<6;k++) printf("k=%d\tthe sum is %ld\n",k,sum_fac(k)); } long sum_fac(int n) { long s=0; int i; long fac; for(i=1;i<=n;i++) fac*=i; s+=fac; return s; } 2.源程序修改替换题 (1)修改第1题中sum_fac 函数,使其计算量最小。 (2)修改第1题中sum_fac 函数,计算! 1!31!211n s ++++= 。 3.跟踪调试题 计算fabonacci 数列前n 项和的程序如下: 其中,long sum=0,*p=∑声明p 为长整型指针并用&sum 取出sum 的地址对p 初始化。*p 表示引用p 所指的变量(*p 即sum )。 void main(void) { int i,k; long sum=0,*p=∑

scanf("%d",&k); for(i=1;i<=k;i++){ sum+=fabonacci(i); printf("i=%d\tthe sum is %ld\n",i,*p); } } long fabonacci(int n) { if(n==1 || n==2) return 1; else return fabonacci(n-1)+fabonacci(n-2); } 单步执行程序,观察p,i,sum,n值。 (1)刚执行完scanf("%d",&k);语句,p,i值是多少? (2)从fabonacci函数返回后光条停留在哪个语句上? (3)进入fabonacci函数,watch窗口显示的是什么? (4)当i=3,从调用fabonacci函数到返回,n值如何变化? 4.编程设计题 (1)编程让用户输入两个整数,计算两个数的最大公约数并且输出之(要求用递归函数实现求最大公约数)。同时以单步方式执行该程序,观察递归过程。 (2)编程验证歌德巴赫猜想:一个大于等于4的偶数都是两个素数之和。 编写一个程序证明对于在符号常量BEGIN和END之间的偶数这一猜测成立。例如,如果BEGIN为10,END为20,程序的输出应为: GOLDBACH'S CONJECTURE: Every even number n>=4 is the sum of two primes. 10=3+7 12=5+7 …… 20=3+17 5.选做题 1、设file1.c如下: #include int x,y; /* 外部变量的定义性说明 */ char ch; /* 外部变量的定义性说明 */ void main(void) { x=10; y=20; ch=getchar(); printf("in file1 x=%d,y=%d,ch is %c\n",x,y,ch); func1(); } file2.c如下:

Matlab datafun 函数

版本:matlab 2010a Matlab datafun函数的相关用法 目录: 1.conv2 (2) 2.conv (3) 3.convn (4) 4.corrcoef (4) 5. cov (5) 6. cumprod (6) 7. cumsu (7) 8. deconv (7) 9. detrend (8) 10. diff (9) 11. fft2 (9) 12. fft (11) 13.fftshift (12) 14. filter2 (12) 15. filter (13) 16. hist (13) 17. histc (14) 18. ifft2 (16) 19. issorted (17) 20. max (19) 21. mean (20) 22. median (20) 23. min (21) 24. mode (22) 25. prod (23) 26. sort (24) 27. sortrows (26) 28. std (27) 29. sum (28) 30. var (30)

1.conv2 功能简介 进行二维卷积操作 使用方法 C=conv2(A,B) C=conv2(Hcol,Hrow,A) C=conv2(...,'shape') 说明:对于 C=conv2(A,B) ,conv2 的算矩阵 A 和 B 的卷积,若 [Ma,Na]=size(A), [Mb,Nb]=size(B), 则size(C)=[Ma+Mb-1,Na+Nb-1]; C=conv2(Hcol,Hrow,A) 中,矩阵 A 分别与 Hcol 向量在列方向和 Hrow 向量在行方向上进行卷积;C=conv2(...,'shape') 用来指定 conv2 返回二维卷积结果部分,参数 shape 可取值如下: 》full 为缺省值,返回二维卷积的全部结果; 》same 返回二维卷积结果中与 A 大小相同的中间部分; valid 返回在卷积过程中,未使用边缘补 0 部分进行计算的卷积结果部分,当size(A)>size(B) 时,size(C)=[Ma-Mb+1,Na-Nb+1]。 应用举例A=magic(5) A= 17 24 1 8 15 23 5 7 14 16 4 6 13 20 22 10 12 19 21 3 11 18 25 2 9 B=[1 2 1;0 2 0;3 1 3] B= 1 2 1 0 2 0 3 1 3 C=conv2(A,B) C= 17 58 66 34 32 38 15 23 85 88 35 67 76 16 55 149 117 163 159 135 67 79 78 160 161 187 129 51 23 82 153 199 205 108 75 30 68 135 168 91 84 9 33 65 126 85 104 15 27 相关函数 filter2

嵌入式c语言 函数与程序结构

第三章函数与程序结构 3.1 概述 C语言的程序除主函数外,还可以有若干个其他函数—块状结构。 一般把其中相对独立的算法和功能定义成一个独立的函数,以供需要的地方调用。 优点: (1)减少代码的重复现象。 (2)便于分工合作。 (3)便于阅读。 (4)便于独立算法的代码移植。

3.2函数的定义和调用 举例说明: 对于求两个数中的最大值,有三个步骤:(1)从键盘输入两个数给a和b。 (2)求a和b中的最大值。 (3)输出结果。 把求最大值的算法部分定义成一个独立的函数:

函数类型函数名函数参数(形参) int max(int x,int y) main() {int z;{int a,b,c; if(x>y)z=x;scanf(“%d%d”,&a,&b); else z=y;c=max(a,b); return(z);printf(“%d”,c); }} x y z a b c 35

说明: (1)程序由两个函数组成,它们逻辑上相互独立(功能、变量)。 (2)程序的执行总是从主函数开始,主函数总是被执行一次,其他函数只有在被调用时才获得控制。 (3)函数调用有两个作用:转移控制权和传递参数。 (4)return的作用也有两个:交回控制权和返回结果。 (5)实参可以是常量、变量或表达式,但类型要一致。

定义一个函数除考虑算法外就是:如何设计函数的参数,通过何种途径交回结果。例:求自然数1—100中的素数之和。 ?prime(?)main(){int i;{int i,s=0;for(i=2;i

第6讲函数与程序结构

第六讲函数和程序结构 6.1 概述 一、问题提出 前面的程序中,都用到了主函数“main”及C语言提供的输入输出库函数scanf和printf等函数,目前除了调用库函数实现某些功能外,所有的练习中程序功能均在主函数中完成,当问题有一定规模和复杂度时不可避免地会出现如下问题: ①程序越来越长,难于理解且可读性下降。 ②重复代码增多,某段程序可能被执行多次。 ③某一问题中的代码,无法在其他同类问题中再用,必须重复原来设计 编码的过程。 ④程序各部分之间联系复杂、保特重用代码段的一致性等原因导致程序 调试难度加大。 二、函数机制的引入 由于以上问题,所以需要一种机制,能够有效地分解复杂的描述,控制程序规模和复杂性,C语言中,这种机制就是函数。使用函数,把一段处理过程抽象出来,作为程序中独立的函数实体,这样通过函数之间的调用就可以完成复杂的处理任务了。函数机制的本质是封装一段操作,对其他模块隐藏函数内部的实现过程,只提供调用方法,即接口参数和返回值。被抽象成函数的程序段通常是功能独立、具有独立逻辑意义的程序段和重复出现的代码段。 三、函数机制的提供的好处 ①函数可以被多次调用, 从而减少程序的长度。 ②增加程序的可读性。 ③程序的模块化、结构化更强。 四、函数的定义与调用 C语言中, 函数名是上述封装体的名称。函数定义是按照规定形式对函数的描述。函数调用是要求执行函数的描述。一个实用的C语言源程序总是由许多函数组成, 这些函数多数都是根据实际任务由用户来编写的, 在这些函数中, 可以调用C语言提供的库函数, 也可调用用户自己写的或他人编写的函数。 五、函数的执行 C程序总是从主函数 main 开始执行, 到主函数的最后一个“}”确处结束。在 main 中, 调用库函数或自己定义的函数时, 控制权转移到函数, 主程序等待, 待函数执行完毕后, 控制返回到调用处, 主函数继续执行。其他函数中调用函数的过程与此相同。 六、掌握函数的使用与函数的定义 从C语言函数来讲, 一方面要掌握库函数的调用方法, 尽可能地熟悉系统提供的常用库函数的功能, 尽量使用库函数实现程序功能。另一方面,库函数毕竟不能解决所有的问题, 需要掌握自己定义函数的方法。

第3章-程序与递归:组合、抽象与构造

第3章程序与递归:组合、抽象与构造 1、关于计算系统与程序,下列说法正确的是_____。 (A)只有用计算机语言编写出来的代码才是程序,其他都不能称其为程序; (B)构造计算系统是不需要程序的,程序对构造计算系统没有什么帮助; (C)任何系统都需要程序,只是这个程序是由人来执行还是由机器自动执行,可以由机器自动执行程序的系统被称为计算系统; (D)程序是用户表达的随使用者目的不同而千变万化的复杂动作,不是使用者实现的而是需要计算系统事先完成的。 2、关于程序,下列说法不正确的是_____。 (A)“程序”是由人编写的、以告知计算系统实现人所期望的复杂动作; (B)“程序”可以由系统自动解释执行,也可以由人解释由系统执行; (C)普通人是很难理解“程序”的,其也和“程序”无关; (D)“程序”几乎和每个人都有关系,如自动售票系统、自动取款机等。 3、关于程序,下列说法不正确的是_____。 (A)程序的基本特征是复合、抽象与构造; (B)复合就是对简单元素的各种组合,即将一个(些)元素代入到另一个(些)元素中; (C)抽象是对各种元素的组合进行命名,并将该名字用于更复杂的组合构造中; (D)程序就是通过组合、抽象、再组合等构造出来的; (E)上述说法有不正确的。 4、一般而言,设计和实现一个计算系统,需要设计和实现_____。 (A)基本动作和程序; (B)基本动作和控制基本动作的指令; (C)基本动作、控制基本动作的指令和一个程序执行机构; (D)基本动作、控制基本动作的指令和程序。

5、一般而言,一个较高抽象层次的计算系统是可以这样实现的,即_____。 (A)将较低抽象层次的重复性组合,命名为较高抽象层次的指令; (B)利用较高抽象层次的指令进行复合、抽象与构造,即形成高抽象层次的程序; (C)高抽象层次的程序通过其程序执行机构解释为高抽象层次的指令及其操作次序; (D)高抽象层次的指令被替换为低抽象层次的程序,再由低抽象层次的程序执行机构解释并执行。 (E)上述A-D全部。 答案是:E 6、熟悉下列运算组合式(前缀表达式),其中结果为56的是_____。 (A) (* 7 (+ 5 2)); (B) (* (+ 5 3) (+ 5 2)); (C) (+ 20 (+ 6 6)); (D) (- (* 9 8) (- 20 2))。 //本题考查基本运算组合式的构造与计算,尤其是嵌套的运算组合式的计算 答案是:B 7、对于计算式,其正确的运算组合式(前缀表示法)为_____。 (A) (/ (+ 10 / 20 + 8 4) (+ * 3 6 * 8 2 )); (B) ((10 + (20 / (8 + 4))) / ((3 * 6) + (8 * 2))); (C) (/ (+ 10 (/ 20 (+ 8 4))) (+ (* 3 6) (* 8 2))); (D) (/ (/ 20 (+ 10 (+ 8 4))) (* (+ 3 6) (+ 8 2)))。 //本题考查运算组合式的书写与构造 答案是:C 8、请用define运算,定义一个过程实现计算a3,其正确定义的过程为_____。 (A) (define cube a (* a a a)); (B) (define (cube x) (* x x x)); (C) (define (cube a (* a a a))); (D) (define (cube a) (* x x x)))。

实验 函数与程序结构

实验函数与程序结构 实验目的 掌握函数声明、定义和使用的方法 掌握函数递归调用的方法 掌握全局变量、局部变量、静态变量的使用方法 掌握内联函数、重载函数及默认函数参数的使用方法 掌握自定义头文件的方法,学会建立和调试多文件程 实验内容 1. 分析程序运行结果 输入下列程序,运行它,分析得到的结果。 #include int n = 0; int func(int x); void main() { int a,b; a = 5; b = func(a); cout << "\nlocal a=" << a<< endl<< "local b=" << b<

相关文档
最新文档