| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 713 人关注过本帖
标题:程序可运行但提示有错,请高手帮看看
只看楼主 加入收藏
llp108
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-11-15
结帖率:25%
收藏
 问题点数:0 回复次数:7 
程序可运行但提示有错,请高手帮看看
将十六进制转换为十进制数 可以运行得出结果,但提示有错,帮看看 ,谢谢
#include "stdio.h"
#include "string.h"
#define N 16
main()
{int jiance(char,int);
void zhuanhuan(char,int);
long qiucifang(int);
char a[1000];
int b,c;
printf("请输入一个十六进制数:");
gets(a);
b=strlen(a);
c=jiance(a,b);
if(c==1)
   zhuanhuan(a,b);
}
int jiance(char A[],int B)  //检测是否输入错误
{int i,,j;
for(i=0;i<B;i++)
    if(!(A[i]>='0'&&A[i]<='9'||A[i]>='A'&&A[i]<='F'))
        {printf("输入错误!");
         j=0;break;}
    else
        j=1;      
return(j);
}
void zhuanhuan(char A[],int B)   //转换为十进制
{long Total=0;
int i,zhishu;
for(i=0,zhishu=(B-1);i<B;i++,zhishu--)
    switch(A[i])
     {case 'A':Total=Total+10*qiucifang(zhishu);break;
      case 'B':Total=Total+11*qiucifang(zhishu);break;
      case 'C':Total=Total+12*qiucifang(zhishu);break;
      case 'D':Total=Total+13*qiucifang(zhishu);break;
      case 'E':Total=Total+14*qiucifang(zhishu);break;
      case 'F':Total=Total+15*qiucifang(zhishu);break;
      default: Total=Total+(A[i]-'0')*qiucifang(zhishu);break}
printf("该数转换为十进制数为%ld.",Total);
}
long qiucifang(int Zhishu) //求16次方
{long total;
if(Zhishu==0)
   total=1;
else  
  if(Zhishu==1)
    total=N;
  else   
    total=N*qiucifang(Zhishu-1);
return(total);
}

[[italic] 本帖最后由 llp108 于 2007-12-8 23:54 编辑 [/italic]]
搜索更多相关主题的帖子: 运行 提示 
2007-12-08 22:47
beyond0702
Rank: 1
来 自: 桂 林
等 级:新手上路
帖 子:219
专家分:0
注 册:2007-11-17
收藏
得分:0 
可以运行得出结果了,还哪里来的错误?
我试 了一下,好多错,哪里能运行啊
2007-12-08 23:44
llp108
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-11-15
收藏
得分:0 
确实可运行啊
错误提示是主程序中 c=jiance(a,b);
                                        zhuanhuan(a,b);这两行各三个错误都是一样的
还有jiance()中int i,j;
       zhuanhuan()中long Total=0;

[[italic] 本帖最后由 llp108 于 2007-12-8 23:57 编辑 [/italic]]
2007-12-08 23:52
llp108
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-11-15
收藏
得分:0 
我又该了一下,为什么把char a[1000];int b变成全局变量就没事了,以前也遇到过类似情况,请那为老兄帮忙解释以下 万分感谢
#include "stdio.h"
#include "string.h"
#define N 16
char a[1000];int b;
main()
{int jiance();
 void zhuanhuan();
 long qiucifang(int);
 int c;
 printf("请输入一个十六进制数:");
 gets(a);
 b=strlen(a);
 c=jiance(a,b);
 if(c==1)
   zhuanhuan(a,b);
}
int jiance()
{int i,j;
 for(i=0;i<b;i++)
    if(!(a[i]>='0'&&a[i]<='9'||a[i]>='A'&&a[i]<='F'))
        {printf("输入错误!");
         j=0;break;}
    else
        j=1;      
 return(j);
}
void zhuanhuan()
{long Total=0;
 int i,zhishu;
 for(i=0,zhishu=(b-1);i<b;i++,zhishu--)
    switch(a[i])
     {case 'A':Total=Total+10*qiucifang(zhishu);break;
      case 'B':Total=Total+11*qiucifang(zhishu);break;
      case 'C':Total=Total+12*qiucifang(zhishu);break;
      case 'D':Total=Total+13*qiucifang(zhishu);break;
      case 'E':Total=Total+14*qiucifang(zhishu);break;
      case 'F':Total=Total+15*qiucifang(zhishu);break;
      default: Total=Total+(a[i]-'0')*qiucifang(zhishu);break;}// 在AScII表中字符数字AScII值从零开始//
 printf("该数转换为十进制数为%ld.",Total);
}
long qiucifang(int Zhishu)
{long total;
 if(Zhishu==0)
   total=1;
 else  
  if(Zhishu==1)
    total=N;
  else   
    total=N*qiucifang(Zhishu-1);
 return(total);
 }
2007-12-09 00:04
beyond0702
Rank: 1
来 自: 桂 林
等 级:新手上路
帖 子:219
专家分:0
注 册:2007-11-17
收藏
得分:0 
#include "stdio.h"
#include "string.h"
#define N 16
int jiance(char A[] ,int B);    //注意他们的参数要和你下面写的一样
void zhuanhuan(char A[] ,int B);   //把这些函数申明放在main外,不要放在里面
long qiucifang(int);

void main()
{
char a[100];
int b,c;
printf("请输入一个十六进制数:");
gets(a);
b=strlen(a);
c=jiance(a,b);  
if(c==1)
   zhuanhuan(a,b);
}
int jiance(char A[],int B)  //检测是否输入错误
{int i,j;
for(i=0;i<B;i++)
    if(!(A[i]>='0'&&A[i]<='9'||A[i]>='A'&&A[i]<='F'))
        {printf("输入错误!");
         j=0;break;}
    else
        j=1;      
return(j);
}
void zhuanhuan(char A[],int B)   //转换为十进制
{long Total=0;
int i,zhishu;
for(i=0,zhishu=(B-1);i<B;i++,zhishu--)
    switch(A[i])
     {case 'A':Total=Total+10*qiucifang(zhishu);break;
      case 'B':Total=Total+11*qiucifang(zhishu);break;
      case 'C':Total=Total+12*qiucifang(zhishu);break;
      case 'D':Total=Total+13*qiucifang(zhishu);break;
      case 'E':Total=Total+14*qiucifang(zhishu);break;
      case 'F':Total=Total+15*qiucifang(zhishu);break;
      default: Total=Total+(A[i]-'0')*qiucifang(zhishu);break;}
printf("该数转换为十进制数为%ld.",Total);
}
long qiucifang(int Zhishu) //求16次方
{long total;
if(Zhishu==0)
   total=1;
else  
  if(Zhishu==1)
    total=N;
  else   
    total=N*qiucifang(Zhishu-1);
return(total);
}
2007-12-09 00:29
beyond0702
Rank: 1
来 自: 桂 林
等 级:新手上路
帖 子:219
专家分:0
注 册:2007-11-17
收藏
得分:0 
俺可不清楚你了
我是在VC上运行的
你写的两个都不能运行
我改的那个就行
2007-12-09 00:33
llp108
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-11-15
收藏
得分:0 
j就你的程序为什么不能把声明放主函数中
2007-12-09 10:29
llp108
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2007-11-15
收藏
得分:0 
程序是在调用函数时出了问题,为什么就不能把声明和定仪数组放到主程序中
2007-12-09 10:32
快速回复:程序可运行但提示有错,请高手帮看看
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.026832 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved