我使用geany编译我的代码,没有发现错误。 但是当我运行 .exe 文件时,程序停止工作,而且我不是一个好的程序员,这是学校的工作。
我的程序包括读取 2 个单词,在这个单词中,它将计算每个单词有多少个字母,然后将单词 A 中的字母数除以单词 B 中的字母数。
这是我的代码
#include <stdio.h>
int main(int argc, char *argv[])
{
int i, j;
float n;
printf ("Insert first word:\n");
for(i=0; argv[1][i] != '\0'; i++);
printf ("Insert second word:\n");
for(j=0; argv[2][j] != '\0'; j++);
n=i/j;
printf("%.4f", n);
return 0;
}
最佳答案
在这一行
n = i/j;
您正在执行整数除法。例如,假设 i
为 3,j
为 5,那么您执行 3/5
,它等于 0
。
但我认为您正在寻求执行 3.0/5.0
并希望得到答案 0.6
。所以需要进行浮点除法。您可以通过将其中一个操作数强制转换为 float 来强制执行此操作。
n = (float)i/j;
<小时/>
在问题中,您写的是 Int
而不是 int
。我认为这是提问时的转录错误。但也许你真正的代码看起来像这样。在这种情况下,您需要将其更改为 int
才能编译。
您遇到的另一个可能的问题是程序期望在命令行上传递参数。您是否向程序传递了两个参数?换句话说,您需要像这样执行您的程序:
program.exe firstword secondword
如果您没有传递参数,那么在尝试访问 argv[]
中不存在的参数时,您将遇到运行时错误。至少您应该向程序添加一个检查以确保argc==3
。
如果您想从 stdin
读取输入,而不是传递命令行参数,请使用 scanf
。
关于C - 运行我编译的 .exe 文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16374675/