搜档网
当前位置:搜档网 > 学生C语言练习第一至十六套

学生C语言练习第一至十六套

第一套:

1.程序填空题

在主函数中从键盘输入若干个数放入数组a中,用0结束输入但不计入数组。下列给定程序中,函数fun的功能是:输出数组元素中小于平均值的元素。

例如,数组中元素的值依次为34、54、675、456、453、121,则程序的运行结果为34、54、121。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

#include

#include

void fun(___1___,int n)

{

double count=0.0;

double average=0.0;

int i=0;

for(i=0;i

___2___;

average=___3___;

for(i=0;i

if(a[i]

{

if(i%5==0)

printf("\n");

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

}

}

main()

{

int a[1000];

int i=0;

printf("\nPlease enter datas(end with 0):");

do

{

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

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

fun(a,i-1);

}

2.程序修改题

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

y=1+1/(2*2)+1/(3*3)+1/(4*4)+…+1/(m*m)

例如:若m中的值为5,则应输出1.463611。

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

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

#include

double fun(int m)

{

double y=1.0;

int I;

/**********found**********/

for(i=2;i

/**********found**********/

y+=1/(i*i);

return(y);

}

main()

{

int n=5;

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

}

3.程序设计题

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

例如,若s所指字符串中的内容为“ABCDEFG 123456”,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后,t所指的数组中的内容应是“246”。

注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。

#include

#include

void fun(char s[], char t[])

{

}

main()

{

char s[100],t[100];

printf("\nPlease enter string S:");

scanf("%s", s);

fun(s,t);

printf("\nThe result is: %s\n",t);

}【解析】

(1)本题主要考查对奇偶数的判断以及库函数strlen的使用。根据题意可知,只保留下标为偶数、同时ASCII值也为偶数的字符,这就需要用循环变量k将字符串查看一遍,逐个字符判断是否满足条件k%2== 0 && s[k]%2==0,并将满足条件的字符复制到t中,再设一个计数器变量n,统计复制到t的字符数。复制完毕,在串尾设字符串结束符'\0'。(2)按上述分析写出的函数是:

第二套:

1.程序填空题

给定程序中,函数fun的功能是:找出N×N矩阵中每列元素中的最大值,并按顺序依次存放于形参b所指的一维数组中。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

#include

#define N 4

void fun(inta[][N],int b[])

{

int I,j;

for(i=0; i

{

/**********found**********/

b[i]=___1___;

for(j=1;j

/**********found**********/

if(b[i]___2___a[j][i])

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

}

}

main()

{

int x[N][N]={{12,5,8,7},{6,1,9,3},{1,2,3,4},{2,8,4,3}},y[N],I,j;

printf("\nThe matrix :\n");

for(i=0;i

{

for(j=0; j

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

printf("\n");

}

/**********found**********/

fun(___3___);

printf("\nThe result is:");

for(i=0; i

printf("\n");

}

2.程序修改题

给定程序中,函数fun的功能是:计算正整数num的各位上的数字之积。

例如,若输入252,则输出应该是20;若输入202,则输出应该是0。

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

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

#include

long fun(long num)

{

/**********found**********/

long k;

do

{

k*=num%10 ;

/**********found**********/

num\=10;

}while(num);

return (k);

}

main()

{

long n;

printf("\Please enter a number:");

scanf("%ld",&n);

printf("\n%ld\n",fun(n));

}

3.程序设计题

程序定义了N×N的二维数组,并在主函数中自动赋值。请编写函数fun(int a[][N], int n),函数的功能是:使N×N的二维数组左下三角元素中的值乘以n。

例如:若n的值为3,a数组中的值为:

1 9 7

2 3 8

4 5 6

则返回主程序后a数组中的值应为:

3 9 7

6 9 8

12 15 18

注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。

#include

#include

#define N 5

int fun(int a[][N],int n)

{

}

main()

{

int a[N][N],n,I,j;

printf("***The array***\n");

for(i=0;i

{

for(j=0;j

{

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

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

printf("\n");

}

do n=rand()%10; while(n>=3);

printf("n=%4d\n",n);

fun(a,n);

printf ("***THE RESULT***\n");

for(i=0;i

{

for(j=0;j

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

printf("\n");

}

}

第三套:

1.程序填空题

请补充函数fun,该函数的功能是:统计所有小于等于x(x>2)的素数的个数,素数的个数作为函数值返回。例如,输入x=20,结果:2,3,5,7,11,13,17,19。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

#include

int fun(int x)

{

int I,j,count=0;

printf("\nThe prime number between 2 to %d\n",x);

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

{

for(___1___;j

if(___2___%j==0)

break;

if(___3___>=i)

{

count++;

printf(count%15 ? "%5d" : "\n%5d",i);

}

}

return count;

}

main()

{

int x=20,result;

result=fun(x);

printf("\nThe number of prime is : %d\n",result);

}

2.程序修改题

给定程序中,函数fun的功能是:依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。

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

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

#include

void fun(char *s)

{

int i,j;

for(i=0,j=0;s[i]!='\0';i++)

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

/**********found**********/

s[j]=s[i];

/**********found**********/

s[j]="\0";

}

main()

{

char item[80];

printf("\nEnter a string:");

gets(item);

printf("The string is:%s\n",item);

fun(item);

printf("The string of changing is:%s\n",item);

}

3.程序设计题

请编写函数fun,它的功能是:计算n门课程的平均分,计算结果作为函数值返回。

例如,若有5门课程的成绩是90.5、72、80、61.5、55,则函数的值为:71.80。

注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。

#include

float fun(float *a,int n)

{

}

main()

{

float score[30]={90.5,72,80,61.5,55},

aver;

aver=fun(score,5);

printf("Average score is:%5.2f\n",

aver);

}

第四套:

1.程序填空题

给定程序中,函数fun的功能是:计算下式前n项的和作为函数值返回:

S=1*3/(2*2)+3*5/(4*4)+5*7/(6*6)+…+(2n-1)*(2n+2)/ (2n)*(2n)

例如:当行参n的值为10时,函数返回9.612558。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序已给出。不得增行或删行,也不得更改程序的结构!

#include

double fun(int n)

{

int i; double s,t;

/**********found**********/

s=___1___;

/**********found**********/

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

{

t=2.0*i;

/**********found**********/

s=s+(2.0*i-1)*(2.0*i+1)/___3___;

}

return s;

}

main()

{

int n=-1;

while(n<0)

{

printf("Please input(n>0): ");

scanf("%d",&n);

}

printf("The result is: %f\n",fun(n));

}

2.程序修改题

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

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

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

#include

#include

fun(int n,int a[])

{

int i,j,p,t;

for(j=0;j

{

p=j;

/**********found**********/

for(i=j+1;i

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

/**********found**********/

t=I;

if(p!=j)

{t=a[j];a[j]=a[p];a[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 aa[20]={9,3,0,4,1,2,5,6,8,10,7},

n=11;

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

putarr(n,aa);

fun(n, aa);

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

putarr(n,aa);

}

3.程序设计题

请编写一个函数unsigned fun(unsigned n),n是一个大于10的无符号整数,若n是m(m≥2)位的整数,则函数求出n的后m-1位的数作为函数值返回。

例如,若n的值为1234,则fun()函数值为234。

第五套:

1.程序填空题

给定程序中,函数fun的功能是:将形参n中,各位上为偶数的数取出,并按原来从高位到低位相反的顺序组成一个新的数,并作为函数值返回。

例如,输入一个整数:27638496,函数返回值为:64862。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

#include

unsigned long fun(unsigned long n)

{

unsigned long x=0;

int t;

while(n)

{

t=n%10;

/**********found**********/

if(t%2==___1___)

/**********found**********/

x=___2___+t;

/**********found**********/

n=___3___;

}

return x;

}

main()

{

unsigned long n=-1;

while(n>99999999||n<0)

{

printf("input(0

scanf("%ld",&n);

}

printf("The result is: %ld\n",fun(n));

}

2.程序修改题

下列给定程序中,函数fun的功能是:求三个数的最小公倍数。例如,给变量a、b、c分别输入15、11、2,则输出结果应当是330。

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

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

#include

int fun(int x,int y,int z)

{

int I,temp,n,m;

/*******found*********/

i=1;

temp=m=n=1;

/********found********/

while(temp!=0 && m!=0 && n!=0)

{

i=i+1;

temp=i%x;

m=i%y;

n=i%z;

}

return I;

}

main()

{

int a,b,c,I;

printf("Input a b c: ");

scanf("%d%d%d",&a,&b,&c);

printf("a=%d,b=%d,c=%d \n",a,b,c);

i=fun(a,b,c);

printf("The minimal common multipleis:%d\n",i);

}【答案】

3.程序设计题

编写函数fun,其功能是:根据以下公式计算s,将结果作为函数值返回;n通过形参传入:S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…n)

例如:若n的值为11时,函数的值为:1.833333

注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。

#include

float fun(int n)

{

}

main()

{

int n;

float s;

printf("\nPlease enter N:");

scanf("%d", &n);

s=fun(n);

printf("the result is: %f\n", s);

}

第六套:

1.程序填空题

给定程序中,函数fun的功能是计算下式:

S=1*3/(2*2)+3*5/(4*4)+5*7/(6*6)+…+(2n-1)*(2n+1)/(2n*2n)

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

#include

double fun(double e)

{

int i double s,x;

/**********found**********/

s=0; i=___1___;

x=1.0;

while(x>e)

{

/**********found**********/

___2___;

/**********found**********/

x=(2*i-1)*(2*i+1)/(___3___*(2*i));

s=s+x;

}

return s;

}

main()

{

double e=1e-6;

printf("The result is: %f\n",fun(e));

}

2.程序修改题

下列给定程序中,函数fun的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。例如,若输入adf,则应输出adf。

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

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

#include

#include

void fun(char s[])

{

char ch;

int i,j;

/*******found********/

for(i=strlen(s);I;i--)

for(j=0;j

/********found*******/

if(s[j]

{

ch=s[j];

s[j]=s[j+1];

s[j+1]=ch;

}

}

main()

{

char str[81];

printf("\nPlease enter a character string: ");

gets(str);

printf("\n\nBefore sorting:\n %s ",str);

fun(str);

printf("\nAfter sorting decendingly:\n%s",str);

}

3.程序设计题

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

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

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

注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。

#include

#include

#include

#define N 3

double fun(int b[][N])

{

}

main()

{

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

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 RESULT\n");

printf("The r is %lf\n",r);

out=fopen("outfile.dat","w");

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

fclose(out);

}

第七套:

1.程序填空题

给定程序中,函数fun的功能是:在形参ss所指字符串数组中,将所有串长超过k的字符串中右边的字符删除,只保留左边的k个字符。ss所指字符串数组中共有N个字符串,且串长小于M。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

#include

#include

#define N 5

#define M 10

/**********found**********/

void fun(char (ss_[10]_, int k)

{

int i=0 ;

/**********found**********/

while(i<__N__){

/**********found**********/

ss[i][k]=___3___; i++; }

}

main()

{

char x[N][M]={"Create","Modify","Sort","skip","Delete"};

int i;

printf("The original string\n");

for(i=0;i

printf("\n");

fun(x,4);

printf("The string after deleted :\n");

for(i=0;i

printf("\n");

}

2.程序修改题

下列给定程序中,函数fun的功能是:计算并输出以下数列的前m项之和SN,直到SN+1

大于p为止,p的值通过形参传入。

例如,若p的值为10.0,则函数值为9.592857。

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

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

#include

#include

double fun(double p)

{

int m;

double s,t;

m=2;

s=2.0;

while(s<=p)

{

t=s;

/*******found********/

s=s+(m+1)/m;

m++;

}

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

/*******found********/

return s;

}

main()

{

printf("%f\n",fun(10));

}

3.程序设计题

函数fun的功能是:逐个比较x、y两个字符串对应位置中的字符,把ASCII相等或值小的字符依次存放到z数组中,形成一个新的字符串。例如,若x中的字符串为AbceDEfG,y 中的字符串为ABdefgC,则z中的字符串应为ABceDEC。

(自己写答案)

第八套:

1.程序填空题

给定程序中,函数fun的功能是:调用随机函数产生20个互不相同的整数放在形参a所指数组中(此数组在主函数中已置0)。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

#include

#define N 20

void fun(int a[])

{

int i,x,n=0;

x=rand()%20;

/**********found**********/

while (n<___1___)

{

for(i=0; i

/**********found**********/

if(x==a[i])___2___;

/**********found**********/

if(i==___3___){a[n]=x; n++;}

x=rand()%20;

}

}

main()

{

int x[N]={0},I;

fun(x);

printf("The result : :\n");

for(i=0;i

{

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

if((i+1)%5==0) printf("\n");

}

printf("\n\n");

}

2.程序修改题

给定程序中,函数fun()的功能是:求出数组中最小数和次最小数,并把最小数和a[0]中的数对调,次最小数和a[1]中的数对调。

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

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

#include

#include

#include

#define N 20

void fun(int *a,int n)

{

int I,m,t,k;

/**********found**********/

for(i=0;i

{

m=I;

for(k=I;k

if(a[k]

/**********found**********/

k=m;

t=a[i];a[i]=a[m];a[m]=t;

}

}

main()

{

int x,b[N]={11,5,12,0,3,6,9,7,10,8},

n=10,I;

system("cls");

for(i=0;i

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

printf("\n");

fun(b,n);

for(i=0;i

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

printf("\n");

}

3.程序设计题

给定程序中,函数fun的功能是:把形参str所指字符串中下标为奇数的字符右移到下一个奇数位置,最右边被移出字符串的字符绕回放到第一个奇数位置,下标为偶数的字符不动(注意:字符串的长度大于等于2)。

注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。

#include

void fun(char str[])

{

}

main()

{

char str[100]="564321";

printf("\nThe original string is: %s\n",str);

fun(str);

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

}

第九套:

1.程序填空题

给定程序中,函数fun的功能是:将a所指3×5矩阵中第k列的元素左移到第0列,第k 列以后的每列元素依次左移,原来左边的各列依次绕到右边。

例如,有下列矩阵:

1 2 3 4 5

1 2 3 4 5

1 2 3 4 5

若k为2,程序执行结果为

3 4 5 1 2

3 4 5 1 2

3 4 5 1 2

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:不得增行或删行,也不得更改程序的结构!

#include

#define M 3

#define N 5

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

{

int I,j,p,temp;

/**********found**********/

for(p=1;p<=___1___;p++)

for(i=0;i

{

temp=a[i][0];

/**********found**********/

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

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

/**********found**********/

a[i][N-1]=___3___;

}

}

main()

{

int x[M][N]={{1,2,3,4,5},{1,2,3,4,5},{1,2,3,4,5}},I,j;

printf("The array before moving:\n");

for(i=0;i

{

for(j=0;j

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

printf("\n");

}

fun(x,2);

printf("The array after moving:\n");

for(i=0;i

{

for(j=0;j

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

printf("\n");

}

}

2.程序修改题

给定程序中,fun函数的功能是:求s = aa…aa - …- aaa - aa –a(此处aa…aa表示n个a,a和n的值在1至9之间)。

例如a=3,n=6,则以上表达式为:

s=333333 - 33333 - 3333 - 333 - 33 – 3

其值是:296298

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

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

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

#include

long fun(int a,int n)

{

int j;

/**********found**********/

long s=0,t=1;

for(j=0;j

t=t*10+a;

s=t;

for(j=1;j

{

/**********found**********/

t=t%10;

s=s-t;

}

return(s);

}

main()

{

int a,n;

printf("\nPlease enter a and n:");

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

printf("The value of function is:%ld\n", fun(a,n));

}

3.程序设计题

请编写函数fun,其功能是:计算并输出当x<0.97时如下多项式的值,直到|Sn - Sn-1|<0.000001为止:

SN=1+0.5x+0.5(0.5-1)x2/2!+0.5(0.5-1)(0.5-2)x3/3!+…+0.5(0.5-1)(0.5-2)(0.5-n+1)x n/n!

例如,在主函数中从键盘给x输入0.21后,输出为:s= 1.100000。

注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun 的花括号中填入所编写的若干语句。

#include

#include

double fun(double x)

{

}

main()

{

double x,s;

printf("Input x: ");

scanf("%lf",&x);

s=fun(x);

printf("s=%f\n",s);

}

第十套

1.程序填空题

请补充fun函数,该函数的功能是求能整除k且是偶数的数,把这些数保存在数组a,并按从大到小输出。

例如,当k=20时,依次输出20 10 8 4 2。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:不得增行或删行,也不得更改程序的结构!

#include

#include

void fun(int k,int a[])

{

int I;

int j=0;

for(___1___;i<=k;i++)

if(k%i==0___2___i%2==0)

a[j++]=I;

printf("\n\n ");

for(i=___3___;i>=0;i--)

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

}

main()

{

int k=1;

int a[100];

printf("\nPlease input k\n");

scanf("%d",&k);

fun(k,a);

}

相关文档