你的程序问题多多
需要修改的地方也很多,可能思路也很难用你程序里的
我做了一个,你可以参考一下我的,或许你也能改动些变成你的
我在程序如下:
#include "stdio.h"
#include
int main()
{
int k=0,i, j;
char a[100];
int flag = 1;//用来设置输入回车符号的标志
for(k=0;flag!= 0;k++)//flag为0时停止循环
{
scanf("%c",&a[k]);
if (a[k] == 10)//如果有回车符号输入,flag的值变为0
{
flag =0;
}
}
k = 0;//k值要再次赋0值
long arr[100];//用来保存整数的数组
long sum = 0;//计算中间的整数
int num =0;//计算整数个数
j = 0;//数组下标
while(a[k] != 10)//判断是否为回车符号,
{
if (a[k]<='9' && a[k]>= '0')//如果是数字进入该循环体
{
num++;
sum = 0;
int i = 0;
while(a[k]<='9' && a[k]>= '0')//如果是数字进入该循环体
{
if (i == 0)//第一个数字
{
sum = (int)(a[k]-48);//将字符转换为数字
}
else//非第一个数字
{
sum =10*sum + (int)(a[k]-48);//将字符转换为数字
}
i++;
k++;
}
arr[j++] = sum;//将计算的数字存到数组中
k--;
}
k++;
}
printf("The number of continious integer is %i\n",num);
printf("The integers are like follows: \n");
i = 0;
while (--j >=0)
{
printf("%ld\n",arr[i++]);
}
return 0;
}
运行效果如下:
54sdf ?02395 sdfk pp 888
The number of continious integer is 3
The integers are like follows:
54
2395
888
请按任意键继续. . .
用atoi函数可能简单点
12 while(a[k] != '\n') //这里k 没初始化。。
13 {
14 if(a[k]<='9' && a[k]>= '0')
15 {
16
17 j=0;
18 b[i][j] = a[k]; //i 没有初值 ,k也没有 。。
19 while(a[++k] <= '9' &&a[++k]>='0')
20 b[i][++j]=a[k];
21 i++;
22 }
23 }
24 printf("The number of continious integer is %i",i); //%i 什么格式? 改%d 或%ld
#include
#define MAX 20
void main() {
int k=-1,i=-1,j,t;
char a[MAX],b[MAX][MAX];
do{
k++;
scanf("%c",&a[k]);
}while(a[k]!='\n');
k=0;
while(a[k]!='\n'){
if((a[k]<='9')&&(a[k]>='0')){
i++;j=0;
b[i][j] = a[k];
k++;
while((a[k]<='9')&&(a[k]>='0')){
j++;
b[i][j]=a[k];
k++;
}
j++;b[i][j]='\n';
if(a[k]=='\n') k--;
}
k++;
}
printf("The number of continious integer is %d\n",i+1);
printf("The integers are like follows: \n");
t=i;
for(i=0;i<=t;i++){
j=0;
while(b[i][j]!='\n'){
printf("%c",b[i][j]);
j++;
}
printf("\n");
}
}
运行效果如下:
12df 7da798 7~@#5t
The number of continious integer is 3
The integers are like follows:
12
7
98
7
5
换个思路把,看我的:
#include
#include
int main(void)
{
int ch, num = 0, flag = 0, count = 0;
while(ch = getchar())
{
if(!isdigit(ch) && flag)
{
printf("%d ", num);
count++;
num = flag = 0;
}
if(isdigit(ch))
{
num = 10 * num + ch - '0';
flag = 1;
continue;
}
if(ch == '\n')break;
}
printf("\ncount = %d\n", count);
return 0;
}