#include <stdio.h>
/*
求和
Time Limit:1000MS Memory Limit:65536K
Total Submit:228 Accepted:93
Description
已知字符串中相邻的数字字符可以合并为一个有效数值,例如字符串“1#a#100acda06 2bbb bbb11ccccc”,其中包含的有效数值有1、100、06、2和11。输入一个字符串,求串中所有的有效数值之和。有效数值之和在整型数int范围内。
Input
一个字符串 (1<=长度<=50)
Output
字符串中所有的有效数值之和。
Sample Input
1#a#100acda06 2bbb bbb11ccccc
Sample Output
120
Hint
120(1+100+6+2+11)
Source
作者:厦门理工学院 计算机与信息工程学院 FnLock
时间 2017.11.9 20:09
*/
//将字符‘0 ’-‘9 ’转化成数字
int changeNum(char c)
{
int num=c-48;
return num;
}
//将输入的数组转化为一个数字 比如{1,2,0}就是120
int change(int arr[],int j)
{
int i;
int biger=1;
int sum=0;
for(i=j;i>=0;i--)
{
sum+=arr[i]*biger;
biger*=10;
}
return sum;
}
//将数组的值全部赋值为0
void arrZero(int arr[])
{
int i;
for(i=0;i<100;i++)
{
arr[i]=0;
}
}
//数一数字符数组共有几个字符
int arrCount(char arr[])
{
int i;
int count=0;
for(i=0;arr[i]!='\0';i++)
{
count++;
}
return count;
}
int main(void)
{
char arr[100];
int brr[100]={0};
gets(arr);//输入字符串
int i,j=0;
int sum=0;//定义sum用于记录总和
int count=arrCount(arr);//数字符
arr[count]=';';//在字符数组最后加一个“;”表示结束
for(i=0;arr[i]!='\0';i++)
{
if(arr[i]>='0'&&arr[i]<='9')//当字符在0-9之间
{
brr[j]=changeNum(arr[i]);//将字符转化为数字 ,并存入数组
j++;
}
else//读到不是数字字符时 (前面的“;”就是防止字符串最后是数字)
{
sum+=change(brr,j-1);//累加
arrZero(brr);//数组清0
}
}
printf("%d",sum);//打印总和
return 0;
}
1306求和
最新推荐文章于 2022-02-15 14:05:06 发布