PTA | Select Int 输入一个字符串,内有数字和非数字字符,例如:a123x67 222y35i088 09x8 c,请编写程序,将其中连续的数字作为一个整数,依次存放到一维数组a中。例如前面的字符串,应将123存放到a[0]中,67存放到a[1]中……,最后输出整数的个数以及各个整数的值。 输入格式: 长度不超过100的一个字符串,其中包含整数字符和非整数字符。 输出格式: 第一行输出整数的个数 第2行输出各个整数的值,以空格间隔,最后一个整数后面没有空格。 输入样例: a123x67 222y35i088 09x8 c 输出样例: 7 123 67 222 35 88 9 8 代码示例: #include<stdio.h> #include<string.h> int main(){ int n=0; //数字的个数 int cur=0; //游标:用于字符串中控制位数 char nums[100][100]; //用数组模拟高位数字 char tmp; //储存临时字符 char tmps[100]; //储存临时字符串 int flag=0; //标记数字结束 1表示前面的字符是数字 tmp=getchar(); while(tmp!=EOF){ if(tmp>='0' && tmp<='9'){ tmps[cur++]=tmp; flag=1; }else{ if(flag){ tmps[cur++]='\0'; strcpy(nums[n++],tmps); cur=0; flag=0; } } tmp=getchar(); } //收尾,保存最后的数字 if(flag){ tmps[cur++]='\0'; strcpy(nums[n++],tmps); cur=0; flag=0; } //处理多余的0 for(int i=0;i<n;i++){ if(nums[i][0]=='0'){ cur=0; while(nums[i][cur]=='0' && nums[i][cur+1]!='\0') cur++; strcpy(nums[i],nums[i]+cur); } } //输出结果 printf("%d\n",n); if(n>=1){ printf("%s",nums[0]); for(int i=1;i<n;i++){ printf(" %s",nums[i]); } } return 0; } PTA | Select Int https://acm.nanyan.cc/posts/23b4.html 作者 nanyan 发布于 2023年10月25日 许可协议 ACM | Fighting For HDU 上一篇 ACM | Tian Ji -- The Horse Racing 下一篇