2015年计算机二级C语言上机操作题及答案(7)
发布时间:2011/6/30 10:58:48 来源:城市学习网 编辑:ziteng
第7套
填空题
函数fun的功能是:统计长整数n 的各个位上出现数字1,2,3的次数,并通过外部(全局)变量c1,c2,c3返回主函数。
例如,当=123114350时,结果应该为:c1=3,c2=1,c3=2.
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。
试题程序如下: #include <stdio.h>
int c1, c2, c3;
void fun(long n)
{
c1 = c2 = c3 = 0;
while (n)
{
switch(___1___)
{
case 1:
c1++;
___2___;
case 2:
c2++;
___3___;
case 3:
c3++;
}
n /= 10;
}
}
main()
{
long n = 123114350L;
fun(n);
printf("\nThe result :\n");
printf("n=%ld c1=%d c2=%d c3=%d\n", n, c1, c2, c3);
}
第1处填空:n%10
第2处填空:break
第3处填空:break [NextPage] 改错题
下列给定程序中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。
请改正程序中的错误,使程序能得出正确的结果。
注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!
试题程序:#include <stdio.h>
#define N 20
void fun(int a[], int n)
{
int i, j, t, p;
for (j=0; j<n-1; j++)
{
/********found********/
p = j
for (i=j; i<n; i++)
if(a[i] < a[p])
{
/********found********/
p = i;
t = a[p];
a[p] = a[i];
a[i] = t;
}
}
}
main()
{
int a[N] = {9, 6, 8, 3, -1}, i, m = 5;
printf("??Dò?°£o");
for (i=0; i<m; i++)
printf("%d,", a[i]);
printf("\n");
fun(a, m);
printf("??Dòoó£o");
for (i=0; i<m; i++)
printf("%d,", a[i]);
printf("\n");
}
第1处:p = j应改为p=j;
第2处:p = i应改为p=j; [NextPage] 编程题
请编写一个函数int fun(int*s,int t,int*k),用来求出数组的最大元素在数组中的下标并存放在k所指的存储单位中。
例如,输入如下整数:
876 675 896 101 301 401 980 431 451 777
则输出结果为:6,980。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序: # include <conio.h>
# include <stdio.h>
void fun(int *s, int t , int *k)
{
}
main( )
{
int a[10]={876,675,896,101,301,401,980,431,451,777}, k ;
FILE *out;
fun(a,10,&k);
printf("%d, %d\n", k, a[k]);
out = fopen("out.dat", "w");
fprintf(out, "%d\n%d", k, a[k]);
fclose(out);
}
答案是:
void fun (int *s,int t,int *k)
{
int I ,max;
max=s[0];
for(i=0;i<t:i++)
if(s[i]>max)
{
max=s[i];
*k=I;
}
}