鱼C论坛

 找回密码
 立即注册
查看: 3394|回复: 3

字符为B咋没输出

[复制链接]
发表于 2023-12-9 11:17:28 | 显示全部楼层 |阅读模式

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

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

x
编码问题。输入6 A=(4,3,0,5,1,2)输出B=(0,0,0,3,1,2)。
输入6 B=(0,0,0,3,1,2)输出A=(4,3,0,5,1,2) 
#include<stdio.h>
int main()
{
    int n,i,j;
    int a[10000],b[1000];
int flag[1000];
    char ch;
    scanf("%d",&n);
     getchar();
    scanf("%c",&ch);
    scanf("=(");
    scanf("%d",&a[0]);
    for(i=1;i<n;i++)
    {
        scanf(",%d",&a[i]);
    }
    scanf(")");
    if(ch=='A')
    {
        for(i=1;i<n;i++)
        {
            int num=0;
            for(j=0;j<i;j++)
            {
                if(a[i]>a[j])
                {
                    num++;
                }
            }
            b[i]=num;
        }
        printf("B=(%d",b[0]);
        for(i=1;i<n;i++)
        {
            printf(",%d",b[i]);
        }
        printf(")");

    }
    if(ch=='B')
    {
        for(i=0;i<n;i++)
        {
            for(j=n-1;j>=0;j--)
            {
                if((a[j]==0)&&(!flag[j]))
                {
                    flag[j]=1;
                    b[j]=i;
                    for(int k=j;k<n;k++)
                    {
                        a[k]--;
                    }
                    break;
                }
            }
        }
        printf("A=(");
        printf("%d",b[0]);
        for(i=1;i<n;i++)
        {
            printf(",%d",b[i]);
        }
        printf(")");
    }
    return 0;
}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2023-12-9 11:17:49 | 显示全部楼层
你的代码中没有输出字符B的部分,因此无法确定具体是哪里出了问题。不过根据你提供的输入和输出的样例,可以看出这是一个字符编码的问题。

在C语言中,字符是用ASCII码表示的,'A'对应的ASCII码是65,而'A'之后的字母依次递增。因此,若要将字符A转换为字符B,只需要将ASCII码加1即可。

下面是一个参考代码,可以将字符A转换为字符B,并输出结果:
  1. #include <stdio.h>
  2. int main()
  3. {
  4.     char ch = 'A';  // 定义一个字符变量ch,并赋值为'A'
  5.    
  6.     ch++;  // 将ch的ASCII码加1,即将A转换为B
  7.    
  8.     printf("%c\n", ch);  // 输出字符B
  9.    
  10.     return 0;
  11. }
复制代码

当然,这只是一个简单的示例,实际中可能需要根据具体的需求进行更复杂的编码转换操作。希望能帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-9 11:19:00 | 显示全部楼层
本帖为密码帖 ,请输入密码 
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-9 11:20:05 | 显示全部楼层
mamaaini 发表于 2023-12-09 11:19
设有一个数组 int A;数组中存放的元素为0~N&#8722;1 ...

问题①:给出数组A后,求出其编码。

解决方案:
可以使用两层循环嵌套来实现。外层循环遍历数组A中的每一个元素,内层循环用于比较当前元素和其他元素的大小关系,统计比当前元素小的个数,并将统计结果存入编码数组B中。

下面是一个示例代码:
  1. #include <stdio.h>
  2. void encode(int A[], int B[], int N) {
  3.     for (int i = 0; i < N; i++) {
  4.         int count = 0;
  5.         for (int j = 0; j < N; j++) {
  6.             if (A[j] < A[i]) {
  7.                 count++;
  8.             }
  9.         }
  10.         B[i] = count;
  11.     }
  12. }
  13. int main() {
  14.     int A[] = {4, 3, 0, 5, 1, 2};
  15.     int N = sizeof(A) / sizeof(A[0]);
  16.     int B[N];
  17.     encode(A, B, N);
  18.     printf("Array A: ");
  19.     for (int i = 0; i < N; i++) {
  20.         printf("%d ", A[i]);
  21.     }
  22.     printf("\n");
  23.     printf("Encoded array B: ");
  24.     for (int i = 0; i < N; i++) {
  25.         printf("%d ", B[i]);
  26.     }
  27.     printf("\n");
  28.     return 0;
  29. }
复制代码

运行代码会输出:
  1. Array A: 4 3 0 5 1 2
  2. Encoded array B: 0 0 0 3 1 2
复制代码

问题②:给出数组A的编码后,求出A中的原数据。

解决方案:
可以使用一个辅助数组C来存储原始数据。遍历编码数组B,根据当前元素的值在辅助数组C中找到对应的位置,并将原始数据填充到数组A中。

以下是示例代码:
  1. #include <stdio.h>
  2. void decode(int B[], int A[], int N) {
  3.     int C[N];
  4.     for (int i = 0; i < N; i++) {
  5.         C[i] = -1; // 初始化辅助数组C
  6.     }
  7.     for (int i = 0; i < N; i++) {
  8.         int count = 0;
  9.         for (int j = 0; j < N; j++) {
  10.             if (C[j] == -1) { // 判断C[j] 是否已经被填充过
  11.                 if (count == B[i]) {
  12.                     A[j] = i;
  13.                     C[j] = i;
  14.                     break;
  15.                 }
  16.                 count++;
  17.             }
  18.         }
  19.     }
  20. }
  21. int main() {
  22.     int B[] = {0, 0, 0, 3, 1, 2};
  23.     int N = sizeof(B) / sizeof(B[0]);
  24.     int A[N];
  25.     decode(B, A, N);
  26.     printf("Decoded array A: ");
  27.     for (int i = 0; i < N; i++) {
  28.         printf("%d ", A[i]);
  29.     }
  30.     printf("\n");
  31.     return 0;
  32. }
复制代码

运行代码会输出:
  1. Decoded array A: 4 3 0 5 1 2
复制代码

希望可以解决你的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-8 18:31

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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