鱼C论坛

 找回密码
 立即注册
查看: 1447|回复: 8

[已解决]数组查找及替换(作业题救救孩子)

[复制链接]
发表于 2020-11-18 12:37:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
Description
给定某整数数组和某一整数b。要求删除数组中可以被b整除的所有元素,同时将该数组各元素按从小到大排序。如果数组元素数值在A到Z的ASCII之间,替换为对应字母。


Input

第一行为数组元素个数 n 和整数 b (1≤n,b≤100)

第二行为数组各个元素ai (1≤ai≤100)


Output

输出仅一行,每个输出数字或字符之后均有空格。


Sample Input 1

6 2
65 1 5 89 7 9
Sample Output 1

1 5 7 9 A Y
最佳答案
2020-11-18 13:28:37
  1. #include"stdio.h"
  2. int main(void)
  3. {
  4.     int n,b,i,j,temp;
  5.     scanf("%d%d",&n,&b);//输入第一行,n和b
  6.     int a[n],m=0;
  7.     for(i=0;i<n;i++)//输入n个数,并把不能被b整除的放入数组a中
  8.     {
  9.         scanf("%d",&temp);
  10.         if (temp%b)
  11.             a[m++]=temp;
  12.     }
  13.     for (i=0;i<m;i++)//冒泡排序
  14.     {
  15.         for (j=0;j<m-1;j++)
  16.         {
  17.             if (a[j]>a[j+1])
  18.             {
  19.                 temp=a[j];
  20.                 a[j]=a[j+1];
  21.                 a[j+1]=temp;
  22.             }
  23.         }
  24.     }
  25.     for(i=0;i<m;i++)//输出
  26.     {
  27.         if(a[i]>=65&&a[i]<=90)//若是大写字母,就以%c输出
  28.             printf("%c ",a[i]);
  29.         else       //否则输出该数字
  30.             printf("%d ",a[i]);
  31.     }
  32.     return 0;
  33. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-18 13:20:45 | 显示全部楼层
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. int main()
  4. {
  5.         int n, b;
  6.         scanf_s("%d %d", &n ,&b);
  7.         int* I_list = (int*)malloc(n * sizeof(int));
  8.         int* I_list2 = (int*)malloc(n * sizeof(int));
  9.         int k=0;
  10.         for (int i = 0;i < n;i++)
  11.         {
  12.                 scanf_s("%d", &I_list[i]);
  13.                 if (I_list[i] % b != 0)
  14.                 {
  15.                         I_list2[k++] = I_list[i];
  16.                 }
  17.         }

  18.        
  19.         for (int j = 0; j < k - 1; j++)
  20.         {
  21.                 for (int i = 0; i < k - 1 - j; i++)
  22.                         if (I_list2[i] > I_list2[i + 1])
  23.                         {
  24.                         int        temp = I_list2[i];
  25.                         I_list2[i] = I_list2[i + 1];
  26.                         I_list2[i + 1] = temp;
  27.                         }
  28.         }

  29.         for (int i = 0;i < k;i++)
  30.         {
  31.                 if (I_list2[i] >= 'A' && I_list2[i] <= 'Z')
  32.                 {
  33.                         printf("%c", I_list2[i]);
  34.                 }else
  35.                 printf("%d", I_list2[i]);
  36.                 if (i != k - 1)
  37.                         printf(" ");
  38.         }
  39. }
  40. /*
  41. 6 2
  42. 65 1 5 89 7 9
  43. */
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-18 13:28:37 | 显示全部楼层    本楼为最佳答案   
  1. #include"stdio.h"
  2. int main(void)
  3. {
  4.     int n,b,i,j,temp;
  5.     scanf("%d%d",&n,&b);//输入第一行,n和b
  6.     int a[n],m=0;
  7.     for(i=0;i<n;i++)//输入n个数,并把不能被b整除的放入数组a中
  8.     {
  9.         scanf("%d",&temp);
  10.         if (temp%b)
  11.             a[m++]=temp;
  12.     }
  13.     for (i=0;i<m;i++)//冒泡排序
  14.     {
  15.         for (j=0;j<m-1;j++)
  16.         {
  17.             if (a[j]>a[j+1])
  18.             {
  19.                 temp=a[j];
  20.                 a[j]=a[j+1];
  21.                 a[j+1]=temp;
  22.             }
  23.         }
  24.     }
  25.     for(i=0;i<m;i++)//输出
  26.     {
  27.         if(a[i]>=65&&a[i]<=90)//若是大写字母,就以%c输出
  28.             printf("%c ",a[i]);
  29.         else       //否则输出该数字
  30.             printf("%d ",a[i]);
  31.     }
  32.     return 0;
  33. }
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-18 22:45:54 | 显示全部楼层

可以写下注释吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-18 22:46:29 | 显示全部楼层

我大概懂了...但是数字和字母是怎么对应的。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-18 22:48:20 | 显示全部楼层

直接%c他就自动对应了吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-18 23:07:14 From FishC Mobile | 显示全部楼层
姜姜酱酱 发表于 2020-11-18 22:48
直接%c他就自动对应了吗

对,这里语言自动做了类型转换
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-18 23:36:21 | 显示全部楼层
lovedai 发表于 2020-11-18 23:07
对,这里语言自动做了类型转换

okok
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-19 09:42:37 | 显示全部楼层
姜姜酱酱 发表于 2020-11-18 22:46
我大概懂了...但是数字和字母是怎么对应的。。

数字和字母其实本质是一样的,字母的ASCII码就是数字,所以数字以%c输出的时候就是ASCII码对应的字符,例如:数字48就是字符'0',数字65就是字符'A',数字97就是字符'a'
问题解决了就评个最佳结题吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 11:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表