《C语言程序设计A》课程作业评讲(2)
下面我们将对形成性考核作业册(第一次作业)中的第五题进行作业评讲。 下文中,黑色的是问题与答案,绿色是说明和解释。 五、根据下列每个题目要求编写程序
1.编写一个函数,函数头格式为“void fun4(char *a , int b[])”,分别求出由字符指针a所指向的字符串中包含的每种十进制数字出现的次数,把统计结果保存在数组b的相应元素。
此题的考核知识点有3个:
⑴第三章流程控制语句中的while循环语句和if语句的编程; ⑵第四章中一维数组应用; ⑶第六章 函数的编程。 分析:
此题主要考核第六章函数的编程,要求熟悉函数的格式以及参数的传递方式,要求用函数来实现统计每种十进制数字出现的次数,统计次数用数组来完成。
答案:
#include
/*void main() {
char * a=\int b[10]={0}; fun4(a,b);
for(int i=0;i<10;i++)
第 1 页 共 5 页
do{
if(*a>='0' && *a<='9')b[*a-48]++;
}while(*a++);
}*/
printf(\
2.编写一个函数,函数头格式为“double Mean(double a[M][N] , int m , int n)”,要求返回二维数组a[m][n]中所有元素的平均值,假定在计算过程是采用变量v存放平均值。
此题的考核知识点有3个:
⑴第三章流程控制语句中的for循环语句的编程; ⑵第四章中二维数组应用; ⑶第六章中函数的编程。 分析:
此题主要考核第六章函数的编程,要计算平均值,必须先求所有元素之和,所以要用到累加求和程序“s=s+x”,最后除以所有元素的个数即可。
答案:
#include
double Mean(double a[M][N], int m,int n ){ }
/*void main() { }*/
3.编写一个递归函数“int FF(int a[] , int n)”,求出数组a中所有元素n个元素之积并
第 2 页 共 5 页
double v=0; for(int i=0;i for(int j=0;j v+=a[i][j]; return v/(m*n); double a[2][3]={1,2,3,4,5,6}; printf(\ 返回。 此题的考核知识点有4个: ⑴第三章流程控制语句中的if语句的编程; ⑵第四章中一维数组应用; ⑶第六章中函数的编程; ⑷第六章中递归函数的编程;。 分析: 此题主要考核第六章递归函数的编程,要求熟悉递归函数的格式以及参数的传递方式,此题的关键是要构造递归表达式“mul=a[n-1]*FF(a,n-1);”。 答案: #include /*void main() { }*/ 4.编写一个主函数,利用while循环,求出并显示满足不等式1+1/2+1/3+??+1/n>5的最小n值。 此题的考核知识点是:第三章流程控制语句中的if语句和while循环的编程。 分析: 此题主要考核第三章中利用流程控制语句中的if语句和while循环来实现累加求和的程 第 3 页 共 5 页 int mul=1; if(n==1)mul*=a[0]; else mul=a[n-1]*FF(a,n-1); return mul; int a[6]={1,2,3,4,5,6}; printf(\ 序,很显然要用到累加求和程序“s=s+x”。 答案: #include 5.编写一个主函数,求满足不等式22+42+??+n2<1000的最大n值,假定分别用i和s为取偶数值和累加值的变量,并限定使用do循环编程。 此题的考核知识点是:第三章流程控制语句中的if语句和do---while循环的编程。 分析: 此题的编程方法跟上题类似。 答案: #include int s=0,i=2; do { s+=i*i; 第 4 页 共 5 页 double sum=0; int n=1; while(true) { } printf(\ if(sum + 1/(double)n > 5)break; else sum += 1/(double)n; n++; } if(s+(i+2)*(i+2)>=1000)break; else i+=2; }while(true); printf(\ 6.编写一个主函数,计算并输出n!的值,其中n值由键盘输入。 此题的考核知识点是:第三章流程控制语句中的for循环的编程。 分析: 此题主要考核第三章中利用流程控制语句中的for循环来实现累乘求和的程序,很显然要用到累加求和程序“s=s*x”。 答案: #include int s=0,n; printf(\请输入n的值:\scanf(\for(int i=1;i<=n;i++) s=s*i; printf(\ 第 5 页 共 5 页