C语言考试知识点汇总(实践知识点)

目录

1、求三个数的最大值

2、求三角形面积 提示:area=s(s-a)(s-b)(s-c)的开平方根  s=(a+b+c)/2

3、打印1-100的奇数

4、求n的阶乘(1×2×3...×n)

5、求n的阶乘之和(输入数字n,求1!+2!..+n!)

6、在一个有序数组中使用折半查找

7、找出两个数组中相同的数字并输出

8、输入100-999内的整数,反序显示,如输入123,输出321

9、输入任意一个整数,逐个输出它的每一位。(递归)

10、输入一个数,得到这个数的每个位数的数之和。例如1234,得到1+2+3+4,为10

11、输入一个字符串,判断它是否为回文。所谓回文是指字符串正序和逆序是一样的,如“abcdcba”就是回文。

11、输入两个自然数,输出它们的最大公约数和最小公倍数

12、输入一组成绩,除去最高分,除去最低分,求平均分

13、判断素数:对于一个整数k,如果k不能被2到根号k之间的所有整数除尽,则k是素数

14、输入数组,倒序输出

15、打印Fibonacci数列1 1 2 3 5 8 13 ...,每五个数换一行

16、冒泡排序:相邻两个数比大小排序

17、选择排序

18、插入排序


1、求三个数的最大值

#include <stdio.h>
#define Max(a,b) a>b?a:b
int main()
{
	int a, b, c;
	int max;
	scanf("%d %d %d", &a, &b, &c);
	max = Max(Max(a, b), c);
	printf("max=%d", max);
	return 0;
}

2、求三角形面积 提示:area=s(s-a)(s-b)(s-c)的开平方根  s=(a+b+c)/2

#include <stdio.h>
#include <math.h>
int tringle(int a, int b, int c)
{
	int area;
	int s;

	s = (a + b + c) / 2;
	area = sqrt((s - a)*(s - b)*(s - c)*s);

	return area;
}


int main()
{
	int condition = 0;
	while(condition==0)		
	{ 

	//首先输入三角形的三边:
	int a, b, c;
	printf("请输入三角形三边:");
	scanf("%d %d %d", &a, &b, &c);
	//定义三角形面积
	int area;

	//判断这三边是否成立,即两边之和大于第三边
	if (a + b > c && a + c > b && b + c > a)
	{
		//三边成立,则调用函数tringle(int a,int b,int c),返回值是面积
		area = tringle(a, b, c);
		printf("三角形面积是:%d", area);
		condition = 1;
	}
	else
		printf("输入三边错误,请重新输入!\n");
	}

	return 0;
}

3、打印1-100的奇数

#include <stdio.h>
int main()
{
	int i = 1;
	for (i = 1; i < 100; i++)
		if (i % 2 == 1)
			printf("%d ", i);
	return 0;
}

4、求n的阶乘(1×2×3...×n)

#include <stdio.h>
int main()
{
	int n = 0, i = 1, result = 1;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		result *= i;
		if(i<n)
		printf("%d*", i);
	}
	printf("%d=%d", n, result);
	return 0;
}

5、求n的阶乘之和(输入数字n,求1!+2!..+n!)

#include <stdio.h>
int main()
{
	int n = 0, i = 1, res = 1, result = 0;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		res *= i;
		result += res;
		if(i<n)
		printf("%d!+", i);
	}
	printf("%d!=%d", n, result);
	return 0;
}

6、在一个有序数组中使用折半查找

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int left, mid, right, sz;
	int n , i = 0;
	int con = 1;
	printf("请输入要查找的数字:");
	scanf("%d", &n);

	sz = sizeof(arr) / sizeof(arr[0]); 
	left = 0, mid = (sz - 1) / 2, right = sz - 1;

	for (i = 0; i < sz - 1; i++)
	{
		if (n < arr[mid])
		{
			right = mid;
			mid = (mid + left) / 2;
		}
		else if (n > arr[mid])
		{
			left = mid;
			mid = (mid + right) / 2 + 1;
		}
		else if (n == arr[mid])
		{
			printf("找到了!");
			con = 0;
			break;
		}
	}
	if (con)
		printf("没找到。");
	return 0;
}

7、找出两个数组中相同的数字并输出

int main()
{
	int arr1[] = { 1,9,5,3,2 };
	int arr2[] = { 6,3,5,9,4,11 };
	int sz1= sizeof(arr1) / sizeof(arr1[0]);
	int sz2= sizeof(arr2) / sizeof(arr2[0]);
	for (int i = 0; i < sz1 - 1; i++)
	{
		for (int j = 0; j < sz2 - 1; j++)
		{
			if (arr1[i] == arr2[j])
				printf("%d ", arr1[i]);
		}
	}
	return 0;
}

