二进制转10进制 调用函数数组 成功运行
本帖最后由 ftmovie 于 2018-1-3 19:47 编辑#include <stdio.h>
#include <string.h>
int zh( char str[])
{
int sum = 0;/*定义总值*/
int j = 1;/*交换数值*/
int pot = strlen(str) - 1;/*把str数组值先减一*/
for (; pot >= 0; pot--) /*循环 pot值 每次减一*/
{
sum += (str - '0')*j;
j*=2;/*每次j都乘2*/
}
return sum;
}
int main()
{
int result;
char a;
scanf_s("%s",a,10);
result = zh(a);
printf("thit is number %d\n",result);
return 0;
}
在这里重点说一下scanf_s这个参数 如果要输入数据存到数组一定要加上大小不然会出错 是二进制转10进制
#include <stdio.h>
#include <string.h>
int zh(char str[])
{
int sum = 0;/*定义总值*/
int j = 1;/*交换数值*/
int pot = strlen(str) - 1;/*把str数组值先减一*/
for (; pot >= 0; pot--) /*循环 pot值 每次减一*/
{
sum += (str - '0')*j;
j*=2;/*每次j都乘2*/
}
return sum;
}
int main()
{
int result;
char a;
printf("please input 1001 number ");
scanf_s("%d",a);
result= zh(a);
printf("thit is number %d\n",result);
return 0;
}
把result= zh(a); 改成实参 result= zh("1101");
编译的时候就不会出错
不然会提示 严重性 代码 说明 项目 文件 行 禁止显示状态 错误(活动) "char" 类型的实参与 "char *" 类型的形参不兼容 1
严重性 代码 说明 项目 文件 行 禁止显示状态 错误 C2664 “int zh(char [])”: 无法将参数 1 从“char”转换为“char []” 1 #include <stdio.h>
#include <string.h>
int zh(char str[])
{
int sum = 0;/*定义总值*/
int j = 1;/*交换数值*/
int pot = strlen(str)-1;/*把str数组值先减一*/
for (; pot >= 0; pot--) /*循环 pot值 每次减一*/
{
sum += (str - '0')*j;
j*=2;/*每次j都乘2*/
}
return sum;
}
int main()
{
int result;
char a={0};
printf("please input 1001 number ");
scanf("%s",a);
result= zh(a);
printf("thit is number %d\n",result);
return 0;
}
估计意思差不多是这样。求的是各个位数乘 j 再相加的和 a没有定义为数组。 for (; pot >= 0; pot--) /*循环 pot值 每次减一*/ 这个for第一个参数能为空? 楼主这个是要实现什么功能? 看楼主子函数是传的数组,但是主函数中定义的a却是单个字符而不是一个数组,还有就是printf,虽然只是一个提示,不过没懂为嘛楼主写的是number,怎么又变成数字了呢 丸子吃枣药丸 发表于 2017-12-31 23:46
for (; pot >= 0; pot--) /*循环 pot值 每次减一*/ 这个for第一个参数能为空?
这里可以的,第一个代表的是循环的入口,前面在求数组长度时相当于已经给pot初始化了 从楼主写的是有返回值的函数和输出用的%d来看,楼主的意思应该是定义int型数组吧,int a],至于那个循环里面不知道为嘛楼主有个减去串节字符的操作,如果这里把减去串节字符去掉,a定义为int型的数组,我倒是可以理解为这个是把二进制转化为十进制的操作,楼主现在这种写法我的确是没看懂,希望楼主可以说明一下想要实现的功能 char a;
printf("please input 1001 number ");
scanf_s("%s",a);这样改 本帖最后由 pmc 于 2018-1-1 00:20 编辑
klamauk 发表于 2018-1-1 00:09
#include
#include
int zh(char str[])
这里为嘛要减去串节字符呢,我记得用到串节字符的就只有字符型数组了,比如说数组的第五项就是a,没有什么减'0'的操作吧,具体的我没查过,但是int型数组应该是没有串节字符
页:
[1]
2