练习题
第一题
键盘录入一组数列,利用冒泡排序将数据由大到小排序
代码
#include <stdio.h>
int arr_home01()
{
int arr[10];
int i,j,temp;
printf("请输入10个测试整数:\n");
int len = sizeof(arr) / sizeof(arr[0]);
for(i = 0;i < len;i++)
{
scanf("%d",&arr[i]);
}
printf("\n");
for(i = 0;i < len - 1;i++)
{
for(j = 0;j < len - 1 - i;j++)
{
if (arr[j] < arr[j+1])
{
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
printf("冒泡排序遍历数组:\n");
for (i = 0; i < len; i++)
{
printf("%-4d",arr[i]);
}
printf("\n");
}
int main(int argc,char *argv)
{
arr_home01();
return 0;
}
运行结果
第二题
从键盘输入年、月、日,计算并输出该日是该年第几天
代码
include <stdio.h>
int main(int argc,char *argv[])
{
int year,month,day,sum,k;
int t[] = {31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入年、月、日:\n");
scanf("%d-%d-%d",&year,&month,&day);
if ((year % 4 == 0 && year %100 != 0) || year % 400 == 0)
{
t[1] = 29;
}
sum = day;
for(k = 0;k < month - 1;k++)
{
sum += t[k];
}
printf("%d月%d日是%d年的第%d天。\n",month,day,year,sum);
return 0;
}
运行结果
第三题
键盘录入一组数列,求最大数、最小数、均值
代码
#include <stdio.h>
int main(int argc, char *argv[])
{
int arr[10];
int i, n, max, min, average;
int sum = 0;
printf("请输入数列的长度:\n");
scanf("%d", &n);
if (n <= 0 || n > 5)
{
printf("输入的长度无效,请输入1~20的整数!\n");
return 1;
}
printf("请输入数列中的数:\n");
for (i = 0; i < n; i++)
{
printf("第%d个数:", i + 1);
scanf("%d", &arr[i]);
}
for (int i = 0; i < n; i++)
{
sum += arr[i];
if (arr[i] > max)
{
max = arr[i];
}
if (arr[i] < min)
{
min = arr[i];
}
}
average = sum / n;
printf("最大数:%d\n", max);
printf("最小数:%d\n", min);
printf("平均数:%d\n", average);
return 0;
}
运行结果
第四题
从键盘录入一组数列,判断是否是回文,举例:12321,abba,12
代码
#include <stdio.h>
int main()
{
int n; // 定义一个变量,表示数列的长度
int arr[100]; // 定义一个数组
int number = 1; // 用来判断输入的回文数是否正确
printf("请输入数列的长度:\n");
scanf("%d", &n);
if (n <= 0 || n > 100)
{
printf("输入的长度不合法,请输入1到100之间的整数。\n");
return 1;
}
printf("请输入数列的元素(以空格分隔):\n");
for (int i = 0; i < n; i++)
{
scanf("%d", &arr[i]);
}
for (int i = 0; i < n / 2; i++)
{
if (arr[i] != arr[n - 1 - i])
{
number = 0;
break;
}
}
if (number)
{
printf("该数列是回文。\n");
}
else
{
printf("该数列不是回文。\n");
}
return 0;
}
运行结果
第五题
用数组存储10个整型数,通过键盘输入一个数,找出该数在数组中的下标值;
代码
#include <stdio.h>
int main()
{
int arr[5]; // 声明一个包含10个整型数的一维数组
int number; // 声明用于存储用户输入要查找的数的变量
int found = 0; // 声明一个标志变量,用于标记是否找到目标数
int index = 0; // 声明一个变量用于存储找到的目标数的下标
printf("请输入5个整型数:\n");
for (int i = 0; i < 5; i++)
{
scanf("%d", &arr[i]);
}
// 提示用户输入要查找的数
printf("请输入要查找的数:\n");
scanf("%d", &number);
// 遍历数组,查找目标数
for (int i = 0; i < 5; i++)
{
if (arr[i] == number)
{
found = 1; // 找到目标数,将标志变量设置为1
index = i; // 记录目标数的下标
break; // 找到后退出循环
}
}
// 根据查找结果输出相应信息
if (found)
{
printf("数 %d 在数组中的下标是:%d\n", number, index);
}
else
{
printf("在数组中未找到数 %d\n", number);
}
return 0; // 程序正常结束
}
运行结果
第六题
通过键盘输入 10 个学员成绩, 1)输出不及格学员的成绩和下标。 2)求最高分的下标值 3)求最低成绩的下标值 4)求总成绩及平均成绩
代码
#include <stdio.h>
int main(int argc, char *argv[])
{
int arr[10];
int max = 0, min = 100, sum = 0;
int maxIndex = -1, minIndex = -1; // 初始化索引变量
float average;
int len = sizeof(arr) / sizeof(arr[0]);
printf("请输入10个学员的成绩\n");
for (int i = 0; i < len; i++)
{
scanf("%d", &arr[i]);
}
for (int i = 0; i < len; i++)
{
if (arr[i] < 60)
{
printf("不及格学员的成绩是:%d, 下标为:%d\n", arr[i], i);
}
if (arr[i] > max)
{
max = arr[i];
maxIndex = i;
}
if (arr[i] < min)
{
min = arr[i];
minIndex = i;
}
sum += arr[i];
}
average = sum / 10.0;
printf("最高分的下标是:%d\n最低分的下标是:%d\n总成绩是:%d\n平均成绩是:%.2f\n", maxIndex, minIndex, sum, average);
return 0;
}