matlab安装后闪退:c语言的问题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/07 19:19:50
假如我输入一个任意的整数!如:13423
用C怎么才能分离成1,3,4,2,3
这个是任意位数的整数!
请高手写写哈!
谢谢咯哈!
初学者

这个呀 呵呵 你可以使用这样的的模式

int i,j,num,arr[8];
scanf("%d",&num);
for (i=0;i<8;i++)
{
arr[i]=num%10;
num=num/10;
if (num==0)
break;
else
j++;
}
用数组实现,j为输入数的位数!

楼上的方法很好
arr[i]=num%10;/*分离出最后一位*/
num=num/10;/*右移一位*/

但是数组输出要逆序输出吧,而且arr[8]={0}应该初始化,否则会出现随机数
j也应该初始化j=0,++j应放到if之前,因为右移到就剩一位的时候,这一位确实算作一位,不能因为右移后num为0就忽略这最后一位

#include <stdio.h>
void main(){
int i,j=0,num,arr[8]={0};
scanf("%d",&num);
for (i=0;i<8;i++){
arr[i]=num%10;
num=num/10;
++j;
if(num==0) break;
}
printf("%d\n",j);
for(;j>=1;--j) printf("%d\t",arr[j-1]);
}

这个很简单嘛~~~~~呵呵
我先给简单地说一下编程思想:不知道你有没有学过连表,如果学过的话,在程序设计上就会比较简单,如果没有也不要紧,就用数组也可以。基本思想就是,使用%,在C中就是取余,不管你有多大的数,每次取10的余数,然后再取10的整数就可以。我们可以使用以下几种方式来实现:连表(要使用双向连表)、栈、数组。现在以数组为例作答。
#include <stdio.h>
#define Max 10;//设置一维数组的最大维数
int Result[Max],Number;//Number为数组存在数的个数
void Swap()//将Result中数倒过来。
{ int i,Temp;//i作为控制变量,Temp作为中间过度变量
for(i=0;i<=Number/2;i++){
Temp=Result[Number-i];
Result[Number-i]=Reuslt[i];
Result[i]=Temp;
}
}
//
void Execute(int N){
int Float;
if(N==0);//EXIT
else {
Float=N%10;Number++;
}
Execute(N/10);
}
//
void Init(void){
int i=0;
whlie(i!=Max)Result[i]=0;
}
//
void Print(void){
int i=0;
while(i!=Number)printf("%d ",Result[i]);
printf("\n");
}
//
void main(){
int N;
printf("input a int:");
scandf("%d\n",&N);
Init();
Exeute(N);
Swap();
printf("the result following:\n");
Print();
}
大概就是这样了,可能会有一些错误,因为我没有经过编译器进行编译,在线写的。

#include<iostream.h>
void main()
{
int N,i=0,j;
int n[50];
int *t=n;
cout<<"Please input DATA:"<<endl;
cin>>N;
cout<<"原来的数是:"<<N<<endl;
while(N!=0)
{
n[i]=N%10;
N=N/10;
i++;
}
cout<<"现在的字符窜是:";
for(j=0;j<i;j++)
cout<<t[j];
cout<<endl;
}
这样就可以了啊!

你循环用getchar,把返回的值转为int型,就可以直接得到分离的数字了。 注意的是要判断循环输入结束的判定,比如回车。