c语言上机试题

上传人:cl****1 文档编号:489246887 上传时间:2022-11-14 格式:DOC 页数:117 大小:137.51KB
返回 下载 相关 举报
c语言上机试题_第1页
第1页 / 共117页
c语言上机试题_第2页
第2页 / 共117页
c语言上机试题_第3页
第3页 / 共117页
c语言上机试题_第4页
第4页 / 共117页
c语言上机试题_第5页
第5页 / 共117页
点击查看更多>>
资源描述

《c语言上机试题》由会员分享,可在线阅读,更多相关《c语言上机试题(117页珍藏版)》请在金锄头文库上搜索。

1、一、填空题请补充fun函数,该函数的功能是:判断一个年份是否为闰年。例如,2007年不是闰年,2008是闰年。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include # include int fun(int n) int flag=0; if(n%4=0) if(_1_) flag=1; if(_2_) flag=1; return _3_;二、改错题下列给定程序中,fun函数的功能是:根据形参n,计算如下公式的值。 例如,若输入5,则应输出2.28333。请修改程序中的错误或在横线处填上适当的内容并把横线

2、删除,使它能计算出正确的结果。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include # include double fun(int n) double s=1.0; int i; /*error*/ for(i=2;i=n;i+) s+=1.0/k; /*error*/ _填 空_三、编程题请编写函数fun,它的功能是:求出1到500之内能被7或11整除,但不能同时被7和11整除的所有整数,并将它们放在b所指的数组中,通过m返回这些数的个数。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。#

3、 include # include void fun(int *b,int *m) 一、填空题【答案及难度指数】(1)n%100!=0(2)n%400=0(3)flag【一起来审题】(1)该题中函数功能是判断一个年份是否为闰年。其中,闰年的条件是年数可以被4整除,即为闰年;被100整除而不能被400整除的为平年;被100整除也可被400整除的为闰年。(2)从已给部分源程序的main主函数开始入手,主函数中的if(fun(year)判断语句,调用函数fun对年数进行判断。(3)进入fun函数,利用if对年数进行判断。 【解题思路】第一空:根据闰年的条件和已有的语句if(n%4=0),知道这里的

