如果要按照题目那样,需要把两个数字转换为数组,然后依次乘 何不转换思路? 1+2+3 =6 4+5 = 9 6*9 = 54 #include <stdio.h> // 计算数字各位之和 int digit_sum(int num) { int sum = 0; num = num < 0 ? -num : num; // 处理负数(根据题意可省略) while (num > 0) { sum += num % 10; // 取末位 num /= 10; // 移除末位 } return sum; } int main() { int a, b; scanf("%d %d", &a, &b); printf("%d", digit_sum(a) * digit_sum(b)); return 0; }
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(){ char a[10],b[10]; while(scanf("%s %s\n",&a,&b)!=EOF){ int lena=strlen(a); int lenb=strlen(b); int sum=0; for(int i=0;i<lena;i++){ for(int j=0;j<lenb;j++){ sum+=(a[i]-'0')*(b[j]-'0'); } } printf("%d\n",sum); } return 0; }C++的时候直接用string来定义,用size来确定大小,都是用[i]来表示某一个字符
#include <cstdio> #include <iostream> #include <string> using namespace std; int main(){ string a,b; while(cin>>a>>b){ int sum=0; for(int i=0;i<a.size();i++){ for(int j=0;j<b.size();j++){ sum+=(a[i]-'0')*(b[j]-'0'); } } printf("%d\n",sum); } return 0; }
#include<stdio.h> #include<string.h> int main(){ char s1[11]; char s2[11]; while(scanf("%s %s",s1,s2)!=EOF){ int sum=0; for(int i=0;i<=strlen(s1)-1;i++){ int temp1=s1[i]-48; for(int j=0;j<=strlen(s2)-1;j++){ int temp2=s2[j]-48; sum+=temp1*temp2; } } printf("%d",sum); printf("\n"); } }