admin 管理员组

文章数量: 1184232


2024年2月29日发(作者:什么是编译器)

第1套

一、填空题

给定程序的功能是求1/4的圆周长。函数通过形参得到圆的直径,函数返回1/4的圆周长(圆周长公式为:L=Πd,在程序中定义的变量名要与公式的变量相同)。

例如:输入圆的直径值:19.527,输出为:15.336457

请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。

#include

double fun(double d)

{

return 3.14159*d/4.0;

}

main()

{

double z;

printf("Input the d of the round:");

scanf("%lf",&z);

printf("L=%lfn",fun(z));

}

二、改错题

下列给定程序中函数fun的功能是:计算正整数m的各位上的数字之积。例如,若输入202,则输出应该是0。

请修改程序中的错误,得出正确的结果

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构

#include

#include

long fun(long n)

{

long r=1;

do

{

r*=n%10;

n/=10;

}while(n);

return(r);

}

main()

{

long m;

printf("nplease enter a number:");

scanf("%ld",&m);

printf("n%ldn",fun(m));

}

1

三、编程题

请编写一个函数fun,它的功能是:求出1到m之内(含m)能被7或11整初的所有整数放在数组b中,通过n返回这些数的个数。

例如,若传送给m的值为20,则程序输出7 11 14。

请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include

#include

#define N 100

void fun(int m,int*b,int*n)

{

int i,j=0;*n=0;

for(i=1;i<=m;i++)

if(i%7==0||i%11==0)

{

b[j]=i;

j++;

}

*n=j;

}

main()