4、条件应该是能被4整除但要排除被100整除的整数,所以第一空填n%100!=0。第二空:被100整除也可被400整除的为闰年,所以第二空填n%400=0。第三空:主函数中if(fun(year)语句是对函数返回值的判断,所以fun函数应该将对n的判断的flag值返回,第三空填flag。【主要考点】if条件语句。二、改错题【答案及难度指数】(1)s+=1.0/i;(2)return s;【一起来审题】该题中函数功能是求题干累加公式的值。从已给定源程序的main主函数开始入手,通过printf(nnthe result is%lfn,fun(n);语句调用fun函数,求得公式值。【解题思路】(1)第

5、一个标识下,在以i为循环参数的for循环中进行公式累加,每一项为1.0/i,所以s+=1.0/k;改为s+=1.0/i;。(2)第二个标识下,首先根据题干,将填空删除,函数定义为double fun(int n),它有double型的返回值,所以这里返回累加公式的计算结果,即return s;。【主要考点】函数功能;函数返回。三、编程题【答案及难度指数】int j,k=0; for(j=2;j500;j+) /循环条件if(j%7=0|j%11=0)&j%77!=0) /判断是否符合题干要求 bk+=j; /将结果放入数组b *m=k; /将累加器值赋值给m【一起来审题】(1)该程序的解题思路

6、,可以分解为以下几步:判断是否被7整除判断或者是否被11整除并且不被77整除按要求返回计算结果。(2)从已给部分源程序的main主函数开始入手,核心函数fun(a,&m);,其中m返回这些数的个数,a传给函数中的参数,存放计算结果的数组b。【解题思路】进入fun函数,根据前面的分析:首先,定义变量k,设置为累计器,计算符合条件的数的个数。然后,通过循环,判断小于500的每一个整数是否符合题干中的要求。其中的判断条件能否被7或者被11整除为j%7=0|j%11=0,不能被11和7同时整除为j%77!=0,它们之间的并关系就用&连接,最后结果即为(j%7=0|j%11=0) & j%77!=0。最

7、后,将符合条件的整数存入数组b中,同时对k进行自加,将k值赋给m,返回结果。【主要考点】数组操作;函数传值;if条件语句;for循环语句。一、填空题请补充函数fun(char *t),该函数的功能是把字符串中的内容逆置。例如,字符串中原有的字符串为ABCDE,则调用该函数后,串中的内容为EDCBA。请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。注意:部分源程序给出如下。# include # include # include # define M 60void fun(char *t) int j,m=strlen(t)-1; char s;

8、 for(j=0;jm;j+,_1_) s=tj; _2_; _3_; 一、填空题【答案及难度指数】(1)m-(2)tj=tm(3)tm=s【一起来审题】(1)该程序功能实现字符串的逆置。把字符串中字符逆置就是把字符串中的第一个元素和最后一个元素交换,第二个元素和倒数第二个元素交换,直到所有的元素交换完成为止。(2)从已给部分源程序的main主函数开始入手,主函数调用fun(b);,通过键盘输入字符串b,作为参数传给函数void fun(char *t)中的t。(3)进入fun函数,要想实现逆置,首先要求得字符串的长度。通过m=strlen(t)-1;求得m的值即为字符串的长度。然后通过for

9、循环对字符串进行置换。【解题思路】第一空:for(j=0;jm;j+,_1_)根据前面的分析,对字符串的置换是从第一个元素和最后一个元素(jm,m是字符串的长度)开始进行循环交换,从第一个元素j=0开始向后增加为j+,所以从最后一个向前减少即为m-,第一空填m-。第二空:char s;用来定义存放临时的字符,s=tj;的目的是首先用s存放字符串t的第j个字符,这样将第m个字符存放在j的位置,就首先实现了将后面的第m个字符置换到前面的第j的位置,所以第二空填tj=tm。第三空:前面实现了后面的第m个字符置换到前面的第j个字符,同时将第j个字符的内容存放在临时的字符s,现在就将这个临时字符s中的内

10、容存放在第m个字符位置,这样就完成了j位置的字符与m位置字符的置换,所以第三空填tm=s。【主要考点】字符数组。二、改错题下列给定程序中,函数fun的功能是:判断字符ch是否与s所指串中的某个字符相同,若相同,则什么也不做;若不同,则将其插在串的最后。请修改程序中的错误,使它能得出正确的操作。注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。# include # include # include /*error*/void fun(char s,char c) while(*s & *s!=c) s+; /*error*/ if(*s=c) s0=c; /*error*/

11、s1=0; main() char str81,ch; printf(n Please enter a string:n); gets(str); printf(n Please enter the character to search:); ch=getchar(); fun(str,ch); printf(nThe result is %sn,str);二、改错题【答案及难度指数】(1)void fun(char *s,char c)(2)if(*s=0)(3)s1=0;【一起来审题】该题中函数功能首先是查找子串再判断,最后是实现将符合条件的字符串进行连接。从已给定源程序的main主函数

12、开始入手,通过fun(str,ch);语句调用fun函数,实现题干的要求。【解题思路】(1)第一个标识下,void fun(char s,char c)根据主函数中的定义,知道s为数组名,传的应该是数组地址,所以应改为void fun(char *s,char c)。(2)while循环中对c与s进行匹配检查,第二个标识下,是当不同时执行连接操作,那么判断s是否为结尾的表达式应该是if(*s=0)。(3)第三个标识下,连接后的新串要添加结尾符,所以正确的表达是将s1=0;改为s1=0;。【主要考点】函数定义语法;数组操作。三、编程题请编写函数fun,函数的功能是求出二维数组周边元素之和,作为函

13、数值返回。二维数组中的值在主函数中赋予。例如,若二维数组中的值为:357999949998则函数值为72。请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。注意:部分源程序给出如下。# include # include # define M 3# define N 4int fun(int bMN) 三、编程题【答案及难度指数】int i,j,s=0;for(j=0;jN;j+) /统计行元素 s+=b0j; s+=bM-1j; for(i=1;i=M-2;i+) /统计列元素 s+=bi0; s+=biN-1; return s;【一起来审题】该程序功能是求出二维数组周边元素之和。其中周边元素是指数组的最上和最下的两行,最左和最右的两列。数组第一行元素的行下标为0,最后一行元素的行下标为M-1,第一列的列下标为0,最后一列的列下标为N-1。【解题思路】进入fun函数,根据前面的分析:求周边元素的和,可以采用两个循环分别把行元素和列

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 习题/试题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号