(完整版)C语⾔程序设计练习题(含程序及参考答案)C语⾔练习题
(所提供的源程序均采⽤⾃定义函数⽅式解决,如不采⽤函数⽅式,也可直接在main函数中借鉴该思想编程,因时间有限,所有程序未能⼀⼀验证,仅供参
考使⽤)
1、定义⼀个函数int fun(int a,int b,int c),它的功能是:若a,b,c能构成等边三⾓形函数返回3,若能构成等腰三⾓形函数返回2,若能构成⼀般三⾓形函数返回1,若不能构成三⾓形函数返回0。
#include
int fun(int a,int b,int c)
{
if(a+b>c && b+c>a && a+c>b)
{
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%d",&a,&b,&c);
printf("\na=%d, b=%d, c=%d\n",a,b,c);
shape =fun(a,b,c);
printf("\n\nThe shape : %d\n",shape);
}
2、编写⼀个程序,将两个变量的值交换, 例如变量a中的值原为 3,b中的值原为8,程序运⾏后 a 中的值为8,b中的值为3。#include
void fun(int *x,int *y)
{
int t;
t=*x;*x=*y;*y=t
}
void main()
{
int a=3,b=8;
printf("%d %d\n",a,b);
fun(&a,b);
printf("%d %d\n",a,b);
}
3、从键盘输⼊3个数,将最⼤值放在变量a中,最⼩值放在变量c中。
例如,输⼊的数为:55 12 34,
输出结果应当是:a=55.0,b=34.0,c=12.0。
#include
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=*p;*p=k;}
if (*p<*q)
{ k=*p;*p=*q;*q=k;}
}
void main()
{ float a,b,c;
printf("Input a b c: "); scanf("%f%f%f",&a,&b,&c);
printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);
fun(&a,&b,&c);
printf("a=%4.1f,b=%4.1f,c=%4.1f\n\n",a,b,c);
}
4、编写函数fun(int n),它的功能是:计算正整数n的所有因⼦(1和n除外)之和作为函数值返回。例如:n=120时,函数值为239。
#include
#include
int fun(int n)
{
int i,s=0;
for (i=2;i
if (n%i==0) s=s+i;
return s;
}
void main() /*主函数*/
{
void NONO();
printf("%d\n",fun(120));
NONO();
}
void NONO( )
{/* 请在此函数内打开⽂件,输⼊测试数据,调⽤ fun 函数,
输出数据,关闭⽂件。 */
FILE *wf;
wf = fopen("a30.out", "w") ;
fprintf(wf,"%d\n",fun(120));
fclose(wf) ;
}
5、计算s,并输出
1 1 1
S = 1 + ── + ─── + …… + ──────
1+2 1+2+3 1+2+3+…+n一个完整的c语言程序
n通过键盘输⼊,例如:若n的值为11时,则函数值为:1.833333 #include #include
float fun(int n)
{
int i;
float s=1.0,h=1;
for (i=2;i<=n;i++)
{
h=h+i; s=s+1.0/h;
}
return s;
}
void main()
{
int n;float s;
printf("\nPlease enter N:");scanf("%d",&n);
s=fun(n);
printf("the result is:%f",s);
}
6、将⼀个整数中的每⼀位上为奇数的数依次取出,构成⼀个新数放在t中。⾼位仍在⾼位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:7531。#include
void fun(long s,long *t)
{
int d;
long s1=1;
*t=0;
while (s>0)
{
d=s%10;
if(d%2!=0)
{
*t=d*s1+*t;
s1=s1*10;
}
s/=10;
}
}
main()
{
long s,t;
printf("\nPlease enter s:");
scanf("%ld",&s);
fun(s,&t);
printf("The result is:%ld\n",t);
}
7、计算并输出k以内最⼤的10个能被13或17整除的⾃然数之和。k的值从键盘传⼊,若k的值为500,则输出4622。
#include
int fun(int k)
{
int m=0,mc=0,j;
while((k>=1)&&(mc<10))
{
if ((k%13 == 0)||(k%17 == 0))
{
m=m+k;mc++;
}
k--;
}
return m;
}
void main()
{
printf("%d\n",fun(500));
}
8、已知⼀个数列的前三项分别为0,0,1,以后的各项都是其相邻的前三项之和,计算并输出该数列前n项的平⽅根之和sum。例如,当n=10时,程序的输出结果应为:23.197745。
#include
#include
double fun(n)
{
double sum,s0,s1,s2,s;
int k;
sum = 1.0;
if(n <= 2) sum = 0.0;
s0 = 0.0; s1 = 0.0; s2 = 1.0;
for (k = 4; k <= n; k++)
{ s = s0 + s1 + s2;
sum += sqrt(s);
s0 = s1; s1 = s2; s2 = s;
}
return sum;
}
void main ( )
{
int n;

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。