首页 计算机等级考试二级上机100套题库

计算机等级考试二级上机100套题库

举报
开通vip

计算机等级考试二级上机100套题库第一套 给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为: 2,在程序中定义的变量名要与公式的变量相同)。 例如,输入圆的半径值:19.527,输出为:s=598.949991。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。 试题程序: #include double fun( double r) { return 3.14159*【1】/2.0; } void main() { doub...

计算机等级考试二级上机100套题库
第一套 给定程序的功能是:求二分之一的圆面积,函数通过形参得到圆的半径,函数返回二分之一的圆面积(注:圆面积公式为: 2,在程序中定义的变量名要与公式的变量相同)。 例如,输入圆的半径值:19.527,输出为:s=598.949991。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在横线上填入所编写的若干 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式或语句。 试题程序: #include double fun( double r) { return 3.14159*【1】/2.0; } void main() { double x; printf("Enter x: "); scanf("%lf",【2】); printf("s=%lf\n",fun(【3】)); } 【参考 答案 八年级地理上册填图题岩土工程勘察试题省略号的作用及举例应急救援安全知识车间5s试题及答案 】 (1)r*r (2)&x (3)x 【考点分析】 本题考查:圆面积计算公式 *r*r;scanf( )函数的形式,其一般形式为"scanf("格式控制字符串",地址表列);",注意地址是由地址运算符"&"后跟变量名组成的;printf( )函数的形式,其一般形式为"printf("格式控制字符串",输出表列);";函数实参调用,函数作为另一个函数调用的实际参数出现。 【解题思路】 填空1:计算圆的面积,公式为: *r。 填空2:scanf( )函数一般形式为scanf(格式控制,地址表列),因此填入&x。 填空3:函数的实际参数是圆的半径x。 下列给定程序中,函数fun的功能是:计算S=f(-n)+f(-n+1)+…+f(0)+f(1)+f(2)+…f(n)的值。 例如,当n为5时,函数值应为10.407143。f(x)函数定义如下: f(x)= 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include #include /*************found**************/ f(double x) { if(x==0.0||x==2.0) return 0.0; else if(x<0.0) return(x-1)/(x-2); else return(x+1)/(x-2); } double fun(int n) { int i; double s=0.0,y; for(i=-n; i<=n;i++) { y=f(1.0*i); s+=y;} /*************found**************/ return s } void main() { system("CLS"); printf("%f\n", fun(5)); } 【参考答案】 (1) 错误:f(double x) 正确:double f(double x) (2) 错误:return s 正确:return s; 【考点分析】 本题考查:函数的定义,其一般形式为"类型标识符 函数名(形式参数表列)",其中类型标识符指明了本函数的类型,函数的类型实际上是函数返回值的类型。 【解题思路】 该程序的流程是,fun( )程序对f(n)项循环累加,并且采用条件选择语句计算函数f(x)的值。本题的错误在于未定义函数f(double x)的返回值类型。C语言规定,在未显式声明的情况下,函数返回值默认为int型。 编写函数fun,函数的功能是:根据以下公式计算s,计算结果作为函数值返回;n通过形参传入。 S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+n) 例如,若n的值为11时,函数的值为1.833333。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #include float fun(int n) { } void main() { FILE *wf; int n; float s; system("CLS"); printf("\nPlease enter N: "); scanf("%d",&n); s=fun(n); printf("The result is:%f\n " , s); /******************************/ wf=fopen("out.dat","w"); fprintf (wf,"%f",fun(11)); fclose(wf); /*****************************/ } 【参考答案】 float fun(int n) { int i,s1=0; /*定义整型变量s1,表示分母*/ float s=0.0; /*定义单精度变量s,表示每一项*/ for(i=1;i<=n;i++) { s1=s1+i; /*求每一项的分母*/ s=s+1.0/s1; /*求多项式的值*/ } return s; } 【考点分析】 本题考查:计算给定表达式的值,根据题意判断表达式为1到n累加倒数之和。变量数据类型及强制转换操作。for循环语句,一般情况需要确定循环变量的取值范围。使用return语句完成函数值的返回。 【解题思路】 本题可以通过for循环语句来实现第1项到第n项的变化,然后计算各项的累加和。方法是先根据题目要求定义变量(注意该变量的数据类型),然后对其进行初始化操作,因为该变量用作累加器,所以初始值应为0(或0.0,根据变量数据类型来确定),再通过for循环语句来完成累加过程。 本题中s1用来表示式中每一项的分母,它可以由前一项的分母加项数得到。注意:由于s1定义成一个整型,所以在s=s+1.0/s1中不能把1.0写成1。 【解题宝典】 此类计算表达式值的程序,首先需要根据题意分析表达式的规律,得出通项,然后再完成程序语句。 第二套 请补充main函数,该函数的功能是:计算两个自然数n和m(m<10000)之间所有数的和(n和m从键盘输入)。 例如,当n=1,m=100时,sum=5050;当n=100,m=1000时,sum=495550。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #include void main() { int n,m; long sum; 【1】; system("CLS"); printf("\nInput n,m\n"); scanf("%d,%d",&n,&m); while(n<=m) { 【2】; n++; } printf("sum=%【3】\n",sum); } 【参考答案】 (1) sum=0 (2) sum+=n (3) ld 【考点分析】 本题考查:变量初始化,需要注意该变量是累加器还是累乘器:printf( )函数,其一般形式为"printf("格式控制符",输出表列)"。其中,格式控制符用于指定输出格式,可由格式字符串和非格式字符串两种组成,格式字符串是以%开头的字符串,在%后面跟有各种格式字符,以说明输出数据的类型、形式、长度、小数位数等,如"%ld"表示按十进制长整型输出,非格式字符串在输出时原样照印,在显示中起提示作用。 【解题思路】 填空1:变量sum进行了类型声明,但没有进行初始化,而后面的程序用sum来存放最后的结果,所以要在使用前将sum初始化为0。 填空2:通过while循环将自然数n和m之间的数进行累加,结果存于sum中。 填空3:由于sum为长整型,所以标准输出函数printf( )中的格式控制符为"%ld"。 下列给定程序中,fun函数的功能是:根据形参m,计算下列公式的值: t=1+1/2+1/3+1/4+…+1/m 例如,若输入5,则应输出2.283333。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include double fun(int m) { double t=1.0; int I; for(I=2;I<=m;I++) /*************found**************/ t+=1.0/k; /*************found**************/ return I; } void main() {int m; system("CLS"); printf("\nPlease enter 1integer number: "); scanf("%d",&m); printf("\nThe result is %1f\n", fun(m)); } 【参考答案】 (1)错误:t+=1.0/k; 正确:t+=1.0/I; (2)错误:return I; 正确:return t; 【考点分析】 本题考查:for循环语句的循环条件,这类题目的一般解法是根据题意确定循环变量的取值范围;函数返回值,其一般形式为"return 表达式;",该语句的功能是计算表达式的值,并返回给主调函数。 【解题思路】 (1)该题目考查分母成等差数列递增的一个数学公式,我们先看循环条件for(I=2;I<=m;I++),i从2开始递增到m,所以t的值应该是由1.0/i的值逐步循环叠加后的结果,而不是t+=1.0/k;。 (2)return I;考查对程序的解读能力,当循环结束后(由输入m的值决定),函数返回当前t的值。 请编写一个函数 void fun(char *tt,int pp[]),统计在tt字符串中"a"到"z"26个字母各自出现的次数,并依次放在pp所指数组中。 例如,当输入字符串abcdefghabcdeabc后,程序的输出结果应该是:3 3 3 2 2 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include void fun(char *tt,int pp[] ) { } void main( ) { FILE *wf; char aa[1000]; int bb[26], k; system("CLS"); printf("\nPlease enter a char string : ") ; scanf("%s",aa); fun(aa,bb); for (k=0 ;k<26 ; k++) printf("%d ",bb[k]) ; printf("\n "); /******************************/ wf=fopen("out.dat","w"); fun ("abcdefgabcdeabc",bb) ; for (k=0 ;k<26 ; k++) fprintf(wf,"%d ",bb[k]) ; fclose(wf); /*****************************/ } 【参考答案】 void fun(char*tt,int pp[]) { int i; for(i=0;i<26;i++) pp[i]=0; /*初始化pp数组各元素为0*/ for(;*tt!=' \0';tt++) if(*tt>='a'&&*tt<='z') pp[*tt-'a']++; /*将tt字符串中'a'到'z'26个字母各自出现的次数,依次放在pp数组中,任一个小写字母减去'a'后所得结果正好是它对应的下标*/ } 【考点分析】 本题考查:统计小写字母在指定字符串中出现次数。for循环语句,需要注意循环变量的取值范围。if条件语句要注意条件表达式的判定。 【解题思路】 第1个循环的作用是初始化数组pp,未经赋值变量的量为一个不确定数字。由于它要将'a'到'z'26个字母的个数依次放到数组pp中,即'a'的个数存于pp[0]中,'b'的个数存于pp[1]中,'c'的个数存于pp[2]中,…,依此类推,而'a'-'a'的值正好为0,'b'-'a'的值为1,'c'- 'a' 的值为2,…,依此类推。任一个小写字母减去'a'后所得结果正好是它对应的下标,所以就有了pp[*tt-'a']++,但*tt必须是小写字母,即if( )不应省略。 。 第三套 给定程序的功能是:判断字符ch是否与串str中的某个字符相同,若相同什么也不做,若不同则插在串的最后。 注意:部分源程序给出如下。 请勿改动函数main和其他函数中的任何内容,仅在横线上填入所编写的若干表达式或语句。 试题程序: #include #include void fun (char *str,char ch) { while (*str &&*str !=ch) str++; if(*str【1】ch) { str[0]=ch; 【2】=0; } } void main() {char s[81],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 %s\n",s); } 【参考答案】 (1) != (2) str[1]或*(str+1) (3) s,c 【考点分析】 本题考查:if语句,一般掌握条件表达式的判定。函数的调用,其一般形式为"函数名(实际参数表)"。 【解题思路】 填空1:根据题意"若相同什么也不做",则应填入!=。 填空2:若不同则插在串的最后,那么0就在字符串的倒数第二了。 填空3:函数传递的参数为输入的两个字符串,则填入s,c。 下列给定程序中,函数fun的功能是:分别统计字符串中大写字母和小写字母的个数。例如,给字符串s输入:AaaaBBb123CCccccd,则应输出结果:upper=5,lower=9。 请改正程序中的错误,使它能计算出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include /*********found***********/ void fun(char *s,int a,int b) { while(*s) { /*********found***********/ if(*s>='A' && *s<='Z') a++; /*********found***********/ if(*s>='a' && *s<='z') b++; s++; } } main() { char s[100]; int upper=0,lower=0; printf("\nplease a string :"); gets(s); fun(s,&upper,&lower); printf("\n upper=%d lower=%d\n",upper,lower); } 【参考答案】 (1) 错误:void fun(char *s, int a, int b) 正 确:void fun(char *s, int *a, int *b) (2)错误:a++; 正确:(*a)++; (3)错误:b++; 正确:(*b)++; 【考点分析】 本题考查:函数的参数传递和指针变量,理解指针变量作为函数的参数,函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型,它的作用是将一个变量的地址传送到另一个函数中。 【解题思路】 (1)根据题中程序可以看出,函数fun传递的是地址,那么,在函数中就应该出现指针,所以改为void fun (char *s ,int *a, int *b)。 (2)和(3)很明显,这里是要累加数值,因为a、b是指针变量,所以是错误的。 请编写函数fun,它的功能是:求出ss所指字符串中指定字符的个数,并返回此值。 例如,若输入字符串123412132,输入字符1,则输出3。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #define M 81 int fun(char *ss, char c) { } void main() { FILE *wf; char a[M], ch; system("CLS"); printf("\nPlease enter a string: "); gets(a); printf("\nPlease enter a char: "); ch=getchar(); printf("\nThe number of the char is: %d\n", fun(a,ch)); /******************************/ wf=fopen("out.dat","w"); fprintf(wf,"%d",fun("123412132",'1')); fclose(wf); /*****************************/ } 【参考答案】 int fun(char *ss, char c) { int i=0; for(;*ss!='\0';ss++) if(*ss==c) i++; /*求出ss所指字符串中指定字符的个数*/ return i; } 【考点分析】 本题考查:字符串结束标识'\0';for循环语句,如何遍历字符串;通过if条件语句,判断是否相同。 【解题思路】 从字符串ss中找出子字符串的方法是:从第1个字符开始,对字符串进行遍历;若ss串的当前字符等于t串的第1个字符,两字符串的指针自动加1,继续比较下一个字符;若比较至字符串的结尾,则跳出循环;若ss串的字符和c串的字符不对应相同,则继续对ss串的下一个字符进行处理。本程序是采用逐一比较的方式找出出现的次数。循环的作用是在串中从左到右逐一走动,if( )的作用是进行判断是否相同,若与c相同,则表示又出现一次。 第四套 请补充函数fun,该函数的功能是:把ASCII码为偶数的字符从字符串str中删除,结果仍然保存在字符串str中,字符串str从键盘输入,其长度作为参数传入函数fun。 例如,输入"abcdef",输出"ace"。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include #include #define N 80 【1】 { int i, j; 【2】; for (i=0;i 知识点 高中化学知识点免费下载体育概论知识点下载名人传知识点免费下载线性代数知识点汇总下载高中化学知识点免费下载 。 【解题思路】 填空1:由main函数调用函数fun的格式可以知道,函数fun没有返回值,第一个参数是字符数组,第二个参数是整型变量。 填空2:变量j声明时,没有初始化,所以在使用j之前要将它初始化为0。 填空3:当把所有ASCII码为偶数的字符都存入字符串s中后,要在最后加上'\0',表示字符串的结束。 下列给定程序中函数fun的功能是:计算正整数num各位上的数字之积。例如,若输入252,则输出应该是20。若输入202,则输出应该是0。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include long fun(long num) { /*************found**************/ long k; do { k *=num%10; /*************found**************/ num \=10; }while(num); return(k); } main() { int n; printf("\Please enter a number: "); scanf("%ld",&n); printf("\n%ld\n",fun(n)); } 【参考答案】 (1)错误:long k; 正确:long k=1; (2)错误:num\=10; 正确:num/ =10; 【考点分析】 变量初始化,保存乘积的变量初始化为1。 【解题思路】 (1)k用来存放各位数字的积,初值应为1。 (2)这里是一个符号错误,除号使用"/"来表示的。 请编写一个函数fun,它的功能是:求出1到m(含m)之内能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。 例如,若传给m的值为50,则程序输出: 7 11 14 21 22 28 33 35 42 44 49 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #define M 100 void fun(int m, int *a, int *n) { } void main() { FILE *wf; int aa[M],n,k; system("CLS"); fun(50,aa,&n); for(k=0;k #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",&year); 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时,不是闰年。 下列给定程序中函数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(n>1&&n<170) /*************found**************/ result=n--; return result; } void main() { int n; printf("Input N:"); scanf("%d",&n); printf("\n\n%d!=%lf\n",n,fun(n)); } 【参考答案】 (1)错误:if n==0 正确:if(n==0) (2)错误:result =n--; 正确:result *=n--; 【考点分析】 本题考查:if语句,一般情况下,需要根据题目要求确定条件表达式的内容,同时需要注意其格式。计算阶乘的方法,n!=n*(n-1)!。 请编写函数fun,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的个位和百位上。 例如,当a=45,b=12,调用该函数后,c=5241。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include void fun(int a ,int b,long *c) { } void main() { int a,b; long c; FILE *out; printf("Input a ,b: "); scanf("%d%d",&a,&b); fun(a,b,&c); printf("The result is :%ld\n",c); /******************************/ out=fopen("out.dat","w"); fun(a+11,b+22,&c); fprintf(out,"%ld\n",c); fclose(out); /******************************/ } 【参考答案】 void fun(int a,int b,long *c) { *c=(a%10)*1000+(b%10)*100+(a/10)*10+b/10; } 【考点分析】 本题考查:如何取出数值n的各个位,主要是考查'%'和'/'的交换使用。两个整型数相除,'/'用来求得数的整数部分,'%'用来求余数。 【解题思路】 本题中主要的问题是怎么取出a和b的个位数和十位数,取出后怎么表示成c中相应的位数。由于a和b都是只有两位的整数,所以分别对它们除10可得到它们的十位数,分别用10对它们求余可得到它们的个位数。得到后对应乘以1000、100、10、1就可得到c的千位数、百位数、十位数和个位数。注意:使用c时要进行指针运算。 第六套 请补充函数fun,函数fun的功能是求n的阶乘。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include long fun(int n) { if (【1】) return(n*fun(【2】)); return【3】; } void main() { printf("10!=%ld\n",fun(10)); } 【参考答案】 (1)n>1或11和n==1这两种情况的处理方法不同,需要分开考虑。 填空2:阶乘的算法是,当n>1时,n!=n*(n-1)!,即fun(n)=n*fun(n-1)。 填空3:n==1是递归的终止条件,返回值为1。 下列给定的程序中,函数fun的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传入,若k的值为500,则函数的值为4622。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include int fun(int k) { int m=0,mc=0, j; while((k>=2)&&(mc<10)) { /*************found**************/ if((k%13=0)||(k%17=0)) { m=m+k;mc++;} k--; /*************found**************/ return m; } void main() {system("CLS"); printf("%d\n ",fun(500)); } 【参考答案】 (1 )错误:if((k%13=0)||(k%17=0)) 正 确:if((k%13==0)||(k%17==0)) (2 )错误:缺少大括号 正确:加 } 【考点分析】 本题考查:if语句,这类题目的一般解法是根据题意确定if语句的条件表达式,区别逻辑表达式和算术表达式。同时注意c语言书写程序应遵守的规则。 【解题思路】 (1)x能被y整除的表示方法是x%y==0,而并非像题目中所表示的x%y=0。所以,if((k%13=0)||(k%17=0))修改后的结果应该是答案所示信息。 (2)缺少程序完整所需的"}",此类信息在做题时一定要注意,我们可以在做题前先运行一下程序,这样明显的错误一般都会有错误信息显示出来,比如丢失"}"的错误信息是"Compound statement missing } in function fun",并在当前错误处停止光标,我们只要按回车键进行编辑就可以了。 请编写函数fun,它的功能是计算: s=(ln(1)+ln(2)+ln(3)+…+ln(m))0.5 在C语言中可调用log(n)函数求ln(n)。 例如,若m的值为20,则fun函数值为6.506583。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include #include double fun(int m) { } void main() { FILE *wf; system("CLS"); printf("%f\n ",fun(20)); /******************************/ wf=fopen("out.dat","w"); fprintf(wf,"%f",fun(20)); fclose(wf); /*****************************/ } 【参考答案】 double fun(int m) { int i; double s=0.0; for(i=1;i<=m;i++) s=s+log(i); return sqrt(s); /*计算s=ln(1)+ln(2)+ln(3)+…+ln(m)*/ /*对s求平方根并返回*/ } 【考点分析】 计算表达式的值,一般都要定义一个变量sum作为累加(乘器),加法运算时赋初值为0,乘法运算时,赋初值为1,然后利用循环语句,使sum进行累加或累乘。 【解题思路】 题目要求计算从1到m的对数的和,可用从1到m的循环,每次循环都累加求和。该题需要注意之处是,log( )函数的形式参数应当为double型变量,而用于循环的基数变量为整数,需要进行强制转换,在返回的时候求出平方根。 第七套 请补充函数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<=k;I++) { if(【2】) bb[j++]=I; } printf("\n\n"); for(I=【3】;I>=0;I--) printf("%d ",bb[I]); } void main() { int k=1; int bb[100]; system("CLS"); printf("\nPlease input X="); scanf("%d",&k); 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,得到数组最后一个元素的下标。 下列给定程序中,函数fun()的功能是:根据整型形参m的值,计算如下公式的值: 请改正函数fun()中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include #include double fun(int m) {double y=1.0; int I; /*************found**************/ for(I=2;I #include #include #include double fun(int n) { } void main() { FILE *wf; system("CLS"); printf("s=%f\n", fun(1000)); /******************************/ wf=fopen("out.dat","w"); fprintf(wf,"%f",fun(1000)); fclose(wf); /*****************************/ } 【参考答案】 double fun(int n) {double s=0.0; int i; for(i=0;i中)对s求平方根。 八第套 请补充函数fun,它的功能是:计算并输出n(包括n)以内所有能被3或7整除的自然数的倒数之和。 例如,在主函数中从键盘给n输入30后,输出为:s=1.226323。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的横线上填入所编写的若干表达式或语句。 试题程序: #include double fun(int n) { int I; double sum=0.0; for(I=1;【1】;I++) if(I%3==0【2】I%7==0) sum+=【3】/I; return sum; } void main() { int n; double s; printf("\nInput n:"); scanf("%d",&n); s=fun(n); printf("\n\ns=%f\n",s); } 【参考答案】 (1)i<=n (2)|| (3)1.0或(double)1 【考点分析】 本题考查:for循环语句的循环条件,这类题目的一般解法是根据题意确定循环变量的取值范围。if语句的条件表达式,这类题目的一般解法是确定条件表达式的内容。变量数据类型的强制转换,由强制转换运算符完成该转换操作。 【解题思路】 填空1:本题要求找出n(包括n)以内满足条件的自然数,所以,i的取值范围是从1到n。 填空2:i能被3整除,也就是指,i除以3的余数为0。题中的条件是能被3或7整除,所以使用逻辑或运算符 "||"。 填空3:需要注意,如果"/"运算符两边都是整型数,则结果也是整型数。因为i为整型数,如果将i的倒数写为1/i,则结果为0,所以在求倒数时,要使用1.0,而不是1,或者将变量i强制类型转化为double型。 在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中值为正数的平均值(不包括0)。例如,数组中元素的值依次为39,-47,21,2,-8,15,0,则程序的运行结果为19.250000。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。 试题程序: #include #include double fun(int x[]) { /*************found**************/ int sum=0.0; int c=0, I=0; while(x[I]!=0) { if(x[I]>0) { sum+=x[I]; c++; } I++; } /*************found**************/ sum=sum\c; return sum; } void main() { int x[1000]; int i=0; system("CLS"); printf("\nPlease enter some data(end with 0) :"); do { scanf("%d",&x[i]); }while(x[i++]!=0); printf("%f\n",fun(x)); } 【参考答案】 (1)错误:int sum=0.0; 正确:double sum=0.0; (2)错误:sum\=c; 正确: sum/=c; 【考点分析】 本题考查:变量的数据类型,区别int整型和double双精度型;除法运算符"/"。 【解题思路】 (1)定义变量错误。(2)C语言中的除法运算符是"/"。 请编写函数fun,其功能是:将所有大于1小于整数m的非素数存入xx所指数组中,非素数的个数通过k传回。 例如,输入17,则应输出4 6 8 9 10 12 14 15 16。 注意:部分源程序给出如下。 请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。 试题程序: #include #include #include void fun(int m, int *k, int xx[]) { } void main() { FILE *wf; int m, n, zz[100]; system("CLS"); printf("\nPlease enter an integer number between 10 and 100: "); scanf("%d",&n); fun(n,&m,zz); printf("\n\nThere are %d non-prime numbers less than %d: ",m,n); for(n=0;n #define N 3 #define M 5 void main() { int I,j; static float score[N][M]={{83.5,82,86,65,67},{80,91.5,84,99,95},{90.5,95,86,95,97}}; float bb[N]; system("CLS"); for(I=0;I
本文档为【计算机等级考试二级上机100套题库】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_127718
暂无简介~
格式:doc
大小:1MB
软件:Word
页数:81
分类:工学
上传时间:2011-09-29
浏览量:39