C语言的题目 我没有读懂题目 麻烦大佬帮帮忙 具体如图
看你图,你们用的是结构数组不是链表。那么应该有一个变量记录数组实际元素个数。另外身份证成员变量idnum下标,如果是想存储18位身份证号码,应该定义下标19.。
下面代码:cont是记录数组元素个数,要删除的数组元素,会被置0,并移动到数组末尾
int cont=10;//定义全局变量,结构数组实际存储的元素个数!!!!void deleteByid(char *idnum)//通过身份证删除{ int i,j; struct stt ddSave; for(i=0;i<cont;i++) { if(strcmp(dd[i].idnum,idnum)==0) { dd[i].num=0; dd[i].idnum[0]=0; dd[i].cnum[0]=0; dd[i].fy=0; for(j=i;j<cont+1;j++) { ddSave=dd[i]; dd[j]=dd[j+1]; dd[j+1]=ddSave; } cont--; break; } }}
typedef struct tagSTUDENT {
char szStuNumber[7];//学号
char szStuName[21];//姓名
unsigned int TestScores[5];//5门课分数
}STU,*PSTU;
//此函数是用来求一元3次方程ax^3+bx^2+cx+d=0的解
//比如 x^3-x^2-1=0,可以输入1 -1 0 -1
#include<stdio.h>
#include<math.h>
int main()
{
double Newton(double a,double b,double c,double d,double x);
double a,b,c,d;
double x=1000.0;
printf("请依次输入一元三次方程四个系数:");
scanf("%lf%lf%lf%lf",&a,&b,&c,&d);
x=Newton(a,b,c,d,x);
printf("%lf
",x);
return 0;
}
double Newton(double a,double b,double c,double d,double x)
{
while(fabs(a*x*x*x+b*x*x+c*x+d)>0.000001)
{
x=x-(a*x*x*x+b*x*x+c*x+d)/(3*a*x*x+2*b*x+c);
}
return x;
}
编译、执行结果: