提问人:David feoerwg 提问时间:11/2/2022 最后编辑:Ken WhiteDavid feoerwg 更新时间:11/2/2022 访问量:96
列表之间的相等性以及列表中 char 到 int 的转换
equality between lists and conversion of char into int within a list
问:
// Igualdade entre listas --> Teste 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdbool.h>
#define BTT 10
void create_pirolito(int list[BTT]);
void create_retardado(int list[BTT]);
void compare_lists(int list1[BTT], int list2[BTT]);
void prints_both(int list1[BTT], int list2[BTT]);
void create_pirolito(int list[BTT])
{
for(int i=0; i<BTT; i++)
{
list[i]=rand()%10;
}
}
void create_retardado(int list[BTT])
{
for(int i=0; i<BTT; i++)
{
list[i]=rand()%20;
}
}
void prints_both(int list1[BTT], int list2[BTT])
{
int i=0;
int j=0;
for(int z=0; z<BTT; z++)
{
printf("(%2d %2d)\n", list1[i], list2[j]);
i++;
j++;
}
}
void compare_lists(int list1[BTT], int list2[BTT])
{
char x='X';
for(int i=0; i<BTT; i++)
{
for(int j=0; j<BTT; j++)
{
if(list1[i]==list2[j])
{
list1[i]==(int)(x);
}
}
printf("\n");
}
}
int main()
{
int pirolito[BTT];
int retardado[BTT];
create_pirolito(pirolito);
create_retardado(retardado);
compare_lists(pirolito, retardado);
prints_both(pirolito, retardado);
return 0;
}
我的目的是比较两个不同的列表,每当存在相等时,该索引中保存的数字就会被交换为字母“X”,这仅在 pirolito 列表中,但是当我编译时没有错误,只有很大的空格,然后按照两个列表的打印,但在各自的等式中没有字符“X”。
答:
1赞
Alex P
11/2/2022
#1
首先,数据类型只是一个单字节整数。ASCII 字符“X”由十进制 88 表示。它不是“一个字符”,只是对底层二进制值的不同解释(如果您不熟悉,可以考虑十进制)。char
在 中,当找到相等时,您只需在该位置为列表赋值 88。打印列表时,用作打印格式,这意味着该值打印为整数。如果使用 ,值 88 将打印为 ASCII 字符“X”,列表中的所有其他值将打印为 ASCII 字符(尽管不是您可能认为的那些)。compare_lists
%d
%c
如果不对列表中的允许值施加一些限制,就无法执行所需的操作,原因很简单,88 可以在调用之前存在于列表中,也可以在调用期间写入。compare_lists
如果您坚持使用当前的方法,则需要将列表的值限制为不包含某些选定的数字。例如,武断地说这不是列表中的合法值。然后,在 中,你写任何满足条件的地方,在你的 你需要检查是否等于 ,在这种情况下,你可以使用 ,否则使用你的旧语句-3
compare_lists
-3
prints_both
list1[i]
-3
printf("(X %2d)\n", list2[i])
printf
下一个:如何测试两个列表是否相等?
评论
compare_lists
printf("\n")
char x
int
'X'
int x = 'X';
'X'
int
char c = getchar()
getchar
'X'
int