简介 目录 评价 推荐
  • 慕粉7032152 16分钟前
    为啥不可以让num++是执行代码块?
    0回答·0浏览
  • 慕少5208752 3天前
    有什么问题

    第6行()里面""明显错了,你那个是中文的引号,输入法改成英文就好了

    1回答·10浏览
  • Astra_ 6天前
    在这道题的例子中,嵌套在if中的第一个if-else 条件是省略掉else了嘛? ​
    0回答·9浏览
  • Astra_ 6天前
    "%s\n"有什么用?
    0回答·5浏览
  • 慕粉9336486 2025-10-05
    为什么运行结果是101

    int a=100;

    printf("a=%d\n",--a);

    1回答·16浏览
  • sharkyyy 2025-10-03
    大佬们帮忙看看这有什么问题谢谢谢谢
    0回答·11浏览
  • sharkyyy 2025-09-28
    大佬们帮我看看怎么回事吧,谢谢
    0回答·12浏览
  • 慕前端0539364 2025-09-24
    如果没有return ,函数结果是什么?为什么输入m=0,1,2的时候x(m) 都是m值,可是输入m=-1的时候x(m)成了0?
    0回答·14浏览
  • 慕娘4226017 2025-09-20
    这个已经和参考代码一样了,为什么还是不能运行

    printf那一段括号后面的分号换一下英文输入法

    1回答·40浏览
  • 慕娘4226017 2025-09-20
    大神们这个有什么问题啊,看不出来啊

    闰年的定义不只是能被4整除

    1回答·33浏览
  • 慕前端0539364 2025-09-20
    为啥打印不出来矩形,只有一行
    #include<stdio.h>
    
    
    int main()
    {
    	int i,j,k;
    	for(i = 1; i <= 4; i++)
    	{
    		
    		for(j = 1; j <= 4 ; j++)
    		{
    			if(i == 1 ||  i == 4)
    			{
    				printf("*");
    			}
    			else
    			{
    				printf("*");
    				for(k = 1; k < 3; k++)
    				{
    					printf(" ");
    				}
    				printf("*");
    				break;
    			}
    			
    		}
    		printf("\n");
    		 
    	}
    	return 0;
     }


    1回答·34浏览
  • sharkyyy 2025-09-04
    这样好像也可以?有点困惑了,do-while和while有什么区别

    以我的理解看来,do-while是不管怎么样都先执行一次循环,然后再看条件,while就是得先看条件符不符合,然后才开始执行循环,一般来说因为还没遇到直接不符合条件的情况,所以两者的差异难以体现出来。

    1回答·37浏览
  • 慕莱坞1517245 2025-06-27
    这有区别吗

    你应该是少输入了x%y但是不知道是哪部分

    1回答·68浏览
  • 剁椒馒头_ioprCE 2025-04-12
    int 的占字节数

    4字节吧应该,之前刚看到是4字节

    1回答·132浏览
  • 幕布斯9080422 2025-03-22
    不知道哪里错了,输出错误


    #include <stdio.h>

    int main(){

        int age = 18;

    float height = 1.85;

    char unit = 'm';

    printf("小明今年%d岁\n", age);

    printf("小明身高%f%c\n", height, unit);

    printf("小明现在在慕课网上学习IT技术"); 

    return 0;

    你的unit输错行了

    2回答·127浏览
  • 馨_hoQZ24 2025-03-04
    这个哪里有错呢
    (y+2);


    1回答·125浏览
  • 无名氏的朋友 2025-02-05
    代码仅供参考
    0回答·145浏览
  • 杨眸_chikM6 2025-01-22
    试试可行不?
    0回答·125浏览
  • 慕妹0186281 2025-01-06
    c++输入问题

    首先你要用英文输入法,不能使用中文输入法,其次基础格式一定不要写错

    1回答·129浏览
  • TURZ 2024-12-29
    指针之后的课程有推荐吗
    0回答·107浏览
  • 12345_abikE4 2024-12-05
    这都跑出来了,为什么还失败

    第24行没有数值回调应该在括号加a,b,c

    2回答·138浏览
  • 慕村1017997 2024-11-27
    if 中为什么要写成(==)而不是(=)

    解答

    关于 if 中使用 == 而不是 = 的原因

    在 C 语言中,= 是赋值操作符,用于将一个值赋给一个变量。例如,x = 5; 将整数 5 赋值给变量 x

    而 == 是比较操作符,用于比较两个值是否相等。如果两个值相等,返回真(通常表示为非零值,如 1),否则返回假(通常表示为 0)。例如,x == 5; 检查变量 x 是否等于 5。

    在 if 语句中,你需要的是一个条件来决定是否执行某个代码块。因此,你应该使用 == 来比较两个值是否相等,而不是使用 = 来赋值。

    关于 hd, td, sd 的顺序

    在你的代码中,hdtd, 和 sd 分别代表百位、十位和个位。这些变量的顺序与它们在数字中的位置相对应。如果你改变这个顺序,那么计算出来的各个位上的数字就会不正确,从而影响整个算法的正确性。

    例如,如果你要检查一个三位数 num 是否为水仙花数,你需要分别提取它的百位、十位和个位,然后计算这三个数字的立方和是否等于原数。正确的顺序应该是:

    int num, sd, td, hd;
    
    // 获取三位数字num百位上的数字
    hd = num / 100;
    // 获取三位数字num十位上的数字
    td = (num % 100) / 10;
    // 获取三位数字num各位上的数字
    sd = num % 10;
    

    这样,hd 就是百位,td 是十位,sd 是个位。如果你颠倒了这些变量的顺序,比如把 sd 放在最前面,那么你实际上是在取个位数,而不是百位数,这会导致错误的结果。

    完整代码示例

    根据上述解释,下面是修正后的代码示例,用于找出所有的水仙花数:

    #include <stdio.h>
    
    int main() {
        // 定义三位数num,个位数sd,十位数td,百位数hd
        int num, sd, td, hd;
    
        // 循环所有三位数
        for(num = 100; num < 1000; num++) {
            // 获取三位数字num百位上的数字
            hd = num / 100;
            // 获取三位数字num十位上的数字
            td = (num % 100) / 10;
            // 获取三位数字num各位上的数字
            sd = num % 10;
    
            // 水仙花数的条件
            if(num == hd*hd*hd + td*td*td + sd*sd*sd) {
                printf("水仙花数字: %d\n", num);
            }
        }
    
        return 0;
    }
    

    这段代码会遍历所有三位数,检查每个数是否满足水仙花数的条件,并打印出满足条件的数。

    1回答·225浏览
  • 慕村1017997 2024-11-26
    为什么要与上&1

    根据你的描述,你在学习C语言的for循环时遇到了一个问题,关于第七个例子中的for循环的表达式2为什么与上1 (num <= 3 && sum <= 5 && 1;)。这个问题的核心在于理解for循环的三个表达式的含义以及它们如何共同作用来控制循环的执行。

    在C语言中,for循环的一般形式如下:

    for (表达式1; 表达式2; 表达式3)
    {
        // 循环体
    }
    
    • 表达式1:通常用于初始化循环变量。
    • 表达式2:这是一个条件表达式,决定了循环是否继续执行。如果这个表达式的值为真(非零),则执行循环体;否则,跳出循环。
    • 表达式3:通常用于更新循环变量的值。

    在你的例子中,for(sum = 0, num = 0; num <= 3 && sum <= 5 && 1; num++, sum++),我们来逐个分析这三个表达式:

    1. 表达式1sum = 0, num = 0

      • 初始化两个变量sumnum,分别赋值为0。
    2. 表达式2num <= 3 && sum <= 5 && 1

      • 这个表达式包含两个条件num <= 3sum <= 5,并且还有一个常量1
      • num <= 3 和 sum <= 5 分别检查numsum的值是否满足条件。
      • && 1 这部分可能看起来有些奇怪,但实际上,由于1总是非零,所以这部分总是为真。它的存在可能是为了强调逻辑运算符&&的使用,或者是为了演示如何组合多个条件。
    3. 表达式3num++, sum++

      • 每次循环结束后,numsum都会自增1。

    现在,让我们来看一下为什么&& 1在这里是必要的。虽然1总是为真,但是&&运算符要求其左右两边都为真时整个表达式才为真。因此,即使num <= 3sum <= 5都是真的,如果没有&& 1,那么表达式2可能会被错误地解释为只包含num <= 3 && sum <= 5的部分,而忽略了1的存在。实际上,1在这里的作用是保证即使numsum都不满足条件时,整个表达式仍然有一个部分是为真的,从而不会因为缺少某个条件而导致编译错误。

    综上所述,&& 1的存在主要是为了教学目的,展示如何在for循环的条件表达式中使用逻辑运算符,并且确保即使其他条件不满足时,整个表达式仍然是有效的。在实际编程中,这样的写法并不常见,因为它增加了代码的复杂性,而且容易引起混淆。通常情况下,我们会直接使用简单的条件表达式,例如num <= 3 && sum <= 5,而不包括不必要的1

    如果你有具体的代码片段需要修改或进一步解释,请提供完整的代码,这样我可以更准确地帮助你。

    1回答·166浏览
  • 是百百吖 2024-11-25
    代码仅供参考

    #include <stdio.h>


    double getFree(int time, double distance)

    {

        double starting_price = 13;//起步价

        double starting_distance = 3;//起步里程

        double unit_price = 2.3;//单价

        double actual_price = (time > 23 || time < 5) ? unit_price * 1.2 : unit_price;//夜间单价

        double extra_price = 1;//燃油费

        

        if (distance <= starting_distance)

        {

            return starting_price + extra_price;

        }

        else

        {

            return starting_price + extra_price + actual_price * (distance - starting_distance);

        }

    }


    int main()

    {

        double resFree = getFree(9, 12) + getFree(18, 12);

        printf("%f",resFree);

        return 0;

    }


    1回答·199浏览
  • CI_fntY27 2024-11-09
    哪里有问题啊

    你的代码中存在一些问题,主要是关于嵌套 if 语句的结构和逻辑。根据题目要求,只有当销售业绩超过100万并且入职满两年的员工才能获得优秀员工奖。因此,你需要调整代码以符合这个条件。下面是修复后的代码:

    #include <stdio.h>
    
    int main() 
    { 
        int sale = 120; // 销售业绩为120万 
        int year = 1; // 刚刚进入公司1年 
    
        // 完善代码 
        if (sale > 100) 
        { 
            if (year >= 2) 
            { 
                printf("恭喜您获得优秀员工奖!\n"); 
            } 
            else 
            { 
                printf("很遗憾,期望你再接再厉\n"); 
            } 
        } 
        else 
        { 
            printf("很遗憾,期望你再接再厉\n"); 
        } 
    
        return 0; 
    } 
    

    核心问题在于原代码中的逻辑结构不正确。具体来说:

    1. 原代码中的第一个 if 语句检查销售业绩是否大于100万,这是正确的。
    2. 然而,第二个 if 语句应该检查入职年限是否满足条件(即大于等于2年),而不是直接输出“获得优秀员工奖”。
    3. 原代码中的 else 语句只处理了销售业绩小于或等于100万的情况,但没有正确处理入职年限不满两年的情况。

    修复后的代码首先检查销售业绩是否超过100万,然后在满足这个条件的基础上,进一步检查入职年限是否达到2年。只有同时满足这两个条件,才会输出“恭喜您获得优秀员工奖!”;否则,会输出“很遗憾,期望你再接再厉”。这样就确保了逻辑的正确性。

    1回答·198浏览
  • weixin_慕仔6161494 2024-11-05
    有没有大佬可以解释一下这几个for是什么意思

    问题解答

    你的代码中使用了三个嵌套的 for 循环来生成一个特定模式的输出。下面是对每个循环作用的解释:

    1. 外层循环 (for(i=1; i<5; i++)):控制行数。从第1行到第4行(共4行)。
    2. 第一个内层循环 (for(j=i;j<5;j++ )):负责在每行前面打印空格。随着行号 i 的增加,每行前的空格数量减少。
    3. 第二个内层循环 (for( k=0 ;k<2*i-1;k++)):用于打印星号 *。每行的星号数量随行号 i 增加而增加,具体为 2*i - 1 个。

    这段程序实际上是在打印一个简单的金字塔形状,由星号构成,并且左侧对齐。

    完整代码

    #include <stdio.h>
    
    int main() 
    { 
        int i, j, k; 
        for(i=1; i<5; i++) // 控制总共有多少行
        { 
            for(j=i;j<5;j++ ) // 在每行前面打印空格
            { 
                printf(" "); // 输出空格
            } 
    
            for(k=0 ;k<2*i-1;k++) // 打印当前行中的星号
            { 
                printf("*"); // 每行输出的星号
            } 
    
            printf("\n"); // 每次循环换行
        } 
    
        return 0; 
    }
    

    这段代码不需要修改即可正确运行并达到预期效果——打印出一个左对齐的小金字塔图案。如果你希望调整图案大小或样式,可以通过改变循环条件来实现。例如,改变外层循环的终止条件可以改变金字塔的高度。

    1回答·326浏览
  • 浮岩_beJPZ3 2024-10-25
    最小值和倒序有问题,到底是那里出错了

    j<i

    1回答·168浏览
  • 慕仰7053553 2024-10-22
    printf("num的整数部分是%d\n", num); 为什么要加他?

    printf是指输出,你前面的操作就是为了printf能输出你想要东西

    2回答·206浏览
  • 慕仰7053553 2024-10-22
    double d = c; C语言为什么是出 不是‘c’

    没有输出语句printf("%d\n",d)

    1回答·191浏览
  • 慕仰7053553 2024-10-21
    注释请问两个怎么注释?

    在第一句前面加一个/*   在最后一句后面加一个*/

    1回答·187浏览
数据加载中...
开始学习 免费