被引用的函数代码如下:
int f4(int sum)
{
char c[80];
int a[80]={0},i,j;
printf("输入一串字符(少于80个):");
gets(c);
i=0;j=0;sum=0;
while(c[i]!='\0')
{
if(c[i]>='0'&&c[i]<='9')
a[0]=a[0]*10+(c[i]-'0');
else if(c[i-1]>='0'&&c[i-1]<='9')
{sum=sum+a[j];j++;}
i++;
}
printf("sum=%d",sum);
return 0;
}
要求如下:
运行结果如图:
#include <stdio.h>
#include<string.h>
int main(void)
{
char c1[80];
int i=0,j=0,sum=0;
int a[80]={0};
gets(c1);
i=j=0;
while(c1[i]!='\0'){
if(c1[i]>='0' && c1[i]<='9')
{a[j] = a[j] * 10 + (c1[i] - '0');}
else
{sum += a[j];
if (c1[i - 1] >= '0' && c1[i-1] <= '9')
j++;}
//printf("%c",a[i]);
i++;
}
printf("%d",sum);
}
代码修改如下:
int f4(int sum)
{
char c[80];
int a[80] = { 0 }, i, j;
printf("输入一串字符(少于80个):");
gets(c);
i = 0; j = 0; sum = 0;
while (c[i] != '\0')
{
if (c[i] >= '0' && c[i] <= '9')
a[j] = a[j] * 10 + (c[i] - '0');
else
{
sum = sum + a[j]; j++;
}
i++;
}
if (a[j] != 0)
sum = sum + a[j];
printf("sum=%d", sum);
return 0;
}
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
double number[10] = { 0 };
int count = 0;
void fun(char A[]);
void one();
void two();
void tree();
int main() {
int operation;
printf("第一种字符串(1)\n");
printf("第二种字符串(2)\n");
printf("第二种字符串(3)\n");
printf("对应字符串类型的序号: ");
scanf("%d", &operation);
switch (operation)
{
case 1:
one();
break;
case 2:
two();
break;
case 3:
tree();
break;
default:
printf("输入错误,请重新输入!\n");
break;
}
}
/*
double number[10] = { 0 };
int count = 0;
*/
void fun(char A[]) {
char num[80];
char* s;
int l = strlen(A), j = 0, i = 0;
for (i = 0; i < l; i++)
{
if (A[i] >= '0' && A[i] <= '9' && A[i + 1] >= '0' && A[i + 1] <= '9')
{
num[j] = A[i];
j++;
}
else if (A[i] >= '0' && A[i] <= '9' && (A[i + 1] < 48 || A[i + 1] > 57))
{
num[j] = A[i];
j++;
break;
}
}
if (j != 0) {
num[j] = '\0';
number[count] = strtod(num, NULL);
count++;
}
if (i < l) {
s = A;
for (j = 0; j < i + 1; s++, j++);
fun(s);
}
}
void one() {
}
void two() {
char str[200];
int i, sum = 0;
printf("请输入字符串:");
getchar();
gets(str);
count = 0;
fun(str);
for (i = 0; i < count; i++)
sum += number[i];
printf("字符串中所有正整数之和为:%d\n\n", sum);
}
void tree() {
char str[80];
double sum = 0, quadrature = 1;
printf("请输入字符串:");
getchar();
gets(str);
count = 0;
fun(str);
for (int i = 0; i < count; i++)
{
sum += number[i];
quadrature *= number[i];
}
printf("字符串中所有正整数之和为:%.0lf,所有正整数之积为:%.0lf\n\n", sum, quadrature);
}