C语言刷题训练DAY.12

发布于:2023-08-24 ⋅ 阅读:(90) ⋅ 点赞:(0)

1.统计成绩

 解题思路:

这里我们设置两个变量记录最大值和最小值,再用一个sum统计分数总和即可。

解题代码:

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

	double arr[100] = { 0 };

	int i = 0;
	//最高分
	double max = 0;
	//最低分
	double min = 100.0;
	//总分
	double sum = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%lf", &arr[i]);
		sum += arr[i];
	}
	//最高分判断
	for (i = 0; i < n; i++)
	{
		if (arr[i] > max)
			max = arr[i];
		if (arr[i] < min)
			min = arr[i];
	}
	printf("%.2lf %.2lf %.2lf", max, min, sum / n);
	return 0;
}

2.密码验证

 解题思路:

这里我们输入两个字符串,在使用库函数strcmp比较即可。

解题代码:

#include<stdio.h>
#include<string.h>
int main()
{
	char arr1[100] = { 0 };
	scanf("%s", &arr1);
	char arr2[100] = { 0 };
	scanf("%s", &arr2);

	if (strcmp(arr1, arr2) == 0)
		printf("same");
	else
		printf("different");
	return 0;
}


3.矩阵计算

 解题思路:

这里使用一个二维数组,输入完一判断即可。

解题代码:

#include<stdio.h>
int main()
{
	int n = 0;
	int m = 0;
	scanf("%d %d", &n, &m);
	int arr[10][10] = { 0 };
	int i = 0;
	int sum = 0;
	for (i = 0; i < n; i++)
	{
		int j = 0;
		for (j = 0; j < m; j++)
		{
			scanf("%d", &arr[i][j]);
			if (arr[i][j] > 0)
			{
				sum += arr[i][j];
			}

		}
	}
	printf("%d", sum);
	return 0;
}


4.逆序输出

 解题思路:

这里只需要逆序输出,不需要关心大小,我们先把数据存到一个数组里,再倒着拿出来即可。

解题代码:

#include<stdio.h>
int main()
{
	int arr[10] = { 0 };
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		scanf("%d", &arr[i]);
	}
	for (i = 9; i >= 0; i--)
	{
		printf("%d ", arr[i]);
	}
	return 0;
}


5.统计数据正负个数

解题思路:

我们先把数据存储到数组里面,再判断,用计数器计数。

解题代码:

#include<stdio.h>
int main()
{
	int arr[10] = { 0 };
	int i = 0;
	//统计正数
	int pos = 0;
	//统计负数
	int neg = 0;
	for (i = 0; i < 10;i++)
	{
		scanf("%d", &arr[i]);
		if (arr[i] > 0)
			pos++;
		else
			neg++;
	}
	printf("positive:%d\nnegative:%d\n", pos, neg);
	return 0;
}


6.N个数之和

 解题思路:

我们只需要把数据累计加起来就行。

解题代码:

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

7.最高分与最低分之差

解题思路之冒泡排序的方法:

我们输入数据到数组里面后,使用冒泡排序让他从小大大排序,再用数组最后一个数据减去第一个数据即可。

解题代码之冒泡排序的方法: 

#include<stdio.h>

int main()
{
	int n = 0;
	scanf("%d", &n);
	int arr[100] = { 0 };
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}
	//从小到大排序
	for (i = 0; i < n - 1; i++)
	{
		int j = 0;
		for (j = 0; j < n-i-1; j++)
		{
			if (arr[j] > arr[j + 1])
			{
				int tmp = arr[j];
				arr[j] = arr[j + 1];
				arr[j + 1] = tmp;
			}
		}
	}
	printf("%d", arr[n - 1] - arr[0]);
	return  0;
}

解题思路之对比法:

我们先把数据存到数组里面,再定义一个最大值和最小值,替换掉,等循环结束,里面就是最大值和最小值。

解题代码之对比法:

#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int max = 0;
	int min = 100;
	int arr[1000] = { 0 };
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &arr[i]);
	}

	for (i = 0; i < n; i++)
	{
		if (arr[i] > max)
			max = arr[i];
		if(arr[i]<min)
			min = arr[i];
	}
	printf("%d", max - min);
	return 0;
}



//普通循环法




#include<stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int i = 0;
	int ret = 0;
	//最大数
	int D = 0;
	//最小数
	int X = 100;
	for (i = 0; i < n; i++)
	{
		scanf("%d", &ret);
		if (ret > D)
			D = ret;
	    if(ret<X)
			X = ret;
	}
	printf("%d", D - X);
	return 0;
}

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到