C语言基础练习7


1.用递归方法求n!。

#include<stdio.h>


int main()
{
	int fac(int n);
	int n, y;
	printf("input an integer numbers:");
	scanf_s("%d", &n);
	y = fac(n);
	printf("%d!=%d\n", n, y);
    return 0;
}

int fac(int n)
{
	int f;
	if (n < 0)
		printf("n<0,data error!");
	else if (n == 0 || n == 1)
		f = 1;
	else
		f = fac(n - 1)*n;
	return(f);
}

运行结果:



2.hanoi塔问题,输出移动盘子的步骤

#include<stdio.h>


int main()
{
	void hanoi(int n, char one, char two, char three);
	int m;
	printf("input the number of diskes:");
	scanf_s("%d", &m);
	printf("The step to move %d diskes:\n", m);
	hanoi(m, 'A', 'B', 'C');
    return 0;
}

void hanoi(int n, char one, char two, char three)
{
	void move(char x, char y);
	if (n == 1)
		move(one, three);
	else
	{
		hanoi(n - 1, one, three, two);
		move(one, three);
		hanoi(n - 1, two, one, three);
	}
}

void move(char x, char y)
{
	printf("%c-->%c\n", x, y);
}
运行结果:



3.输入10个数,输出其中值最大的元素和该数是第几个数

#include<stdio.h>


int main()
{
	int max(int x, int y);
	int a[10], m, n, i;
	printf("enter 10 integer numbers:");
	for (i = 0; i < 10; i++)
		scanf_s("%d", &a[i]);
	printf("\n");
	for (i = 0, m = a[0], n = 0; i < 10; i++)
	{
		if (max(m, a[i]) > m)
		{
			m = max(m, a[i]);
			n = i;
		}
	}
	printf("The largest number is %d\nit is the %dth number.\n", m, n + 1);
    return 0;
}

int max(int x, int y)
{
	return(x > y ? x : y);
}
运行结果:



4.有一个一维数组score,内放10个学生成绩,求平均成绩

#include<stdio.h>


int main()
{
	float average(float array[10]);
	float score[10], aver;
	int i;
	printf("input 10 scores:\n");
	for (i = 0; i < 10; i++)
		scanf_s("%f", &score[i]);
	printf("\n");
	aver = average(score);
	printf("average score is %5.2f\n", aver);
    return 0;
}

float average(float array[10])
{
	int i;
	float aver, sum = array[0];
	for (i = 1; i < 10; i++)
		sum = sum + array[i];
	aver = sum / 10;
	return(aver);
}
运行结果:



猜你喜欢

转载自blog.csdn.net/huaweiran1993/article/details/78359682