请问这段代码为何不能实现预期功能

来源:百度知道 编辑:UC知道 时间:2024/05/04 22:42:45
#include<iostream.h>
int jk(int a,int b);
void main()
{
int c,i,s;
s=0;
for(i=7;i>=0;i--)
{
cin>>c;
if(c==1)
{
s=s+jk(2,i);
}

}cout<<s;
}
int jk(int a,int b)
{
int val;
val=1;
for(b;b>=1;b--)
val=val*a;
return(val);

}
我是刚学函数的新手,想让上述程序能实现 输入一个8位二进制数,转换为十进制数 并且输出结果.但是代码有错误,请问如何修改.
希望能帮忙的大侠将更正后的代码公布,谢谢.

没有问题。。
你输入的时候得用空格或回车隔开每个数才行。
如输入:1 0 0 0 0 0 0 0
输出:128
或输入为:
1
0
0
0
0
0
0
0
输出也为:128
另外你只对1进行了处理,你输入的数中可以出现0 1 以外的数,其中不为1的数都未进行处理。。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <errno.h>
#include <stddef.h>

#define INITSIZE 20 /* 顺序表初始空间分配量 */
#define INCREMENT 10 /* 顺序表空间分配增量 */
/* 清空输入缓冲 */
#define flush_stdin() { int c; while ( ( c = getchar() ) != '\n' && c != EOF ); }

typedef char ElemType; /* 定义ElemType代表的数据类型 */

typedef struct {
ElemType *elem; /* 存储空间基址 */
size_t length; /* 当前长度 */
size_t listsize; /* 当前空间分配量 */
int power; /* 存储乘方次数 */
char negflag; /* 正负标记 */
} Sqlist;

void InitList( Sqlist * ); /* 创建顺序表 */
short InputList(S