8、输入100-999内的整数,反序显示,如输入123,输出321

int main()
{
	int num = 0;
	scanf("%d", &num);
	int a, b, c;
	a = num / 100;
	b = num / 10 % 10;
	c = num % 10;
	printf("%d%d%d", c, b, a);
	return 0;
}

9、输入任意一个整数,逐个输出它的每一位。(递归)

void way(int num)
{
	if (num > 9)
		way(num / 10);
	printf("%d ", num % 10);
}

int main()
{
	int num = 0;
	scanf("%d", &num);
	way(num);
	return 0;
}

10、输入一个数,得到这个数的每个位数的数之和。例如1234,得到1+2+3+4,为10

int way(int num)
{
	if (num > 9)
		return num % 10 + way(num / 10);
	else
		return num;
}

int main()
{
	int num = 0;
	scanf("%d", &num);
	printf("%d", way(num));
	return 0;
}

11、输入一个字符串,判断它是否为回文。所谓回文是指字符串正序和逆序是一样的,如“abcdcba”就是回文。

int main()
{
	char str[] = "aabbccbbaa";
	int sz = sizeof(str) - 1;
	int j = sz - 1;
	printf("%d\n", sz);
	int con = 0;
	for (int i = 0; i < sz; i++)
	{
		if (str[i] == str[j])
			j--;
		else
			con = 1;
	}
	if (con)
		printf("不是回文。");
	else
		printf("是回文。");
	
	return 0;
}

11、输入两个自然数,输出它们的最大公约数和最小公倍数

最小公倍数=m*n/最大公约数

int main()
{
	int m, n;
	scanf("%d %d", &m, &n);
	int zdgy, zxgb;
	int k = m < n ? m : n;
	for (zdgy=k; zdgy > 0; zdgy--)
	{
		if (m % zdgy == 0 && n % zdgy == 0)
			break;
	}
	zxgb = m * n / zdgy;

	printf("最小公倍数是:%d,最大公约数是:%d", zxgb, zdgy);
	
	return 0;
}

12、输入一组成绩,除去最高分,除去最低分,求平均分

#define N 6
int main()
{
	int max = 0, min = 100;
	int num, sum = 0, ave;
	for (int i = 0; i < N; i++)
	{
		printf("请输入第%d个成绩:", i + 1);
		scanf("%d", &num);
		if (num > max)
			max = num;
		if (num < min)
			min = num;
		sum += num;
	}
	ave = (sum - max - min) / (N - 2);
	printf("去除一个最高分%d分,去除一个最低分%d分,平均分为%d", max, min, ave);
	return 0;
}

13、判断素数:对于一个整数k,如果k不能被2到根号k之间的所有整数除尽,则k是素数

#include <math.h>
int main()
{
	int k;
	int con = 0;
	scanf("%d", &k);

	for (int i = 2; i < sqrt(k); i++)
	{
		if (k % i == 0)
			con = 1;
	}
	if (con)
		printf("%d不是素数", k);
	else
		printf("%d是素数", k);
	return 0;
}

14、输入数组,倒序输出

#define N 10
int main()
{
	int arr[N];
	for (int i = 0; i < N; i++)
		scanf("%d", &arr[i]);
	for (int i = N - 1; i >= 0; i--)
		printf("%d ", arr[i]);
	return 0;
}

15、打印Fibonacci数列1 1 2 3 5 8 13 ...,每五个数换一行

#define N 20
int main()
{
	int arr[N];
	arr[0] = 1, arr[1] = 1;
	for (int i = 2; i < N; i++)
		arr[i] = arr[i - 1] + arr[i - 2];
	for (int i = 0; i < N; i++)
	{
		printf("%d\t", arr[i]);
		if (arr[i] % 5 == 0)
			printf("\n");
	}
	return 0;
}

16、冒泡排序:相邻两个数比大小排序

#define N 10
int main()
{
	int arr[N];
	int i = 0, j = 0;
	int tmp;
	printf("请输入%d个数:",N);
	for (i = 0; i < N; i++)
		scanf("%d", &arr[i]);

	for(i = 0;i<N;i++)
		for(j = 0;j<N-1-i;j++)
			if (arr[j] > arr[j+1])
			{
				tmp = arr[j];
				arr[j] = arr[j+1];
				arr[j+1] = tmp;
			}

	for (i = 0; i < N; i++)
		printf("%d ", arr[i]);
	return 0;
}

17、选择排序

18、插入排序

  • 4
    点赞
  • 59
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值