请问这个代码哪个语法输入哪个错误?

如题所述

这个代码没有语法错误,但在输出结果方面存在逻辑错误。

首先,在第5行中定义了一个指向整型变量的指针`p`,并将它指向变量`a`的地址。然后,在第6行中,将变量`a`赋值为指针`p`所指向的地址的值(即15)加上变量`b`的值(即5),结果为20。因此,此时变量`a`的值变为20,而指针`p`仍指向变量`a`的地址。

接着,在第7行中,使用`printf()`函数输出了两个变量的值,其中第一个是变量`a`的值,第二个是指针`p`所指向的地址的值。由于在第6行中改变了变量`a`的值,因此输出结果会是`a=20,15`。

这段代码没有语法错误,但在`a=*p+b;`这一行中,给变量`a`赋值的方式与程序的初衷不符,导致输出结果和预期不一致。如果想让输出结果与预期相同,可以将该行代码修改为`*p=*p+b;`,同时将`printf()`函数中输出`a`和`*p`的顺序颠倒,即:

```c
#include <stdio.h>

int main() {
int *p, a = 15, b = 5;
p = &a;
*p = *p + b;
printf("%d, %d\n", *p, a);
return 0;
}
```

这样,输出结果就会是`20, 20`,与程序的初衷相符合。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-07-14

这段代码存在多个语法错误:

    在main函数的定义中,缺少了函数参数列表的括号()。

    在main函数的最后一行,return语句后面的标识符e是无效的,应该是0。

    在printf函数调用中,缺少了结束的分号;。

    在printf函数调用中,格式化字符串"a=%d ,%d\n"中的3是多余的,应该删除。
    修正后的代码如下所示:

    cCopy code#include <stdio.h>int main() {    int *p, a = 15, b = 5;
       p = &a;
       a = *p + b;    printf("a=%d ,%d\n", a, *p);    return 0;
    }

    这样修正后的代码应该可以正确编译和运行。

第2个回答  2022-10-09
这是因为编译器无法打开c:\z.exe写入导致的错误。
源文件没有语法错误,编译过程也没有错误,编译完成后需要保存成一个exe文件,但c盘是系统盘,其根目录需要管理员权限才能写入,因此产生了这个错误。
你可以更换工程的路径,保存在可以写的文件夹中,例如:D:\MyCPrograms\Project1。
通常一个程序有好多源文件形成一个工程,全放在根目录是极度不推荐的,需要放在一个文件夹里。
第3个回答  2022-06-18
这不是语法错误。你可以看下面错误returned 1 exit status返回了退出状态1。也就是程序没有像代码最后写的返回0,而是返回1,而errno 1是不允许操作。可能是头文件被改了,没有printf的声明,也可能是别的,你可以检查头文件或者重启电脑试试。 (*^▽^*)
相似回答