2011,2012 年上机题 100 题库
1: 第1 题 m 个人的成绩存放在score 数组中,请编写函数fun,它的功能是:将低于平均分
的人作为函数值返回,将低于平均分的分数放在below 所指定的函数中。
答案:
int fun(int score[],int m,int below[])
{
int i,k=0,aver=0;
for(i=0;i<m;i++)
aver+=score[i];
aver/=m;
for(i=0;i<m;i++)
if(score[i]<aver)
{
below[k]=score[i];
k++;
}
return k;
}
2: 第2 题 请编写函数fun,它的功能是:求出1 到100 之内能北7 或者11 整除,但不能同
时北7 和11 整除的所有证书,并将他们放在a 所指的数组中,通过n 返回这些数的个数。
答案:
void fun(int *a, int *n)
{
int i,j=0;
for(i=2;i<1000;i++)
if ((i%7==0 ||i%11==0) && i%77!=0)
a[j++]=i;
*n=j;
}
3: 第3 题 请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x 且不是偶数的
各整数,并按从小到大的顺序放在pp 所指的数组中,这些除数的个数通过形参n 返回。
答案:
void fun(int x, int pp[ ], int *n)
{
int i=1,j=0;k=0,*t=pp;
for(i=0;i<=x;i++)
if(i%2!=0)
{
t[j]=I;
j++;
}
for(i=0;i<j;i++)
if(x%t[i]==0)
{
pp[k]=t[i];
k++;
}
*n=k;
}
4: 第4 题 请编写一个函数void fun(char *tt,int pp[]),统计在tt 字符中"a"到"z"26 各字母各自
出现的次数,并依次放在pp 所指的数组中。
答案:
void fun(char *tt, int pp[])
{
int i;
for (i=0;i<26;i++)
pp[i]=0;
while (*tt)
{
switch (*tt)
{
case ‘a’: pp[0]++;break;
case ‘b’: pp[1]++;break;
case ‘c’: pp[2]++;break;
case ‘d’: pp[3]++;break;
case ‘e’: pp[4]++;break;
case ‘f’: pp[5]++;break;
case ‘g’: pp[6]++;break;
case ‘h’: pp[7]++;break;
case ‘i’: pp[8]++;break;
case ‘j’: pp[9]++;break;
case ‘k’: pp[10]++;break;
case ‘l’: pp[11]++;break;
case ‘m’: pp[12]++;break;
case ‘n’: pp[12]++;break;
case ‘o’: pp[14]++;break;
case ‘p’: pp[15]++;break;
case ‘q’: pp[16]++;break;
case ‘r’: pp[17]++;break;
case ‘s’: pp[18]++;break;
case ‘t’: pp[19]++;break;
case ‘u’: pp[20]++;break;
case ‘v’: pp[21]++;break;
case ‘w’: pp[22]++;break;
case ‘x’: pp[23]++;break;
case ‘y’: pp[24]++;break;
case ‘z’: pp[25]++;break;
}
tt++;
}
}
5: 第5 题 请编写一个函数void fun(int m,int k,int xx[]),该函数的功能是:将大于整数m 且紧
靠m 的k 各素数存入xx 所指的数组中。
答案:
void fun(int m, int k, int xx[])
{
int g=0,I,j,flag=1;
for(i=m+1;i<m*m;i++)
{
for(j=0;j<I;j++)
{
if(i%j!=0)
flag=1;
else
{
flag=0;
break;
}