C语言---数组及常用算法的练习题

1.动态地从键盘录入信息并赋值

#include <stdio.h>
 #include <stdlib.h>
 #define N 5

 int main()
 {
     //动态录入
     double score[N];
     int i;  //循环变量
     //使用循环操作数组时,要注意:一个循环尽量只做一件事
     for(i=0;i<N;i++)
     {
         printf("请输入第%d位同学的成绩:",i+1);
         scanf("%lf",&score[i]);
     }
     //下面的循环用来打印数组元素
     for(i=0;i<N;i++)
     {
         printf("第%d位同学的成绩是:%.2lf\n",i+1,score[i]);
     }
     return 0;
 }

2.有一个数列:8,4,2,1,23,344,12。请循环输出数列的值;求数列中所有数值的和及平均值;猜数游戏,即从键盘中任意输入一个数据,判断数列中是否包含此数。

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int i; //循环变量
   int sum=0;
   int searchNum;    //要查找的数字
   double avg;
   //定义数组,并初始化
   int nums[]={8,4,2,1,23,344,12};
   //循环输出
   printf("输出数组元素:\n");
   for(i=0;i<7;i++)
   {
       printf("%d\t",nums[i]);
   }
   printf("\n*****************************\n");
   //求和及平均值
   for(i=0;i<7;i++)
   {
       sum +=nums[i];  //经典累加
   }
   avg=sum/7.0;
   printf("和是%d,平均值为%lf",sum,avg);
   printf("\n*****************************\n");
   //查找数字
   printf("请输入要查找的数字:");
   scanf("%d",&searchNum);
   for(i=0;i<7;i++)
   {
      //一个一个元素进行对比
      if(searchNum==nums[i])
      {
          printf("找到了相同的元素!\n");
          break;
      }
   }
   //结束循环后,我们如何判断是否找到了呢?
   //通过观察,循环正常退出时,i的值应该为7
   if(i==7){
    printf("没有找到合适的数字!");
   }
    return 0;
}

3.循环录入5个整型数字,进行降序排列后输出结果

#include <stdio.h>
#include <stdlib.h>
#define N 5  //宏定义,并不是必须的

int main()
{
    int i,j;  //循环变量
    int temp;  //用来交换的临时变量
    int nums[N]={16,25,9,90,23};
    //外层循环控制轮数
    for(i=0;i<N-1;i++)
    {
        //内层循环控制每轮的比较次数
        for(j=0;j<N-i-1;j++)
        {
            //如果当前值小于后面一个值,就交换
            if(nums[j]<nums[j+1])
            {
            temp=nums[j];
            nums[j]=nums[j+1];
            nums[j+1]=temp;
            }
        }
    }
    printf("排序后的结果是:\n");
    for(i=0;i<N;i++)
    {
        printf("%d\t",nums[i]);
    }
    return 0;
}

4.根据要求操作排行榜战力榜:战力值从大到小排列;删除战斗力42322;插入战斗力41000并保持降序

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int count=5; //表示数组元素的个数
    double powers[5]={42322,45771,40907,41234,40767};
    double deletePower;   //用户要删除的战力值
    int deleteIndex = -1;   //要删除战力值的下标,给一个不可能的值,方便判断
    int i;             //循环变量
    double insertPower;   //新插入的战力值
    printf("请输入要删除的战力值:");
    scanf("%lf",&deletePower);
    for(i=0;i<count;i++)
    {
        if(deletePower == powers[i])
        {
            //记录下当前的下标
            deleteIndex=i;
            break;  //找到了要删除的战力值,直接跳出循环,提升效率
        }
    }
    //根据判断(是否找到),执行后续的操作
    if(-1 == deleteIndex)
    {
        printf("没有找到要删除的战力值\n");
    }else
    {
        //从下标开始,后面一个覆盖前面一个数字
        for(i = deleteIndex;i<count-1;i++)
        {
            powers[i]=powers[i+1];
        }
        //删除后,一定记得数组的总长度-1
        count--;
    }
    printf("删除后的结果为:\n");
    for(i=0;i<count;i++)
    {
        printf("%.2lf\t",powers[i]);
    }
    //删除之后进行插入
    printf("\n请输入新的战力值:");
    scanf("%lf",&insertPower);
    powers[count]=insertPower;
    //插入操作完毕后,记得总长度加1
    count++;
    printf("插入后的结果为:\n");
    for(i=0;i<count;i++)
    {
        printf("%.2lf\t",powers[i]);
    }
    return 0;
}

5.使用控制台编写一个小游戏分别实现以下功能:新增数据;修改数据;查询数据;数据排序。

  • 15
    点赞
  • 88
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值