练习题
第一题
键盘录入一组数列,利用冒泡排序将数据由大到小排序
代码
#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; // 找到目标数,将标志变量设置为1index = 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;
}