2017年电大电大年春《C语言程序设计》形成性考核册答案

C语言程序设计形成性考核册

6. #include void main() { int a,b; for(a=1,b=2;b<50;){ printf(\ a=a+b; b=a+b; } printf(\}

输出结果为: 1 2 3 5 8 13 21 34

Press any key to continue

四、写出下列每个函数的功能

1. #include int SA(int a,int b){ if(a>b)return 1; else if(a==b)return 0; else return -1; }

函数功能为:

根据实参a大于、等于或小于实参b,返回1,0或-1

2. #include int SC(int a,int b,int c){ if(a>=b && a>=c)return a; if(b>=a && b>=c)return b; return c; }

函数功能为:

返回实参a、 b、c中的最大数

3.double SF(double x,int n){ //n为大于等于0的整数 double p=1,s=1; for(i=1;i<=n;i++){ p*=x; s+=p/(i+1); } return s; }

函数功能为:

计算x+x2/2+x3/3+??+xn/(n+1)的值

共25页 - 9 -

C语言程序设计形成性考核册

4. #include int SC(int x){ int a=(int)sqrt(x); int i=2; while(i<=a){ if(x%i==0)break; i++; } if(i<=0)return 0;else return 1; }

函数功能为:

判断一个整数是否是素数

5. #include void trans(int x) { char a[10]; int i=0,rem; do{ rem=x; x=x/16; if(rem<10)a[i]=48+rem;//'0'字符的ASCII码为48 else a[i]=65+rem; //'A'字符的ASCII码为55 i++; }while(x!=0); while(i>0)printf(\ printf(\}

函数功能为:

将一个整数化成十六进制数

五、根据下列每个题目要求编写程序

1.编写一个函数,函数头格式为“void fun4(char *a , int b[])”,分别求出由字符指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素。 #include

void fun4(char* a,int b[]){ do{ if(*a>='0' && *a<='9')b[*a-48]++; }while(*a++); }

/*void main() { char * a=\ int b[10]={0};

共25页 - 10 -

C语言程序设计形成性考核册

fun4(a,b); for(int i=0;i<10;i++) printf(\}*/

2. 编写一个函数,函数头格式为“double Mean(double a[M][N] , int m , int n)”,要求返回二维数组a[m][n]中所有元素的平均值,假定在计算过程是采用变量v存放平均值。 #include const int M=2,N=3;

double Mean(double a[M][N], int m,int n ){ double v=0; for(int i=0;i

/*void main() { double a[2][3]={1,2,3,4,5,6}; printf(\ }*/

3. 编写一个递归函数“int FF(int a[] , int n)”,求出数组a中所有元素n个元素之积并返回。 #include int FF(int a[] , int n){ int mul=1; if(n==1)mul*=a[0]; else mul=a[n-1]*FF(a,n-1); return mul; }

/*void main() { int a[6]={1,2,3,4,5,6}; printf(\ }*/

4. 编写一个主函数,利用while循环,求出并显示满足不等式1+1/2+1/3+??+1/n>5的最小n值。

#include void main()

共25页 - 11 -

C语言程序设计形成性考核册

{ double sum=0; int n=1; while(true) { if(sum + 1/(double)n > 5)break; else sum += 1/(double)n; n++; } printf(\}

5. 编写一个主函数,求满足不等式22+42+??+n2<1000的最大n值,假定分别用i和s为取偶数值和累加值的变量,并限定使用do循环编程。 #include void main() { int s=0,i=2; do { s+=i*i; if(s+(i+2)*(i+2)>=1000)break; else i+=2; }while(true); printf(\}

6. 编写一个主函数,计算并输出n 的值,其中n值由键盘输入。 #include void main() { int s=0,n; printf(\请输入n的值:\ scanf(\ for(int i=1;i<=n;i++) s+=i*i; printf(\}

共25页 - 12 -

联系客服:779662525#qq.com(#替换为@)