2015年计算机二级C语言上机操作题及答案(9)
发布时间:2011/6/30 11:14:02 来源:城市学习网 编辑:ziteng
第9套
填空题
给定程序的功能是分别统计字符串中大写字母和小写字母的个数。
例如,给字符串SS输入:AaaaBBb123CCccccd,则输出结果应为:upper=5, lower=9。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序:#include <stdio.h>
void fun(char *s, int *a, int *b)
{
while (*s)
{
if (*s>=’A’ && *s<=’Z’)
___1___;
if (*s>=’a’ && *s<=’z’)
___2___;
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", ___3___);
}
第1处填空:(*a)++或++(*a)或*a=*a+1或*a+=1
第2处填空:(*b)++或++(*b)或*b=*b+1或*b+=1
第3处填空:upper,lower [NextPage] 改错题
下列给定程序中,函数fun的功能是:从n个学生的成绩中统计出低于平均分的学生人数,此人数由函数值返回,平均分存放在行参aver所指的存储单元中。例如,若输入8名学生的成绩:
80.5 60 72 90.5 98 51.5 88 64
则低于平均分的学生人数为4(平均分为:75.5625).
请改正程序中的错误,使程序能统计出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:#include <conio.h>
#include <stdio.h>
#define N 20
int fun(float *s, int n, float *aver)
{
float ave, t = 0.0;
int count = 0, k, i;
/********found********/
for (k=0; k<n; k++)
t = s[k];
ave = t/n;
for (i=0; i<n; i++)
if (s[i] < ave)
count++;
/********found********/
*aver = &ave;
return count;
}
main()
{
float s[30], aver;
int m, i;
printf("\nPlease enter m: ");
scanf("%d", &m);
printf("\nPlease enter %d mark :\n ", m);
for (i=0; i<m; i++)
scanf("%f", s+i);
printf("\nThe number of students : %d\n", fun(s, m, &aver));
printf("Ave=%f\n", aver);
}
第1处:t=s[k];应改为t+=s[k];
第2处:*aver=&ave;应改为*aver=ave; [NextPage] 编程题
编写函数fun,它的功能是:根据以下公式求p的值,结果由函数值带回。M与n为两个正整数且要求m>n。
P= 例如:m=12,n=8时,运行结果为495.000000
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:#include <conio.h>
#include <stdio.h>
float fun( int m, int n)
{
}
main()
{
FILE *out;
printf("P=%f\n", fun(12,8));
out = fopen("out.dat", "w");
fprintf(out, "%f", fun(12,6));
fclose(out);
}
答案是:
float fun(int m,int n)
{
float p,t=1.0;
int i;
for (i=1;i<=m;i++)
t=t*i;
p=t;
for(t=1.0,i=1;i<=n;i++)
t=t*i;
p=p/t;
for(t=1.0,i=1;i<=m-n;i++)
t=t*i;
p=p/t;
return p;
}