鱼C论坛

 找回密码
 立即注册
查看: 2370|回复: 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;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

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

下面是一个参考代码,可以将字符A转换为字符B,并输出结果:
#include <stdio.h>int main(){    char ch = 'A';  // 定义一个字符变量ch,并赋值为'A'        ch++;  // 将ch的ASCII码加1,即将A转换为B        printf("%c\n", ch);  // 输出字符B        return 0;}
当然,这只是一个简单的示例,实际中可能需要根据具体的需求进行更复杂的编码转换操作。希望能帮到你!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-12-9 11:19:00 | 显示全部楼层
本帖为密码帖 ,请输入密码 
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

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

下面是一个示例代码:
#include <stdio.h>void encode(int A[], int B[], int N) {    for (int i = 0; i < N; i++) {        int count = 0;        for (int j = 0; j < N; j++) {            if (A[j] < A[i]) {                count++;            }        }        B[i] = count;    }}int main() {    int A[] = {4, 3, 0, 5, 1, 2};    int N = sizeof(A) / sizeof(A[0]);    int B[N];    encode(A, B, N);    printf("Array A: ");    for (int i = 0; i < N; i++) {        printf("%d ", A[i]);    }    printf("\n");    printf("Encoded array B: ");    for (int i = 0; i < N; i++) {        printf("%d ", B[i]);    }    printf("\n");    return 0;}
运行代码会输出:
Array A: 4 3 0 5 1 2Encoded array B: 0 0 0 3 1 2
问题②:给出数组A的编码后,求出A中的原数据。

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

以下是示例代码:
#include <stdio.h>void decode(int B[], int A[], int N) {    int C[N];    for (int i = 0; i < N; i++) {        C[i] = -1; // 初始化辅助数组C    }    for (int i = 0; i < N; i++) {        int count = 0;        for (int j = 0; j < N; j++) {            if (C[j] == -1) { // 判断C[j] 是否已经被填充过                if (count == B[i]) {                    A[j] = i;                    C[j] = i;                    break;                }                count++;            }        }    }}int main() {    int B[] = {0, 0, 0, 3, 1, 2};    int N = sizeof(B) / sizeof(B[0]);    int A[N];    decode(B, A, N);    printf("Decoded array A: ");    for (int i = 0; i < N; i++) {        printf("%d ", A[i]);    }    printf("\n");    return 0;}
运行代码会输出:
Decoded array A: 4 3 0 5 1 2
希望可以解决你的问题!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-22 23:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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