| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 950 人关注过本帖
标题:VS2008运行C后不同结果!(已解决问题1)
只看楼主 加入收藏
lrsummer
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-27
收藏
 问题点数:0 回复次数:9 
VS2008运行C后不同结果!(已解决问题1)
本人刚接触C,现在碰到个问题,希望有人来帮忙,在线等,谢谢
问题一:VS2008运行,求输入的数字之和,但是第一段代码能正确求出,第二段代码得出的不知道是什么值,望人解答!(已解决!)
问题二:第9行代码是什么意思?他为什么不等价于:

        scanf("%ld",&num);
        status = num;

是否可以这样来理解: 如果scanf读入一个整数,则将这个整数存入num中,并返回值1,(为什么会返回值1,不返回其他值?)。是否是因为前面定义的num为一个整形变量,如果scanf读入的是一个整数,那么整个语句是否就是一个判断语句?假如读入了一个整数,则scanf为真,即返回值1,否则为假,返回值0(隐藏了bool语句?)
------------------------------------------------------------------------
#include <stdio.h>

int main(void)
{
    long num;   //定义长整型变量 num
    long sum = 0L;  //定义长整型变量 sum 并把其值初始化为0
    int status;  //定义整型变量 status

    printf("Please enter an integer to be summed. ");
    printf("q to quit): ");
    status = scanf("%ld", &num);    //第9行   
    while (status == 1) //循环条件 status == 1
    {
        sum = sum + num;
        printf("Please enter next integer (q to quit); ");
        status = scanf("%ld", &num);
    }
    printf("those integers sum to %ld.\n",sum);
   
    return 0;
}

-----------------------------------
/*
Please enter an integer to be summed. q to quit): 1
Please enter next integer (q to quit); 2
Please enter next integer (q to quit); 3
Please enter next integer (q to quit); q
those integers sum to 6.
请按任意键继续. . .
*/
--------------------------------------------

--------------------------------------------------------------------------------
#include <stdio.h>

int main(void)
{
    long num;
    long sum = 0L; //写在数字后面,指定数字的类型。  但是完全没有必要
  int status;

    printf("请在键盘上输入为整数的数字");
    printf("请按q键退出。\n");
    status  = scanf("%ld", &num);

    while (status == 1)
    {
        sum = sum + num;
        printf("请继续输入为整数的数字:");
        status  = scanf("%ld", &num);
    }
    printf("所输入的整数的和为:%ld。\n", &sum);  //此处应为 sum  ,感谢4楼指点,拜谢!

    return 0;
}

-------------------------------
/*
请在键盘上输入为整数的数字请按q键退出。
1
请继续输入为整数的数字:2
请继续输入为整数的数字:3
请继续输入为整数的数字:q
所输入的整数的和为:3472344。
请按任意键继续. . .
*/
---------------------------------

[ 本帖最后由 lrsummer 于 2011-10-28 07:47 编辑 ]
搜索更多相关主题的帖子: status 在线 
2011-10-27 21:31
GeBron
Rank: 2
等 级:论坛游民
帖 子:23
专家分:33
注 册:2011-4-14
收藏
得分:0 
是要实现若干个证书相加,按q退出吗?
2011-10-27 21:38
lrsummer
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-27
收藏
得分:0 
回复 2楼 GeBron
是得,但是第二段的代码出来的数字,完全不知道怎么来的,并且这个数字还是变动的
2011-10-27 21:44
zero0915
Rank: 2
等 级:论坛游民
帖 子:20
专家分:47
注 册:2011-10-23
收藏
得分:0 
sum的地址。。
2011-10-27 21:49
lrsummer
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-27
收藏
得分:0 
回复 4楼 zero0915
谢谢,看来还是马虎。找了半天没找出来
这难道是得出的个地址值?
2011-10-27 21:51
GeBron
Rank: 2
等 级:论坛游民
帖 子:23
专家分:33
注 册:2011-4-14
收藏
得分:0 
程序代码:
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    char c[1];int sum = 0;

    printf("Enter an integer, Press 'q' to quit:\n");
    while ((*c = getchar()) != 'q')
    {
        sum = sum + atoi(c);//atoi:把字符串转换成整型数,array to integer
    }

    printf("%d\n",sum);

    return 0;
}
2011-10-27 22:06
zero0915
Rank: 2
等 级:论坛游民
帖 子:20
专家分:47
注 册:2011-10-23
收藏
得分:0 
&是取地址符  你可以调试下看看 &sum的值转成10进制是不是最后打印出来的
2011-10-27 22:07
lrsummer
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-27
收藏
得分:0 
回复 6楼 GeBron
都厉害,还能这么写。
2011-10-27 22:17
lrsummer
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2011-10-27
收藏
得分:0 
回复 7楼 zero0915
谢了!
2011-10-27 22:17
GeBron
Rank: 2
等 级:论坛游民
帖 子:23
专家分:33
注 册:2011-4-14
收藏
得分:0 
回复 8楼 lrsummer
如果不是按q或者别的字母退出,而是输入小于0时输入结束的话,按照你写的就可以完成。
2011-10-27 22:21
快速回复:VS2008运行C后不同结果!(已解决问题1)
数据加载中...
 
   



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

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