ftmovie 发表于 2017-12-31 23:23

二进制转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这个参数  如果要输入数据存到数组一定要加上大小不然会出错

ftmovie 发表于 2018-1-1 19:34

是二进制转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       

klamauk 发表于 2018-1-1 00:09

#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 再相加的和

klamauk 发表于 2017-12-31 23:46

a没有定义为数组。

丸子吃枣药丸 发表于 2017-12-31 23:46

for (; pot >= 0; pot--) /*循环 pot值 每次减一*/   这个for第一个参数能为空?

pmc 发表于 2017-12-31 23:48

楼主这个是要实现什么功能?

pmc 发表于 2017-12-31 23:51

看楼主子函数是传的数组,但是主函数中定义的a却是单个字符而不是一个数组,还有就是printf,虽然只是一个提示,不过没懂为嘛楼主写的是number,怎么又变成数字了呢

pmc 发表于 2017-12-31 23:56

丸子吃枣药丸 发表于 2017-12-31 23:46
for (; pot >= 0; pot--) /*循环 pot值 每次减一*/   这个for第一个参数能为空?

这里可以的,第一个代表的是循环的入口,前面在求数组长度时相当于已经给pot初始化了

pmc 发表于 2018-1-1 00:04

从楼主写的是有返回值的函数和输出用的%d来看,楼主的意思应该是定义int型数组吧,int a],至于那个循环里面不知道为嘛楼主有个减去串节字符的操作,如果这里把减去串节字符去掉,a定义为int型的数组,我倒是可以理解为这个是把二进制转化为十进制的操作,楼主现在这种写法我的确是没看懂,希望楼主可以说明一下想要实现的功能

LYQingYe 发表于 2018-1-1 00:13

char a;
      
      printf("please input 1001 number ");
      scanf_s("%s",a);这样改

pmc 发表于 2018-1-1 00:15

本帖最后由 pmc 于 2018-1-1 00:20 编辑

klamauk 发表于 2018-1-1 00:09
#include
#include
int zh(char str[])

这里为嘛要减去串节字符呢,我记得用到串节字符的就只有字符型数组了,比如说数组的第五项就是a,没有什么减'0'的操作吧,具体的我没查过,但是int型数组应该是没有串节字符
页: [1] 2
查看完整版本: 二进制转10进制 调用函数数组  成功运行