C语言 异或脚本
自己写了个异或的脚本,但是运行起来有一点问题,想请各位帮忙看看
1、程序运行起来,第一次循环内在scanf A[i]的时候需要输入了第一个数字回车之后还需要输入第二个数字
2、第一次输入的两个数字后,不论第二次输入的数字是多少,输出的都是第一次输入的第二个数据的异或的值
#include<stdio.h>
int main()
{
int A[2],B[2];
int x,i;
printf("请输入异或加密数字x:");
scanf("%d",&x);
for(i=0;i<=1;i++)
{
printf("请输入要逆异或的10进制数:");
scanf("%d ",&A[i]);
B[i]=A[i]^x;
printf("逆异或后的结果为: %d \n请再输入下一个数",B[i]);
}
return 0;
}

12行%d后面空格删了
把空格删了
【以下回答由 GPT 生成】
问题的原因是在脚本中循环中的scanf语句的使用不当。
解决方案如下:
#include <stdio.h>
int main()
{
int A[2], B[2];
int x, i;
printf("请输入异或加密数字x:");
scanf("%d", &x);
getchar(); // 用来处理scanf后的回车符
for (i = 0; i <= 1; i++)
{
printf("请输入要逆异或的十进制数:");
scanf("%d", &A[i]);
getchar(); // 用来处理scanf后的回车符
B[i] = A[i] ^ x;
printf("逆异或后的结果为:%d\n请再输入下一个数:", B[i]);
}
return 0;
}
对于问题1,我在每次调用scanf之后添加一个getchar()语句来处理回车符。因为在第一个scanf之后,输入了一个数字,按回车后,回车符会被留在输入缓冲中,这样在第二个scanf中就会被读取到,导致不按照预期输入两个数。通过添加getchar()语句可以将回车符从缓冲中取出。
对于问题2,我修改了第二个scanf后的getchar()语句,同样是为了处理回车符。这样,在第二次循环中正确输入数字后,不会再读取到回车符,程序运行结果就符合预期了。
修改后的代码可以正常运行:
c 请输入异或加密数字x:3 请输入要逆异或的十进制数:5 逆异或后的结果为:6 请再输入下一个数:7 请输入要逆异或的十进制数:4 逆异或后的结果为:7 请再输入下一个数:
【相关推荐】