主题:指针
梦梦学编程
[专家分:10] 发布于 2011-03-15 15:22:00
求一个字符串中的整数的个数,并输出有几个以及有哪些整数!
#include <stdio.h>
void main()
{ int i=0;
int j;
char a[100];
char b[100];
char *p,t;
printf("请输入一个字符串:\n");
scanf("%s",b);
p=b;
for(;(*p)!='\0';)
{ for(;
!((*p)>='0')&&((*p)<='9');)
p++;
if(((*p)>='0')&&((*p)<='9'))
{ t=*p;
p++;
for(;(*p)>='0'&&(*p)<='9';)
{ t=*p+t*10;
p++;}
a[i]=t;
i++;
}
}
printf("一共有%d个整数\n",i);
for(j=0;j<i;j++)
printf("%2c",a[j]);
printf("\n");
}我做的好像很乱,没什么思路。。。。
回复列表 (共11个回复)
沙发
aiby [专家分:15340] 发布于 2011-03-15 17:10:00
#include <stdio.h>
#include <string.h>
#include <ctype.h>
#include <stdlib.h>
#include <stdbool.h>
int main(void)
{
char str[100];
int total; //总数
char *p;
bool isNum; //数字标记
scanf("%s", &str);
total = 0;
isNum = false;
for (char *p = str; *p != '\0'; ++p) {
if (isdigit(*p)) {
printf("%c", *p);
total += (isNum == false); //读入一个新的数字,总数加一
isNum = true;
}
else if (isNum == true) {
printf("\n");
isNum = false;
}
}
printf("\n%d nums in string\n", total);
getch();
return 0;
}
板凳
梦梦学编程 [专家分:10] 发布于 2011-03-15 22:37:00
这个程序并不能运行啊。。。。而且对于我这样一个初学者来,看起来有些吃力。。。还是谢谢了
3 楼
fragileeye [专家分:1990] 发布于 2011-03-15 23:07:00
二楼的代码应该没有问题,lz的编译器中可能没有stdbool的头文件,ctype头文件中有判断为整数的字符的函数……
还有就是lz应该注意下格式,这样看起来too吃力、、
4 楼
梦梦学编程 [专家分:10] 发布于 2011-03-15 23:16:00
额。。。。
5 楼
hereforc [专家分:210] 发布于 2011-03-16 15:09:00
干嘛非用指针呢
#include <stdio.h>
void main()
{ int i=0,j=0;
char a[100],t;
printf("请输入一个字符串:\n");
while((t=getchar())!='\n')
{if(t>='0'&&t<='9')
{a[i]=t;
i++;
}
j++;
}
printf("一共有%d个整数\n",i);
for(i=0;i<j;i++)
{ printf("%2c",a[i]);
printf("\n");
}
}
6 楼
梦梦学编程 [专家分:10] 发布于 2011-03-16 15:56:00
额,题目的意思是把连续的整数输出,
如:hjkh34jkj234234sada
输出的整数有34,234234
7 楼
zxctyilei [专家分:0] 发布于 2011-03-16 17:50:00
好久没写C了,现在在公司呆着没事干,拿出来写写,也不知道对不对,这是我想得到的最简单的了
#include <stdio.h>
void main(void)
{
char str[100] ;
char str1[100] ;
char *p ;
int i = 0 ;
printf("请输入一个字符串:") ;
scanf("%s", str) ;
for(p = str; *p != '\0'; p++)
{
if(*p >= '0' && *p <= '9')
{
str1[i] = *p ;
i ++ ;
}
}
str1[i] = '\0' ;
printf("\n输出的整数有:%s", str1) ;
return ;
}
8 楼
hereforc [专家分:210] 发布于 2011-03-16 23:40:00
那不加最后一个printf(“\n”)不就好了
9 楼
316971451 [专家分:30] 发布于 2011-03-17 08:55:00
我最近也在学指针 ,不过我郁闷你这咋写的 为什么好混乱啊
{ for(;
!((*p)>='0')&&((*p)<='9');)
p++;
if(((*p)>='0')&&((*p)<='9'))
{ t=*p;
p++;
for(;(*p)>='0'&&(*p)<='9';)
{ t=*p+t*10;
p++;}
a[i]=t;
i++;
10 楼
梦梦学编程 [专家分:10] 发布于 2011-03-19 15:47:00
谢谢这么多人都来帮我哈,不过可能是我说的不够清楚,输出的结果跟题目都不怎么符合;
题目是这样的:输入一串字符串,例如
123dsf56 17960?302fdggd654
将其中连续的数字作为一个整数,依次存放到一个数组a中,例如:123放在a[0]中,56放在a[1]中,。。。。。统计有多少个数字并输出!
我来回复