输入若干个整数(可以是正数、负数或者零),输出它们的乘积的末3位。这些整数中会混入一些由大写字母组成的字符串,你的程序应该忽略它们。提示:试试看,在执行scanf(“%d”)时输入一个字符串会怎样?
解题思路:
找出字符串中的数字累乘,在计算过程注意字符串结束判断和溢出异常。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
int main()
{
char strarr[1000];
scanf("%[^\n]s", strarr);
int len = strlen(strarr);
int i;
int flag = 1;
int sum = 1;
int ret = 1;
for (i = 0; i < len; i++)
{
flag = 1;
sum = 1;
while(!isdigit(strarr[i]) && strarr[i] != '-' && strarr[i] != '\0')
{
i++;
}
if(strarr[i] == '-')
{
flag = -flag;
}
if(isdigit(strarr[i]))
{
sum = strarr[i] - '0';
i++;
while(isdigit(strarr[i]))
{
sum %= 1000;
sum = sum * 10 + strarr[i] - '0';
i++;
}
}
ret = flag * sum * ret % 1000;
}
printf("%d\n", ret);
return 0;
}