C语言编程错误求高手指点,谢谢了
s没有分配空间,导致野指针错误.
改成
#include #include int main(){int a,b,i,c;char s[100];//here...
不知道你的 200>=P0_1是表达什么意思,
P0_1应该是你的IO口的位寄存器,位只有0和1表示真或假,没有大小之分,所以不能用>= <这类大小比较的运算符号。
前面的偏差计算数据就不对,先解决这里下面的才能对
#include<stdlib.h>
#include <stdio.h>
#include <math.h>
int main()
{
int i,l=0,j=0;
char c;
float f[12];
float upnum[12],downum[12],pnum[12];
float u,s,t,x,p,cha,aver,sp,sum=0;
/*pnum=(float *)malloc(j*sizeof(float));
upnum=(float *)malloc(j*sizeof(float));
downum=(float *)malloc(j*sizeof(float));*/
printf("输入断沙数据:
");
for(i=0;i<j;i++)
scanf("%f",&f,&upnum[i]);
while((c=getchar())!='
')
{
scanf("%f",&f[j]);
j++;
}
printf("%d
",j);
/* return 0;
scanf("%f",&upnum[i]);*/
printf("输入实测数据:
"); ///zhe error
for(i=0;i<j;i++)
scanf("%f",&downum[i]);
for(i=0;i<j;i++)
{
pnum[i]=(upnum[i]-downum[i])/downum[i];
printf(" 偏差=%.4f
",pnum[i]);
}
for(i=0;i<j;i++)
{
pnum[i]=(upnum[i]-downum[i])/downum[i];
sum+=pnum[i];
}
aver=sum/j;
for(i=0;i<j;i++)
{
u=(pnum[i]-aver)*(pnum[i]-aver);
cha=(pnum[i]-aver)*100;
printf(" 差.6f
",cha);
p=u*10000;
printf("平方=%.6f
",p);
x=x+u;
}
u=x/(j-1);
s=sqrt(u);
sp=s/sqrt(j);
t=fabs(aver/sp);
printf(" 偏离sp=%.6f,统计量|t|=%.6f
",sp,t);
printf("%(著性水平 a=0.20)允许:1.31
");
if(u<1.31)
printf("合格
");
else
printf("不合格
");
//system("PAUSE");
getchar();
}
#include<stdlib.h>
#include<ctype.h>
#include <stdio.h>
#include <math.h>
#define N 100
int main()
{
int i,l=0/*,j=1*/;
char c;
float f;
//float *upnum,*downum,*pnum;
float u,s,t,x=0,p,cha,aver,sp,sum=0;
//pnum=(float *)malloc(j*sizeof(float));/*j的初始值为1,只分配了一个float空间*/
//upnum=(float *)malloc(j*sizeof(float));
//downum=(float *)malloc(j*sizeof(float));
/*如果不知道要输入多少个,你也不想让用户输入要输入的个数,而是要统计用户输入个数
你可以先分配一定空间,当要超过空间时,申请新的空间,然后把原来数据复制到新申请的
空间,释放原来的空间。这样比较麻烦,如果你不是做实用的话,建议用数组。*/
float upnum[N],downum[N],pnum[N];
char s1[80];
printf("输入断沙数据:\n");
// c=getchar(); //getchar()会提取空格和回车
int j=0;
while((c=getchar())!=10)
{
ungetc(c,stdin);
scanf("%s",s1);
upnum[j++]=atof(s1);
}
// for(i=0;i<j;i++)
// scanf("%f",&upnum[i]);// scanf("%f",&f,&upnum[i]);
// while((c=getchar())!='\n') 要一边输入一边统计
// {
// scanf("%f",&f);
// j++;
// }
printf("%d\n",j);
/* return 0;
scanf("%f",&upnum[i]);*/
printf("输入实测数据:\n");
for(i=0;i<j;i++)
scanf("%f",&downum[i]);//scanf("%f",&downum[i]);
for(i=0;i<j;i++)
{
pnum[i]=(upnum[i]-downum[i])/downum[i];
printf(" 偏差=%.4f\n",pnum[i]);
}
for(i=0;i<j;i++)
{
pnum[i]=(upnum[i]-downum[i])/downum[i];
sum+=pnum[i];
}
aver=sum/j;
for(i=0;i<j;i++)
{
u=(pnum[i]-aver)*(pnum[i]-aver);
cha=(pnum[i]-aver)*100;
printf(" 差%.6f\n ",cha);//printf(" 差.6f\n ",cha);
p=u*10000;
printf("平方=%.6f\n",p);
x=x+u;
}
u=x/(j-1);
s=sqrt(u);
sp=s/sqrt((double)j);
t=fabs(aver/sp);
printf(" 偏离sp=%.6f,统计量|t|=%.6f\n",sp,t);
printf("%(著性水平 a=0.20) 允许:1.31\n");
if(u<1.31)
printf("合格\n");
else
printf("不合格,拒绝假设\n");
system("PAUSE");
}
你开始申请了数组是长度为1的,但后面随着输入增加j++但数组却没有重新申请,数据存储会发生混乱,请考虑这点,另外scanf会处理\n的情况,你再判断的话会有问题。
另外,你处理回车的方法有问题,如果你想这样的话,可以考虑用gets输入字符串,然后用sscanf函数自己从字符串中取得输入。
上面printf语句中的乱码是什么情况?
C语言编程错误求高手指点,谢谢了
前面的偏差计算数据就不对,先解决这里下面的才能对 include<stdlib.h> include <stdio.h> include <math.h> int main(){ int i,l=0,j=0;char c;float f[12];float upnum[12],downum[12],pnum[12];float u,s,t,x,p,cha,aver,sp,sum=0;\/*pnum=(float *)malloc(j*sizeof(float...
c语言编程中出现"执行 cl.exe 时出错" 跪求指点!!!
具体步凑:一: “CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目 录 \\VC98\\Bin”下面,你可以到相应的路径下找到这个应用程序。因此问题可以按照以下方法解决:打开vc界面 点击VC“TOOLS(工 具)”—>“Option(选择)”—>“Directories(目录)”重新设置“Excutable Fils、Include ...
c语言编程问题,求高手解答(高分)
一、第一行包含的文件不存在,这一行应该删除。二、定义了argc、argv两个变量没有使用,编译会有警告,可以删除他们或者不管,最好改为:int main()三、scanf输入n和k的时候,中间有个逗号分隔,这样输入的时候会麻烦,最好改为:scanf("%d%d",&n,&k);...
C语言编程,我自己写的程序出问题了,不知道怎么改,求高手指点,在线...
unsigned int n){return pow(x, n) \/ fact(n);}int main(int argc, char *argv[]){double x;int n;scanf("%lf,%d",&x,&n);printf("%lf\\n",
...列子编程,怎么一下子,出现这么多错误。求高手指点
头文件:因为所有程序都使用一些固定功能,比如在屏幕上显示,比键盘读入数据等。而实现这些功能代码就有几百行,还有一般学生不懂的汇编语言在里面。为了方便,就将这部分代码作为一个文件由编程软件自己添加到我们写好程序文件中。也就是说虽然你只写了不到5行的代码没超过20个个符,但实际上你的这个...
...输出结果不对,但是不知道错在哪里,求高手指点。
这是我的选择排序法:include<stdio.h>void xuanze(int *a,int len);#define size 10int main(){int shuzu[10],i;printf("请输入10个整数:\\n");for(i=0;i<size;i++){scanf("%d",&shuzu[i]);}xuanze(shuzu,size);printf("排序后:\\n");for(i=0;i<size;i++){printf("%5d...
C语言编程遇到问题,请求高手指点,是统计区间个数的问题
for(i=1;i<c;i++){ for(j=0;j<最大的个数;j++){ if(a[i]>minin&&a[i]<(minin+division)){ 存储链表 } } minin+=division;在链表中存储一个标记符 } 存储 因为不知道 大小 应该用链表
单片机c语言编程错误 TEXT1.C(77): error C193: '<=': bad operand typ...
不知道你的 200>=P0_1是表达什么意思,P0_1应该是你的IO口的位寄存器,位只有0和1表示真或假,没有大小之分,所以不能用>= <这类大小比较的运算符号。
求c++编程高手指点,指出我的代码错误的地方以及给出改正,谢谢。题目要 ...
是不是报无匹配的构造函数?main函数中Work w;有问题 如果用户自己定义了构造函数,则系统中默认的构造函数将不会调用,要么自己写一个无形参的构造函数,要么把w改成w(n,s)括号中的实参分别对应成员数据int num,ID;char sex;
C语言题,求高手指点!?
3.答案C 正确 4. 答案D 错误 s=p;是错误的 因为s是 一个整型数指针,而p是字符型指针。指针类型不同的两个变量不能赋值。=== 希望我的回答对你有所帮助,很高兴和你一起学习和讨论C语言编程。