国家二级C语言机试(程序设计题)模拟试卷24
程序设计题
1.请编写函数fun,它的功能是:计算下列级数和,和值由函数值返回。
double fun(double x,int n)
{
int i;
double s=1.0,s1=1.0;
for(i=1;i<=n;i++)
{
s1=s1*i; /*各项中的阶乘*/
s=s+pow(x,i)/s1; /*按公式求出*/
}
return s;
}
解析:程序定义了变量s1和s,s1表示每项的分母(即各项的阶乘),s存放累加和。循环语句控制累加的次数,在循环体中进行阶乘和累加操作,累加的结果存入s中。此处使用了求乘方函数pow(x,i),其含义是求x的i次方的值。
2.请编写函数fun,其功能是:求出1~1000之间能被7或11整除,但不能同时被7和11整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include <stdio.h>
void fun(int *a,int *n)
{
}
main()
{
int aa[1000],n,k;
void NONO();
fun(aa,&n);
for(k=0;k<n;k++)
if((k+1)%10==0)
printf(\\
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;
}
解析:本题考查:if语句,用来判断能被7整除或者能被ll整除,但是又不能同时被7和11整除的数,在这里要充分理解“逻辑与”和“逻辑或”的区别;for循环语句的循环变量用来控制取值范围。
本题需要运用循环判断结构来实现,其中循环语句比较容易,只要确定循环变量的范围即可。题目要求找出能被7或11整除,但不能同时被7和11整除的所有整数。能同时被7和11整除的整数一定能被77整除,且不能被77整除的数不一定就是能被7或11整除的数,所以可得出程序中的if()语句。注意(i%7==0丨丨i%11==0)两边必须要有小括号。
3.请编写函数fun,该函数的功能是:将s所指字符串中ASCII码值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为”ABCDEFG12345”,其中字符B的ASCII码值为偶数,字符2的ASCII码值为偶数,都应当删除,其他依此类推。最后t所指的数组中的内容应是”ACEG135”。
注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
void fun(char *s,char t[])
{
}
void main()
{
FILE *wf;
char s[100],t[100];
system(\\
void fun(char *s,char t[])
{
int i=0;
for(;*s!=’\0’;s++) /*找出ASCII值为奇数的字符依次存入数组t中*/
if(*s%2==1)
t[i++]=*s;
t[i]=’\0’; /*在字符串的末尾加上串结束符*/
}
解析:本题要求将s所指字符串中ASCII码值为偶数的字符删除,所以本题要求采用一个for循环来找出ASCII码值为奇数的字符依次存入数组t中,并使用if条件句来判断s所指字符串中ASCII码值是否为奇数。用’\0’加在字符串的末尾来表示字符串的结束。
要删除ASCII码值为偶数的字符,也就是要留下ASCII码值为奇数的字符。由于最终是要求出剩余字符(即ASCII码值为奇数)形成的新串,所以本题程序的算法是对原字符串从头到尾扫描,找出ASCII码值为奇数的字符并将其依次存入数组l中。此外,还要注意数组t的下标变化和下标的初值(初值必须为0,即i=0),t[i++]的作用是先使用t[i],然后再使i自增1。
4.请编写函数void fun(int x,int pp[],int*n),它的功能是:求出能整除x且不是偶数的所有整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。
例如,若x中的值为30,则有4个数符合要求,它们是1、3、5、15。
注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
void fun(int x,int pp[],int *n)
{
}
void main()
{
FILE *wf;
int x,aa[1000],n,i;
system(\\
void fun(int x,int pp[],int *n)
{
int i,j=0;
for(i=1;i<=x;i=i+2) /*i的初始值为1,步长为2,确保i为奇数*/
if(x%i==0) /*将能整除x的数存入数组pp中*/
pp[j++]=i;
*n=j; /*返回满足条件的数的个数*/
}
解析:本题考查:偶数的判定方法;整除的实现。
本题题干信息是:能整除x且不是偶数的所有整数。循环语句中变量i从1开始且每次增2,所以i始终是奇数。
对于本题目要求的不是偶数的判定方法,即该数对2求余不为0。除以上方法外,还可以通过for循环语句直接把偶数筛出去,确保参与操作的数均为奇数。
5.请编写函数fun,其功能是:找出用1、2、3、4四个数字,能组成多少个互不相同且无重复数字的三位数,然后把这些三位数按从小到大的顺序依次存入相应的数组xxx中,符合条件的个数由函数值返回。
注意:请勿改动主函数main和其他
本文档预览:3600字符,共17774字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载