matlab一样的程序不一样的结果

matlab一样的程序不一样的结果,第1张

matlab一样的程序不一样的结果是正常的,因为它是属于抽样结果很容易出现不一样。

MATLAB相同的代码,运行结果不同

matlab

在高于四毫米的采样间隔是可以运行的

低于四毫米就报错

显示维度不匹配。

好像我把抽样点个数控制在2万个之内是可以运行的。

更新:应该是scanf的问题。scanf在读取一个字符串之后再读取数字,有时就会出现问题。

你可以试试这几句话:

char s[20]

scanf("%s",s)

printf("string:%s:stringend\n",s)

char c = getchar()

printf("char:%c:charend\n",c)

如果你输入一个前后带几个空格的字符串,比如“123”,你会发现s忽略了前面的空格,读入了非空格字符(123),然后停在了后面的第一个空格,并把这个空格放回输入流了。所以,第二行就会立即执行,读入一个空格然后输出。

这是个很有可能的原因...不过更详细的错误可能需要你提供多一点的信息,比如输入样例和报错信息了。我自己试过,没有遇到问题。

---

我觉得最有可能的原因是struct的对齐问题,你可以把struct定义里头float挪到最上面试试。因为struct的对齐问题是不同编译器不太一样的,你可以提供多点信息,比如用的哪个编译器,和报错信息。

因为听你的描述,struct大小从28字节变成32字节就能正常运行,所以可能是这里的问题。

但是我跑过你的代码了,我能正常运行,虽然我要把flushall()改成_flushall()

#include<stdio.h>

#include<malloc.h>

struct Student {

char name[20]

short int age

float score

}

int main(void) {

int len

int i

struct Student *pArr

printf("%d\n",sizeof(struct Student))

printf("请输入学生个数:\n")

printf("len = ")

scanf("%d", &len)

_flushall()

pArr = (struct Student*)malloc(sizeof(struct Student)*len)

for(i=0i<leni++) {

printf("请输入 %d\n", i+1)

_flushall()

printf("score = ")

scanf("%lf", &pArr[i].score)

_flushall()

printf("name = ")

scanf("%s", pArr[i].name)

printf("age = ")

scanf("%d", &pArr[i].age)

}

free(pArr)

return 0

}

说明有可能咱们的编译器不一样~

这些程序里显示最多的就是liebao.exe。你应该是装了猎豹浏览器吧。如果想一劳永逸,就把这个卸掉。另外用一些系统优化软件,如360安全卫士,或者是百度卫士,金山卫士之类的,把系统不用的垃圾,插件,软件都清理掉。这样的话就会给系统提速。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8167467.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存