文档库 最新最全的文档下载
当前位置:文档库 › 编程题练习

编程题练习

编程题练习
编程题练习

1、主函数中通过键盘输入年份,调用函数fun判断该年是否为闰年。

#include

fun(int year)

{int flag;

/**********Program**********/

/********** End **********/

}

main()

{ int year,np;

printf("Pleae input a year:");scanf("%d",&year);

np=fun(year);

if (!np)

printf("%d is not a leap year\n",year);

else

printf("%d is a leap year\n",year);

}

答案

if (year%400==0) flag=1;

else if (year%4!=0) flag=0;

else if (year%100!=0) flag=1;

else flag=0;

return(flag);

2、编写函数fun其功能是:根据整型参数n,计算如下公式a1=1,a2=1/(1+a1),a3=1/(1+a2),……an=1/(1+a(n-1))数列的第n项。

#include "stdio.h"

#include"conio.h"

float fun(int n)

{/**********Program**********/

/********** End **********/

}

main()

{int m;

printf("Enter m: ");

scanf("%d", &m);

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

}

答案

float a=1;int i;

for(i=1;i

a=1.0/(1+a);

return a;

3、求表达式的前20项之和。程序的运行结果为1.950000。

1 1 1

S = 1 + —— + —— + ...... + ————

1*2 2*3 n*(n+1)

#include

float fun(int n)

{ int i;

float s,t;

/**********Program**********/

/********** End **********/

return(s);

}

main()

{ float s;

s=fun(20);

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

}

答案

s=0;

t=1;

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

{s=s+t;

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

}

4、编写函数fun,函数的功能是:求一个四位数的各位数字的立方和。#include "stdio.h"

int fun(int n)

{/**********Program**********/

/********** End **********/

}

main()

{int k;

k=fun(1234);

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

}

答案:

int d,k,s=0;

while (n>0)

{d=n%10;

s+=d*d*d;

n/=10;

}

return s;

5、编写函数fun,功能是:用下面的和式求圆周率的近似值。直到最后一项的绝对值小于等于eps。

π 1 1 1

— = 1 - — + — - — + ...

4 3

5 7

运行结果:pi=3.141397

#include "math.h"

#include "stdio.h"

float fun(float eps)

{int i=1;

float s=0,t=1,p=1;

/**********Program**********/

/********** End **********/

}

main()

{ printf("pi=%f\n",fun(0.0001));

}

答案:

while(fabs(t)>eps)

{ s=s+t;

p=-p;

i=i+2;

t=p/i;

}

return s*4;

6、编写函数fun,功能是求如下表达式:

1 1 1

S = 1 + —— + ——— + ...... + ———————

1+2 1+2+3 1+2+3+......+n

如:n=5 运行结果:1.666667

#include "stdio.h"

float fun(int n)

{ int i,j;

float t,s=0;

/**********Program**********/

/********** End **********/

}

main()

{ int n;

printf("Please input a number:");

scanf("%d",&n) ;

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

}

--------------------------------------------------

答案

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

{ t=0;

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

t=t+j;

s=s+1/t;

}

return s;

7、编写函数fun,函数的功能是:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…的前n项之和。

每一分数的分母是前两项的分母之和

每一分数的分子是前两项的分子之和

例如:求前20项之和的值为32.660259。

#include "stdio.h"

float fun(int n)

{/**********Program**********/

/********** End **********/

}

main()

{float y;

y=fun(20);

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

}

答案:

int i;

float f1=1,f2=1,f3,s=0;

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

{f3=f1+f2;

f1=f2;

f2=f3;

s=s+f2/f1;

}

return s;

8、编写函数fun求sum=d+dd+ddd+……+dd...d(n个d),其中d为1-9的数字。

例如3+33+333+3333+33333(此时d=3,n=5),d和n在主函数中输入。

#include "stdio.h"

main()

{ int d,n;

long sum,fun();

printf("d=");

scanf("%d",&d);

printf("n=");

scanf("%d",&n);

sum=fun(d,n);

printf("sum=%ld\n",sum);

}

long int fun(int d,int n)

{/**********Program**********/

/********** End **********/

}

答案:

long int s=0,t=0;

int i;

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

{ t=t+d;

s=s+t;

d=d*10;

}

return s;

9、编写函数fun,函数的功能是:求1到100之间的偶数之积。

#include "stdio.h"

double fun(int m)

{/**********Program**********/

/********** End **********/

}

main()

{printf("ji=%f\n",fun(100));

}

答案

double y=1;

int i;

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

if(i%2==0)y*=i;

return y;

10、编写函数fun求1!+2!+3!+ …… +n!的和,在main函数中由键盘输入n值,并输出运算结果。例如:若n值为20,则结果为268040729。

#include

float fun(int n)

{/**********Program**********/

/********** End **********/

}

main()

{ int i,n;

long int result;

scanf("%d",&n);

result=fun(n);

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

}

答案

int i;

float f=1,s=0;

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

{f=f*i;

s=s+f;}

return s;

11、调用函数fun判断一个三位数是否是"水仙花数"。在main函数中从键盘输入一个三位数,并输出判断结果。请编写fun函数。所谓"水仙花数"是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153等于1的立方加上5的立方加上3的立方之和。

#include "stdio.h"

int fun(int n)

{/**********Program**********/

/********** End **********/

}

main()

{ int n,flag;

scanf("%d",&n);

flag=fun(n);

if(flag)

printf("%d 是水仙花数\n",n);

else

printf("%d 不是水仙花数\n",n);

}

答案

int bw,sw,gw;

bw=n/100;sw=(n-bw*100)/10;gw=n%10;

if(n==bw*bw*bw+sw*sw*sw+gw*gw*gw) return 1;

else return 0;

12、编写函数fun其功能是:判断一个整数w的各位数字平方之和能否被5整除,可以被5整除则返回1,否则返回0。

#include "stdio.h"

#include"conio.h"

int fun(int w)

{/**********Program**********/

/********** End **********/

}

main()

{int m;

printf("Enter m: ");

scanf("%d", &m);

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

}

答案

int k,s=0;

do

{s=s+(w%10)*(w%10);

w=w/10;

}while(w!=0);

if(s%5==0)k=1;

else k=0;

return(k);

13、编写函数fun其功能是:计算出k以内最大的10个能被13或17整除的自然数之和。(k〈3000)。

#include "stdio.h"

#include"conio.h"

int fun(int k)

{/**********Program**********/

/********** End **********/

}

main()

{int m;

printf("Enter m: ");

scanf("%d", &m);

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

}

答案

int a=0,b=0,j;

while((k>=2)&&(b<10))

{ k--;

if((k%13==0)||(k%17==0))

{a=a+k;b++;}

}

return a;

{t=a[j];a[j]=a[j+1];a[j+1]=t;}

14、编写函数fun其功能是:根据整型形参m,计算如下公式的值:y=1/2!+1/4!+...+1/m!(m 是偶数)

#include "stdio.h"

double fun(int m)

{ /**********Program**********/

/********** End **********/

}

main()

{int n;

clrscr();

printf("Enter n: ");

scanf("%d", &n);

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

}

答案

double y=0.0;

int i,j;

double s=1;

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

{for(j=i-1;j<=i;j++)

s=s*j;

y=y+1.0/s;

}

return y;

15、从键盘输入一个大于3的整数,调用函数fun判断其是否素数,然后在main函数中输出相应的结论信息。例如:7是素数,8不是素数。请编写fun函数。素数是仅能被1和自身整除的数

#include "stdio.h"

main()

{ int m,flag;

printf("input an integer:");

scanf("%d",&m);

flag=fun(m);

if(flag)

printf("%d is a prime.\n",m);

else

printf("%d is not a prime.\n",m);

}

int fun(int n)

{/**********Program**********/

/********** End **********/

}

答案

int i;

int j;

if (i<0) j=0;

for(i=2;i

{if(n%i==0) j= 0;

}

return j;

16、请编写函数fun,它的功能是:判断m是否为素数。主函数的功能是:求出100到200之间的素数的个数。

#include "stdio.h"

main()

{ int m,k=0;

for(m=100;m<200;m++)

if(fun(m))

{printf("%4d",m);

k++;

if(k%5==0)printf("\n");

}

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

}

int fun(int m)

{/**********Program**********/

/********** End **********/

}

答案

int i,k=1;

if(m<=1) k=0;

for(i=2;i

if(m%i==0) k=0;

return k;

17、编写函数fun其功能是:求给定正整数n以内的素数之积。(n<28)

#include "stdio.h"

#include"conio.h"

long fun(int n)

{/**********Program**********/

/********** End **********/

}

main()

{int m;

printf("Enter m: ");

scanf("%d", &m);

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

}

long i,k;

long s=1;

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

{for(k=2;k

if(i%k==0)break;

if(k==i)s=s*i;

}

return s;

18、编写函数fun,函数的功能是:计算n门课程的平均值,计算结果作为函数值返回。例如,若有5门课程的成绩是:92,76,69,58,88,则函数的值为72.599998。

#include "stdio.h"

float fun(int a[],int n)

{/**********Program**********/

/********** End **********/

}

main()

{int a[]={92,76,69,58,88};

printf("y=%f\n",fun(a,5));

}

答案

int i;

float y=0;

for(i=0;i

y+=a[i];

y=y/n;

return y;

19、求一批数中小于平均值的数的个数。

#include

int average_num(int a[],int n)

{/**********Program**********/

/********** End **********/

}

main()

{ int n,a[100],i,num;

clrscr();

scanf("%d",&n);

for(i=0;i

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

num=average_num(a,n);

printf("the num is:%d\n",num);

}

int i,sum=0,k=0;

float average;

for(i=0;i

sum=sum+a[i];

average=sum*1.0/n;

for(i=0;i

if(average>a[i]) k++;

return(k);

20、从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main 函数中输出。请编写fun函数。

#include "stdio.h"

int fun(int x[],int n)

{/**********Program**********/

/********** End **********/

}

main()

{ int a[10],i,min;

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

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

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

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

printf("\n");

min=fun(a,10);

printf("%d\n",min);

}

答案

int min,i;

min=x[0];

for(i=1;i

{if(x[i]

return min;

21、编写函数fun,函数的功能是:找出一批正整数中的最大的偶数。

#include "stdio.h"

int fun(int a[],int n)

{/**********Program**********/

/********** End **********/

}

main()

{int a[]={1,2,9,24,35,18},k;

k=fun(a,6);

printf("max=%d\n",k);

}

答案

int i,amax=-1;

for(i=0;i

if(a[i]%2==0) if (a[i]>amax) amax=a[i];

return amax;

22、程序的功能是: 把20个随机数存入一个数组,然后输出该数组中的最大值。其中确定最大值的下标的操作在fun函数中实现,请给出该函数的定义。

#include "stdio.h"

#define VSIZE 20

int vector[VSIZE] ;

int fun(int list[],int size)

{/**********Program**********/

/********** End **********/

}

main()

{ int i;

clrscr() ;

for (i=0;i

{vector[i]=rand();

printf("Vector[%d]=%6d\n",i,vector[i]);

}

i=fun(vector,VSIZE);

printf("\nMaxnum: Vector[%d]=%6d\n",i,vector[i]);

}

答案

int i,max=0;

for(i=1; i

if(list[max]

max=i;

return max;

23、求一批数中最大值和最小值的差。

int max_min(int a[],int n)

{/**********Program**********/

/********** End **********/

}

#define N 30

#include "stdlib.h"

#include "stdio.h"

main()

{ int a[N],i,k;

clrscr();

for(i=0;i

a[i]=random(51)+10;

for(i=0;i

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

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

}

k=max_min(a,N);

printf("the result is:%d\n",k);

}

答案

int i,max,min;

max=min=a[0];

for(i=1;i

if(a[i]>max) max=a[i];

else if(a[i]

return(max-min);

24、给定n个数据, 求最大值出现的位置(如果最大值出现多次,求出第一次出现的位置即可)。

#include

int station(int s[],int n)

{/**********Program**********/

/********** End **********/

}

main()

{ int a[100],n,i,t;

clrscr();

scanf("%d",&n);

for(i=0;i

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

t=station(a,n);

printf("the max_value position is:%d\n",t);

}

答案

int i,k;

k=0;

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

if(s[i]>s[k]) k=i;

return(k+1);

25、从键盘为一维整型数组输入10个整数,调用fun函数找出其中最小的数,并在main 函数中输出。请编写fun函数。

#include "stdio.h"

int fun(int x[],int n)

{/**********Program**********/

/********** End **********/

}

main()

{ int a[10],i,min;

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

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

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

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

printf("\n");

min=fun(a,10);

printf("%d\n",min);

}

答案

int min,i;

min=x[0];

for(i=1;i

{if(x[i]

return min;

26、请编写一个函数fun,函数的功能是:统计出若干个学生的平均成绩,最高分以及得最高分的人数。例如,输入10名学生的成绩分别为92,87,68,56,92,84,67,75,92,66,则输出平均成绩为77.9,最高分为92,得最高分的人数为3人。

#include "stdio.h"

float Max=0;

int J=0;

float fun(float array[],int n)

{/**********Program**********/

/********** End **********/

}

main( )

{ float a[10],ave;

int i=0;

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

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

ave=fun(a,10);

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

printf("max=%f\n",Max);

printf("Total:%d\n",J);

}

答案

int i,j=0;float sum=0,ave;

Max=array[0];

for(i=0;i

{ if(Max

sum=sum+array [i]; }

ave=sum/n;

for(i=0;i

if(array [i]==Max) J++;

return(ave);

27、一个数组有8个元素,其初始数据为:1 2 3 4 5 6 7 8 要求在不增加数组,也不增加数组的存储单元的情况下,通过移动数组元素将数组变化为:4 5 6 7 8 1 2 3

#include

void fun(int a[])

{int i,j,t;

/**********Program**********/

/********** End **********/

}

main()

{ int a[8]={1,2,3,4,5,6,7,8},i,j;

fun(a);

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

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

printf("\n");

}

答案:

int i,j,k,t;

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

{t=a[0];

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

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

a[7]=t;

}

}

28、产生15个[20,80]上的随机整数,用顺序法(比较法)按从小到大排序后输出。

#include

#include

void fun(int a[], int n)

{int i,j,t;

/**********Program**********/

/********** End **********/

}

#define N 15

main()

{int i,a[N];

for(i=0;i

a[i]=random(61)+20;

fun(a,N);

for(i=0;i

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

printf("\n");

}

答案

for(i=0;i

for(j=i+1;j

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

{t=a[i];

a[i]=a[j];

a[j]=t;

}

29、编写函数用选择排序法对数组中的数据进行从小到大的排序。#include

#include

void sort(int a[],int n)

{/**********Program**********/

/********** End **********/

}

main()

{int a[13],i;

clrscr();

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

a[i]=random(20)-5;

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

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

printf("\n-------------------\n");

sort(a,13);

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

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

}

答案

int i,j,k,t;

for(i=0;i

{k=i;

for(j=i+1;j

if(a[k]>a[j]) k=j;

if(k!=i)

{t=a[i];

a[i]=a[k];

a[k]=t;

} }

30、编写函数用冒泡排序法对数组中的数据进行从小到大的排序。

#include

#include

void sort(int a[],int n)

{/**********Program**********/

/********** End **********/

}

main()

{int a[16],i;

clrscr();

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

a[i]=random(30)+15;

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

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

printf("\n-------------------\n");

sort(a,16);

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

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

}

答案

int i,j,t;

for(i=0;i

for(j=0;j

if(a[j]>a[j+1])

{ t=a[j];a[j]=a[j+1];a[j+1]=t;}

31、编写函数fun,在一个已按升序排列的数组中插入一个数,插入后,数组元素仍按升序排列。

#define N 11

#include

void fun(int a[N],int number)

{ int i;

/**********Program**********/

/********** End **********/

}

main()

{int i,j,t,number,a[N]={1,2,4,6,8,9,12,15,149,156};

printf("please enter an integer to insert in the array:\n");

scanf("%d",&number);

printf("The original array:\n");

for(i=0;i

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

printf("\n");

fun(a,number);

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

for(i=0;i

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

printf("\n");

}

答案

for(i=N-2;i>=0;i--)

if(number<=a[i])

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

else

{a[i+1]=number;

break;}

if(number

32、编写函数fun其功能是在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出主对角线元素的平方和,并在fun()函数中输出。

#include "stdio.h"

main()

{ int i,j,s,a[3][3];;

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

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

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

s=fun(a);

printf("Sum=%d\n",s);

}

int fun(int a[3][3])

{/**********Program**********/

/********** End **********/

}

答案

int sum;

int i,j;

sum=0;

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

sum=sum+a[i][i]*a[i][i];

return sum;

33、有一个3×3的数组,求其右上三角(含主对角线)的元素之和。

#include

#define N 3

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

{int i,j,s;

/**********Program**********/

/********** End **********/

return (s) ;

}

main( )

{

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

s=fun(a);

printf("%d\n",s);

}

答案

s=0;

for(i=0;i

for(j=0;j

if(i<=j) s+=a[i][j];

34、编写函数fun产生如下杨辉三角形,产生的行数由main给出。1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

......

#define N 10

#include

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

{int i,j;

/**********Program**********/

/********** End **********/

}

main ( )

{int a[N][N];

int i,j,n;

scanf("%d",&n);

fun(a,n);

for (i=0;i

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

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

printf("\n");

}}

答案

for (i=0;i

{a[i][0]=1;

a[i][i]=1;

}

for (i=2;i

for (j=1;j

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

35、编写函数fun其功能是在键盘上输入一个3行3列矩阵的各个元素的值(值为整数),然后输出矩阵第一行与第三行元素之和,并在fun()函数中输出。

#include "stdio.h"

main()

{ int i,j,s,a[3][3];

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

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

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

s=fun(a);

printf("Sum=%d\n",s);

}

int fun(int a[3][3])

{/**********Program**********/

/********** End **********/

}

答案

int sum;

int i,j;

sum=0;

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

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

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

return sum;

36、编写函数fun,函数的功能是用循环语句编程将二维数组a[3][4]的第一行和第三行对调(如下图)。

2 3 5 4 9 7 3 1

3 8 10 2 3 8 10 2

9 7 3 1 2 3 5 4

#include "stdio.h"

void fun(int pp[3][4])

{ int t,n;

/**********Program**********/

/********** End **********/

}

main()

相关文档