#include
#include
int main()
{
int i,j;
scanf("%d",&i);
printf("%c",i*1.1);
j=100;
printf("%c",j);
if(i<=100000)
{
printf("%c",i*1.1);
}
}
我目前所掌握的知识是%c 和 %d 只要数据大小为0-127之间都可以互换,但如上图出现此种情况,我不知道是哪里错了,请各位指点
修改如下,见注释,供参考:
#include<stdio.h>
#include<math.h>
int main()
{
int i,j;
scanf("%d",&i);
printf("%c",(int)(i*1.1)); //修改
j=100;
printf("%c",j);
if(i<=100000)
{
printf("%c",(int)(i*1.1));//修改
}
return 0;
}
该回答引用ChatGPT
在C语言中,字符变量在内存中被存储为一个8位的整数,也就是一个ASCII码。当您使用%c输出一个整数时,printf会将这个整数转换为对应的ASCII码,并输出对应的字符。
在您的代码中,当您输入30后,程序会将30乘以1.1,得到33,然后printf使用%c将33转换为ASCII码,并输出相应的字符。ASCII码表中,33对应的字符是感叹号"!",因此程序输出了一个感叹号。而在下一个printf语句中,您输出的是一个整数100的ASCII码,也就是字符"d"的ASCII码。
所以,程序输出的结果是一个感叹号和一个字符"d"。
为了打印浮点数或乘法运算的结果,请使用%f格式化符号,例如:
float i;
scanf("%f", &i);
printf("%f", i * 1.1);
如果您想输出整数而不是字符,请使用%d格式化符号,例如:
int i;
scanf("%d", &i);
printf("%d", i * 11 / 10);
注意,除以10可以转化为乘以1.1,但是在进行乘法运算时,一定要确保使用浮点数类型或者强制类型转换,否则可能会导致计算错误。