除法运算
运算结果是正确的,为什么前面分号里的8%3运行之后只显示8而不是8%3
打印输出改为:printf("8%%3=%d", 8 % 3); 即可。
% 在printf 和 scanf 中是特殊字符 如果识别失败就无法显示 你可以用%c, '%' 的方式输出 百分号
不知道你这个问题是否已经解决, 如果还没有解决的话:第一个整体代码:
#include<stido.h>
void repace(char arr[], char arr1[])
{
int i;
int j = 0;
for (i = 0; arr[i] != '\0'; i++)
{
if (arr[i] == ' ')
{
arr1[j++] = '%';
arr1[j++] = '2';
arr1[j] = '0';
}
else
{
arr1[j] = arr[i];
}
j++;
}
}
int main()
{
char arr[20] = "abc defgx yz";
char arr1[30] = { 0 };
repace(arr, arr1);
printf("%s\n", arr1);
return 0;
}
第二个整体代码:
#include<stdio.h>
void repace(char str[])
{
int oldnum = 0; //老的数量
int newnum = 0; //新的数量
int old = 0; //老的最后一个字符
int new = 0; //新的最后一个字符
int kong = 0; //空格的数量
while (str[oldnum] != '\0')
{
if (str[oldnum] == ' ')
{
kong++;
}
oldnum++;
}
newnum = oldnum + kong * 2;
old = oldnum -1 ;
new = newnum - 1;
while (old >= 0)
{
if (str[old] == ' ')
{
str[new--] = '0';
str[new--] = '2';
str[new] = '%';
}
else
{
str[new] = str[old];
}
old--;
new--;
}
}
int main()
{
char arr[20] = "abc defgx yz" ;
repace(arr);
printf("%s\n", arr);
return 0;
}
根据问题描述,代码中的表达式8%3是除法运算,而不是取模运算。在除法运算中,结果应该是商,而不是余数。所以结果显示为8而不是2。
如果想要获取8除以3的余数,可以使用取模运算符%,而不是除法运算符/.
以下是示例代码:
result = 8 % 3
print(result)
输出结果为2。
所以根据参考资料中的段落0,可以知道,%d用于输出整型数据,而不是除法运算。