我又回来了!最近一直在复习考试,c语言很少研究了,翁老的c语言入门才看到了指针,而且还是一脸懵逼,刚做习题用指针,主要是想从调用函数返回函数值出来,结果error!!ok!No problem!
回归正题!为了完成练习,直接在调用函数输出了!不过还能用在main对数组进行遍历,只不过条件需sizeof数组长度,才能有效遍历数组,明天试试,先睡啦~~
以下就是这次习题啦~
附上我的代码吧
#include <stdio.h>
//高精度小数
int Mod(int a, int b ,int mod[]); //先声明Mod函数,让程序知道有这个函数!
int main ()
{
const int number = 200; //定义数组长度为const 200;
int mod[number]; //定义一个余数mod数组(200);
int a,b; // 定义 被除数 a ; 除数 b;
int count,i; //定义count调用函数Mod,i是之前用来遍历数组;
scanf("%d/%d",&a,&b); // 输入 被除数 a /除数 b;
printf("0."); //先输出0.之后的就是小数位
count=Mod(a,b,mod); //调用Mod函数,传值进去;
return 0;
}
int Mod(int a, int b ,int mod[]){ //定义类型为 int 的Mod函数(int ,int,int mod[])--->参数表;
int i,j,k; //定义 i(余数) ,j(数组序号),k(除数)
j = 0; //j 初始值为0 ----> mod[0]开始
i=10*a; //用余数乘以10再除以除数
for(;j<200;){ //for循环只有j<200 判断条件 -----> j(max)==199 --->mod[199]
k=i/b; //输出结果;
i%=b; //得到余数;进行以下判断
if(j<=200&&i!=0){ //判断条件j不超过200,并且余数不等于0,等于0就结束!
mod[j]=k; //赋值数组;
// printf("mod[%d]=%d\n",j,mod[j]); //for test
printf("%d",mod[j]); //输出数组
j++; //j++ 向下一个数组赋值
i*=10; //让余数乘以10,再除以除数
}else if(i==0) { //嵌套if-else-if 判断余数是否为0;为有限不循环小数
mod[j]=k; //赋值数组;
// printf("mod[%d]=%d\n",j,mod[j]); //for test;
printf("%d",mod[j]); //输出最后一位数
break; //跳出循环
}
}
return 0; //返回0!
}
首先,我错误地想成了以余数输出,因为16/19:160/19->8余8
80/19->4余4,就是这样的例子,复杂化了运算,还是附上我的错误代码吧,不过还是过了两个测试点。。
int Mod(int a, int b ,int mod[]){ //定义类型为 int 的Mod函数(int ,int,int mod[])--->参数表;
int i,j,k; //定义 i(余数) ,j(数组序号),k(除数)
j = 0; //j 初始值为0 ----> mod[0]开始
i=10*a; //用余数乘以10再除以除数
for(;j<200;){ //for循环只有j<200 判断条件 -----> j(max)==199 --->mod[199]
k=i/b; //输出结果;
i%=b; //得到余数;进行以下判断
// if(i>9){ //以下注释是我搞错方向,试图以余数输出,再以余数做运算判断
// int t=i%10;
// mod[j]=t;
// printf("mod[%d]=%d\n",j,mod[j]);
// j++;
// }else if(i==0){
// return ;
// }
if(j<=200&&i!=0){ //判断条件j不超过200,并且余数不等于0,等于0就结束!
mod[j]=k; //赋值数组;
// printf("mod[%d]=%d\n",j,mod[j]); //for test
printf("%d",mod[j]); //输出数组
j++; //j++ 向下一个数组赋值
i*=10; //让余数乘以10,再除以除数
// if(i<=b){ //以下注释是我搞错方向,试图以余数输出,再以余数做运算判断
// mod[j]=0;
// i*=10;
// j++;
// printf("mod[%d]=%d\n",j,mod[j]);
// j++;
// }
}else if(i==0) { //嵌套if-else-if 判断余数是否为0;为有限不循环小数
mod[j]=k; //赋值数组;
// printf("mod[%d]=%d\n",j,mod[j]); //for test;
printf("%d",mod[j]); //输出最后一位数
break; //跳出循环
}
}
return 0; //返回0!
}