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;
}