C语言(一维数组练习)

发布于:2024-12-18 ⋅ 阅读:(80) ⋅ 点赞:(0)
  1. 键盘录入一组数列,利用冒泡排序将数据由大到小排序
#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;
}

在这里插入图片描述