国家二级C语言程序设计机试(程序修改题)模拟试卷2
程序修改题
1.下列给定程序的功能是:读入一个整数k(2≤k≤10000),输出它的所有质因子(即所有为素数的因子)。例如,若输入整数2310,则应输出2,3,5,7,11。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
/******found******/
IsPrime(int n);
{
int i,m:
m=1;
for(i=2;i<n;i++)
/******found******/
if!( n%i)
}
m=0:
break;
}
return(m);
}
main()
{
int j,k;
prinfff“\nPlease enter an interger nunlber
between 2 and 10000:”);
scanf(“%d”,&k);
prinff(“\nThe prime factor(s)of%d
is(aJle):”,k);
for(j=2;j<k;j++)
if((!(k%j))&&(IsPrime(j)))
prinff(“%4d,”,j);
prinff(“\n”);
}
(1)IsPrime(int n) (2)if(!(n%i))
解析:本题考查:函数定义的格式;if条件的判断语句。这些知识点必须掌握,因为经常考到。
(1)函数定义格式错误,函数定义时后面不能加“;”,所以应该去掉分号。
(2)根据题意可知,if条件语句判断n是否可以整除i,如果不能整除则为质因子,所以if!(n%i)应改为if(!(n%i))。
2.下列给定程序中,函数fun的功能是:从s所指字符串中,找出t所指字符串的个数作为函数值返回。例如,当s所指字符串中的内容为“abcdabfab”,t所指字符串的内容为“ab”,则函数返回整数3。
请改正程序中的错误,使它能得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#inelude
#include
#include
int fun(char*s,char*t)
{
int n;char*P,*r;
rl=0;
while(*s)
{
P=s:
r=t:
while(*r)
/*******found*******/
if(*r==*Px r++;P++}
else break;
/*******found*******/
if(r==‘\0’)
n++:
s++:
}
return n;
}
void main()
{
char s[100],t[100];int m;
system(“CLS”);
prinff(“\nPlease enter string s:”);
scanf(“%s”,s);
printf(“\nPlease enter substring t:”);
seanf(“%s”,t);
m=fun(s,t);
prinff(“\nThe result is:m=%d\n”,n1);
}
(1)if(*r==*p) {r++;p++; }
(2)if(*r==’\0’)
解析:本题考查:if语句,考生需要根据题意确定if语句的判断条件;字符串结束标识,所有的字符串都要以’\0’结尾,上机考试常考知识点,考生一定要牢记;复合赋值运算,常用于循环控制和变量的累加、累乘。从字符串s中找出子串t的方法是:从第1个字符开始,对字符串进行遍历,若s串的当前字符等于t串的第1个字符,两个字符串的指针自动加1,继续比较下一个字符;若比较至字符串t的结尾,则跳出循环;若s串的字符与t串的字符不对应相同,则继续对s串的下一个字符进行处理。
3.下列给定程序中,函数fun的功能是:计算函数F(x,y,z)=(x+y)/(x—y)+(z+y)/(z—y)的值。其中x和y的值不相等,z和y的值不相等。例如,当x的值为9,y的值为11,z的值为15时,函数值为一3.50。
请改正程序中的错误,使它能得出正确的结果。
注意:不得增行或删行,也不得更改程序的结构!
试题程序:
#include
#include
#include
/*******found*******/
#define FU(m,n)((m/n))
float fun(float a,float b,float e)
{
float value;
value=FU(a+b,a—b)+FU(c+b,c—b);
/*******found*******/
Return(Value);
}
main()
{
float x,y,z,sum;
prinff(“Input x y z:“);
scanf(“%f%f%f.’,&x,&y,&z);
prinff(“x=%f,y=\\
(1)#define FU(m,n)(m)/(n)
(2)return(value);
解析:本题考查:C语言宏定义;函数返回值。
本题考查C语言的宏定义,其格式为:#de6ne标识符字符串,中间要用空格分开。在该题中,标识符为Fu(m,n),字符串为(m/n),由题干信息可知,m、n均为表达式,且先进行表达式运算,再进行除法运算,因此此处应为(m)/(n)。
4.下列给定程序中,函数fun的功能是:在整数10到55之间,查找能被3整除且有一位上的数值是5的数,把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定函数中a1放个位数,a2放十位数。
请改正程序中的错误,使它能得出正确的结果。
注意:不得增行或删行,也不得更改的程序的结构!
试题程序:
#include
int fun(int*b)
{
int k,al,a2,i=0;
for(k=10;k<=55;k++)
{
/******found******/
a2=ICl 0;
al=k—a2 * 10:
if((k%3==0&
本文档预览:3600字符,共4138字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载