C语言练习作业(七)
来源:互联网 发布:linux常用命令面试 编辑:程序博客网 时间:2024/04/27 14:03
这个厉害了,题目有点难,是我在纸上推演,写出关键代码,然后再在IDE里面补全的。
题目:输入一个字符串,内含数字和非数字字符,例如:a123x456 17960? 302tab5876,将其中连续的数字作为一个整数,依次存放到一数组a中。例如,123放在a[0],456放在a[1],……。共有多少个整数,并输出这些数。
下面是代码:
#include<stdio.h>#include<string.h>void numberPickup(char *str);int main(){char str[100];printf_s("请输入一串字符,包含数字与非数字:\n");gets_s(str, 99);numberPickup(str);return 0;}void numberPickup(char *str){int isNumber = 0;//记录现在是否在数字范围内int isValueable = 0;//判断现在是否将值赋给数组aint t = 0;//记录字符的数字char *p;//指向字符数组的指针int *q;//指向数字数组的指针int a[100];//记录数字的数组int k = 0;//记下共提取出了多少个数字,便于最后输出p = str;int j = 0;//用来判断,当现在指向非数字字符时,数字是否曾出现过,判断后应归零,不然程序会将下一位字符当数字输出int length = 0;//字符数组的长度length = strlen(str);q = a;for (int i = 0; i <= length; p++, i++){if (*p >= '0'&&*p <= '9'){isNumber = 1;t = (*p - 48) + t * 10;//字符数字转化成纯数字应该减48j++;}else{isNumber = 0;if (j > 0)//如果没有,当第一个字符是非数字时,程序会将第一个字符当数字输出{isValueable = 1;//数字已经记录完毕,可以开始赋值j = 0;}}if (isValueable == 1)//开始赋值{*q = t;q++;t = 0;k++;isValueable = 0;}}for (int i = 0; i < k; i++){printf_s("%d ", a[i]);}}
0 0
- C语言练习作业(七)
- C语言练习作业(一)
- C语言练习作业(二)
- C语言练习作业(三)
- C语言练习作业(四)
- C语言练习作业(五)
- C语言练习作业(六)
- [C语言学习]作业七
- C语言第一次作业练习
- C语言第二次作业练习
- C语言第三次作业练习
- c语言第二次作业,编码练习
- C语言第四次作业练习
- C语言第五次作业练习
- C语言第六次作业练习
- C语言第七次作业练习
- C语言第八次作业练习
- C语言第九次作业练习
- 手把手教你轻松实现listview上拉加载
- android 沉浸式状态栏的两种实现方式
- 11 个最常用的 AJAX 开发框架汇总
- 在ubuntu上安装openvswitch时无法加载openvswitch.ko模块的问题
- 采购单维护
- C语言练习作业(七)
- 通过监听最外层布局的改变判断键盘的状态,软键盘的弹出和收起都会改变外层布局
- BZOJ3196: Tyvj 1730 二逼平衡树
- Qt 程序异常结束,并且crashed
- Android开发,关于Intent跳转和传递值
- 关于androidStudio使用多渠道打包
- CentOS-IPTtables介绍
- ZigBee传输方式和寻址方式的理解
- Asp.net WebAPI 教程整理