字符和字符串问题

时间:2012-04-27 04:29:22

标签: c

我有以下问题:

计算机经常用于支票编写系统,例如工资单 和应付账款申请。关于每周工资的许多故事传播 - 打印(错误地)打印超过100万美元的金额。奇怪的 由于人类的原因,数量由计算机化的检查书写系统打印 错误和/或机器故障。当然,系统设计师会尽一切努力 在他们的系统中构建控制以防止发出错误的检查。 另一个严重的问题是某些人故意改变支票金额─ 打算以欺诈手段兑现的人。防止一美元金额 改进的,大多数计算机化的检查写入系统采用称为检查的技术 保护。

为计算机打印而设计的检查包含固定数量的空格 计算机可以打印一个数量。假设薪水包含九个 计算机应该打印一周的空白空间 薪水。如果金额很大,那么所有九个空格都将被填补

例如:

11,230.60 (check amount)
---------
123456789 (position numbers)

另一方面,如果金额低于1000美元,则会有几个空格 通常留空 - 例如,

99.87
---------
123456789

包含四个空格。如果使用空格打印支票,则更容易 有人改变支票金额。防止检查 改变了许多支票编写系统插入主要星号以保护金额 如下:

****99.87
---------
123456789

编写一个程序,输入要在支票上打印的金额,然后 如有必要,以带有星号的受检查格式打印金额。 假设有九个空格可用于打印金额。

我不是要求任何人为我或其他任何东西编写代码,我只需要一个起点,我们拥有所有这些不同功能的巨大列表,任何人都可以推荐我可以在字符串处理库中使用哪些功能?< / p>

3 个答案:

答案 0 :(得分:2)

我不会为你做功课,但我会鼓励你看看以下功能:

sprintf - 格式化输出。

提示:0填充左侧的输出

strspn / strcspn - 计算/不在一组字符中的字符跨度

提示:替换额外的零。

memset - 用字节值填充内存区域

我假设您知道如何使用C中的字符和“字符串”进行指针运算。如果没有,请进行研究。我也假设ASCII,而不是unicode。如果它是unicode,你可以教我如何用C语言: - )

答案 1 :(得分:2)

考虑要打印的位数与应该位于数字之前的星号数之间的关系。它们应该相加一个常数,在这种情况下为9.因此,如果你得到要打印的数字字符串的长度,你可以确定首先打印多少个星号。

答案 2 :(得分:0)

  1. 使用 itoa 转换amt并查找长度

  2. 现在从9(最大数字的最大数字)减去长度,得到no 要打印的星号

  3. 打印no.of asterisks然后打开你的Amt。


  4. 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);