700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 输入一个字符串 内有数字和非数字字符 例如:A123x456 17960? 302tab5876 将其

输入一个字符串 内有数字和非数字字符 例如:A123x456 17960? 302tab5876 将其

时间:2022-01-28 11:19:38

相关推荐

输入一个字符串 内有数字和非数字字符 例如:A123x456 17960?  302tab5876 将其

输入一个字符串,内有数字和非数字字符,例如:A123x456 17960? ,302tab5876,将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a1[1]…统计共有多少个整数,并输出这些数。

解题思路:遇到数字字符,则开始统计连续数字字符的个数,统计完毕后,则从右往左每次乘以10(除了个位数)作为数字的单位,最终相加得到数字;然后越过这个数字,从后边继续查找。

答案:

#include<stdio.h>#include<string.h>void count_digit(char *str){int digit[32], count = 0;char *ptr = str;int i = 0, str_len = strlen(str);while (i < str_len) {if (*(ptr+i) >= '0' && *(ptr+i) <= '9') {int len = 1;//用于统计连续数字的个数while (*(ptr + i + len) >= '0' && *(ptr + i+ len) <= '9' && (i+len) < str_len) {//找出从当前位置连续数字的个数len++;}int sum = *(ptr + i + len - 1) - '0';//先获取个位数的数据int unit = 1;//每一位的单位,从十位开始每次乘以10作为单位for (int j = len - 2; j >= 0; j--) {//从右往左逐个处理unit *= 10;sum += (*(ptr + i + j) - '0') * unit;}digit[count++] = sum;i += len; // i需要加上len的长度,越过这个数字,防止一个连续数字中的字符重复处理continue;}i++;}for (int i = 0; i < count; i++) {printf("%d ", digit[i]);}return;}int main(){char buf[1024] = {0 };printf("Please enter a string with numbers:\n");gets_s(buf, 1024);count_digit(buf);printf("\n");system("pause");return 0;}

有一个班4个学生,5门课程①求第1门课程的平均分;②找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均成绩;③找出平均成绩在90分以上或全部课程成绩在85分以上的学生分别编3个函数实现以上3个要求

输入一个字符串 内有数字和非数字字符 例如:A123x456 17960? 302tab5876 将其中连续的数字作为一个整数 依次存放到一数组a中。例如 123放在a[0] 456放在a1[1].

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。