LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 918|回复: 2

[求助]使用notepad查看vi文本出现问题,求解。

[复制链接]
发表于 2006-4-5 13:40:52 | 显示全部楼层 |阅读模式
编辑了如下小程序(数制转换),但遇到了问题,需要拿到wndows下给导师过目,结果notepad查看vi文本变异的离谱,现将之贴下:

#include<stdio.h>
#define O "Octal"
#define H "Hexadecimal"
#define B "Binary"
#define D "Dcimalization"
main()
{
char key;
printf("1.Calculate\n2.Transfrom\n");
scanf("%c",&key);
switch(key)
        {
        case 'c':;break;
        case 't':printf("You choice T, and then you want:\n");transform();break;
        default:printf("error");
        }
}
transform()
{
char keyS,keyO;
int source=0;
printf("From:\n1.%s\n2.%s\n3.%s\n4.%s\n",D,B,H,O);
scanf("%c",&keyS);        /* error found begin */
switch(keyS)
        {
        case 'd':scanf("%d",&source);break;
        case 'b':source=dbcalc(source);break;
        case 'h':scanf("%x",&source);break;
        case 'o':scanf("%o",&source);break;        /* erroe found end */
        default:printf("error");
        }
printf("To:\n1.%s\n2.%s\n3.%s\n4.%s\n",D,B,H,O);
scanf("%c",&keyO);
switch(keyO)
        {
        case 'd':printf("%d",source);break;
        case 'b':printf("%d",dbcalc(source));break;
        case 'h':printf("%x",source);break;
        case 'o':printf("%o",source);break;
        default:printf("error");
        }
}
dbcalc(int source)
{
float order;
char group[12];
if(source=='\0')        /* none operate for b->d */
        {
        printf("check %s number again:\nsource=",B);
        int level=0;
        int round=0;
        char lock;        /* lock only point but not usful now */
        for(;group[level]!='\0';level++)        /* get group[] level */
                scanf("%c",&group[level]);
        int tmp=level;
        for(;level>0;level--)
                {
                if(group[level]=='.')
                        {
                        int a=tmp-level,b=level+1;
                        int GroupA[a],GroupB;
                        lock='y';
                        if(lock!='y')
                                {
/* two arithmetic for Binary variable with point */
                                for(;a>0;a--)
                                        {
                                        GroupA[a]=group[a];
                                        if(GroupA[a]=='1')
                                                {
                                                order+=power(2,round);
                                                round++;
                                                }
                                        else round++;
                                        }
                                for(;b<tmp;b++)
                                        {
                                        GroupB[tmp-b]=group;
                                        round=0;
                                        if(GroupB=='1')
                                                {
                                                order+=power(2,round);
                                                round++;
                                                }
                                        }
                                }
                        else printf("real number error!");
                        break;
                        }
                else if(group[level]=='1')
                        {
                        order+=power(2,round);
                        round++;
                        }
                else round++;
                }
        }
else order=source;        /* d->b */
return order;
}
power(int dat,int round)
{
int order=dat;
for(;round>=0;round--)
        order*=dat;
return order;
}




------------------------------------------------

恩?怎么又能复原了?奇怪……
既然复原了,就麻烦各位看看,出错在哪里?

输出出错的地方都标上了“error found".
不过实际上,我还不知道下半部分是否正确,因为那些错误让下半部分不能继续了。
发表于 2006-4-6 13:31:59 | 显示全部楼层
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-4-6 16:40:53 | 显示全部楼层
谢谢!正在试验,成功之后我会写出心得!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表