6-26 实验9_6_单词字符统计
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
请设计一个函数,参数为一个单词(字符串),假设max是单词中出现次数最多的字母的出现次数,min是单词中出现次数最少的字母的出现次数,如果max-min是一个质数,则返回则max-min,否则返回-1。
注意:判断一个整数是否为质数的函数不需要实现,要求直接调用下边的函数来判断
int isPrime( int n ) ;
该函数判断一个整数是否是质数,是则返回1,否则返回0。
测试程序输入:
只有一行,是一个单词,其中只可能出现小写字母,并且长度小于100。
测试程序输出:
如果输入单词的max-min是一个质数,输出max-min的值,否则输出-1。
函数接口定义:
int getResult( char word[] ) ;
其中 word
是用户传入的参数,为待处理单词。函数须按要求返回max-min或-1。
裁判测试程序样例:
#include<stdio.h>#define MAXLEN 110int isPrime( int n ) ;//判断一个整数是否是质数,是则返回1,否则返回0
int getResult( char word[] ) ;int main()
{char word[MAXLEN] ;scanf( "%s" , word ) ; printf( "%d\n" , getResult( word ) );return 0;
}/* 请在这里填写答案 */
输入样例:
banana
输出样例:
2
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
int getResult( char word[] )
{int i, j, max, min;int arr[26] = {0};for(i = 0; word[i] != '\0'; i++){arr[word[i]-'a']++;}for(j = 0; j < 26; j++){if(arr[j] != 0){max = arr[j];min = arr[j];break;}}for(i = 0; i < 26; i++){if(arr[i] > max)max = arr[i];if(arr[i] < min&&arr[i]!= 0)min = arr[i];}int res = max - min;if(isPrime(res))return res;elsereturn -1;
}
6-27 实验9_7_设计函数int getVowel(char str[],char vowel[]);
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
设计函数int getVowel(char str[],char vowel[]),将只包含小写字母的字符串str中的元音字母“a”“e”“i”“o”“u”复制到字符数组vowel,并返回字符串vowel的长度。
函数接口定义:
函数原型如下:
int getVowel(char str[],char vowel[]);
其中 str
和 vowel
都是用户传入的参数。 str
为原始字符串; vowel
为元音字母字符串。函数的返回值为 vowel
的长度。
裁判测试程序样例:
函数被调用进行测试的例子如下:
#include <stdio.h>
#include<stdio.h>//将只包含小写字母的字符串str中的元音字母复制到字符数组vowel,并返回元音字符的个数。
int getVowel(char str[],char vowel[]);int main()
{char vowel[101] , str[101];//每个数组都至少要101个字节 int len ;scanf("%s",str); //读入字符串 len = getVowel(str,vowel); //复制 if ( len > 0 ) printf("%d %s\n", len , vowel); //输出复制后结果 else printf("%d\n", len);//仅输出长度 return 0;
}/* 请在这里填写答案 */
输入样例:
abcdefghiijklmn
输出样例:
4 aeii
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
int getVowel(char str[],char vowel[])
{int count = 0;for(int i = 0; str[i] != '\0'; i++){if(str[i]=='a'||str[i]=='e'||str[i]=='i'||str[i]=='o'||str[i]=='u'){vowel[count] = str[i];count++;}}vowel[count] = '\0';return count;
}
6-28 实验10_1_英超一
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
英格兰足球超级联赛(Premier League),通常简称“英超”,是英格兰足球总会属下的最高等级职业足球联赛。
英超联赛采取主客场双循环赛制比赛,每支队伍与各球队对赛两次,主客各一次。由1995/96赛季开始参赛球队由22队减至20队,每支球队共进行38场赛事,主场和客场比赛各有19场。每场胜方可得3分,平局各得1分,负方得0分,按各队于联赛所得的积分排列。
现请你写一个函数来计算某支球队的当前的积分。
输入:
只有一行,为一个字符串。该字符串包含不多于40个字符,每个字符代表该队一轮比赛的结果。字符串中只包含W(代表该队某轮取胜)、D(代表该队某轮和对手打平)和L(代表该队某轮失利)三种字符。
输出:
只有一个整数,为根据输入数据,计算出的该队当前的积分。
函数接口定义:
int getScore(char * s) ;
其中 s
为用户传入的参数,为指向某队当前的全部赛果的指针。函数须返该队当前积分。
裁判测试程序样例:
#include <stdio.h>#define MAX 48int getScore(char * s) ;int main()
{char input[MAX] ;int score ;scanf("%s",input);score = getScore(input) ;printf("%d\n",score) ;return 0;
}/* 请在这里填写答案 */
输入样例:
WDWWWWWWWWWWWWWWWWWWDWLWWDWWWWWLWWWDWW
输出样例:
100
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
int getScore(char * s)
{int score = 0;for(int i = 0; s[i] != '\0'; i++){if(s[i]=='W')score += 3;else if(s[i]=='D')score += 1;}return score;
}
6-31 实验10_4_设计函数 locatesubstr
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
设计函数 char *locatesubstr(char *str1,char *str2),查找str2指向的字符串在str1指向的字符串中首次出现的位置,返回指向该位置的指针。若str2指向的字符串不包含在str1指向的字符串中,则返回空指针NULL。
注意这里必须使用指针而不是数组下标来访问字符串。
函数接口定义:
char *locatesubstr(char *str1,char *str2);
其中 str1
和 str2
都是用户传入的参数,其含义如题面所述 。若查找成功则返回指向该位置的指针,若失败则返回空指针。
裁判测试程序样例:
#include <stdio.h>char *locatesubstr(char *str1,char *str2);
int main()
{char str1[505],str2[505];char *p;gets(str1);gets(str2);p=locatesubstr(str1,str2);if(p==NULL) printf("NULL!\n");else puts(p);return 0;
}/* 请在这里填写答案 */
输入样例:
didjfsd dabcxxxxxx
abc
输出样例:
abcxxxxxx
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
char *locatesubstr(char *str1,char *str2)
{if(*str2 != '\0'){while(*str1 != '\0'){for(int i = 0; str1[i]==str2[i]; i++){if(str2[i+1]=='\0')return str1;}str1++;}}else{return NULL;}return NULL;
}
6-33 实验10_8_设计函数 void delcharfun(char *str,char ch)
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
设计函数 void delcharfun(char *str,char ch)实现从字符串str中删除指定的字符ch。同一字母的大、小写按不同字符处理。
函数接口定义:
void delcharfun(char *str,char ch);
其中 str
和 ch
都是用户传入的参数。 str
为指向待删除数组的指针; ch
指定字符。函数没有返回值。
裁判测试程序样例:
#include<stdio.h>void delcharfun(char *str,char ch);int main()
{char ch,str[110];scanf("%s",str); //读入字符串 getchar(); //读取回车符号 scanf("%c",&ch); //读入字符 delcharfun(str,ch); //删除 printf("%s\n",str); //输出删除后结果 return 0;
}/* 请在这里填写答案 */
输入样例:
abcABCabc#
b
输出样例:
acABCac#
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
void delcharfun(char *str,char ch)
{int i, j;for(i = 0; str[i] != '\0'; i++){if(str[i] == ch){for(j = i; str[j+1] != '\0'; j++){str[j] = str[j+1];}str[j] = '\0';i--;}}
}
6-25 实验9_5_反向打印字符串
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
设计递归函数将字符串str中的内容反向打印出来。
此题要求递归求解,且不允许使用全局变量,否则没有分。
函数接口定义:
void reversePrint(char str[]) ;
其中 str
是用户传入的参数, 为指定字符串。函数没有返回值。
裁判测试程序样例:
#include<stdio.h>//将字符串str中的内容反向打印的函数
void reversePrint(char str[]) ;int main()
{char s[100] ;scanf( "%s" , s ); reversePrint(s) ;printf("\n") ;return 0;
}/* 请在这里填写答案 */
输入样例:
ABCdefg
输出样例:
gfedCBA
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <string.h>void reversePrint(char str[])
{int len = strlen(str);if(len){printf("%c", str[len-1]);str[len - 1] = '\0';reversePrint(str);}
}
7-50 实验9_1_括号匹配
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
任意给定一个字符串,字符串中包含除了空白符、换行符之外的任意字符。你的任务是检测字符串中的圆括号是否配对,即“(”与“)”是否配对。如字符串“((a+b)* (c+d))”中是配对的,而“((a+b)*) c+d))”则不配对。
输入格式:
一个长度不超过100的非空字符串,该字符串中不会出现空格、换行符。
输出格式:
匹配及不匹配见样例。
输入样例一:
((a+b)*(c+d))
输出样例一:
parentheses match!
输入样例二:
((a+b)*)c+d))
输出样例二:
parentheses do not match!
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>int main()
{char arr[101];fgets(arr, 100 , stdin);int count = 0;int i = 0;while(arr[i] != '\0'&&arr[i] != '\n'){if(arr[i] == '('){if(arr[i+1] == ')'){printf("parentheses do not match!\n");return 0;}elsecount++;}else if(arr[i] == ')'){if(count > 0){count--;}else{printf("parentheses do not match!\n");return 0;}}i++;}if(count == 0)printf("parentheses match!\n");elseprintf("parentheses do not match!\n");return 0;
}
7-51 实验9_2_身份证号码最后一位
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
身份证编码规则如下:根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。
顺序码(身份证第十五位到十七位)是县级公安机关所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”,其中单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。如:005的就是个男性,而且和他同年月日生的男性至少有两个,他们的后四位是001*和003*。分配顺序码中“999、998、997、996”四个顺序号分别为男女性百岁以上老人专用的特定编号。
校验码(身份证最后一位)是根据前面十七位数字码,按照ISO7064:1983.MOD11-2校验码计算出来的检验码。
从1999年10月1日起,全国实行公民身份证号码制度,居民身份证编号由原15位升至18位。前6位为地址码;第七位至14位为出生日期码,此码由6位数改为8位数,其中年份用4位数表示;第15位至17位为顺序码,取消了顺序码中对百岁老人使用的特定编号;第十八位为校验码,主要是为了校验计算机输入公民身份证号码的前17位数字是否正确,其取值范围是0至10,当值等于10时,用罗马数字符X表示。
计算方法
1、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
2、将这17位数字和系数相乘的结果相加。
3、用加出来和除以11,看余数是多少?
4、余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。(即余数0对应1,余数1对应0,余数2对应X...)
5、通过上面得知如果余数是3,就会在身份证的第18位数字上出现的是9。如果对应的数字是2,身份证的最后一位号码就是罗马数字X。
例如:某男性的身份证号码为【53010219200508011X】, 我们看看这个身份证是不是符合计算规则的身份证。
首先我们得出前17位的乘积和【(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+(1*2)】是189,然后用189除以11得出的结果是189÷11=17余下2,187÷11=17,还剩下2不能被除尽,也就是说其余数是2。最后通过对应规则就可以知道余数2对应的检验码是X。所以,可以判定这是一个正确的身份证号码。
现在请你写一段程序来判断一个身份证号码的最后一位是否与上述规则相符。
输入格式:
第一行一个整数T(0<T<100),表示有T行测试数据。后边是T行每行是一个18位的身份证号码(测试数据前17位保证符合身份证号码的要求,罗马数字X就是大写的英文字母X)。
输出格式:
T行,与输入的T行测试数据相对应,如果该行测试数据最后一位符合所述算法则输出right,否则输出wrong。
输入样例:
2
34052419800101001X
310105199412049278
输出样例:
right
wrong
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>int main()
{int n;scanf("%d", &n);char number[20];for(int i = 0; i < n; i++){scanf("%s", &number);int sum = 0;int flag = 0;sum = (number[0] - '0') * 7 + (number[1] - '0') * 9 + (number[2] - '0') * 10 + (number[3] - '0') * 5 + (number[4] - '0') * 8 + (number[5] - '0') * 4 + (number[6] - '0') * 2 + (number[7] - '0') + (number[8] - '0') * 6 + (number[9] - '0') * 3 + (number[10] - '0') * 7 + (number[11] - '0') * 9 + (number[12] - '0') * 10 + (number[13] - '0') * 5 + (number[14] - '0') * 8 + (number[15] - '0') * 4 + (number[16] - '0') * 2;int temp = sum % 11;switch(temp){case 0:if(number[17] == '1')flag = 1;break;case 1:if(number[17] == '0')flag = 1;break;case 2:if(number[17] == 'X')flag = 1;break;case 3:if(number[17] == '9')flag = 1;break;case 4:if(number[17] == '8')flag = 1;break;case 5:if(number[17] == '7')flag = 1;break;case 6:if(number[17] == '6')flag = 1;break;case 7:if(number[17] == '5')flag = 1;break;case 8:if(number[17] == '4')flag = 1;break;case 9:if(number[17] == '3')flag = 1;break;case 10:if(number[17] == '2')flag = 1;break;default:break;}if(flag == 1)printf("right\n");elseprintf("wrong\n");}return 0;
}
-52 实验9_3_字母统计
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
任意给定一个字符串,字符串中包含除了空白符、换行符之外的的任意字符。你的任务是统计出现在该字符串中的各字母(即“A—Z”,“a—z”)的个数(区分大小写)。
输入格式:
一个长度不超过100的非空字符串。字符串中不会出现空白符、换行符。
输出格式:
字符串中出现的字母的统计信息,每个字母的统计信息占一行,按照字母的ASCII码的顺序输出。
输入样例:
AAAsdf&^%DF879as
输出样例:
注意单词“time”不论单复数,一律输出复数形式“times”
The character A has presented 3 times.
The character D has presented 1 times.
The character F has presented 1 times.
The character a has presented 1 times.
The character d has presented 1 times.
The character f has presented 1 times.
The character s has presented 2 times.
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>int main()
{char ch[101];scanf("%s", &ch);int count1[26] = {0};int count2[26] = {0};int i = 0;while(ch[i] != '\0'){if(ch[i] >= 'A'&&ch[i] <= 'Z'){count1[ch[i] - 'A']++;}else if(ch[i] >= 'a'&&ch[i] <= 'z'){count2[ch[i] - 'a']++;}i++;}for(int i = 0; i <= 25; i++){if(count1[i])printf("The character %c has presented %d times.\n", (char)(i + 'A'), count1[i]);}for(int j = 0; j <= 25; j++){if(count2[j])printf("The character %c has presented %d times.\n", (char)(j + 'a'), count2[j]);}return 0;
}
7-4 删除重复字符
分数 20
全屏浏览
切换布局
作者 颜晖
单位 浙大城市学院
本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。
输入格式:
输入是一个以回车结束的非空字符串(少于80个字符)。
输出格式:
输出去重排序后的结果字符串。
输入样例:
ad2f3adjfeainzzzv
输出样例:
23adefijnvz
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
#include <string.h>int main()
{char ch[81];int len;if(fgets(ch, 80, stdin) != NULL)
{len = strlen(ch);ch[len - 1] = '\0';len--;
}int number[200] = {0};int i = 0;while(i < len){int temp = ch[i];number[temp]++;i++;}for(int j = 0; j < 200; j++){if(number[j]){printf("%c", j);}}return 0;
}
7-5 统计字符出现次数
分数 20
全屏浏览
切换布局
作者 C课程组
单位 浙江大学
本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。
输入格式:
输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。
输出格式:
在一行中输出给定字符在给定字符串中出现的次数。
输入样例:
programming is More fun!
m
输出样例:
2
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
#include <string.h>int main()
{char ch[81];int len;if(fgets(ch, sizeof(ch), stdin)){len = strlen(ch);ch[len - 1] = '\0';len--;}char tag;scanf("%c", &tag);int count = 0;for(int i = 0; i < len; i++){if(tag==ch[i])count++;}printf("%d", count);return 0;
}
7-6 删除字符串中的子串
分数 20
全屏浏览
切换布局
作者 白洪欢
单位 浙江大学
输入2个字符串S1和S2,要求删除字符串S1中出现的所有子串S2,即结果字符串中不能包含S2。
输入格式:
输入在2行中分别给出不超过80个字符长度的、以回车结束的2个非空字符串,对应S1和S2。
输出格式:
在一行中输出删除字符串S1中出现的所有子串S2后的结果字符串。
输入样例:
Tomcat is a male ccatat
cat
输出样例:
Tom is a male
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<stdio.h>
#include<string.h>
int main ()
{char s1[100];gets(s1);char s2[100];gets(s2);char t[100];char *p;while((p=strstr(s1,s2))!=NULL){strcpy(t,p+strlen(s2));*p='\0';strcat(s1,t);}puts(s1);return 0;
}
7-7 字符串循环左移
分数 20
全屏浏览
切换布局
作者 白洪欢
单位 浙江大学
输入一个字符串和一个非负整数N,要求将字符串循环左移N次。
输入格式:
输入在第1行中给出一个不超过100个字符长度的、以回车结束的非空字符串;第2行给出非负整数N。
输出格式:
在一行中输出循环左移N次后的字符串。
输入样例:
Hello World!
2
输出样例:
llo World!He
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
#include <string.h>int main()
{char ch[1001];gets(ch);int n;scanf("%d", &n);int len = strlen(ch);for(int i = 0; i < n; i++){char temp = ch[0];for(int j = 1; j < len; j++){ch[j - 1] = ch[j];}ch[len - 1] = temp;}printf("%s", ch);return 0;
}
7-8 A-B
分数 20
全屏浏览
切换布局
作者 陈越
单位 浙江大学
本题要求你计算A−B。不过麻烦的是,A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉,剩下的字符组成的就是字符串A−B。
输入格式:
输入在2行中先后给出字符串A和B。两字符串的长度都不超过104,并且保证每个字符串都是由可见的ASCII码和空白字符组成,最后以换行符结束。
输出格式:
在一行中打印出A−B的结果字符串。
输入样例:
I love GPLT! It's a fun game!
aeiou
输出样例:
I lv GPLT! It's fn gm!
代码长度限制
16 KB
时间限制
150 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
#include <string.h>int main()
{char ch1[10001];char ch2[10001];gets(ch1);gets(ch2);char tag[10001] = {0};int len1 = strlen(ch1);int len2 = strlen(ch2);int count = 0;int flag;for(int i = 0; i < len1; i++){flag = 0;for(int j = 0; j < len2; j++){if(ch1[i]==ch2[j]){flag = 1;}}if(flag == 0){tag[count] = ch1[i];count++;}}printf("%s\n", tag);return 0;
}
7-9 说反话-加强版
分数 20
全屏浏览
切换布局
作者 陈越
单位 浙江大学
给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:
测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:
每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:
Hello World Here I Come
输出样例:
Come I Here World Hello
感谢杭州电子科技大学李卫明老师修正数据! 感谢浙江工业大学之江学院石洗凡老师修正测试点提示。
代码长度限制
16 KB
时间限制
300 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
#include <string.h>int main()
{char ch1[500001];char ch2[500001];gets(ch1);int len1 = strlen(ch1);while(ch1[len1 - 1] == ' '){len1--;}int j = 0, k, flag = 1;for(int i = len1 - 1; i >= 0; i--){if(ch1[i] != ' '){ch2[j] = ch1[i];j++;}else if(ch1[i] == ' '&&ch1[i+1] != ' '){if(flag == 1){for(k = j - 1; k >= 0; k--){printf("%c", ch2[k]);}flag++;}else{printf(" ");for(k = j - 1; k >= 0; k--){printf("%c", ch2[k]);}}j = 0;}}if(ch1[0] != ' '&&flag != 1){printf(" ");for(k = j - 1; k >= 0; k--){printf("%c", ch2[k]);}}else{for(k = j - 1; k >= 0; k--){printf("%c", ch2[k]);}}return 0;
}
7-10 账单二
分数 100
全屏浏览
切换布局
作者 scs
单位 北京邮电大学
在双十一期间,小伙伴们的宿舍迅速变成了一片“快递的海洋”,每个角落都堆满了等待被拆开的“幸福彩蛋”。而当双十一的热度尚未完全消散时,小明就收到了一份特别的“豪华惊喜”——他的购物账单。现在请你写一段程序帮小明计算一下他一共花了多少钱。
输入格式:
只有一行,为长度不超过100000的字符串,代表小明的账单。字符串内只包含英文小写字母和数字和点(.),其中小写字母代表物品名称,数字和点代表钱数(测试用例保证合法)。账单中所有数字的和即为小明所花钱数。建议使用double类型存储小数,测试用例保证所有整数部分的和远小于int的存储范围。
输出格式:
只有一行,为一个浮点数(保留3位小数),代表小明所花钱数。
输入样例:
ebook16.99papertowels18headphones168.88laptopbag49.35wirelesscharger75
输出样例:
328.220
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include <stdio.h>
#include <string.h>
#include <ctype.h>int main()
{char str[100001];gets(str);double sum = 0.0;int len = strlen(str);char numStr[20]; // 用于临时存储提取出的数字字符串int numStrIndex = 0; // 数字字符串的索引for (int i = 0; i < len; i++) {if (isdigit(str[i]) || str[i] == '.') { // 如果是数字字符或者小数点numStr[numStrIndex] = str[i];numStrIndex++;}else {if (numStrIndex > 0) { // 之前已经积累了数字字符,说明是一个完整数字部分结束了numStr[numStrIndex] = '\0';double num;sscanf(numStr, "%lf", &num); // 将数字字符串转换为double类型数值sum += num;numStrIndex = 0;}}}if (numStrIndex > 0) { // 处理最后一部分数字numStr[numStrIndex] = '\0';double num;sscanf(numStr, "%lf", &num);sum += num;}printf("%.3lf\n", sum);return 0;
}