c语言程序设计教程牡丹答案,C语言程序设计练习题(含程序及参考答案)

C语言练习题

(所提供的源程序均采用自定义函数方式解决,如不采用函数方式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能一一验证,仅供参

考使用)

1、定义一个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三角形函数返回3,若能构成等腰三角形函数返回2,若能构成一般三角形函数返回1,若不能构成三角形函数返回0。

#include stdio.h

int fun(int a,int b,int c)

{

if(a+b b+c a+cb)

{

if(a==b b==c )

return 3;

else if(a==b||b==c||a==c)

return 2;

else return 1;

}

else return 0;

}

void main()

{

int a,b,c,shape;

printf(nInput a,b,c:

scanf(%d%d%da,c);

printf(na=%d, b=%d, c=%dn,a,b,c);

shape =fun(a,b,c);

printf(nnThe shape : %dn,shape);

}

2、编写一个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运行后 a 中的值为8,b中的值为3。

#include stdio.h

void fun(int *x,int *y)

{

int t;

t=*x;*x=*y;*y=t;

}

void main()

{

int a=3,b=8;

printf(%d %dn

fun(a,

printf(%d %dn

}

3、从键盘输入3个数,将最大值放在变量a中,最小值放在变量c中。 例如,输入的数为:55 12 34,

输出结果应当是:a=55.0,b=34.0,c=12.0。

#include stdio.h

void fun(float *p,float *q,float *s)

{

float k;

if (*p*q)

{ k=*p;*p=*q;*q=k;}

if (*q*s)

{ k=*s;*s=*q;*q=k;}

if (*p*q)

{ k=*p;*p=*q;*q=k;}

}

void main()

{ float a,b,c;

printf(Input a b c: scanf(%f%f%fa,c); printf(a=%4.1f,b=%4.1f,c=%4.1fnn,a,b,c);

fun(b,

printf(a=%4.1f,b=%4.1f,c=%4.1fnn,a,b,c);

}

4、编写函数fun(int n),它的功能是:计算正整数n的所有因子(1和n除外)之和作为函数值返回。例如:n=120时,函数值为239。

#include stdio.h

int fun(int n)

{

int i,s=0;

for (i=2;ii++)

if (n%i==0) s=s+i;

return s;

}

void main() /*主函数*/

{

printf(%dn,fun(120));

}

5、计算s,并输出

1 1 1

S = 1 + ── + ─── + ?? + ──────

1+2 1+2+3 1+2+3+?+n

n通过键盘输入,例如:若n的值为11时,则函数值为:1.833333 #include stdio.h

#include stdlib.h

float fun(int n)

{

int i;

float s=1.0,h=1;

for (i=2;ii++)

{

h=h+i; s=s+1.0/h;

}

return s;

}

void main()

{

int n;float s;

printf(nPlease enter N:scanf(%dn);

s=fun(n);

printf(the result is:%f

}

10、判断两个整数m和n是否互质(即是否有公共的因子)(m≠1,n≠1)。方法是: 用2到t(t取m和n中较小的那个数)之间的数分别去除m和n,若m和n能同时被某个数除尽,则m和n不互质;否则它们互质。

例如,若输入187和85,则应输出No(表示它们不互质,它们有公因子17)。若输入89和187,则应输出Yes(表示它们互质)。

#include stdio.h

int IsThat( int m, int n )

{

int k, t, mk=1;

t=m;

if (m

for(k=2;kk++)

if( m%k==0 n%k==0 )

{ mk=0; break; }

return mk;

}

void main( )

{

int m, n;

printf( nPlease enter 2 numbers:n

scanf(%d %d, m,

if( IsThat( m, n ) )

printf( Yesn

else

printf( Non

}

11、将十进制正整数m转换成k进制数(2≤k≤9)并输出(m,k从键盘输入)。 例如,若输入8和2,则应输出1000(即十进制数8转换成二进制表示是1000)。 #include stdio.h

void Trans( int m, int k )

{

int aa[20], i,j;

for( i = 0; m; i++ )

{

aa[i] = m%k;

m /= k;

}

for( j=i-1; j j-- )

printf(%d, aa[j]);

}

void main()

{

int b, n;

printf( nPlease enter a number and a base:n

scanf(%d %d, n,

Trans( n, b );

}

12、统计从键盘输入的50个实数中有多少个正数、多少个负数、多少个零 #include stdio.h

void fun(int *zs,int *fs,int *l,float aa[])

{

}

void main()

{

} float num[50]; int i,czs,cfs,cl; czs=cfs=cl=0; printf( nPlease enter 50 float numbers :n for(i=0;ii++) scanf(“%f”,num[i]); fun(czs,cfs,cl,num); printf(n正数:%d ,负数:%d ,零:%d n,czs,cfs,cl); int i; for(i=0;ii++) { if(aa[i]0) (*zs)++; (*fs)++; (*l)++; if(aa[i]0) if(aa[i]==0) }

13、计算并输出方程X2+Y2=1989的所有整数解 #include stdio.h

void fun()

{

}

void main()

{

} printf(“方程x^2+y^2=1989的整数解为:n”); fun(); int x,y; for(x=1;xx++) for(y=1;yy++) if(x*x+y*y==1989) printf(“x=%d ,y=%d n”,x,y);

14、从键盘输入10个整数,求出其中的最大值。 #include stdio.h

int fun(int aa[])

{

}

void main()

{

} int num[10],i; printf(“请从键盘输入10个整数:n”); for(i=0;ii++) scanf(“%d”,num[i]); printf(“n最大的数是:%dn”,fun(num)); int m,i; m=aa[0]; for(i=1;ii++) return m; if(aa[i]m) m=aa[i];

15、从键盘输入n值,输出如右图形。(例如n=5时) #include stdio.h

void fun(int n)

{

int i,j; for(i=1;ii+

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值