用C写个编程
输入一个完全由数字组成的字符串,从字符串的第一个字符开始,每两个数字作为两位整数,存放在一维整型数组中,如果最后只剩一个数字,则将该字符作为一个整数存放在数组中。试编写一...
输入一个完全由数字组成的字符串,从字符串的第一个字符开始,每两个数字作为两位整数,存放在一维整型数组中,如果最后只剩一个数字,则将该字符作为一个整数存放在数组中。试编写一个函数实现上述功能,字符串的输入,一维整型数组的输出在主函数中完成。
展开
3个回答
展开全部
#include <stdio.h>
#define MAXLONE_STR 100
#define MAXLONE_DIG 50
int getDigits(char a[],int target[]){
int i=0,k=0,index_dig=0;
const int two_dig=2;
while (a[i]!='\0')
{
if(k==2){
target[index_dig++]=(a[i-1]-48)+((a[i-2]-48)*10);
k=0;
}
else{
i++;
k++;
}
}
//当k=1时说明尾部仅有一个数字
if(k==1) target[index_dig++]=(a[i-1]-48);
return index_dig; // 返回数组长度
}
void main(){
char test[MAXLONE_STR]="1234567";
int dig[MAXLONE_DIG];
int len=getDigits(test,dig);
// 输出得到的数字
for (int i=0;i<len;i++) printf("%d ",dig[i]);
printf("\n");
}
追问
能给个算法流程图不?算法设计也ok...
追答
这个算法就是两两为一组,用k来记数,记到2就开始把i-1个位置(个位数)+[i-2](十位数)*10就是一组十位数,最后再判断k=1时,说明字符串为奇数,即最后落下一个数(也就个位数)
展开全部
int main()
{ char s[1000];
int i, j, k, t[500];
gets(s); // input a string.
i = 0, j = 0;
for(; s[i] != '\0'; i+=2, j++)
{
t[j] = s[i] -'0';
if (s[i+1] == '\0')
break;
t[j] = t[j] * 10 + s[i+1] - '0';
}
j++;
printf("%d number get in total.", j);
printf("They are:");
for(k=0; k<j; k++)
printf(" %d", t[k]);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要什么样的程序啊,这个首先得有个目的吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询