- 键盘录入一组数列,利用冒泡排序将数据由大到小排序
#include <stdio.h>int main(int argc,char *argv[])
{int i,j,tmep;int arr[10];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]){tmep=arr[j];arr[j]=arr[j+1];arr[j+1]=tmep;}}}printf("冒泡排序后续数组\n");for(i=0;i<len;i++){printf("%-4d",arr[i]);}printf("\n");return 0;
}
2. 从键盘输入年、月、日,计算并输出该日是该年第几天
#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;
}
3. 键盘录入一组数列,求最大数、最小数、均值
#include <stdio.h>int main(int argc,char *argv[])
{int arr[10],i,sum=0,tmep,j;int len=sizeof(arr)/sizeof(arr[0]);for(i=0;i<len;i++){scanf("%d",&arr[i]);}for(i=0;i<len-1;i++){for(j=0;j<len-1-i;j++){if(arr[j]>arr[j+1]){tmep=arr[j];arr[j]=arr[j+1];arr[j+1]=tmep;}}}for(i=0;i<len;i++){sum+=arr[i];}printf("最大%d,最小%d,平均%lf\n",arr[9],arr[0],sum/10.0);return 0;
}
4. 从键盘录入一组数列,判断是否是回文,举例:12321,abba,121
#include <stdio.h>int isPalindrome(char arr[], int length) {int left = 0;int right = length - 1;while (left < right) {if (arr[left] != arr[right]) {return 0; // 不是回文}left++;right--;}return 1; // 是回文
}int main() {char arr[100]; // 假设输入字符串的最大长度为99(留一个位置给'\0')printf("请输入一个字符串(不含空格):\n");scanf("%99s", arr); // 读取最多99个字符的字符串,防止溢出// 计算字符串的实际长度(不使用strlen,因为题目要求不使用<string.h>)int length = 0;while (arr[length] != '\0') {length++;}// 判断是否是回文if (isPalindrome(arr, length)) {printf("输入的字符串是回文。\n");} else {printf("输入的字符串不是回文。\n");}return 0;
}
5. 用数组存储10个整型数,通过键盘输入一个数,找出该数在数组中的下标值
#include <stdio.h>int main(int argc, char *argv[])
{int arr[10]; // 定义一个一维数组来存储10个整型数int searchNum; // 定义变量来存储用户要查找的数int found = -1; // 定义变量来标记是否找到数,初始化为-1表示未找到// 输入10个整型数到数组中printf("请输入10个整型数:\n");for (int i = 0; i < 10; i++){scanf("%d", &arr[i]);}// 输入要查找的数printf("请输入要查找的数:\n");scanf("%d", &searchNum);// 查找该数在数组中的下标for (int i = 0; i < 10; i++){if (arr[i] == searchNum){found = i; // 找到数,记录下标break; // 退出循环,因为已经找到}}// 输出结果if (found != -1){printf("数 %d 在数组中的下标是 %d。\n", searchNum, found);}else{printf("数 %d 不在数组中。\n", searchNum);}return 0;
}
6. 通过键盘输入 10 个学员成绩,
1)输出不及格学员的成绩和下标。
2)求最高分的下标值
3)求最低成绩的下标值
4)求总成绩及平均成绩
#include <stdio.h>int main(int argc, char *argv[])
{int scores[10]; // 定义一维数组存储10个学员成绩int i;// 输入10个学员成绩printf("请输入10个学员的成绩:\n");for (i = 0; i < 10; i++){scanf("%d", &scores[i]);}// 1)输出不及格学员的成绩和下标(假设不及格分数为60以下)printf("不及格学员的成绩和下标:\n");for (i = 0; i < 10; i++){if (scores[i] < 60){printf("下标 %d,成绩 %d\n", i, scores[i]);}}// 2)求最高分的下标值,最低分下标值int maxIndex = 0;int minIndex = 0;for (i = 1; i < 10; i++){if (scores[i] > scores[maxIndex]){maxIndex = i;}if (scores[i] < scores[minIndex]){minIndex = i;}}printf("最高分的下标值是 %d,最高分是 %d\n", maxIndex, scores[maxIndex]);printf("最低成绩的下标值是 %d,最低成绩是 %d\n", minIndex, scores[minIndex]);// 4)求总成绩及平均成绩int totalScore = 0;for (i = 0; i < 10; i++){totalScore += scores[i];}float averageScore = totalScore / 10.0; // 注意要除以10.0以得到浮点数结果printf("总成绩是 %d,平均成绩是 %.2f\n", totalScore, averageScore);return 0;
}