1.求一维数组的最大值和最小值。
#include <stdio.h>
// 1.求一维数组的最大值和最小值。
int main()
{
// 数组初始化
int big[] = {1, 34, 21, 49, 51, 98, 42, 88};
// 初始化变量tem,设置为数组的第一个元素,用于存储最大值
int tem = big[0];
// 初始化变量tem1,设置为数组的第一个元素,用于存储最小值
int tem1 = big[0];
// 计算数组的长度,即数组总大小除以单个元素的大小
int let = sizeof(big) / sizeof(big[0]);
// 循环遍历数组的每一个元素
for (int i = 0; i < let; i++)
{
// 如果当前元素大于已知的最大值,更新最大值
if (big[i] > tem)
{
tem = big[i];
}
// 如果当前元素小于已知的最小值,更新最小值
if (big[i] < tem1)
{
tem1 = big[i];
}
}
// 打印输出最大值和最小值
printf("最大值是:%d\n 最小值是:%d", tem, tem1);
return 0;
}
遍历一维数组找到最大值和最小值。首先,初始化两个变量tem
和tem1
,分别用来存储最大值和最小值,将它们初始值设置为数组的第一个元素。然后,通过计算数组的长度,即数组总大小除以单个元素的大小,得到数组的长度。接下来,使用for
循环遍历数组的每一个元素,比较当前元素与已知的最大值和最小值,如果当前元素大于已知的最大值,则更新最大值;如果当前元素小于已知的最小值,则更新最小值。最后,打印输出最大值和最小值。
运行结果:
2.求一个数组中第二大的数。
#include <stdio.h>
// 求一个数组中第二大的数
int main() {
// 初始化一个数组
int arr[] = {1, 34, 21, 49, 51, 98, 42, 88};
// 计算数组的长度
int n = sizeof(arr) / sizeof(arr[0]);
// 初始化变量 tem 用来接收最大值
int tem = arr[0];
// 初始化变量 tem1 用来接收第二大值
int tem1 = arr[0];
// for循环遍历数组
for(int i = 1; i < n; i++) {
if(arr[i] > tem) {
tem1 = tem; // 如果当前元素tem是最大值,将当前元素tem赋值给tem1
tem = arr[i];
}
else if(arr[i] > tem1 && arr[i] < tem) {
tem1 = arr[i];
}
}
printf("%d\n", tem1); // 输出第二大的数
return 0;
}
通过遍历数组找到第二大的数。在遍历过程中,使用变量tem
来记录当前的最大值,使用变量tem1
来记录当前的第二大值。首先将数组的第一个元素赋值给tem
和tem1
,然后依次遍历数组,如果当前元素大于tem
,说明当前元素比最大值还要大,将tem1
赋值为tem
,并将当前元素赋值给tem
;如果当前元素大于tem1
且小于tem
,说明当前元素是第二大的值,将当前元素赋值给tem1
。最后输出tem1
即为第二大的数。
运行结果:
3.编写一个程序,要求用户输入5个整数,将它们存储在一个数组中,然后计算并输出这5个整数的平均值。
#include <stdio.h>
// 编写一个程序,要求用户输入5个整数,将它们存储在一个数组中,然后计算并输出这5个整数的平均值。
int main()
{
int arr[5]; // 定义一个数组
int sum = 0; // 用来存储和
float p = 0; //用来存储平均值
// 提示用户输入5个整数
printf("输入5个整数:");
int let = sizeof(arr) / sizeof(arr[0]); // 计算数组的长度
for (int i = 0; i < let; i++)
{
// 读取用户输入的整数,并存储到数组中
scanf("%d", &arr[i]);
// 求和
sum += arr[i];
// 计算平均值
p = (float)sum / let;
}
// 输出和和平均值
printf("相加的和为:%d\n", sum);
printf("平均数为:%f\n", p);
return 0;
}
该程序首先定义了一个包含5个元素的整型数组arr
用于存储用户输入的整数,定义了变量sum
用于存储数组中所有元素的和,定义了变量p
用于存储平均值。然后,通过printf
函数提示用户输入5个整数。接着,使用for
循环遍历5次,每次读取用户输入的整数,并将其存储到数组中。在循环中,将元素累加到sum
中,最后计算平均值并将结果存储到变量p
中。最后,使用printf
函数分别输出和和平均值。注意,在计算平均值时,需要将sum
转换为float
类型,以保证最终结果是浮点数类型。
运行结果为:
4.编写一个函数find_index,接受一个整型数组、数组的长度和一个整数作为参数,查找并返回该整数在数组中的索引位置。如果该整数不存在于数组中,则返回-1。在主函数中定义一个包含10个元素的数组,并调用find_index函数查找某个整数的索引位置并输出。
#include <stdio.h>
// 编写一个函数find_index,接受一个整型数组、数组的长度和一个整数作为参数,查找并返回该整数在数组中的索引位置。
// 如果该整数不存在于数组中,则返回-1。在主函数中定义一个包含10个元素的数组,并调用find_index函数查找某个整数的索引位置并输出。
// 定义函数find_index,接收一个整型数组、数组的长度和一个整数作为参数
int find_index(int arr[], int let, int b)
{
// 使用for循环遍历数组中的每一个元素
for (int i = 0; i < let; i++)
{
// 如果当前元素等于输入的整数b,返回当前索引位置i
if (arr[i] == b)
{
return i;
}
}
// 如果整数b不存在于数组中,返回-1
return -1;
}
int main()
{
// 定义一个包含10个元素的数组
int arr[] = {1, 34, 21, 49, 51, 98, 42, 88, 2, 3};
int let = sizeof(arr) / sizeof(arr[0]); // 计算数组长度
int b = 5; // 要查找的整数
int c = find_index(arr, let, b); // 调用find_index函数查找整数的索引位置
printf("%d\n", c); // 输出索引位置
return 0;
}
运行结果为:因为数组里面没有变量b的值(“5”)所以返回-1
5.编写一个程序,接受用户输入的一个字符串,然后统计字符串中数字字符的个数并输出
#include <stdio.h>
// 编写一个程序,接受用户输入的一个字符串,然后统计字符串中数字字符的个数并输出。
int main()
{
char arr[8]; // 定义一个字符数组
printf("请输入:"); // 提示用户输入字符串
scanf("%s", arr); // 接收用户输入的字符串
int z = 0; // 用于统计数字字符的个数
// 使用for循环遍历字符串的每一个字符
for (int i = 0; arr[i] != '\0'; i++)
{
// 如果当前字符是数字字符,将计数器z加1
if (arr[i] >= '0' && arr[i] <= '9')
{
z++;
}
}
printf("字符中有%d数字\n", z); // 打印输出数字字符的个数
return 0;
}
该程序接受用户输入的一个字符串,并使用for循环遍历字符串的每一个字符。如果当前字符是数字字符(ASCII码值介于'0'和'9'之间),则将计数器z加1。最后,使用printf
函数将数字字符的个数输出到屏幕上。
运行结果为:
6.定义一个结构体Person,包含人的姓名和年龄两个成员变量。编写程序,创建一个Person类型的结构体数组,包含3个人的信息,并输出每个人的姓名和年龄
#include <stdio.h>
#include <string.h>
// 定义结构体Person,表示一个人的信息
struct Person
{
char name[10]; // 姓名
int age; // 年龄
};
// 创建一个包含3个Person结构体的数组
struct Person person[3] = {
{"hab", 20},
{"faa", 6},
{"jake", 98}
};
int main()
{
// 使用for循环遍历person数组中的每个元素
for (int i = 0; i < 3; i++)
{
printf("姓名: %s, 年龄:%d\n", person[i].name, person[i].age);
}
return 0;
}
该程序定义了一个结构体Person
,包含了姓名和年龄两个成员。然后创建了一个包含3个Person
结构体的数组person
,并初始化了每个结构体的姓名和年龄。
接下来,使用for
循环遍历person
数组中的每个结构体,使用printf
函数输出每个人的姓名和年龄。
最后,程序返回0,表示执行成功。
运行结果为:
7.数组的排序 1,3,6,2,5 ==》1,2,3,5,6
#include <stdio.h>
int main()
{
int arr[5] = {1, 3, 6, 2, 5};
int len = sizeof(arr) / sizeof(arr[0]);
// 使用冒泡排序对数组进行升序排序
for (int i = 0; i < len - 1; i++)
{
for (int j = 0; j < len - 1 - i; j++)
{
if (arr[j] > arr[j + 1])
{
// 交换位置
int temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
// 输出排序后的数组
for (int i = 0; i < len; i++)
{
printf("%d ", arr[i]);
}
return 0;
}
该程序使用冒泡排序算法对数组进行升序排序。
首先定义了一个包含5个元素的整型数组arr
,然后计算数组的长度。
接下来使用两个嵌套的for
循环,外层循环控制比较的轮数,内层循环控制每一轮的比较次数。在每次比较时,如果当前元素大于下一个元素,则交换它们的位置。
完成排序后,使用另一个for
循环输出排序后的数组。
最后,程序返回0,表示执行成功。
运行结果: