乘积的末3位

输入若干个整数(可以是正数、负数或者零),输出他们的乘积的末三位。这些整数中会混入一些由大写字母组成的字符串,你的程序应忽略它们。提示:试试看,在执行scanf("%d")时输入一个字符串会怎样?

#include<stdio.h>
#include<string.h>
char s1[1010],s2[1010];
int num1[1010],num2[1010];
int n,m,i,j,x,y,s,t;
/**************主函数**********/
int main(){
while(~scanf("%s%s",s1,s2)){
n=strlen(s1);
m=strlen(s2);
for(x=i=0;i<n;i++){
if(s1[i]>='0'&&s1[i]<='9'){
num1[x++]=s1[i]-'0';         // 注意是x++
}
}
for(y=j=0;j<m;j++){
if(s2[j]>='0'&&s2[j]<='9'){
num2[y++]=s2[j]-'0';        //注意是y++
}
}
/***************将字符转化为数字**************/
if(x>=3){
s=num1[x-1]+num1[x-2]*10+num1[x-3]*100;
}else{
for(s=i=0;i<x;i++){
s=s*10+num1[i];
}
}
if(y>=3){
t=num2[y-1]+num2[y-2]*10+num2[y-3]*100;
}else{
for(t=i=0;i<y;i++){              //将数组转换为数字,很多情况都可用到。
t=t*10+num2[i];
}
}
/**************将字符型数组转化为数字******************/

注意:这里有一个小小的bug需要注意。如果是-0乘以一个数的话,结果会是-0;

聪明如你会怎样做呢?

对了,只需:// if((n==2&&s1[0]=='-'&&s1[1]=='0')||(m==2&&s1[0]=='-'&&s2[1]=='0')) printf("0\n");同时下面的if应改为else if,即可。

if((s1[0]=='-'&&s2[0]=='-')||(s1[0]!='-'&&s2[0]!='-')){
printf("%d\n",s*t%1000);
}

else{
printf("-%d\n",s*t%1000);
}
}
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值