资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,机试题型,填空 /改错/编程,1,给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为:2,在程序中定义的变量名要与公式的变量相同)。,例如,输入圆的半径值:19.527,输出为:s=598.949991。,注意:部分源程序给出如下。,请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。,试题程序:,#include,double fun(double r),return 3.14159*【1】/2.0;,void main(),double x;,printf(Enter x:);,scanf(%lf,【2】);,printf(s=%lfn,fun(【3】);,【参考答案】,(1)r*r (2)&x (3)x,【考点分析】,本题考查:圆面积计算公式*r*r;scanf()函数的形式,其一般形式为scanf(格式控制字符串,地址表列);,注意地址是由地址运算符函数实参调用,函数作为另一个函数调用的实际参数出现。,【解题思路】,填空1:计算圆的面积,公式为:*r。,填空2:scanf()函数一般形式为scanf(格式控制,地址表列),因此填入&x。,填空3:函数的实际参数是圆的半径x。,【解题宝典】,在程序中,如出现scanf(%lf,【】);,则主要考查后面的地址表列【】,注意地址是由地址运算符&后跟变量名组成的。,2,给定程序的功能是:判断字符ch是否与串str中的某个字符相同,若相同什么也不做,若不同则插在串的最后。,注意:部分源程序给出如下。,请勿改动函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。,试题程序:,#include ,#include ,void fun(char*str,char ch),while(*str,if(*str【1】ch),str0=ch;,【2】=0;,void main(),char s81,c;,system(CLS);,printf(nPlease enter a string:);,gets(s);,printf(n Please enter the character to search:);,c=getchar();,fun(【3】);,printf(nThe result is%sn,s);,【参考答案】,(1)!=,(2)str1或*(str+1),(3)s,c,【考点分析】,本题考查:if语句,一般掌握条件表达式的判定。函数的调用,其一般形式为函数名(实际参数表)。,【解题思路】,填空1:根据题意若相同什么也不做,则应填入!=。,填空2:若不同则插在串的最后,那么0就在字符串的倒数第二了。,填空3:函数传递的参数为输入的两个字符串,则填入s,c。,【解题宝典】,if语句的条件表达式一般会考查三个方面的内容:,条件判断,即与=、与=、=与!=的区别,需要仔细分析题干的意思,确定条件表达式的内容。,逻辑判断,即&(逻辑与)与|(逻辑或)的区别,需要根据题干确定if条件中,若干个条件表达式的并存关系。,=(赋值号)与=(等于号)的区别,注意在if条件中不会出现=(赋值号)。,3,请补充函数fun,该函数的功能是:判断某一个年份是否为闰年。,例如,1900年不是闰年,2004是闰年。,注意:部分源程序给出如下。,请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。,试题程序:,#include,#include,#include,int fun(int n),int flag=0;,if(n%4=0),if(【1】),flag=1;,if(【2】),flag=1;,return【3】;,void main(),int year;,system(CLS);,printf(Input the year:);,scanf(%d,if(fun(year),printf(%d is a leap year.n,year);,else,printf(%d is not a leap year.n,year);,【参考答案】,(1)n%100!=0或n%100,(2)n%400=0 (3)flag,【考点分析】,本题考查:判断闰年的算法,年份能被4整除但不能被100整除,或者年份能被400整除。return语句,负责将函数值返回给主调函数。一般情况下,flag在C语言中作为一种标志来使用,本书中有多个题目都使用了flag标志。,【解题思路】,填空1:判断闰年的方法是,年份能被4整除但不能被100整除,或者年份能被400整除。n不能被100整除,即对100取余非零。,填空2:能被400整除的年份也是闰年,n能被400整除,即对400取余为零。,填空3:flag标记年份n是否为闰年,当flag为1时,是闰年,当flag为0时,不是闰年。,【解题宝典】,掌握判定闰年的算法,即年份能被4整除但不能被100整除,或者年份能被400整除。,理解如下关键代码:,if(n%4=0),if(n%100!=0),flag=1;,if(n%400=0),flag=1;,4,请补充函数fun,该函数的功能是:整除x且是偶数的数,把这些数保存在数组bb中,并按从大到小的顺序输出。,例如当x=20时,依次输出:20 10 4 2。,注意:部分源程序给出如下。,请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。,试题程序:,#include,#include,#include,void fun(int k,int bb),int I;,int j=0;,for(【1】;I=0;I-),printf(%d,bbI);,void main(),int k=1;,int bb100;,system(CLS);,printf(nPlease input X=);,scanf(%d,fun(k,bb);,【参考答案】,(1)i=1,(2)k%i=0&i%2=0,(3)-j或j-1,【考点分析】,本题考查:for循环语句的循环初值,根据题意确定循环变量取值范围。if语句的条件表达式,根据题意确定条件表达式,本题的条件表达式应该既满足整除又满足偶数的条件。,【解题思路】,填空1:为了求出能整除k,且是偶数的数,寻找范围是从1到k。,填空2:如果i能整除k,则k对i求余为0,如果i为偶数,则i对2求余为0,由于这两个条件要同时满足,所以要使用与运算符&。,填空3:由于数组bb中的数是按从小到大的顺序排列的,而题目要求按从大到小输出,所以从数组的最后一个元素开始,依次输出。因为在for循环中,变量j多加了一次,所以这里要将j减1,得到数组最后一个元素的下标。,【解题宝典】,在C语言中,for语句使用最为灵活,它完全可以取代 while 语句。一般形式为:,for(表达式1;表达式2;表达式3)语句,最简单的应用形式也是最容易理解的形式如下:,for(循环变量赋初值;循环条件;循环变量增量)语句,循环变量赋初值是一个赋值语句,它用来给循环控制变量赋初值;循环条件是一个关系表达式,它决定什么时候退出循环;循环变量增量,定义循环控制变量每循环一次后按什么方式变化,这三个部分之间用;分开。,5,请补充函数fun,该函数的功能是:求出数组的最大元素在数组中的下标,并存放在k所指的存储单元中。,例如,输入如下整数:876 675 896 101 301 401 980 431 45l 777,则输出结果为:6,980。,注意:部分源程序给出如下。,请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。,试题程序:,#include,#include,#include,int fun(int*s,int t,int【1】),int I,max;,max=s0;,for(I=0;Imax (3)i,【考点分析】,本题考查:函数定义;if条件表达式。,【解题思路】,填空1:根据函数的传递规则,显然这里填入的是一个指针。,填空2:要求出最大元素,需要进行目前最大元素与当前元素的比较。,填空3:这里要存储元素的下标,下标是i。,【解题宝典】,指针型变量做函数参数,如果实参变量中出现取地址符号&,则其对应的形参变量一定为指针变量。,总结:,填空题中,涉及选择的条件、循环的初值、函数的参数 返回值比较多,还有简单的赋值,6,下列给定程序中,函数fun的功能是:求k!(k1,return(k*fun(k-1);,return 1;,void main(),int k=10;,system(CLS);,printf(%d!=%ldn,k,fun(k);,【参考答案】,错误:if k1正确:if(k1),【考点分析】,本题考查:if语句条件表达式的格式。,【解题思路】,简单语法错误,不作介绍了。,7,下列给定程序中函数fun的功能是:计算n!。例如,给n输入5,则输出120.000000。,请改正程序中的错误,使程序能输出正确的结果。,注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。,试题程序:,#include ,#include ,double fun(int n),double result=1.0;,/*found*/,if n=0,return 1.0;,while(n1&n170),/*found*/,result=n-;,return result;,void main(),int n;,printf(Input N:);,scanf(%d,printf(nn%d!=%lfn,n,fun(n);,【参考答案】,(1)错误:if n=0 正确:if(n=0),(2)错误:result=n-;正确:result*=n-;,【考点分析】,本题考查:if语句,一般情况下,需要根据题目要求确定条件表达式的内容,同时需要注意其格式。计算阶乘的方法,n!=n*(n-1)!。,【解题思路】,(1)这里是一个简单的格式错误,if条件应该加括号。,(2)根据阶乘的概念,从n开始,n!=n*(n-1)!,直到1,所以应该为result*=n-;。,8,下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值:,请改正函数fun()中的错误,使它能得出正确的结果。,注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。,试题程序:,#include,#include,#include,double fun(int m),double y=1.0;,int I;,/*found*/,for(I=2;Im;I+),/*found*/,y-=1/(I*I);,return(y);,void main(),int n=5;,system(CLS);,printf(nThe result is%1fn,fun(n);,【参考答案】,(1)错误:for(i=2;im;i+),正确:for(i=2;i=m;i+),(2)错误:y-=1/(i*i);,正确:y-=1.0/(i*i);,【解题思路】,该题是一道简单的计算题,循环条件for(i=2;i=A&c=a&c=v&c=z),c=c-21;,return c;,main(),char c1,c2;,printf(nEnter a letter(A-Z):);,c1=getchar();,if(isupper(c1),c2=fun(c1);,printf(nnThe letter%c change to%cn,c1,c2);,else,printf(nEnter(A-Z)!n);,【参考答案】,(1)错误:c=c-32;正确:c=c+32;,(2)错误:c=c-5;正确:c=c+5;,【考点分析】,本题考查:大写字母转换为小写字母的方法,即大写字母AS
展开阅读全文