定义函数,处理一个10进制整数连续加法表达式,计算出结果作为返回值,
函数接口定义:
int fun ( char * str );
str 指向一个表达式字符串,字符串是一个合法的连加运算表达式,没有空格,首字母是数字
裁判测试程序样例:
在这里给出函数被调用进行测试的例子。例如:# include < stdio . h >
int fun ( char * str ); int main ()
char str [80];
scanf ("% s ", str );
printf ("% d ", fun ( str )); return 0;
1213
14
15
16
/*请在这里填写答案*/
18
输入样例:
6+2+3+6
输出样例:
17
你题目的解答代码如下:
#include <stdlib.h>
#include <stdio.h>
int fun(char* str);
int main()
{
char str[80];
scanf("%s", str);
printf("%d", fun(str));
return 0;
}
int fun(char* str)
{
int sum = 0, i=0 , n;
while (str[i] != '\0')
{
if (str[i] >= '0' && str[i] <= '9')
{
n = 0;
while (str[i] >= '0' && str[i] <= '9')
{
n = n * 10 + (str[i] - '0');
i++;
}
sum += n;
}
else
i++;
}
return sum;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!
先将字符串根据‘+’进行分割后,遍历数组求和。
#include<stdio.h>
#include<string.h>
int fun ( char *str);
void split(char *src,const char *separator,char **dest,int *num) {
/*
src 源字符串的首地址(buf的地址)
separator 指定的分割字符
dest 接收子字符串的数组
num 分割后子字符串的个数
*/
char *pNext;
int count = 0;
if (src == NULL || strlen(src) == 0)
return;
if (separator == NULL || strlen(separator) == 0)
return;
pNext = (char *)strtok(src,separator);
while(pNext != NULL) {
*dest++ = pNext;
++count;
pNext = (char *)strtok(NULL,separator);
}
*num = count;
}
int changeNum(char *a)
{ int c=0;
char b[20] = {0}; //数位限制为20位
strcpy(b, a);
for(int i=0;i<20;i++)
{ if(b[i]!=0)
{ c=10*c;
c=(b[i]-48)+c;
}
}
return c;
}
int main(){
char str [80];
scanf ("%s", str );
printf ("%d", fun(str));
return 0;
}
int fun (char *str){
//分割后子字符串的个数
int num = 0,sum=0;
char *revbuf[80] = {0}; //存放分割后的子字符串
split(str,"+",revbuf,&num); //调用函数进行分割
//输出返回的每个内容
for(int i = 0;i < num; i ++) {
sum+=changeNum(revbuf[i]);
}
return sum;
}
代码如下:
#include <stdio.h>
int fun(char* str);
int main()
{
char str[80];
scanf("%s", str);
printf("%d", fun(str));
return 0;
}
int fun(char* str)
{
int sum = 0;
int i = 0;
int tmp = 0;
while (str[i] != '\0')
{
if (str[i] >= '0' && str[i] <= '9')
tmp = tmp * 10 + str[i] - '0';
else
{
if (tmp != 0)
{
sum += tmp;
tmp = 0;
}
}
i++;
}
if (tmp != 0)
sum += tmp;
return sum;
}