| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1361 人关注过本帖
标题:求助两个问题
只看楼主 加入收藏
miss_you
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-10-23
结帖率:0
收藏
已结贴  问题点数:20 回复次数:17 
求助两个问题
  大家好,我是软件工程专业的大一新生,正在学习C语言,想问两个问题。
  输入一个只包含0和1的二进制数(不确定多少位,但至多5位),打印出相应的十进制数。(注意,各个位的初值的选定技巧)
 这题要怎么做啊?
  写一个程序,提示输入两个整数a,b,若a2+b2>100,则输出a2+b2的百位以上数字,否则直接输出a2+b2的和。(注意,值可能的范围)(那个a2,b2是a的平方b的平方的意思)
我的程序是:#include <stdio.h>
void main()
{
    long x,y,t;
    printf("请输入两个整数\n");
    scanf("&ld&ld",&x,&y);
    t=x*x+y*y;
    if(t>100)
    printf("%ld\n",t/100);
    else
        printf("%ld\n",t);
}
为什么输入两个10后结果是13743895,不是应该是2吗?
希望各位热心的高手能给我这个刚入门的菜鸟一点指导,谢谢了!


[ 本帖最后由 miss_you 于 2009-10-23 13:57 编辑 ]
搜索更多相关主题的帖子: 软件工程 学习 大一新生 include 二进制 
2009-10-23 13:56
leepro
Rank: 2
等 级:论坛游民
帖 子:25
专家分:37
注 册:2009-10-23
收藏
得分:1 
scanf("&ld&ld",&x,&y);改成:   scanf("%ld%ld",&x,&y);
你把%写成&了
2009-10-23 14:21
bodyactione
Rank: 2
等 级:论坛游民
帖 子:46
专家分:15
注 册:2009-10-20
收藏
得分:1 
第一个我也不会~~会第2个发给你看哈~~调试了的
main(){
long a,b,c;
 
int d;
     
        printf("pleaes a b:");
scanf("%ld%ld",&a,&b);
    c=a*a+b*b ;
   if(c>=100) {
     
    d=c/100;
printf("%d",d);
}
   else  
  printf("%ld",c);
 
 
   }
2009-10-23 14:23
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:1 
scanf("%ld%ld",&x,&y);
2009-10-23 14:23
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:1 
你定义的三个变量是long类型,其实这种类型的变量时long int,还有就是你的输入字符写错了,&应该是%,

愿用余生致力编程
2009-10-23 15:57
赵俊伟
Rank: 2
来 自:山东济南
等 级:论坛游民
帖 子:16
专家分:17
注 册:2009-10-20
收藏
得分:1 
刚调试了你的第一个程序:
#include<stdio.h>
void main()
{
    int a,b=0,c=0;
     printf("请倒序输入二进制数各位,每输入一位按回车\n");
     printf("输入2,按回车结束\n2");
    while(b==0||b!=0)
    {
        scanf("%d",&a);
        if(a>2)
        {
            printf("输入错误请重新输入\n");
           continue;
        }
        if(a==2)
            break;
        b=a*a^c+b;
        c++;
 
    }
    printf("%d",b);
}
感觉这个程序不够人性化,哪位高手再帮忙改进一下???
2009-10-23 17:22
miss_you
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-10-23
收藏
得分:0 
回复 5楼 我菜119
可是long int不是也可以写成long吗?
2009-10-23 19:46
miss_you
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-10-23
收藏
得分:0 
谢谢大家,第二题解决了,可是第一题还是不会啊,6楼的程序我看不懂,还有啊,我们学习的时间不长,谭浩强的《C程序设计》才刚开始学第5章,应该不需要太复杂的解法的,请问有高手能帮帮忙吗?
2009-10-23 20:01
玩出来的代码
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:河南新乡
等 级:贵宾
威 望:11
帖 子:742
专家分:2989
注 册:2009-10-12
收藏
得分:1 
#include<stdio.h>
#include<conio.h>
#include<math.h>
void main()
{
    long n=0;
    int i=0,j,w=0;
    char ch;
    printf("输入一个二进制数");
    while((ch=getchar())!='\n')
        {  n=n*10+ch-'0';
           i++;
         }
       printf("%d %d ",i,n);     /*输出二进制的位数和变换成整数后的数值*/
       for(j=0;j<i;j++)
        {
            w+=n/pow(10,i-1-j)*(int)pow(2,i-1-j);   /*依次取n的最高位到最低位*/
             n=n%(int)pow(10,i-1-j);
       }
         printf("%d",w);
       getch();
   }

离恨恰如春草,更行更远还生。
2009-10-23 20:45
miss_you
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2009-10-23
收藏
得分:0 
我刚想到一个:
#include <stdio.h>
void main()
{
    int i,x,t=10,f=1,sum=0,a[6]={0};
    printf("请输入一个不超过5位的2进制数\n");
    scanf("%d",&x);
    for(i=1;i<=5;i++,t=t*10,f=f*2)
    {
        a[i]=10/t*((x%t)-x%(t/10)); /*将该二进制的第i位数输入到a[i]中*/
        a[i]=a[i]*f;                /*将a[i]在二进制中代表的数值转化为十进制中代表的数值*/
        sum=sum+a[i];
    }
    printf("该数相应的十进制数为%d\n",sum);
}                可是好像还是不对,如输入1010结果是0啊,错在哪里?
2009-10-23 21:03
快速回复:求助两个问题
数据加载中...
 
   



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

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