我有以下问题:
计算机经常用于支票编写系统,例如工资单 和应付账款申请。关于每周工资的许多故事传播 - 打印(错误地)打印超过100万美元的金额。奇怪的 由于人类的原因,数量由计算机化的检查书写系统打印 错误和/或机器故障。当然,系统设计师会尽一切努力 在他们的系统中构建控制以防止发出错误的检查。 另一个严重的问题是某些人故意改变支票金额─ 打算以欺诈手段兑现的人。防止一美元金额 改进的,大多数计算机化的检查写入系统采用称为检查的技术 保护。
为计算机打印而设计的检查包含固定数量的空格 计算机可以打印一个数量。假设薪水包含九个 计算机应该打印一周的空白空间 薪水。如果金额很大,那么所有九个空格都将被填补
例如:
11,230.60 (check amount)
---------
123456789 (position numbers)
另一方面,如果金额低于1000美元,则会有几个空格 通常留空 - 例如,
99.87
---------
123456789
包含四个空格。如果使用空格打印支票,则更容易 有人改变支票金额。防止检查 改变了许多支票编写系统插入主要星号以保护金额 如下:
****99.87
---------
123456789
编写一个程序,输入要在支票上打印的金额,然后 如有必要,以带有星号的受检查格式打印金额。 假设有九个空格可用于打印金额。
我不是要求任何人为我或其他任何东西编写代码,我只需要一个起点,我们拥有所有这些不同功能的巨大列表,任何人都可以推荐我可以在字符串处理库中使用哪些功能?< / p>答案 0 :(得分:2)
我不会为你做功课,但我会鼓励你看看以下功能:
sprintf - 格式化输出。
提示:0填充左侧的输出
strspn / strcspn - 计算/不在一组字符中的字符跨度
提示:替换额外的零。
memset - 用字节值填充内存区域
我假设您知道如何使用C中的字符和“字符串”进行指针运算。如果没有,请进行研究。我也假设ASCII,而不是unicode。如果它是unicode,你可以教我如何用C语言: - )
答案 1 :(得分:2)
考虑要打印的位数与应该位于数字之前的星号数之间的关系。它们应该相加一个常数,在这种情况下为9.因此,如果你得到要打印的数字字符串的长度,你可以确定首先打印多少个星号。
答案 2 :(得分:0)
使用 itoa 转换amt并查找长度
现在从9(最大数字的最大数字)减去长度,得到no 要打印的星号
打印no.of asterisks然后打开你的Amt。
int amt,count;
char s[10];
printf("Enter Amt");
scanf("%d",&amt);
/* Store Amount as String */
itoa(amt,s,10);
/* Calculate Count */
count=9-strlen(s);
/* Print asterisks */
for(int i=0;i<count;i++)
printf("*");
/* Print Amount */
printf("%d",amt);