将自定义连号字符“3 5 13-18”数字转换为3 5 13 14 15 16 17 18数字,程序代码是本论坛内的“_ZGq”老师操刀的!

请教:C语言怎么将字符“3 5 13-18”数字转换为3 5 13 14 15 16 17 18数字,“13-18”弄不好;
自定义连号字符“13-18”数字转换为3 5 13 14 15 16 17 18数字;

include<stdio.h>
int main()
{
for(;?
{
int a;
char c;
scanf("%d",&a);
c=getchar();
if(c==’ ‘) printf("%d ",a);
else if(c==’-’)
{
int b;
scanf("%d",&b);
int i=a;
for(;i<=b;++i) printf("%d ",i);
char tempc=getchar();
if(tempc==’ ') continue;
else break;
}
else break;
}
return 0;
}

程序代码
在这里插入图片描述
int strintSzA(char str,int j,int g)
{
int
ans=(int*)malloc(sizeof(int)100);
char c;
int stri=0,ansi=0,num=0;
for(;?
{
c=str[stri++];
if(c>=‘0’ && c<=‘9’) num
=10,num+=c-‘0’;
else if(c==’-’)
{
char tempc;
int tempnum=0;
for(;?
{
tempc=str[stri++];
if(tempc==’ ‘) break;
else if(tempc>=‘0’ && tempc<=‘9’) tempnum*=10,tempnum+=tempc-‘0’;
else break;
}
int tempi=num;
for(num=0;tempi<=tempnum;++tempi) ans[ansi++]=tempi;
}
else if(c==’\0’) break;
else ans[ansi++]=num,num=0;
}
//int_array return_ans={ans,ansi-1};return return_ans;
if(g==0)
return ans[j];
else
return ansi;

}

#include “stdafx.h”
using namespace std;

int main()
{
char str=“3 5 13-18”;
int i,sz;
for(i=0;i<strintSzA(str,1,1);i++)
{
sz=strintSzA(str,i,0);
cout<<" “<<sz;
}
cout<<”\n";
cout<<“共有数字”<<strintSzA(str,1,1)<<“个”<<"\n";
return 0;
}
在这里插入图片描述
#include<stdio.h>
#include<malloc.h>
typedef struct{
int
array;
int size;
}int_array;
int_array strint(char str[]){
int* ans=(int*)malloc(sizeof(int)100);
char c;
int stri=0,ansi=0,num=0;
for(;?{
c=str[stri++];
if(c>=‘0’ && c<=‘9’) num
=10,num+=c-‘0’;
else if(c==’-’){
char tempc;
int tempnum=0;
for(;?{
tempc=str[stri++];
if(tempc==’ ‘) break;
else if(tempc>=‘0’ && tempc<=‘9’) tempnum*=10,tempnum+=tempc-‘0’;
else break;
}
int tempi=num;
for(num=0;tempi<=tempnum;++tempi) ans[ansi++]=tempi;
}
else if(c==’\0’) break;
else ans[ansi++]=num,num=0;
}
int_array return_ans={ans,ansi-1};
return return_ans;
}
最后返回的是一个结构体,表示一个整型数组和它的大小。
再次谢谢“_ZGq”老师!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值