我正在为同一个加密程序工作,对于那些看过我之前发帖的人。现在该程序将采用字母,它显示从ascii转换回字母,但这是一个问题。在我将任何计算添加到字母的值之前,它将打印正常。例如,如果我输入f,我得到102.但是,当我尝试计算时,比如将ascii值乘以选定的素数,值本身变得巨大! 这是代码:
#include<stdio.h>
int main(){
int x,y,z;
int encrypt_number[] = {7507,55529,77933,142867,392263};
printf("\tCaleb's encryption machine\n");
printf("Please enter a letter to be encrypted:\n");
scanf("%[a-z]s",&x);
printf("Enter your encryption key number between one and five\n");
scanf("%d",&y);
if (y == 1)
y = encrypt_number[0];
else if ( y == 2 )
y = encrypt_number[1];
else if ( y == 3 )
y = encrypt_number[2];
else if ( y == 4 )
y = encrypt_number[3];
else if ( y == 5 )
y = encrypt_number[4];
else
printf("not a valid option\n");
z = x*y;
printf("Your encrypted value is: %d\n",z);
printf("\tdiagnosis of encryption:\n");
printf("Letter was: %c\n",x);
printf("value in ascii was: %d\n");
}
在上面的例子中,f变为264241254!希望这只是一个简单的错误?
答案 0 :(得分:2)
在print
行
printf("value in ascii was: %d\n");
你只提供格式说明符%d
但不传递你想要的参数print.
答案 1 :(得分:1)
您正在使用%s
扫描(scanf("%[a-z]s",&x);
)单个char
,并将值存储在int
变量中。
您可能想要
char x;
scanf("%[a-z]c",&x);
此外,最后一个printf
语句缺少参数。