标题:怎么取消重复显示的标题
取消只看楼主
qq336
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-10-17
结帖率:0
已结贴  问题点数:10 回复次数:8 
怎么取消重复显示的标题
程序目的:求任意两个整数之间所有整数之和(输入的2个整数不能相等)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

//求任意两个整数之间所有整数之和(输入的2个整数不能相等)
int biaoti(){
printf("求任意两个整数之间所有整数和(输入的2个整数不能相等):\n");     //给出计算目的
puts("请输入两个整数。");                                                //等同于printf("请输入两个整数。\n");
return 0;
}
int main(void)                     
{
    int a, b, n1, n2;
    int sum = 0;                                                          //初始化sum
    biaoti();                                                             //输出标题
    printf("整数a:"); scanf_s("%d", &a);
    printf("整数b:"); scanf_s("%d", &b);
    if (a == b) {                                                         //当a=b时,不执行程序   
   
    }else {
    do {
        
        if (a < b)
            n1 = a, n2 = b;
        else if (a > b)
            n1 = b, n2 = a;
    } while (a == b);

    do {
        sum = sum + n1;
        n1 = n1 + 1;
    } while (n1 <= n2);
    }
    if (a == b) {
        printf("错误:两数相等,请重新输入!\n");                        //puts只能输出设定好的语句,不能输出返回的计算值
        main();
    }else {
    if (a < b)
        printf("大于等于%d小于等于%d的所有整数的和是%d。 \n", a, b, sum);
    else
        printf("大于等于%d小于等于%d的所有整数的和是%d。 \n", b, a, sum);
    }
    return 0;
}
但是运行时当输入了2个相等的数之后,会再输出一遍标题,这里想取消再输标题,直接转到这里
    printf("整数a:"); scanf_s("%d", &a);
    printf("整数b:"); scanf_s("%d", &b);
搜索更多相关主题的帖子: printf sum 标题 输入 整数 
2021-10-17 15:48
qq336
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-10-17
得分:0 
回复 3楼 自由而无用
这个代码确实简单些,不过我的功能要多些:
1.判断输入的2个数是否相等,如果相等,返回重新输入;
2.输出的语句中小数在前,大数在后;
2021-10-17 22:19
qq336
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-10-17
得分:0 
回复 3楼 自由而无用
综合一下:
#include<stdio.h>
#include<stdlib.h>


//求任意两个整数之间所有整数之和(输入的2个整数不能相等)
int biaoti() {
    printf("求任意两个整数之间所有整数和(输入的2个整数不能相等):\n");     //给出计算目的
    puts("请输入两个整数。");                                                //等同于printf("请输入两个整数。\n");
    return 0;
}
int main(void)
{
    int a, b, start, end;
    int sum = 0;                                                          //初始化sum
    biaoti();                                                             //输出标题
    printf("整数a:"); scanf_s("%d", &a);
    printf("整数b:"); scanf_s("%d", &b);
    if (a < b) {
        start = a; end = b;
    }
    else {
        start = b, end = a;
    }
    while (start <= end) {
        sum = sum + start;
        start = start + 1;
    }
    if (a == b) {                                                  //如果输入的2个整数相同,则显示错误,返回重新输入
        printf("错误:输入的2个整数相等,请重新输入!\n");
            main();
    }
    else {                                                         //否则,判断大小,小的在前,大的再后,再显示计算值
        if (a < b) {
            printf("%d和%d之间所有整数和为:%d\n", a, b, sum);
            system("pause");                                       //计算结果显示后,有任意输入再退出
        }else{
        printf("%d和%d之间所有整数和为:%d\n", b, a, sum);
        system("pause");                                           //计算结果显示后,有任意输入再退出
        }
    }
    return 0;
}  
2021-10-17 22:20
qq336
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-10-17
得分:0 
回复 3楼 自由而无用
我问的怎么取消 输入相同数后  重复输出标题的问题?
2021-10-17 22:21
qq336
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2021-10-17
得分:0 
回复 7楼 自由而无用
我刚学,你写的这个还看不懂。请问怎么能在输入相同的数后不再输出标题呢?
2021-10-18 09:47
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
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.016832 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved