标题:怎么取消重复显示的标题
只看楼主
qq336
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-10-17
得分:0 
回复 10楼 apull
start = a;
    if (a > b) {      //交换a,b,                                                            
        a = b;         //start=a;  前面已经赋值,这里忽略
        b = start;
    }
这里如果输入的a > b, if语句运行之后感觉应该只是a和b调换了,start没有换啊,还是大的那个值




[此贴子已经被作者于2021-10-18 15:37编辑过]

2021-10-18 15:10
qq336
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-10-17
得分:0 
回复 10楼 apull
start = a;
    if (a > b) //交换a,b,
    {
        //start=a;  前面已经赋值,这里忽略
        a = b;
        b = start;
    }
这个调换是有问题的,如果输入的a>b,这个只是把a和b调换了,start还是大的那个值。
输入的是3和1,出来的值是却是3。
在这个代码下面再对start重新赋值就没这个问题了
    start = a;
    if (a > b) //交换a,b,
    {
        //start=a;  前面已经赋值,这里忽略
        a = b;
        b = start;
    }
    start = a;

你看看我分析的对不对?

[此贴子已经被作者于2021-10-18 15:34编辑过]

2021-10-18 15:32
qq336
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-10-17
得分:0 
回复 10楼 apull
下面是我用另一种方法实现的,请帮看看,这2种(和你的那种)思路那种运行效率更高,内存占用更低,哪种更好(我是新手,不懂)
#include<stdio.h>
#include<stdlib.h>
//求任意两个整数之间所有整数之和(输入的2个整数不能相等)
int leijia(int start, int end) {                               //累加器,输入start不能比end大
    int sum = 0;
    while (start <= end) {
        sum = sum + start;
        start++;
    }
    return sum;
}
int dayin(int k, int l) {
    printf("请输入第一个整数:"); scanf_s("%d", &k);
    printf("请输入第二个整数:"); scanf_s("%d", &l);
    if (k == l) {
        printf("错误:两数相等,请重新输入!\n");
        dayin(k, l);
    }
    else {
        if (k < l) {                                                                     
            printf("大于等于%d小于等于%d的所有整数的和是%d。\n", k, l, leijia(k, l));         //小数在前
        }
        else {
            printf("大于等于%d小于等于%d的所有整数的和是%d。\n", l, k, leijia(l, k));         //小数在前
        }
    }
    return 0;
}
int main(int k, int l) {
    printf("求任意两个整数之间所有整数和(输入的2个整数不能相等):\n");
    printf("请输入两个整数。\n");
    dayin(k, l);
    system("pause");
    return 0;
}

[此贴子已经被作者于2021-10-18 15:53编辑过]

2021-10-18 15:50
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:0 
不建议用
if (k == l) {
        printf("错误:两数相等,请重新输入!\n");
        dayin(k, l);
    }
这种方式,这成了递归,递归的开销不小的。
2021-10-18 20:55
qq336
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-10-17
得分:0 
回复 14楼 apull
就刚学递归,谢谢提醒,尽量不用
2021-10-18 21:17



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-507195-1-1.html




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

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