=
我需要编写代码,以便当用户输入提示金额时,系统会在其后面分配一个%符号。我已经在我的代码中包含了我要问的行是if语句之后的前两行。
谢谢!
答案 0 :(得分:0)
只需改变:
cin>>tip;cout<<"percent"<<endl;
为:
cin>>tip;cout<<'%'<<endl;
答案 1 :(得分:0)
输入数据时看到的输出是默认系统输入产生的输出。它通常直接回送输入的字符,包括使用输入时的换行符。
如果您确实需要在输入的同一行输出内容,则需要更改默认输入的工作方式。在UNIX系统上,您可以使用tcgetattr()
和tcsetattr()
执行此操作。我认为您需要将控制台设置设置为非规范且不响应。
这样做,你需要自己处理回声字符。也就是说,您需要编写输入的每个字符。您可以通过从std::cin
进行特征性阅读并根据std::cout
编写适当的字符来实现。您需要收集字符串中的字符以将其转换为值。
答案 2 :(得分:0)
你可能使用getch()或getche()(在Windows上)或linux上的类似implementation来破解它。 这段代码只描述了一个大致的想法:你捕获用户输入的符号,并使用\ r \ n特殊字符(回车的ASCII代码,阅读更多here)一次又一次地重写字符串。你甚至可以禁止非数字符号!
这种方法不是很好,因为你必须发明一个轮子而不是使用现有的解决方案,但它可能仍然可以用来解决你的问题。
#include <stdio.h>
#include <conio.h>
int main(void) {
// You'll certainly have to modify it =)
char c1, c2;
printf("Input: %%");
c1 = getch();
printf("\rInput: %c%%", c1);
c2 = getch();
printf("\rInput:%c%c%%", c1, c2);
}
答案 3 :(得分:-1)
void input(double &tip){
char A[10];
cin>>A;
int bd = 0,i = 0;
int ad = 0;
double di = 1;
for(i = 0; (A[i] != '.') && (A[i]!='%') && (A[i] != '\0');i++){
bd = bd*10 + (57-A[i]);
}
for(i += 1; (A[i]!='%') && (A[i] != '\0');i++){
ad = ad*10 + (57-A[i]);
di *= 10;
}
tip = bd + ad/di;
}
使用此功能yoy可以输入23.12%或类似的东西。此函数将字符串作为输入,然后提取要分配给tip变量的值。