| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1613 人关注过本帖
标题:Primer Plus C中的一道题。
只看楼主 加入收藏
coffeefcy
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-9-28
收藏
 问题点数:0 回复次数:13 
Primer Plus C中的一道题。
大家好,我刚刚学C语言不到一个月,做Primer Plus C的编程题时候,遇到一个问题。
题目如下:
编写一个程序,此程序要求输入一个整数,然后打印出从(包括)输入的值到(包括)比输入的值大10的所有整数值,(也就是说,如果输入为5,那么输出就是从5到15)。要求在各个输出值之间用空格,制表符,或者换行符分开。
我这么写的:
#include<stdio.h>

int main(void)
{
    int a;
    int b=a+10;
    printf("Please enter a value:");
    scanf("%d",&a);
    while(a++<=b)
    {
                  printf("%d\n",a);               
                  }
     printf("over");
                  
     return 0;
     }            
结果是不管输入多少,都打印到13就没了。
我用的编译器是Dev-C++
这题应该是比较弱智的题吧...怎么做呢?
小弟问问大家啦!
谢谢大家帮忙!
搜索更多相关主题的帖子: Plus Primer 
2008-09-28 14:20
守鹤
Rank: 4
来 自:山東臨沂
等 级:贵宾
威 望:12
帖 子:337
专家分:0
注 册:2008-6-20
收藏
得分:0 
#include<stdio.h>

int main(void)
{
    int a;
   
    printf("Please enter a value:");

    scanf("%d",&a);

    int b=a+10;

    while(a++<=b)
    {
                  printf("%d\n",a);               
                  }
     printf("over");
                  
     return 0;
     }

多少个日日夜夜想起你,只希望有缘再次相见
2008-09-28 14:39
coffeefcy
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2008-9-28
收藏
得分:0 
哦哦哦..
领悟了,领悟了...
多谢斑竹大人!
以后我有问题会常来的!
谢谢!
2008-09-28 14:47
victorwyc
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2008-9-28
收藏
得分:0 
错了
#include<stdio.h>

int main(void)
#include<stdio.h>

int main(void)
{
    int a;
   
    printf("Please enter a value:");
    scanf("%d",&a);
    int b=a+10;
    while(++a<=b)//应为++a
    {
      printf("%d\n",a);               
     }
     printf("over");
                  
     return 0;
     }
2008-09-29 12:43
yuezhuying
Rank: 2
等 级:论坛游民
帖 子:115
专家分:10
注 册:2008-9-13
收藏
得分:0 
int b = a + 10;
这个语句编译器提示出错,应该在int a;这句中定义b,改为int a,b;
同时int b = a + 10;中的int去掉。

若while括号中的是a++ <= b,则结果会多了个16
改为++a <= b,则正确结果。

以上是我运行前面两位的代码得出的结果。
2008-09-29 23:15
yuezhuying
Rank: 2
等 级:论坛游民
帖 子:115
专家分:10
注 册:2008-9-13
收藏
得分:0 
很奇怪,我用CFree和Win-TC则会提示int b = a + 10;出错,而Dev c++则不会报错。
2008-09-29 23:23
福尔摩斯
Rank: 5Rank: 5
等 级:贵宾
威 望:12
帖 子:4011
专家分:370
注 册:2006-8-15
收藏
得分:0 
[bo][un]yuezhuying[/un] 在 2008-9-29 23:23 的发言:[/bo]

很奇怪,我用CFree和Win-TC则会提示int b = a + 10;出错,而Dev c++则不会报错。

int b;

b = a + 10;

一些编译器不接受以变量为右值的初始化

自我放逐。。。
2008-09-30 06:58
小小熊宝宝
Rank: 2
来 自:江苏无锡
等 级:论坛游民
威 望:2
帖 子:183
专家分:38
注 册:2008-8-12
收藏
得分:0 
#include<stdio.h>
int main(void)
{
    int a,b;
    printf("Please enter a value:");
    scanf("%d",&a);    
    b=a+10;
    printf("%d\n",a);
    while(++a<=b)
    {
        printf("%d\n",a);
    }
    printf("over");
    return 0;
}

欢迎加入C语言交流群:43287755
2008-09-30 09:53
思考ING
Rank: 1
来 自:重庆
等 级:新手上路
帖 子:140
专家分:0
注 册:2008-3-12
收藏
得分:0 
如果Whilez中是a++<=b时,为什么会输出6到16?没有这一句:   printf("%d\n",a);

天生孤独的思考~~~~~~~~~
2008-09-30 10:53
小小熊宝宝
Rank: 2
来 自:江苏无锡
等 级:论坛游民
威 望:2
帖 子:183
专家分:38
注 册:2008-8-12
收藏
得分:0 
因为a++时,a自身加了1,所以当输入5时,a的值为6,所以printf输出的a=6,然后加10就变成输出到16了

欢迎加入C语言交流群:43287755
2008-09-30 17:18
快速回复:Primer Plus C中的一道题。
数据加载中...
 
   



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

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