解决方案
#include <stdio.h>
#include <string.h>
int main()
{
char value[50];
char *end;
int sum = 0;
long conv;
while(conv != 0 )
{
printf("Enter a measurement and unit(Ex: 4' or 3\";0' or 0\" when done): ");
fgets(value, 50, stdin);
conv = strtol(value, &end, 10);
if(strstr(value, "\'") != NULL)
{
conv = strtol(value, &end, 10);
sum = sum + (conv*12);
}
else if(strstr(value, "\"") != NULL)
{
conv = strtol(value, &end, 10);
sum = sum + conv;
}
}
printf("Total: %d, %s\n", sum, "inches" );
return 0;
}
更新 新程序仍有问题..不确定从这里去哪里。它接受数字和引号,但它会一直将我输入的任何数字乘以 12,而它应该只在我输入单引号以指定英尺时才这样做。 UPDATE2 以下是编写 C 程序时应牢记的汇编函数:
void printStr(char *)
Arguments:
edi = address of null-terminated string to print
Returns:
Nothing
void printUInt(unsigned)
Arguments:
edi = Unsigned integer to print
Returns:
Nothing
char getchar()
Arguments:
None
Returns:
eax = the next character
uinsigned readUInt()
Arguments:
None
Returns:
eax = an unsigned int read from stdin.
(eax is 0 on error)
我必须编写一个 C 程序,提示用户输入测量值(数字)和单位(' 或 ",代表英尺或英寸),然后在用户输入长度 ' 后打印出以英寸为单位的总长度0' 作为标记值。
这个程序只需要作为我构建具有类似结构的汇编程序的一种方式。问题是,它必须围绕 4 个函数构建,这些函数将被调用以帮助执行某些操作。
所以我的 C 程序应该以类似的方式构建,并牢记这些功能。这是我拥有的:
这是我的程序:
更新:
int main()
{
char value[50];
char *end;
int sum = 0;
long conv;
while(conv != 0)
{
printf("Enter a measurement and unit: ");
fgets(value, 50, stdin);
conv = strtol(value, &end, 10);
if(value[1]='\'')
{
sum = sum + (conv*12);
}
if(value[1]='\"')
{
sum = sum + conv;
}
}
printf("Total: %d\n", sum);
return 0;
}
旧:
int main()
{
int sum = 0;
int value;
char symbol;
while(value != 1)
{
printf("Enter measurement and unit: ");
scanf("%d,%d", &value, &symbol);
if(symbol == "'")
{
sum = sum + value*12;
}
else if(symbol == ''' )
{
sum = sum + value;
}
sum = sum + value;
}
printf("Total: %d", sum);
return 0;
}
我希望我在这里有足够的信息供别人帮助我,即使我知道我们暂时缺少完整的功能。我知道 IA32 汇编转换不是我的主要问题,如果我遇到困难,我想我会把它留给另一个,但我希望更正这个高级语言程序会让我朝着正确的方向前进。提前致谢!
最佳答案
使用 %c
而不是 %d
获取字符。把这行改成这样。
if ( scanf("%d,%c", &value, &symbol) != 2 )
continue;
比较时你必须这样做,
if(symbol == '\"')
{
sum = sum + value*12;
}
else if(symbol == '\'' )
{
sum = sum + value;
}
之后的输出,
Enter measurement and unit: 2,"
Enter measurement and unit: 3,'
Enter measurement and unit: 1,"
Total: 45
关于c - 如何编写接受包含整数和标点符号的用户输入的 C 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29443359/