
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安全卫士,或者是百度卫士,金山卫士之类的,把系统不用的垃圾,插件,软件都清理掉。这样的话就会给系统提速。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)