93-96C语言试题

更新时间:2023-11-06 05:44:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第93套

1.填空题

请补充main函数,该函数的功能是:求n!。 例如7!=5040。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。

试题程序:

#include #include main() { int i,n; long f=1; clrscr(); printf(\ scanf(\【1】); for(【2】;i<=n;i++) 【3】; printf(\

}

【1】&n

【2】i=1或i=2

【3】f*=i

【解析】填空1:本题考查对调用标准输入函数scanf()的掌握,地址列表中都是地址值,所以在变量名前要加上取址运算符&。填空2:n的阶乘是将1、2、3……n累积相乘,所以for循环中i从1开始取数。但因为1乘以任何数都等于这个数本身,所以i也可以从2开始取数。填空3:掌握了阶乘的算法,这空就非常简单了。

2. 改错题

下列给定程序中,函数fun()的功能是:从3个红球,5个白球,6个黑球中任意取出8个作为一组,进行输出。在每组中,可以没有黑球,但必须要有红球和白球。组合数作为函数值返回。正确的组合数应该是15。程序中i的值代表红球数,j的值代表白球数,k的值代表黑球数。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include int fun()

{ int i,j,k,sum=0;

printf(\

/**********************found***********************/ for(i=0;i<=3;i++)

{ for (j=1;j<=5;j++) {k=8-i-j;

/**********************found***********************/ if(k>=1&&k<=6) { sum=sum+1;

printf(\

} } }

return sum; }

main()

{ int sum; sum=fun();

printf(\}

(1)错误:for(i=0;i<=3;i++)

正确:for(i=1;i<=3;i++) (2)错误:if(k>=1&&k<=6)

正确:if((k>=1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))

【解析】该题是一道教材习题的变体,如果单纯从数学的排列组合角度来分析,实在简单不过,那怎么才能用C语言实现题目中的要求呢?这就需要我们有一个清晰的编程思想。红球数i的总数为3,但最小值为1,循环条件中,i的值是从0开始的,所以不应该是for(i=0;i<=3;i++),而是for(i=1;i<=3;i++),另外,在if(k>=1&&k<=6)中,程序旨在说明题干中的\在每组中,可以没有黑球,但必须要有红球和白球\信息,一一满足后,正确的条件应该是if((k>=1&&k<=6)&&(i!=0)&&(j!=0)||(k==0))。

3. 编程题

请编写函数fun(),它的功能是计算下列级数和,和值由函数值返回。

S=1+x+x2/2!+x3/3!+…+xn/n!

例如,当n=10,x=0.3时,函数值为1.349859。 注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:

#include #include #include

double fun(double x, int n) { }

main() {

clrscr();

printf(\}

【解析】本程序中用s1来表示每项的分母(即各项中的阶乘),要注意本程序中s和s1的初值都为1。

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; }

第94套

1.填空题

数组xx[N]保存着一组4位无符号整数,其元素的个数通过变量num传入函数fun()。请补充函数fun(),该函数的功能是:从数组xx中找出个位和百位的数字相等的所有无符号整数,结果保存在数组yy中,其个数由函数fun()返回。

例如:当xx[8]={1111,2413,2321,2222,4245,3333,1414, 5335}时,bb[6]={11112321,2222,4245,3333,1414}。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。

试题程序:

#include #include #define N 1000

int fun(int xx[],int bb[],int num) { int i,n=0; int g,b; for(i=0;i

main() { int xx[8]={1111,2413,2321,2222,4245,

3333,1414,5335};

int yy[N]; int num=0,n=0,i=0; num=8; clrscr(); printf(\ for(i=0;i

}

【1】xx[i]

【2】bb[n++]=xx[i]

【3】n

【解析】填空1:变量b存放了4位数的百位数字,所以变量g应该存放4位数的个位数字,将这个4位数对10求余,则得到这个数的个位数字。填空2:将个位数字与百位数字相等的整数存于数组bb中。填空3:变量n记录了个位数字等于百位数字的整数的个数,题目要求个数由函数fun()返回,所以应返回n。

2. 改错题

下列给定程序中,函数fun()的功能是:求整数x的y次方的低3位值。例如,整数5的6次方为15625,此值的低3位值为625。

请改正程序中的错误,使它能得出正确的结果。

注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序:

#include

long fun(int x, int y, long *p) { int i; long t=1;

/**********************found***********************/ for(i=1;i

/**********************found***********************/ t=t/1000; return t; }

main()

{ long t, r; int x, y;

printf(\ t=fun(x,y,&r);

printf(\}

(1)错误:for(i=1;i

正确:for(i=1;i<=y;i++) (2)错误:t=t/1000;

正确:t=t00;

【解析】我们先用简单的思想理解一下该程序,如果当x=y=1时,程序的问题出在哪儿?很简单吧,所以for(i=1;i

3. 编程题

假定输入的字符串中只包含字母和*号。请编写函数fun(),它的功能是:将字符串中的前导*号全部删除,中间和后面的*号不删除。

例如,若字符串中的内容为****A*BC*DEF*G*******,删除后,字符串中的内容则应当是A*BC*DEF*G*******。

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序:

#include #include void fun (char *a) { }

main() {

char s[81];

printf(\ gets(s); fun(s);

printf(\

【解析】在前面的改错题和编程题中,相关试题已经出现好多次了,我们在此提供另一种解答方法。

#include void fun(char *a) {char *p=a;

while(*p=='*') p++; strcpy(a,p); }

}

void fun (char *a) {

char *p=a;

while(*p=='*') p++; /*指针p指向字符串第一个字母*/ for(;*p!='\\0';p++,a++)

*a=*p; /*从第一个字母开始,其后的字符都放入指针a所指的字符串中*/ *a='\\0'; /*在字符串最后加上结束标记符*/ }

第95套

1.填空题

请补充main函数,该函数的功能是:把文本文件B中的内容追加到文本文件A的内容之后。

例如,文件B的内容为\I'm ten.\,文件A的内容为\I'm a student!\,追加之后文件A的内容为\I'm a student ! I'm ten.\

注意:部分源程序给出如下。

请勿改动主函数main和其他函数中的任何内容,仅在函数main的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include #define N 80 main() { FILE *fp,*fp1,*fp2; int i; char c[N],t,ch; clrscr(); if((fp=fopen(\ { printf(\ exit(0); } printf(\ for(i=0;(ch=fgetc(fp))!=EOF;i++) { c[i]=ch; putchar(c[i]); } fclose(fp); if((fp=fopen(\ { printf(\ exit(0);

本文来源:https://www.bwwdw.com/article/nzp2.html

Top