请教: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”老师!!!