C语言实现从字符串中提取整数组(正负数整数和零),并计算整数组的和

    xiaoxiao2021-04-17  78

    直接上代码(代码参照网上大神,自己做了一些修改)

    #include<stdio.h> #include<string.h> int arrays[1000+1]; int j = 0; //数组中数的个数 int sumInt(char *s) { int sum=0,t=0; char *p=s; int inNumber=0; int count = 0 ; //我把inNumber作为负数标记 //将字符串中的正、负整数取出求和 //*(p-1) 确保把最后的数字提取到 while(*(p-1)!='\0') { if('0'<=*p && *p<='9') { //t*10 相当于进位,-48相当于把字符'0'到'9'转换为数字0-9 t=10*t+*p-48; //inNumbe==1 ,该数为负数 if(*(p-1)=='-') inNumber=1; count++; //或者count=1 ; 只要count!=0 就行 } else { if(inNumber==1) t=-t; if(count != 0) { //printf("t=%d\n",t); arrays[j++] = t ; } count=0; sum=sum+t; t=0; inNumber=0; } p++; } return sum; } int main() { char s[1000+1]; //scanf("%s",s); //这个函数也可以获取输入的字符串,但是针对于空格后面的字符直接忽略掉,建议不适用这个方法 gets(s); //这个函数也可以获取输入的字符串,但是会出现Wram,原因是不知道输入字符串的长度 printf("输入的字符串为:\n%s\n",s); printf("整数组和为=%d\n",sumInt(s)); for(int i=0;i<j;i++) printf("]",arrays[i]); printf("\n"); printf("整数个数:%d\n",j-1); return 0; } 程序运行结果

    转载请注明原文地址: https://ju.6miu.com/read-673559.html

    最新回复(0)