函数--字符串常量问题

void mystery(int n)
{
n+=5;
n/=10;
printf("%s\n",10个星号 " +10-n);

想问下n+=5 和printf("%s\n",10个星号 " +10-n)是什么意思?没看懂

n += 5 等价于 n = n + 5
n /= 10 等价于 n = n / 10
至于 这个printf,写的有问题

n+=5就是n=n+5的另一种写法,同理,你可以写-=,*=,/=,%=,&=,|=,只要是算术运算都可以和等号组合
printf里面可以写格式化字符串,第一个字符串常量就是格式,后面的参数用来填充这个格式
%s代表后续的是一个字符串,10个星号就是这个字符串本身
至于后面+10-n,你该知道字符串就是char数组,数组就是指针,指针地址+10-n之后,地址就从+10-n开始了
那么print字符串的时候会从起始地址一直输出到\0结束,所以最终会输出n个星号

供参考:

#include <stdio.h>
void mystery(int n)
{
    n += 5;   // n = 95 + 5 = 100
    n /= 10;  // n = 100 / 10 = 10
    printf("%s\n", "**********" + 10 - n); //10个星号
}
int main()
{
    mystery(95);
    return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7722877
  • 以下回答来自chatgpt:

    问题1:解释"n+=5"的含义。 回答:这是一个简单的赋值运算符,表示将变量n的值加上5并重新赋值给n。举个例子,如果n的初始值为10,执行n+=5之后,n的值将变为15。

    问题2:解释"printf("%s\n", 10个星号 + 10 - n)"的含义。 回答:这是一个C语言中的字符串格式化输出语句。其中,"%s\n"是格式控制字符串,用于指定输出的格式。"10个星号 + 10 - n"是一个表达式,表示将10个星号与10-n拼接在一起。

    对于"%s\n",其中%s表示输出字符串,\n表示换行符。因此,该语句的执行结果是在屏幕上输出一个由10个星号加上10-n生成的字符串,并在末尾换行。

    以下是代码示例:

    #include <stdio.h>
    
    int main() {
        int n = 5;
        printf("%s\n", "**********" + 10 - n);
        return 0;
    }
    

    输出结果为:

    **********
    

    解释:n的值为5,因此10-n的结果为5。"*" + 5表示从字符串常量"*"的第5个字符开始,即字符串中的10个星号。通过printf函数的格式控制字符串"%s\n",将这个部分字符输出到屏幕上,并在末尾添加一个换行符。最终输出结果为10个星号。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^