{

int a[N],n,i;

FILE*out;

fun(20,a,&n);

for(i=0;i

if((i+1)%20==0)

printf("%4dn",a[i]);

else

printf("%4d",a[i]);

printf("n");

out=fopen("","w");

fun(100,a,&n);

for(i=0;i

if((i+1)%10==0)

fprintf(out,"%4dn",a[i]);

else

fprintf(out,"%4d",a[i]);

fclose(out);

}

第2套

一、填空题

函数fun的功能是:统计长整数test的各位上出现数字5、6、7的次数,并通过外部(全局)

2

变量sum5、sum6、sum7返回主函数。

例如:当test=89431676时,结果应该为:sum5=0 sum6=2 sum7=1。

请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

#include

int sum5,sum6,sum7;

void fun(long test)

{

sum5=sum6=sum7=0;

while(test)

{

switch(test%10)

{

case 5:sum5++;break;

case 6:sum6++;break;

case 7:sum7++;

}

test/=10;

}

}

main()

{

long test=89431676L;

fun(test);

printf("nThe count result:n");

printf("test=%ld sum5=%d sum6=%d sum7=%dn",test,sum5,sum6,sum7);

}

二、改错题

下列给定程序中,函数fun的功能是:将字符串str中的小写字母都改为对应的大写字母,其它字符不变。例如,若输入“asAS”,则输出“ASAS”。

请修改程序中的错误,使它能统计出正确的结果。

注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构

#include

#include

#include

char*fun(char str[])

{

int i;

for(i=0;str[i];i++)

if((str[i]>='a'&&str[i]<='z'))

str[i]-=32;

return(str);

}

main()

3

{

char str[81];

printf("nplease enter a string:");

gets(str);

printf("nThe result string is:n%s",fun(str));

}

三、编程题

请编写一个函数fun,它的功能是:找出一维整型数组元素中最小的值和它所在的下标,最小的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。

主函数中a是数组名,n是a中的数据个数,min存放最小值,flag存放最小值所在元素的下标

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include

#include

#include

void fun(int b[],int n,int*min,int*d)

{

int i;

*min=b[0];

*d=0;

for(i=0;i

if(b[i]<*min)

{

*min=b[i];

*d=i;

}

}

main()

{

int i,a[20],min,flag,n=10;

FILE*out;

for(i=0;i

{

a[i]=rand()%50;

printf("%4d",a[i]);

}

printf("n");

fun(a,n,&min,&flag);

printf("min=%5d,Index=%4dn",min,flag);

out=fopen("","w");

memcpy(a,"3.9793238462643383279",32);

fun(a,8,&min,&flag);

fprintf(out,"min=%5d,Index=%4d",min,flag);

4

fclose(out);

}

第3套 上机考试试题

一、填空题

请补充main函数,该函数的功能是:从键盘输入一组整数,使用条件表达式找出最大的整数。当输入的整数为-1时结束。例如:输入96 121 23 343 232 54 89 365 89 -1时,最大的数为365。

仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容

#include

#include

#define NUM 100

main()

{

int n[NUM];

int i=-1;

int MAX=-1;

printf("nInsert integer with the '-1' as end:n");

do

{

i++;

printf("n[%d]=",i);

scanf("%d",&n[i]);

MAX=MAX

}while(n[i]!=-1);

printf("The MAX=%dn",MAX);

}

二、改错题

下列给定程序中,函数fun的功能是:将一个由八进制数字字符组成的字符串转换为与其数值相等的十进制整数。例如,若输入11111,则输出将是4681。

请修改程序中的错误,使它能得出正确结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构

#include

#include

#include

int fun(char*s)

{

int n;

n=*s-'0';

s++;

while(*s!=0)

{

n=n*8+*s-'0';

s++;

5

}

return n;

}

main()

{

char str[6];

int i;

int n;

printf("Enter a string(octal digits):");

gets(str);

if(strlen(str)>5)

{

printf("Error:string too longer!nn");

exit(0);

}

for(i=0;str[i];i++)

if(str[i]<'0'||str[i]>'7')

{

printf("Error:%c not is octal digits!nn",str[i]);

exit(0);

}

printf("The original string:");

puts(str);

n=fun(str);

printf("n%s is convered to intege number:%dnn",str,n);

}

三、编程题

下列程序定义了N×N的二维数组,并在主函数中赋值。请编写函数fun,函数的功能是:求出数组周边元素的平均值并作为函数值返回给主函数中的r。

例如:若c数组中的值为:

1 9 7

C=

4 5 2

3 8 3

则返回主程序后r的值应为4.625000

请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句

#include

#include

#include

#define N 3

double fun(int b[][N])

{

6

int i,j,k=0;

double r=0.0;

for(j=0;j

{

r+=b[0][j];

k++;

}

for(j=0;j

{

r+=b[N-1][j];

k++;

}

for(i=1;i<=N-2;i++)

{

r+=b[i][0];

k++;

}

for(i=1;i<=N-2;i++)

{

r+=b[i][N-1];

k++;

}

return r/=k;

}

main()

{

int c[N][N]={1,9,7,4,5,2,3,8,3}; int i,j;

FILE*out;

double r;

printf("**********n");

for(i=0;i

{

for(j=0;j

{

printf("%4d",c[i][j]);

}

printf("n");

}

r=fun(c);

printf("THE RESULTn");

printf("The r is %lfn",r);

out=fopen("","w");

fprintf(out,"%lf",r);

7

fclose(out);

}

第4套 上机考试试题

一、填空题

请补充fun函数,该函数的功能是将字符串str中的小写字母都改为对应的大写字母,其它字符不变。

例如:若输入”Welcome!”,程序输出结果是”WELCOME!”。

请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

#include

#include

#include

char*fun(char str[])

{

int j;

for(j=0;str[j];j++)

{

if((str[j]>='a')&&(str[j]<='z'))

str[j]-=32;

}

return(str);

}

main()

{

char str[100];

printf("nplease enter a string:");

gets(str);

printf("nThe result string is:n%s",fun(str));

}

二、改错题

下列给定程序中,函数fun的功能是:计算并输出n以内最大的10个能被11或19整除的自然数之和。n的值由主函数传入,若n的值为300,则函数值为2646。

请修改程序中的错误或在横线处填上适当的内容并把横线删除,使程序能得出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

int fun(int n)

{

int m=0,mix=0;

8

while((n>=2)&&(mix<10))

{

if((n%11==0)||(n%19)==0)

{

m=m+n;

mix++;

}

n--;

}

return m;

}

main()

{

printf("%dn",fun(300));

}

三、编程题

请编写函数fun,其功能是:将str所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全部删除;串中剩余字符所形成的一个新串放在s所指的数组中。

例如,若str所指字符串中的内容为ABCDEFG123456,

其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其它以此类推。最后s所指的数组中的内容应是246。

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:部分源程序给出如下。

#include

#include

#include

void fun(char*str,char s[])

{

int i,j=0,n;

n=strlen(str);

for(i=0;i

if(i%2==0&&str[i]%2==0)

{

s[j]=str[i];

j++;

}

s[j]='0';

}

main()

{

char str[100],s[100];

9

FILE*out;

printf("nplease enter string:");

scanf("%s",str);

fun(str,s);

printf("nThe result is:%sn",s);

out=fopen("","w");

strcpy(str,"please enter string:");

fun(str,s);

fprintf(out,"%s",s);

fclose(out);

}

第5套 上机考试试题

一、填空题

请补充fun函数,该函数的功能是:依次取出字符串中所有大写字母,形成新的字符串,并取代原字符串。例如,输入sdfASDsd,则输出ASD。

请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:部分源程序给出如下。

#include

#include

void fun(char*s)

{

int j=0;

char*p=s;

while(*p)

{

if(*p>='A'&&*p<='Z')

{

s[j]=*p;

j++;

}

p++;

}

s[j]='0';

}

main()

{

char str[100];

printf("nPlease Input a string:");

gets(str);

printf("nnThe original string is:%sn",str);

fun(str);

printf("nnThe string of changing is:%sn",str);

}

10

二、改错题

下列给定程序中,函数fun的功能是:先从键盘上输入一个3行3列矩阵的各个元素的值,然后输出主对角线元素之和。

请修改函数fun中的错误或在横线处填上适当的内容并把横线删除,得出正确结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

void fun()

{

int aa[3][3],sum;

int i,j;

sum=0;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

scanf("%d",&aa[i][j]);

for(i=0;i<3;i++)

sum=sum+aa[i][i];

printf("sum=%dn",sum);

}

main()

{

fun();

}

三、编程题

请编写一个函数void fun(int*s,int t,int*result),用来求出数组的最小元素在数组中的下标,并存放在result所指的存储单元中。

例如,输入如下整数:

564,165,567,121,948,324,329,454,5345,783,434,124,561,985,555

则输出结果为:3,121。

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:部分源程序给出如下。

#include

#include

void fun(int*s,int t,int*result)

{

int temp,min;

min=s[0];

for(temp=0;temp

11

if(s[temp]

{

min=s[temp];

*result=temp;

}

}

main()

{

int store[15]={564,165,567,121,948,324,329,454,5345,783,434,124,561,985,555},result;

FILE*out;

fun(store,10,&result);

printf("%d,%dn",result,store[result]);

out=fopen("","w");

fprintf(out,"%dn%d",result,store[result]);

fclose(out);

}

第6套 上机考试试题

一、填空题

给定程序的功能是判断字符串s中的某个字符是否与字符ch相同,若相同什么也不做,若不同则插在字符串的最后。例如,输入test,如果输入e,输出的结果不变,但如果输入a,结果testa。

请勿改动主函数main与其它函数中的任何内容,仅在横线上填写所需的若干表达式或语句。

注意:部分源程序给出如下。

#include

#include

void fun(char*s,char ch)

{

while(*s&&*s!=ch)

s++;

if(*s!=ch)

{

s[0]=ch;

s[1]=0;

}

}

main()

{

char str[81],c;

printf("nPlease input a string:n");

gets(str);

printf("n Please enter the character to search:");

c=getchar();

fun(str,c);

12

printf("nThe result is %sn",str);

}

二、改错题

下列给定程序中,函数fun 的功能是:按顺序给t所指数组中的元素赋予从2开始的偶数。然后再按顺序对每5个元素求一个平均值,并将这些值依次存放在r所指的数组中。若t所指数组中元素的个数不是5的倍数,多余部分忽略不计。例如,t所指数组有14个元素,则只对前10个元素进行处理,不对最后的4个元素求平均值。

请修改程序中的错误,得出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#define NUM 20

int fun(double*t,double*r)

{

int j,i;

double sum;

for(j=2,i=0;i

{

t[i]=j;

j+=2;

}

sum=0.0;

for(j=0,i=0;i

{

sum+=t[i];

if((i+1)%5==0)

{

r[j]=sum/5;

sum=0;

j++;

}

}

return j;

}

main()

{

double a[NUM],b[NUM/5];

int i,j;

j=fun(a,b);

printf("The original data:n");

for(i=0;i

{

if(i%5==0)

printf("n");

13

printf("%4.0f",a[i]);

}

printf("nnThe result:n");

for(i=0;i

printf("%6.2f",b[i]);

printf("nn");

}

三、编程题

请编写一个函数void fun(int x,int sum,int select[]),该函数的功能是:将大于整数x且紧靠x的sum个素数存入select所指的数组中。

例如,输入:121 8,则应输出:127 131 137 139 149 151 157 163。

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:部分源程序给出如下。

#include

#include

void fun(int x,int sum,int select[])

{

int r=0,temp,p,sign=1;

for(temp=x+1;temp

{

for(p=2;p

{

if(temp%p!=0)

sign=1;

else

{

sign=0;

break;

}

}

if(sign==1&&p>=temp)

{

if(sum>=0)

{

select[r++]=temp;

sum--;

}

else

break;

}

}

}

main()

14

{

int x,y,a[500];

FILE*out;

printf("nInput two number:");

scanf("%d,%d",&x,&y);

fun(x,y,a);

for(x=0;x

printf("%d ",a[x]);

printf("n");

fun(121,10,a);

out=fopen("","w");

for(x=0;x<10;x++)

fprintf(out,"%dn",a[x]);

fclose(out);

}

第7套 上机考试试题

一、填空题

给定程序的功能是计算score中n个人的平均成绩aver,将高于aver的成绩放在high中,通过函数名返回人数。例如,score={88,75,50,60,80,90},n=6时,函数返回的人数应该是4,high={88,75,80,90}。

请勿改动主函数main与其他函数中的任何内容,仅在横线上填写所需的若干表达式或语句。

注意:部分源程序给出如下。

#include

#include

int fun(int score[],int m,int high[])

{

int i,j=0;

float aver=0.0;

for(i=0;i

aver+=score[i];

aver/=(float)m;

for(i=0;i

if(score[i]>aver)

high[j++]=_____;

return j;

}

main()

{

int i,n,high[6];

int score[6]={88,75,50,60,80,90};

n=fun(score,6,_____);

printf("nThe high of average score are:");

for(i=0;i

15

printf("%d ",______);

printf("n");

}

二、改错题

已知一个数列从第0项开始的前三项分别为0、0、1,以后的各项都是其相邻的前三项之和。下列给定程序中,函数fun的功能是:计算并输出该数列前n项的平方根之和sum。n的

值通过形参传入。例如,当n=4时,程序输出结果应为2.000000。

请修改程序中的错误,使程序能得出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

#include

double fun(int n)

{

double sum,a0,a1,a2,a;

int i;

sum=1.0;

if(n<=2)

sum=0.0;

a0=0.0;

a1=0.0;

a2=1.0;

for(i=4;i<=n;i++)

{

a=a0+a1+a2;

sum+=sqrt(a);

a0=a1;

a1=a2;

a2=a;

}

return sum;

}

main()

{

int n;

printf("Input N=");

scanf("%d",&n);

printf("%lfn",fun(n));

}

三、编程题

学生的记录由学号和成绩组成,M名学生的数据已在主函数中放入结构体数组score中,请编写函数fun,它的功能是把分数最低的学生数据放在low所指的数组中,注意:分数最低

16

的学生可能不只一个,函数返回分数最低的学生的人数。

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:部分源程序给出如下。

#include

#define M 10

typedef struct

{

char num[10];

int s;

}SCORE;

int fun(SCORE*a,SCORE*b)

{

int i,j=0,n=0,min;

min=a[0].s;

for(i=0;i

if(a[i].s

min=a[i].s;

for(i=0;i

if(a[i].s==min)

{

*(b+j)=a[i];

j++;

n++;

}

return n;

}

main()

{

SCORE

stu[M]={{"GA03",76},{"GA04",85},{"GA01",91},{"GA08",64},{"GA06",87},{"GA014",91},{"GA011",77},{"GA017",64},{"GA018",64},{"GA016",72}};

SCORE low[M];

int i,n;

FILE*out;

n=fun(stu,low);

printf("The %d lowest score:n",n);

for(i=0;i

printf("%s %4dn",low[i].num,low[i].s);

printf("n");

out=fopen("","w");

fprintf(out,"%dn",n);

for(i=0;i

fprintf(out,"%4dn",low[i].s);

17

fclose(out);

}

第8套 上机考试试题

一、填空题

请补充main函数,该函数的功能是:从键盘输入3个整数,然后找出最小的数并输出。

例如:输入78,53,123,则输出为53。

请勿改动主函数main与其它函数中的任何内容,仅在横线上填写所需的若干表达式或语句。

注意:部分源程序给出如下。

#include

#include

main()

{

int x,y,z,min;

printf("nInput three number:n");

scanf("%d,%d,%d",&x,&y,&z);

printf("The three numbers are:%d,%d,%dn",x,y,z);

if(x

min=x;

else

min=y;

if(min>z)

min=z;

printf("min=%dn",min);

}

二、改错题

下列给定程序中,fun函数的功能是:分别统计字符串中小写字母和大写字母的个数。例如,给字符串t输入:adfsFFssefSCGSDew,则应输出结果:big=7,small=10。

请修改程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

void fun(char*t,int*c,int*d)

{

while(*t)

{

if(*t>='A'&&*t<='Z')

(*c)++;

if(*t>='a'&&*t<='z')

(*d)++;

t++;

}

}

main()

18

{

char t[200];

int big=0,small=0;

printf("nplease input a string:");

gets(t);

fun(t,&big,&small);

printf("n big=%d small=%dn",big,small);

}

三、编程题

请编一个函数void fun(int a[M][N],int b[N]),c指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入b所指一维数组中。二维数组中的数己在主函数中赋予。

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:部分源程序给出如下。

#include

#include

#define M 3

#define N 4

void fun(int a[M][N],int b[N])

{

int i,j,max;

for(j=0;j

{

max=a[0][j];

for(i=0;i

{

if(a[i][j]>max)

max=a[i][j];

}

b[j]=max;

}

}

main()

{

int c[M][N]={{10,22,15,30},{19,33,45,38},{20,22,66,40}};

int p[N],i,j,k;

FILE*out;

printf("The original data is:n");

for(i=0;i

{

for(j=0;j

printf("%6d",c[i][j]);

19

printf("n");

}

fun(c,p);

printf("nThe result is:n");

for(k=0;k

printf("%4d",p[k]);

printf("n");

out=fopen("","w");

for(k=0;k

fprintf(out,"%dn",p[k]);

fclose(out);

}

第9套 上机考试试题

一、填空题

请补充fun函数,该函数的功能是:从键盘输入一个下标n,把数组a中比元素a[n]小的元素放在它的左边,比它大的元素放在它的右边,排列成的新数组仍然保存在原数组中。例如,数组

a={33,55,66,44,77,22,88,99,11,10},输入2,则

结果输出 “33 55 44 22 11 10 66 77 88 99”。

请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:部分源程序给出如下。

#include

#define N 10

void fun(int a[],int n)

{

int i,j=0,k=0,t;

int b[N];

t=a[n];

for(i=0;i

{

if(a[i]>t)

b[j++]=a[i];

if(a[i]

a[k++]=a[i];

}

_______;

for(i=0;____i++,k++)

a[k]=b[i];

}

main()

{

int i,n;

20

int a[N]={33,55,66,44,77,22,88,99,11,10};

printf("The original array:n");

for(i=0;i

printf("%4d",a[i]);

printf("n suffix n:");

scanf("%d",&n);

fun(a,n);

printf("The new array:n");

for(i=0;i

printf("%4d",a[i]);

printf("n");

}

二、改错题

下列给定程序中,fun函数的功能是:求a=xx…xx-…-xx-xx-x(此处xx…xx表示n个x,x和n的值在1至9之间)。例如x=3,a=6,则以上表达式为:

a=333333-33333-3333-333-33-3

其值是296298。X和n是fun函数的形参,表达式的值作为函数值传回main函数。

请修改程序的错误,使它能计算出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

long fun(int x,int n)

{

int j;

long a=0,t=1;

for(j=0;j<=n;j++)

t=t*10+x;

a=t;

for(j=1;j

{

t=t%10;

a=a-t;

}

return(a);

}

main()

{

int x,n;

printf("nPlease enter x and n:");

scanf("%d%d",&x,&n);

printf("The value of fun is %ldn",fun(x,n));

}

三、编程题

21

请编写函数fun,其功能是:计算并输出:

F=1+(1+2)+(1+2+3)+…

+(1+2+3+…m)

例如,若主函数从键盘给m输入10后,则输出为F=104.478749。

请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:m的值要求大于1但不大于100。部分源程序给出如下。

#include

#include

double fun(int m)

{

}

main()

{

int m;

double f;

FILE*out;

printf("nInput m: ");

scanf("%d",&m);

f=fun(m);

printf("nnf=%fnn",f);

out=fopen("","w");

for(m=0;m<10;m++)

fprintf(out,"%fn",fun(m+20));

fclose(out);

}

差第10套

**************************************************************

22

#include

#include

void fun(long a,long*b)

{

int d;

long s=1;

*b=0;

while(a>0)

{

d=a%10;

if(d%2!=0)

{

*b=d*s+*b;

s*=10;

}

a/=10;

}

}

main()

{

long a,b;

printf("nPlease enter a:");

scanf("%ld",&a);

fun(a,&b);

printf("The result is:%ldn",b);

}

第11套 上机考试试题

一、填空题

请在函数fun横线上填写表达式,使从键盘上输入一个整数m,输出 斐波纳契数列。斐波纳契数列是一种整数数列,其中每个数等于前面两个数之和,例如:0 1 1 2 3 5 8……

请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句

#include

int fun(int m);

main()

{

int i,m=0;

scanf("%d",&m);

for(i=0;i

23

printf("%d",fun(i));

}

int fun(int m)

{

if(m==0)

return 0;

else if(m==1)

return 1;

else

return fun(m-1)+fun(m-2);

}

二、改错题

下列给定程序中,函数fun的功能是:通过某种方式实现两个变量值的交换,规定不允许增加语句或表达式.例如变量x中的值原为1,y中的值原为2,程序运行后x中的值为2,y中的值为1。

请修改程序中的错误,得出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

int fun(int*a,int b)

{

int temp;

temp=*a;*a=b;

return temp;

}

main()

{

int x=1,y=2;

printf("x,y %d %dn",x,y);

y=fun(&x,y);

printf("the result is %d %dn",x,y);

}

三、编程题

请编写一个函数void fun(char*t,int p[]),统计在t字符串中“a”到“z”26个字母各自出现的次数,并依次放在p所指数组中。

例如,当输入字符串sdfssdrefggrthdg后,程序的输出结果应该是:

00

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:部分源程序给出如下。

#include

#include

void fun(char*t,int p[])

24

{

int j;

for(j=0;j<26;j++)

p[j]=0;

while(*t)

{

switch(*t)

{

case 'a':p[0]++; break;

case 'b':p[1]++; break;

case 'c':p[2]++; break;

case 'd':p[3]++; break;

case 'e':p[4]++; break;

case 'f':p[5]++; break;

case 'g':p[6]++; break;

case 'h':p[7]++; break;

case 'i':p[8]++; break;

case 'j':p[9]++; break;

case 'k':p[10]++;break;

case 'l':p[11]++;break;

case 'm':p[12]++;break;

case 'n':p[13]++;break;

case 'o':p[14]++;break;

case 'p':p[15]++;break;

case 'q':p[16]++;break;

case 'r':p[17]++;break;

case 's':p[18]++;break;

case 't':p[19]++;break;

case 'u':p[20]++;break;

case 'v':p[21]++;break;

case 'w':p[22]++;break;

case 'x':p[23]++;break;

case 'y':p[24]++;break;

case 'z':p[25]++;break;

}

t++;

}

}

main()

{

char a[2000];

int b[26],i;

FILE*out;

printf("nPlease input a char string:");

25

scanf("%s",a);

fun(a,b);

for(i=0;i<26;i++)

printf("%d",b[i]);

printf("n");

fun("a bosom friend after brings a distant land near",b);

out=fopen("","w");

for(i=0;i<26;i++)

fprintf(out,"%dn",b[i]);

fclose(out);

}

第12套 上机考试试题

一、填空题

请补充函数,该函数的功能是求一维数组a[N]的平均值,并对所得结果进行四舍五入保留两位小数.例如,当

a[10]={ 23.1,12.3,5.3,56.4,10.0,13.7,24.5,42,1.2,9.9}时,

输出结果为:average=19.840000.

请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

#include

#include

double fun(double a[10])

{

int i;

long temp;

double average=0.0;

double sum=0.0;

for(i=0;i<10;i++)

sum+=a[i];

average=sum/10;

average=average*1000;

temp=(average+5)/10;

average=(double)temp/100;

return average;

}

main()

{

double average,a[10]={23.1,12.3,5.3,56.4,10.0,13.7,24.5,42,1.2,9.9};

int i;

printf("nThe data:n");

for(i=0;i<10;i++)

printf("%6.1f",a[i]);

printf("nn");

average=fun(a);

26

printf("The average=%fnn",average);

}

二、改错题

下列给定程序中fun函数的功能是:将n个无序整数从小到大排列。

请修改程序中的错误,得出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

#include

fun(int n,int*b)

{

int i,j,p,t;

for(j=0;j

{

p=j;

for(i=j+1;i

if(b[p]>b[i])

p=i;

if(p!=j)

{

t=b[j];

b[j]=b[p];

b[p]=t;

}

}

}

putarr(int n,int*z)

{

int i;

for(i=1;i<=n;i++,z++)

{

printf("%4d",*z);

if(!(i%10))

printf("n");

}

printf("n");

}

main()

{

int a[10]={0,4,2,8,6},n=5;

printf("nnBefore sorting %d numbers:n",n);

putarr(n,a);

27

fun(n,a);

printf("nAfter sorting %d numbers:n",n);

putarr(n,a);

}

三、编程题

编写函数fun,函数的功能是:根据以下公式计算,计算结果作为函数值返回。

s1111请勿改动主函数main与其它函数中的任何12123123n内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:部分源程序给出如下。

#include

#include

#include

float fun(int n)

{

int k;

float str=1.0,sum=1.0;

for(k=2;k<=n;k++)

{

sum=sum+k;

str=str+1/sum;

}

return str;

}

main()

{

int n;

float str;

FILE*out;

printf("nPlease input the integer n:");

scanf("%d",&n);

str=fun(n);

printf("The result is:%fn",str);

str=fun(10);

out=fopen("","w");

fprintf(out,"%f",str);

fclose(out);

}

第13套 上机考试试题

一、填空题

请补充fun函数,该函数的功能是:分类统计一个字符串中元音字母和其它字符的个数(不区分大小写)。例如,输入UdsaeyiEosu,结果为A:1 E:2 I:1 O:1 U:2 other:4。

28

请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:部分源程序给出如下。

#include

#include

#define N 100

void fun(char*s,int a[])

{

char*r=s;

int i=0;

for(i=0;i<6;i++)

a[i]=0;

while(*r)

{

switch(*r)

{

case 'A':

case 'a':a[0]++;break;

case 'E':

case 'e':a[1]++;break;

case 'I':

case 'i':a[2]++;break;

case '0':

case 'o':a[3]++;break;

case 'U':

case 'u':a[4]++;break;

default: a[5]++;

}

r++;

}

}

main()

{

char s[N],yy[5]="AEIOU";

int i;

int a[6];

printf("Please input a sing to count:n"); gets(s);

printf("The sing is:n");

puts(s);

fun(s,a);

for(i=0;i<5;i++)

printf("n%c:%d",yy[i],a[i]);

printf("nother:%dn",a[i]);

29

}

二、改错题

假定整数不重复数列{99,2,6,1,3,4,-1}中的数存放在整数s中。下列给定程序中,函数fun的功能是:删除数列中值为a的元素,同时将其它元素前移。sum中存放的是数列中元素的个数。

请修改程序中的错误,得出正确的结果。

注意:不要改动 main函数,不能增行或删行,也不能更改程序的结构。

#include

#define M 100

fun(int*x,int sum,int a)

{

int temp=0,j;

x[sum]=a;

while(a!=x[temp])

temp=temp+1;

if(temp==sum)

{

return-1;

}

else

{

for(j=temp;j

x[j]=x[j+1];

return sum-1;

}

}

main()

{

int s[M]={99,2,6,1,3,4,-1},a,sum,j;

sum=8;

printf("The array:n");

for(j=0;j

printf("%5d",s[j]);

printf("nPlease insert data want to deleted:");

scanf("%d",&a);

printf("Delete:%dn",a);

sum=fun(s,sum,a);

if(sum==-1)

{

printf("***Not be found!***nn");

}

else

30

{

printf("The array after delete:n");

for(j=0;j

printf("%5d",s[j]);

printf("nn");

}

}

三、编程题

请编写一个函数void fun(char orig[],char result[],int flg),其功能是:删除一个字符串中指定下标的字符。其中,orig指向原字符串,删除后的字符串存放在result所指的数组中,flg中存放指定的下标。

例如:输入一个字符串:Hello World, 然后输入4,则调用该函数后的结果为:Hell World。

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include

#include

#define NUM 100

void fun(char orig[],char result[],int flg)

{

int n,m=0;

for(n=0;n

if(n!=flg)

{

result[m]=orig[n];

m++;

}

result[m]='0';

}

main()

{

char s1[NUM],s2[NUM];

int flg;

FILE*out;

printf("Please Input s1:n");

gets(s1);

printf("Input want to delectd:");

scanf("%d",&flg);

fun(s1,s2,flg);

printf("The result is:%sn",s2);

fun("test String",s2,9);

out=fopen("","w");

fprintf(out,"%s",s2);

fclose(out);

31

}

第14套 上机考试试题

一、填空题

s是全部由小写字母字符和空格字符组成的字符串,由len传入字符串的长度,请补充fun函数,该函数的功能是:统计字符串s中的单词数,结果由变量len传回。每个单词之间都由空格隔开,并且字符串s开始不存在空格。例如,s=“welcome welcome”,结果为:len=2。

请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:部分源程序给出如下。

#include

#define M 100

void fun(char*s,int*len)

{

int j,n=0;

for(j=0;j<*len;j++)

if(s[j]>='a'&&s[j]<'z'&&s[j+1]==' '||s[j+1]=='0')

n++;

*len=n;

}

main()

{

char s[M];

int len=0;

printf("Enter a string:n");

gets(s);

while(s[len])

len++;

fun(s,&len);

printf("The lenber of word is:%dnn",len);

}

二、改错题

下列给定程序中函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。

请修改程序中的错误,使它能计算出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#define M 100

void fun(int sort[],int n)

{

int i,j,temp,p;

for(j=0;j

{

p=j;

for(i=j;i

32

if(sort[i]

{

p=i;

temp=sort[p];

sort[p]=sort[j];

sort[j]=temp;

}

}

}

main()

{

int sort[M]={23,3,67,-2,9,-6,27,12},i,num=8;

printf("Before sort:");

for(i=0;i

printf("%d,",sort[i]);

printf("n");

fun(sort,num);

printf("after sort");

for(i=0;i

printf("%d,",sort[i]);

printf("n");

}

三、编程题

请编写一个函数fun,它的功能是:计算并输出给定整数m的所有因子(不包括1与自身)之和。规定m的值不大于1000

例如,若主函数从键盘给m输入的值为111,则输出为sum=40。

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:部分源程序给出如下。

#include

int fun(int m)

{

int sum=0,i;

for(i=2;i<=m-1;i++)

if(m%i==0)

sum+=i;

return sum;

}

main()

{

int n,num;

FILE*out;

printf("Input n:");

scanf("%d",&n);

33

num=fun(n);

printf("num=%dn",num);

out=fopen("","w");

fprintf(out,"%dn",fun(123));

fprintf(out,"%dn",fun(456));

fprintf(out,"%dn",fun(789));

fclose(out);

}

第15套 上机考试试题

一、填空题

S是一个由数字和字母字符串组成的字符串,由变量len传入字符串长度。请补充fun函数,该函数的功能是把字符串s中的数字字符转换成数字并存放到整型数组a中,函数返回数组a的长度。例如,s=“Abc123e456hui7890”,结果为:1234567890。

请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:部分源程序给出如下。

#include

#define M 80

int a[M];

int fun(char s[],int a[],int len)

{

int j=0,m=0;

for(j=0;j

if(s[j]>='0'&&s[j]<='9')

{

a[m]=s[j]-'0';

m++;

}

return m;

}

main()

{

char s[M];

int len=0,m,j;

printf("Please input a string:n");

gets(s);

while(s[len])

len++;

m=fun(s,a,len);

printf("nThe result string:");

for(j=0;j

printf("%d",a[j]);

printf("n");

34

}

二、改错题

下列给定程序中,函数fun的功能是:在字符串s中找出ASCII码值最小的字符,将其放在第一个位置上;并将该字符前的原字符向后顺序移动。例如,调用fun函数之前给字符串输入:asdfEiopr,调用后字符串中的内容为:Easdfiopr。

请修改程序中的错误,使程序能得出正确结果。

注意:不要改动main 函数,不能增行或删行,也不能更改程序的结构。

#include

void function(char*str)

{

char MIN,*temp;

int n=0;

MIN=str[n];

while(str[n]!=0)

{

if(MIN>str[n])

{

MIN=str[n];

temp=str+n;

}

n++;

}

while(temp>str)

{

*temp=*(temp-1);

temp--;

}

str[0]=MIN;

}

main()

{

char s[100];

printf("Input a string to move:");

gets(s);

printf("nThe string your inter:");

puts(s);

function(s);

printf("nThe string after moving:"); puts(s);

printf("nn");

}

三、编程题

35

请编写函数fun,它的功能是:求Fibonacci数列中大于a(a>3)的最小的一个数,结果由函数返回。其中Fibonacci数列F(n)的定义为:

F(0)=0,f(1)=1

F(n)=F(m-1)+F(m-2)

例如,当a=500时,函数值为610。

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:部分源程序给出如下。

#include

#include

#include

int fun(int a)

{

int x=1,y=1,z=0,i;

for(i=4;i<=a;i++)

{

if(z

{

z=x+y;

x=y;

y=z;

}

else

break;

}

return z;

}

main()

{

int m;

FILE*out;

m=500;

printf("m=%d,f=%dn",m,fun(m));

out=fopen("","w");

for(m=500;m<3000;m+=500)

fprintf(out,"%dn",fun(m));

fclose(out);

}

第16套 上机考试试题

一、填空题

从键盘输入一组无符号整数并保存在数组a[M]中,以整数0结束输入,要求这些数的最大位数不超过4位,其元素的个数通过变量len传入fun函数。请补充fun函数,该函数的功能是:从数组a中找出个位和十位的数字之和小于5的所有无符号整数,结果保存在数组b中,其个数由fun函数返回。例如当a[8]={123,11,23,222,42,333,14,5451}时,x[2]={11,22}。

36

请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:部分源程序给出如下。

#include

#define M 500

int fun(int a[],int x[],int len)

{

int j,m=0;

int t,s;

for(j=0;j

{

t=a[j]%10;

s=a[j]/10%10;

if((t+s)<5)

x[m++]=a[j];

}

return m;

}

main()

{

int a[M];

int b[M];

int len=0,m=0,j=0;

printf("Input lenber:n");

do

{

scanf("%u",&a[len]);

}while(a[len++]!=0);

m=fun(a,b,len);

printf("nb= ");

for(j=0;j

printf("%u ",b[j]);

printf("n");

}

二、改错题

n 个有序整数数列已放在一维数组中,给定下列程序,函数fun的功能是:利用折半查找算法查找整数m在数组中的位置。若找到,则返回其下标值;反之,则返回-1。

折半查找的基本算法是:每次查找前先确定数组中待查的范围low和high(lowhigh,查找结束。

请修改程序中的错误,得出正确的结果。

37

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#define M 5

int fun(int b[],int n)

{

int low=0,high=M-1,mid;

while(low<=high)

{

mid=(low+high)/2;

if(n

high=mid-1;

else

if(n>b[mid])

low=mid+1;

else

return(mid);

}

return(-1);

}

main()

{

int i,b[M]={9,13,45,67,89},j,n;

printf("b数组中的数据如下:");

for(i=0;i

printf("%d ",b[i]);

printf("Enter n:");

scanf("%d",&n);

j=fun(b,n);

if(j>=0)

printf("n=%d,index=%dn",n,j);

else

printf("Not be found!n");

}

三、编程题

请编一个函数float fun(double c),函数的功能是对变量c中的值保留2位小数,并对第三进行四舍五入(规定c中的值为正数)。

例如,若c值为1.234,则函数返回1.230000;若c值为1.235,则函数返回1.240000。

注意:部分源程序给出如下。

请勿改动主函数main与其它函数中的任何内容,仅在fun函数的花括号中填入所编写的若干语句。

#include

#include

float fun(float c)

38

{

}

main()

{

float a;

FILE*out;

printf("Enter a:");

scanf("%f",&a);

printf("The original data is:");

printf("%fnn",a);

printf("The result:%fn",fun(a));

out=fopen("","w");

fprintf(out,"%f",fun(3.141593));

fclose(out);

}

第17套 上机考试试题

一、填空题

请补充main函数,该函数的功能是:从一个字符串中截取前面若干个给定字符数的子字符串。其中,s1指向原字符串,截取后的字符串存放在s2所指的字符数组中,n中存放预截取的字符个数。例如,当s1= “xsdfgehrt”,然后输入5,则s2= “xsdfg”。

仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。

注意:部分源程序给出如下。

#include

#include

#define N 100

main()

{

char s1[N],s2[N];

int n,i;

printf("Enter the string:n");

gets(s1);

printf("Enter the position of the string deleted:");

scanf("%d",&n);

for(i=0;i

s2[i]=s1[i];

s2[i]='0';

printf("The new string is:%sn",s2);

}

39

二、改错题

下列给定程序中,函数fun的功能是根据整型形参n,计算如下公式的值:

x11111

223344nn例如,若n中的值为5,则应输出1.463611。

请修改程序中的错误,得出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

double fun(int n)

{

double x=1.0;

int i;

for(i=2;i<=n;i++)

x+=1.0/(i*i);

return(x);

}

main()

{

int n=5;

printf("nThe result is %lfn",fun(n));

}

三、编程题

编写函数fun,它的功能是计算并输出下列级数数和:

F111

1223m(m1)例如,当m=5时,函数值为0.833333。

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:部分源程序给出如下。

#include

#include

double fun(int m)

{

double f=0.0;

int i;

for(i=1;i<=m;i++)

f=f+1.0/(i*(i+1));

return f;

}

40

main()

{

int i;

FILE*out;

printf("%fn",fun(5));

out=fopen("","w");

for(i=0;i<10;i++)

fprintf(out,"%fn",fun(i));

fclose(out);

}

第18套 上机考试试题

一、填空题

请补充main函数,该函数的功能是:从字符串 s中取出所有数字字符,并分别计数,把结果保存在数组a中并输出,把其它字符保存在a[10]中。

例如:当str1= “12312300abc8976542”时,结果为0:2 1:2 2:3 3:2 4:1 5:1 6:1 7:1

8:1 9:1 other character:3。

仅在横线上填写所需的若干表达式或语句,请勿改动函数中的其它任何内容。

注意:部分源程序给出如下。

#include

#include

main()

{

int j,a[11];

char*s="adfsdasa1232312323";

char*t=s;

printf("The origial data is:n");

puts(s);

for(j=0;j<11;j++)

a[j]=0;

while(*t)

{

switch(*t)

{

case '0':a[0]++;break;

case '1':a[1]++;break;

case '2':a[2]++;break;

case '3':a[3]++;break;

case '4':a[4]++;break;

case '5':a[5]++;break;

case '6':a[6]++;break;

case '7':a[7]++;break;

41

case '8':a[8]++;break;

case '9':a[9]++;break;

default:a[10]++;

}

t++;

}

printf("The result n");

for(j=0;j<10;j++)

printf("n%d:%d",j,a[j]);

printf("nnother character:%dn",a[j]);

}

二、改错题

下列给定程序中,函数fun的功能是:从str所指字符串中,找出s所指子串的个数作为函数值返回。例如,当str 所指字符串中的内容为asdfghasdfgh,s所指字符串的内容为as,则函数返回整数2。

请修改程序中的错误,得出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

#include

int fun(char*str,char*s)

{

int m;

char*p,*r;

m=0;

while(*str)

{

p=str;

r=s;

while(*r)

if(*r==*p)

{

r++;

p++;

}

else

{

break;

}

if(*r=='0')

m++;

str++;

}

42

return m;

}

main()

{

char str[100],s[100];

int n;

printf("nPlease enter string str:");

scanf("%s",str);

printf("nPlease enter substring s:");

scanf("%s",s);

n=fun(str,s);

printf("nThe result is:n=%dn",n);

}

三、编程题

编写函数fun,它的功能是:根据以下公式求的值,结果由函数值带回。m与n为两个正整数且要求m>n。

pm!

n!(mn)!例如:m=10,n=5时,运行结果为252.000000。

请勿改动主函数main与其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:部分源程序给出如下。

#include

#include

float fun(int m,int n)

{

float result,temp=1.0;

int i;

for(i=1;i<=m;i++)

temp=temp*i;

result=temp;

for(temp=1.0,i=1;i<=n;i++)

temp=temp*i;

result=result/temp;

for(temp=1.0,i=1;i<=m-n;i++)

temp=temp*i;

result=result/temp;

return result;

}

main()

{

FILE*out;

printf("Result=%fn",fun(10,5));

43

out=fopen("","w");

fprintf(out,"%f",fun(12,6));

fclose(out);

}

第19套 上机考试试题

一、填空题

请补充fun函数,该函数的功能是:先将在字符串str中的字符串按 逆序存放在t 中,然后把str中的字符按正序连接到t的后面。例如,str中的字符串为abc时,则t中的字符串应为cbaabc。

请勿改动主函数main与其他函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:部分源程序给出如下。

#include

#include

#include

void fun(char*str,char*t)

{

int n,i;

n=strlen(str);

for(i=0;i

t[i]=str[n-i-1];

for(i=0;i

t[n+i]=str[i];

t[2*n]='0';

}

main()

{

char str[100],t[100];

printf("nPlease enter string:");

scanf("%s",str);

fun(str,t);

printf("The result is:%sn",t);

}

二、改错题

下列给定程序中,函数fun的功能是:在字符串的最前端加入n个“*”号,形成新串,并且覆盖原串。注意:字符串的长度最长允许为79。

请修改函数fun中的错误,得出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

#include

#include

void fun(char str[],int n)

{

44

char a[80],*p;

int i;

p=str;

for(i=0;i

a[i]='*';

do

{

a[i]=*p;

i++;

p++;

}while(*p);

a[i]='0';

strcpy(str,a);

}

main()

{

int n;

char str[80];

printf("nEnter a string:");

gets(str);

printf("nThe string %sn",str);

printf("nEnter n(number of*):");

scanf("%d",&n);

fun(str,n);

printf("nThe string after inster:%sn",str);

}

三、编程题

编写函数fun,该函数的功能是:从字符串中删除指定的字符。同一字母的大、小写按不同字符处理。

例如:若程序执行时输入字符串为:just a test,从键盘上输入字符t,则输出后变为:jus a es。

如果输入的字符在字符串中不存在,则字符串照原样输出。

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

#include

#include

#include

void fun(char s[],int a)

{

int i=0;

char*p;

p=s;

while(*p)

{

45

if(*p!=a)

{

s[i]=*p;

i++;

}

p++;

}

s[i]='0';

}

main()

{

static char str[]="just a test";

char ch;

FILE*out;

printf("original string:%sn",str);

printf("Please input a character:");

scanf("%c",&ch);

fun(str,ch);

printf("str[]=%sn",str);

strcpy(str,"just a test");

fun(str,'a');

out=fopen("","w");

fprintf(out,"%s",str);

fclose(out);

}

第20套 上机考试试题

一、填空题

请补充fun函数,该函数的功能是:用来求出数组的最小元素在数组中的下标并存放在k所指的存储单元。例如:输入如下整数:121,333,444,111,555,666,980,431,451,343,则输出结果为:111,3。

请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:部分源程序给出如下。

#include

#include

void fun(int*s,int t,int*i)

{

int j,min;

min=s[0];

for(j=0;j

if(s[j]

{

min=s[j];

*i=j;

46

}

}

main()

{

int a[10]={121,333,444,111,555,666,980,431,451,343},i;

fun(a,10,&i);

printf("%d,%dn",a[i],i);

}

二、改错题

下列给定程序中,函数fun的功能是:求出两个非零正整数的最大公约数,并作为函数值返回。例如,若给n和m分别输入27和81,则输出的最大公约数为27.

请修改程序中的错误,得出正确的结果。

注意:不要改动main函数,不能增行或删行,也不能更改程序的结构。

#include

int fun(int a,int b)

{

int r,temp;

if(a

{

temp=a;

a=b;

b=temp;

}

r=a%b;

while(r!=0)

{

a=b;

b=r;

r=a%b;

}

return(b);

}

main()

{

int n,m,a;

printf("Input n m: ");

scanf("%d%d",&n,&m);

printf("n=%d m=%dnn",n,m);

a=fun(n,m);

printf("The maximun common divisor is %dnn",a);

}

三、编程题

下列程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int b[][N]),

47

该函数的功能是:使数组左下半三角元素的值会全部置成0。

请勿改动主函数main与其它函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。

注意:部分源程序给出如下。

#include

#include

#include

#define N 3

void fun(int b[][N])

{

int i,j;

for(i=0;i

for(j=0;j<=i;j++)

b[i][j]=0;

}

main()

{

int b[N][N],i,j;

FILE*out;

printf("**********n");

for(i=0;i

{

for(j=0;j

{

b[i][j]=rand()%10;

printf("%d",b[i][j]);

}

printf("n");

}

fun(b);

printf("THE RESULTn");

for(i=0;i

{

for(j=0;j

printf("%4d",b[i][j]);

printf("n");

}

for(i=0;i

for(j=0;j

b[i][j]=i*N+j+1;

fun(b);

out=fopen("","w");

for(i=0;i

{

48

for(j=0;j

fprintf(out,"%4d",b[i][j]);

fprintf(out,"n");

}

fclose(out);

}

第21套 上机考试试题

一、填空题

数组a[N]保存着一组3位数的无符合正整数,其元素的个数通过变量len传入fun函数。请补充fun函数,该函数的功能是:从数组a中找出个位和百位的数字相等的所有无符合整数,结果保存在数组yy中,其个数由fun函数返回。

例如:当a[6]={111,323,677,456,987,999}时,b[3]={111,323,999}。

请勿改动主函数main与其它函数中的任何内容,仅在fun函数的横线上填写所需的若干表达式或语句。

注意:部分源程序给出如下。

#include

#include

#define N 500

int fun(int a[],int bb[],int len)

{

int i,n=0;

int g,b;

for(i=0;i

{

g=a[i]%10;

b=a[i]/100;

if(g==b)

bb[n++]=a[i];

}

return n;

}

main()

{

int a[8]={111,323,677,456,987,999};

int b[N];

int len=0,n=0,i=0;

len=6;

printf("The original datan");

for(i=0;i

printf("%u",a[i]);

printf("nnn");

n=fun(a,b,len);

printf("nb=");

49


本文标签: 函数 字符串 数组 字符