C语言课程设计实习报告
班级:
姓名:
学号:
20##-6
题目一、
题目描述:要求输入两个相对较大的正整数,能够通过程序计算出其结果。
设计思路:
由于LONG型数据的数据范围并不大,所以两个相对较大的数不能用LONG INT类型存储。本程序中设计用数组存储一个大数,数组的初始空间可以定义到如100或200个单元,每个单元存储一位数据,以此解决乘数及乘积的存储问题。
解决了存储问题后,本程序设计让乘数数组及被乘数数组中的每一位数字单独来进行乘法运算,即用一个数字和另外一个数组中的每一位去相乘,得到乘法运算中一行的数字,再将每一行数字错位相加,最后得到预计的乘积并输出。
运行效果截图:
附源程序如下:
#include
int main()
{
int a[100]={0},b[100]={0},c[200]={0},i,j,m,n,x,r[200];
printf("请分别输入乘数p、q的位数m、n:\n");
scanf("%d%d",&m,&n);
printf("\n");
printf("请分别输入两乘数p、q:\n");
printf("p=");
for(i=m-1;i>=0;i--)
scanf("%d",&a[i]);
printf("q=");
for(j=n-1;j>=0;j--)
scanf("%d",&b[j]);
printf("\n");
for(j=0;j<=n-1;j++)
{
for(x=j;x<=m+j;x++)
{
if(x==j)
{
r[x]=(c[x]+(a[0]*b[j])%10)/10;
c[x]=(c[x]+(a[0]*b[j])%10)%10;
}
else
{
if(x==m+j) c[x]=r[x-1]+a[m-1]*b[j]/10;
else
{
r[x]=(c[x]+r[x-1]+(a[x-j]*b[j])%10+a[x-j-1]*b[j]/10)/10;
c[x]=(c[x]+(a[x-j]*b[j])%10+r[x-1]+a[x-j-1]*b[j]/10)%10;
}
}
}
}
}
printf("乘积为:\n");
if(c[m+n-1]==0)
for(x=m+n-2;x>=0;x--) printf("%d",c[x]);
else
for(x=m+n-1;x>=0;x--) printf("%d",c[x]);
printf("\n");
return 0;
}
题目二、
题目描述:学生信息管理系统设计。
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
系统以文本菜单方式工作;
学生信息录入功能(学生信息最好用文件保存)---输入;
学生信息浏览功能---输出;
查询、排序功能---算法;
按学号查询;
按姓名查询;
学生信息的删除与修改。
设计思路:
本程序中不同的功能模块均由数据的读入、数据的处理、数据的输出及返回封装而成,差别仅体现在数据的处理上,而不同功能模块的选择则采用了switch语句简单明了。
运行效果截图:
附源程序如下:
#include
#include
#include
typedef struct
{
int num; char name[20]; char sex; int age;
char birth[20]; char mail[20]; char add[20]; char tel[20];
}inf;
main()
{
void input();
void scan();
void find();
void sort();
void dele();
void over();
void change();
int c;
while(1)
{
system("cls");
printf(" O(∩_∩)O\n");
printf("***************欢迎来到地大学生信息管理系统***************\n");
printf("\n");
printf(" 功能选择\n");
printf("\n");
printf("***********************1.信息录入*************************\n");
printf("***********************2.信息浏览*************************\n");
printf("***********************3.信息查询*************************\n");
printf("***********************4.信息排序*************************\n");
printf("***********************5.信息删除*************************\n");
printf("***********************6.信息修改*************************\n");
scanf("%d",&c);
switch(c)
{
case 1:input(); break;
case 2:scan(); break;
case 3:find(); break;
case 4:sort(); break;
case 5:dele(); break;
case 6:change(); break;
}
}
}
void input()
{
inf w[1000];
FILE *fp1,*fp2;
int i,n=0,j;
fp1=fopen("data.txt","r");
while(!feof(fp1))
{
fscanf(fp1,"%d %s %c %d %s %s %s %s",&w[n].num,w[n].name,&w[n].sex,&w[n].age,w[n].birth,w[n].mail,w[n].add,w[n].tel);
n++;
}
fclose(fp1);
fp2=fopen("information.txt","w");
for(i=0;i
fprintf(fp2,"%d %s %c %d %s %s %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].birth,w[i].mail,w[i].add,w[i].tel);
fclose(fp2);
printf("录入已完成!\n");
printf("\n");
printf("返回主界面请按2,结束请按1:\n");
scanf("%d",&j);
if(j==1) over();
}
void scan()
{
inf w[1000]; FILE *fp;
int i,n=0,j;
fp=fopen("information.txt","r");
while(!feof(fp))
{
fscanf(fp,"%d %s %c %d %s %s %s %s",&w[n].num,w[n].name,&w[n].sex,&w[n].age,w[n].birth,w[n].mail,w[n].add,w[n].tel);
n++;
}
fclose(fp);
for(i=0;i
printf("%d %s %c %d %s %s %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].birth,w[i].mail,w[i].add,w[i].tel);
printf("\n");
printf("返回主界面请按2,结束请按1:\n");
scanf("%d",&j);
if(j==1) over();
}
void find()
{
inf w[1000]; FILE *fp;
int i,n=0,j,q,r; char p[20];
fp=fopen("information.txt","r");
while(!feof(fp))
{
fscanf(fp,"%d %s %c %d %s %s %s %s",&w[n].num,w[n].name,&w[n].sex,&w[n].age,w[n].birth,w[n].mail,w[n].add,w[n].tel);
n++;
}
fclose(fp);
printf("请输入查询方式:\n");
printf("\n");
printf("1.按照姓名查询 2.按照学号查询\n");
scanf("%d",&q);
if(q==1)
{
printf("请输入学生姓名:");
scanf("%s",p);
printf("\n");
printf("查询结果:\n");
printf("\n");
for(i=0;i
if(strcmp(p,w[i].name)==0)
printf("%d %s %c %d %s %s %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].birth,w[i].mail,w[i].add,w[i].tel);
}
else
{
printf("请输入学生学号:");
scanf("%d",&r);
printf("\n");
printf("查询结果:\n");
printf("\n");
for(i=0;i
if(r==w[i].num)
printf("%d %s %c %d %s %s %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].birth,w[i].mail,w[i].add,w[i].tel);
}
printf("\n");
printf("返回主界面请按2,结束请按1:\n");
scanf("%d",&j);
if(j==1) over();
}
void sort()
{
inf w[1000]; FILE *fp;
int i,n=0,j; inf t;
fp=fopen("information.txt","r");
while(!feof(fp))
{
fscanf(fp,"%d %s %c %d %s %s %s %s",&w[n].num,w[n].name,&w[n].sex,&w[n].age,w[n].birth,w[n].mail,w[n].add,w[n].tel);
n++;
}
fclose(fp);
for(i=0;i
for(j=i+1;j
if(w[i].num
{
t=w[i]; w[i]=w[j]; w[j]=t;
}
printf("排序结果:\n");
printf("\n");
for(i=0;i
printf("%d %s %c %d %s %s %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].birth,w[i].mail,w[i].add,w[i].tel);
printf("\n");
printf("返回主界面请按2,结束请按1:\n");
scanf("%d",&j);
if(j==1) over();
}
void dele()
{
inf w[1000]; FILE *fp1,*fp2 ;
int i,n=0,j; char p[20];
fp1=fopen("data.txt","r");
while(!feof(fp1))
{
fscanf(fp1,"%d %s %c %d %s %s %s %s",&w[n].num,w[n].name,&w[n].sex,&w[n].age,w[n].birth,w[n].mail,w[n].add,w[n].tel);
n++;
}
fclose(fp1);
printf("请输入删除人姓名:");
scanf("%s",p);
for(i=0;i
if(strcmp(p,w[i].name)==0)
for(i;i
w[i]=w[i+1];
fp2=fopen("deleted.txt","w");
for(i=0;i
fprintf(fp2,"%d %s %c %d %s %s %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].birth,w[i].mail,w[i].add,w[i].tel);
fclose(fp2);
printf("\n");
printf("删除已完成!修改文件以deleted.txt命名请注意查看。\n");
printf("\n");
printf("返回主界面请按2,结束请按1:\n");
scanf("%d",&j);
if(j==1) over();
}
void change()
{
inf w[1000]; FILE *fp1,*fp2 ;
int i,n=0,r,q,c,t,j,y; char p[20],s[20],x;
fp1=fopen("data.txt","r");
while(!feof(fp1))
{
fscanf(fp1,"%d %s %c %d %s %s %s %s",&w[n].num,w[n].name,&w[n].sex,&w[n].age,w[n].birth,w[n].mail,w[n].add,w[n].tel);
n++;
}
fclose(fp1);
printf("请先输入查找信息:\n");
printf("\n");
printf("1.按姓名 2.按学号\n");
scanf("%d",&q);
if(q==1)
{
printf("请输入学生姓名:");
scanf("%s",p);
printf("\n");
for(i=0;i
if(strcmp(p,w[i].name)==0)
{
y=i;
printf("%d %s %c %d %s %s %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].birth,w[i].mail,w[i].add,w[i].tel);
}
printf("\n");
printf("请输入修改信息的类:\n");
printf("\n");
printf("1. 学号 2.姓名 3.性别 4.年龄\n");
printf("5.出生日期 6.邮箱 7.住址 8.电话\n");
scanf("%d",&c);
if(c==1)
{
printf("将%d改为\n",w[y].num);
scanf("%d",&t);
w[y].num=t;
}
if(c==2)
{
printf("将%s改为\n",w[y].name);
scanf("%s",s);
strcpy(w[y].name,s);
}
if(c==3)
{
printf("将%c改为\n",w[y].sex);
scanf("%c",&x);
w[y].sex=x;
}
if(c==4)
{
printf("将%d改为\n",w[y].age);
scanf("%d",&t);
w[y].age=t;
}
if(c==5)
{
printf("将%s改为\n",w[y].birth);
scanf("%s",s);
strcpy(w[y].birth,s);
}
if(c==6)
{
printf("将%s改为\n",w[y].mail);
scanf("%s",s);
strcpy(w[y].mail,s);
}
if(c==7)
{
printf("将%s改为\n",w[y].add);
scanf("%s",s);
strcpy(w[y].add,s);
}
if(c==8)
{
printf("将%s改为\n",w[y].tel);
scanf("%s",s);
strcpy(w[y].tel,s);
}
}
else
{
printf("请输入学生学号:");
scanf("%d",&r);
printf("\n");
for(i=0;i
if(r==w[i].num)
printf("%d %s %c %d %s %s %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].birth,w[i].mail,w[i].add,w[i].tel);
printf("\n");
printf("请输入修改信息的类:\n");
printf("\n");
printf("1. 学号 2.姓名 3.性别 4.年龄\n");
printf("5.出生日期 6.邮箱 7.住址 8.电话\n");
scanf("%d",&c);
if(c==1)
{
printf("将%d改为\n",w[r-1].num);
scanf("%d",&t);
w[r-1].num=t;
}
if(c==2)
{
printf("将%s改为\n",w[r-1].name);
scanf("%s",s);
strcpy(w[r-1].name,s);
}
if(c==3)
{
printf("将%c改为\n",w[r-1].sex);
scanf("%c",&x);
w[r-1].sex=x;
}
if(c==4)
{
printf("将%d改为\n",w[r-1].age);
scanf("%d",&t);
w[r-1].age=t;
}
if(c==5)
{
printf("将%s改为\n",w[r-1].birth);
scanf("%s",s);
strcpy(w[r-1].birth,s);
}
if(c==6)
{
printf("将%s改为\n",w[r-1].mail);
scanf("%s",s);
strcpy(w[r-1].mail,s);
}
if(c==7)
{
printf("将%s改为\n",w[r-1].add);
scanf("%s",s);
strcpy(w[r-1].add,s);
}
if(c==8)
{
printf("将%s改为\n",w[r-1].tel);
scanf("%s",s);
strcpy(w[r-1].tel,s);
}
}
fp2=fopen("changed.txt","w");
for(i=0;i
fprintf(fp2,"%d %s %c %d %s %s %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].birth,w[i].mail,w[i].add,w[i].tel);
fclose(fp2);
printf("修改已完成,保存在名为changed.txt的文档中,请注意查看!");
printf("\n");
printf("返回主界面请按2,结束请按1:\n");
scanf("%d",&j);
if(j==1) over();
}
void over()
{
system("cls");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf(" Thanks,good bye!!!\n");
printf("\n");
printf(" O(∩_∩)O\n");
while(1) {};
}
题目三、
题目描述:
职工信息管理系统设计。
职工信息包括职:工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。试设计一职工信息管理系统,使之能提供以下功能:
系统以菜单方式工作;
职工信息录入功能(职工信息用文件保存)--输入;
职工信息浏览功能 --输出。
设计思路:
本程序与二题类似,不同的功能模块均由数据的读入、数据的处理、数据的输出及返回封装而成,差别仅体现在数据的处理上,而不同功能模块的选择则采用了switch语句。
运行效果截图:
附源程序如下:
#include
#include
#include
typedef struct
{
int num; char name[20]; char sex; int age;
char eb[20]; int salary; char add[20]; char tel[20];
}inf;
main()
{
void input();
void scan();
void find();
void sort();
void dele();
void over();
void change();
int c;
while(1)
{
system("cls");
printf(" O(∩_∩)O\n");
printf("***************欢迎来到地大职工信息管理系统***************\n");
printf("\n");
printf(" 功能选择\n");
printf("\n");
printf("***********************1.信息录入*************************\n");
printf("***********************2.信息浏览*************************\n");
printf("***********************3.信息查询*************************\n");
printf("***********************4.信息排序*************************\n");
printf("***********************5.信息删除*************************\n");
printf("***********************6.信息修改*************************\n");
scanf("%d",&c);
switch(c)
{
case 1:input(); break;
case 2:scan(); break;
case 3:find(); break;
case 4:sort(); break;
case 5:dele(); break;
case 6:change(); break;
}
}
}
void input()
{
inf w[1000];
FILE *fp1,*fp2;
int i,n=0,j;
fp1=fopen("data.txt","r");
while(!feof(fp1))
{
fscanf(fp1,"%d %s %c %d %s %d %s %s",&w[n].num,w[n].name,&w[n].sex,&w[n].age,w[n].eb,&w[n].salary,w[n].add,w[n].tel);
n++;
}
fclose(fp1);
fp2=fopen("information.txt","w");
for(i=0;i
fprintf(fp2,"%d %s %c %d %s %d %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].eb,w[i].salary,w[i].add,w[i].tel);
fclose(fp2);
printf("录入已完成!\n");
printf("\n");
printf("返回主界面请按2,结束请按1:\n");
scanf("%d",&j);
if(j==1) over();
}
void scan()
{
inf w[1000]; FILE *fp;
int i,n=0,j;
fp=fopen("information.txt","r");
while(!feof(fp))
{
fscanf(fp,"%d %s %c %d %s %d %s %s",&w[n].num,w[n].name,&w[n].sex,&w[n].age,w[n].eb,&w[n].salary,w[n].add,w[n].tel);
n++;
}
fclose(fp);
for(i=0;i
printf("%d %s %c %d %s %d %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].eb,w[i].salary,w[i].add,w[i].tel);
printf("\n");
printf("返回主界面请按2,结束请按1:\n");
scanf("%d",&j);
if(j==1) over();
}
void find()
{
inf w[1000]; FILE *fp;
int i,n=0,f,j,q,r; char p[20];
fp=fopen("information.txt","r");
while(!feof(fp))
{
fscanf(fp,"%d %s %c %d %s %d %s %s",&w[n].num,w[n].name,&w[n].sex,&w[n].age,w[n].eb,&w[n].salary,w[n].add,w[n].tel);
n++;
}
fclose(fp);
printf("请输入查询方式:\n");
printf("1.按照姓名查询 2.按照工号查询\n");
scanf("%d",&q);
if(q==1)
{
printf("请输入请姓名:");
scanf("%s",p);
printf("查询结果:\n");
printf("\n");
for(i=0;i
if(strcmp(p,w[i].name)==0)
printf("%d %s %c %d %s %s %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].eb,&w[i].salary,w[i].add,w[i].tel);
}
else
{
printf("请输入职工工号:");
scanf("%d",&r);
printf("查询结果:\n");
printf("\n");
for(i=0;i
if(r==w[i].num)
printf("%d %s %c %d %s %s %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].eb,&w[i].salary,w[i].add,w[i].tel);
}
printf("\n");
printf("返回主界面请按2,结束请按1:\n");
scanf("%d",&j);
if(j==1) over();
}
void sort()
{
inf w[1000]; FILE *fp;
int i,n=0,j; inf t;
fp=fopen("information.txt","r");
while(!feof(fp))
{
fscanf(fp,"%d %s %c %d %s %d %s %s",&w[n].num,w[n].name,&w[n].sex,&w[n].age,w[n].eb,&w[n].salary,w[n].add,w[n].tel);
n++;
}
fclose(fp);
for(i=0;i
for(j=i+1;j
if(w[i].num
{
t=w[i]; w[i]=w[j]; w[j]=t;
}
printf("排序结果:\n");
printf("\n");
for(i=0;i
printf("%d %s %c %d %s %d %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].eb,w[i].salary,w[i].add,w[i].tel);
printf("\n");
printf("返回主界面请按2,结束请按1:\n");
scanf("%d",&j);
if(j==1) over();
}
void dele()
{
inf w[1000]; FILE *fp1,*fp2 ;
int i,n=0,j; char p[20];
fp1=fopen("data.txt","r");
while(!feof(fp1))
{
fscanf(fp1,"%d %s %c %d %s %d %s %s",&w[n].num,w[n].name,&w[n].sex,&w[n].age,w[n].eb,&w[n].salary,w[n].add,w[n].tel);
n++;
}
fclose(fp1);
printf("请输入删除人姓名:");
scanf("%s",p);
for(i=0;i
if(strcmp(p,w[i].name)==0)
for(;i
w[i]=w[i+1];
fp2=fopen("deleted.txt","w");
for(i=0;i
fprintf(fp2,"%d %s %c %d %s %d %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].eb,w[i].salary,w[i].add,w[i].tel);
fclose(fp2);
printf("\n");
printf("删除已完成!修改文件以deleted.txt命名。\n");
printf("\n");
printf("返回主界面请按2,结束请按1:\n");
scanf("%d",&j);
if(j==1) over();
}
void change()
{
inf w[1000]; FILE *fp1,*fp2 ;
int i,n=0,r,q,c,t,j,y,a; char p[20],s[20],x;
fp1=fopen("data.txt","r");
while(!feof(fp1))
{
fscanf(fp1,"%d %s %c %d %s %d %s %s",&w[n].num,w[n].name,&w[n].sex,&w[n].age,w[n].eb,&w[n].salary,w[n].add,w[n].tel);
n++;
}
fclose(fp1);
printf("请先输入查找信息:\n");
printf("\n");
printf("1.按姓名 2.按工号\n");
scanf("%d",&q);
if(q==1)
{
printf("请输入职工姓名:");
scanf("%s",p);
printf("\n");
for(i=0;i
if(strcmp(p,w[i].name)==0)
{
y=i;
printf("%d %s %c %d %s %d %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].eb,w[i].salary,w[i].add,w[i].tel);
}
printf("\n");
printf("请输入修改信息的类:\n");
printf("\n");
printf("1.工号 2.姓名 3.性别 4.年龄\n");
printf("5.学历 6.工资 7.住址 8.电话\n");
scanf("%d",&c);
if(c==1)
{
printf("将%d改为\n",w[y].num);
scanf("%d",&t);
w[y].num=t;
}
if(c==2)
{
printf("将%s改为\n",w[y].name);
scanf("%s",s);
strcpy(w[y].name,s);
}
if(c==3)
{
printf("将%c改为\n",w[y].sex);
scanf("%c",&x);
w[y].sex=x;
}
if(c==4)
{
printf("将%d改为\n",w[y].age);
scanf("%d",&t);
w[y].age=t;
}
if(c==5)
{
printf("将%s改为\n",w[y].eb);
scanf("%s",s);
strcpy(w[y].eb,s);
}
if(c==6)
{
printf("将%d改为\n",w[y].salary);
scanf("%d",&a);
w[i].salary=a;
}
if(c==7)
{
printf("将%s改为\n",w[y].add);
scanf("%s",s);
strcpy(w[y].add,s);
}
if(c==8)
{
printf("将%s改为\n",w[y].tel);
scanf("%s",s);
strcpy(w[y].tel,s);
}
}
else
{
printf("请输入工号:");
scanf("%d",&r);
printf("\n");
for(i=0;i
if(r==w[i].num)
printf("%d %s %c %d %s %d %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].eb,w[i].salary,w[i].add,w[i].tel);
printf("\n");
printf("请输入修改信息的类:\n");
printf("\n");
printf("1.工号 2.姓名 3.性别 4.年龄\n");
printf("5.学历 6.工资 7.住址 8.电话\n");
scanf("%d",&c);
if(c==1)
{
printf("将%d改为\n",w[r-1].num);
scanf("%d",&t);
w[r-1].num=t;
}
if(c==2)
{
printf("将%s改为\n",w[r-1].name);
scanf("%s",s);
strcpy(w[r-1].name,s);
}
if(c==3)
{
printf("将%c改为\n",w[r-1].sex);
scanf("%c",&x);
w[r-1].sex=x;
}
if(c==4)
{
printf("将%d改为\n",w[r-1].age);
scanf("%d",&t);
w[r-1].age=t;
}
if(c==5)
{
printf("将%s改为\n",w[r-1].eb);
scanf("%s",s);
strcpy(w[r-1].eb,s);
}
if(c==6)
{
printf("将%s改为\n",w[r-1].salary);
scanf("%d",a);
w[r-1].salary=a;
}
if(c==7)
{
printf("将%s改为\n",w[r-1].add);
scanf("%s",s);
strcpy(w[r-1].add,s);
}
if(c==8)
{
printf("将%s改为\n",w[r-1].tel);
scanf("%s",s);
strcpy(w[r-1].tel,s);
}
}
fp2=fopen("changed.txt","w");
for(i=0;i
fprintf(fp2,"%d %s %c %d %s %d %s %s\n",w[i].num,w[i].name,w[i].sex,w[i].age,w[i].eb,w[i].salary,w[i].add,w[i].tel);
fclose(fp2);
printf("修改已完成,保存在名为changed.txt的文档中,请注意查看!");
printf("\n");
printf("返回主界面请按2,结束请按1:\n");
scanf("%d",&j);
if(j==1) over();
}
void over()
{
system("cls");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf("\n");
printf(" Thanks,good bye!!!\n");
printf("\n");
printf(" O(∩_∩)O\n");
while(1) {};
}
题目四、
题目描述:编写程序,用二分法求方程2x3-4x2+3x-6=0在(-10,10)之间的根。
设计思路:
用二分法求方程的根思路简单,本程序中拟用do-while语句实现。通过不停地求解求根区间的中间值的方程带入值及其符号与区间左值的同异性来用区间中间值代替区间左边界或右边界,直至区
间中间值达到一定标准后便将它近似看做方程的解。
判断若f[(a+b)/2]=0,则即是根,计算过程结束。
否则,检测:
A.若f[(a+b)/2]与f(a)异号,则根位于区间[a,(a+b)/2]内,这时以(a+b)/2代替b;
B.若f[(a+b)/2]与f(a)同号,则根位于区间[(a+b)/2,b]内,这时以(a+b)/2代替a;
反复执行步骤2和3,直到区间[a,b]长度缩小到允许的误差范围之内,此时中点(a+b)/2即为所求的根。
运行效果截图:
附源程序如下:
#include
#include
int main()
{
float f(float x);
float x1,x,a=-10,b=10;
do
{
x1=f(a),x=f((a+b)/2);
if(x==0) break;
else
{
if(x*x1<0) b=(a+b)/2;
else a=(a+b)/2;
}
} while(fabs(a-b)>=1e-6);
printf("根为:%f\n",(a+b)/2);
return 0;
}
float f(float x)
{
float z;
z=2*pow(x,3)-4*pow(x,2)+3*x-6;
return(z);
}
题目五、
题目描述:购房排队程序。
假定文本文件a1.txt中的内容是我校南望山庄二期购房报名名单,其中职称0为博导、教授,1为正教授,2为副教授,3为讲师,4为助教。请编程完成排名顺序。排队原则为首先按照职称排序,职称高者排前面,如职称一样的情况下按工龄排,工龄一样的情况下按年龄排,以此类推。将排序后的名单存入另外一个文本文件中,假设为a2.txt。另假定此次房源只有200套,请将前200名存入a3.txt文件中。
设计思路:
本程序中通过指针的运用成功调用了目标文件,并通过while循环和fscanf函数达到了文件中信息可修改的目的。因为三个与信息排序有关的因素所占比重不同(优先次序不同),所以采用了使用与这些元素的紧要性相关联的“权重”这一思路,使得排序函数具有可操作的单一的简单对象。
排序部分则是采用“起泡法”这一简单思路。
运行效果截图:
附源程序如下:
#include
typedef struct
{
char name[20];
int num,wage,age,score;
}for_house;
main()
{
void sort(for_house *a, int n);
int i,n=0;
for_house a[1000];
FILE *fp1,*fp2,*fp3;
fp1=fopen("a1.txt","r");
while(!feof(fp1))
{
fscanf(fp1,"%s%d%d%d",a[n].name,&a[n].num,&a[n].wage,&a[n].age);
a[n].score=(5-a[n].num)*5000+a[n].wage*100+a[n].age;
n++;
}
fclose(fp1);
sort(a,n);
fp2=fopen("a2.txt","w");
for(i=0;i
fprintf(fp2,"%d.%10s\n",i+1,a[i].name);
fclose(fp2);
fp3=fopen("a3.txt","w");
for(i=0;i<200;i++)
fprintf(fp3,"%d.%10s\n",i+1,a[i].name);
fclose(fp3);
}
void sort(for_house *a, int n)
{
int i,j;
for_house t;
for(i=0;i
for(j=i+1;j
if(a[i].score
{
t=a[i]; a[i]=a[j]; a[j]=t;
}
}
河南科技学院机电学院电子课程设计报告题目声光控制器设计专业班级应用电子技术教育111姓名张胜林20xx0325117时间20xx1…
中南大学本科生课程设计(实践)任务书、设计报告(大学计算机基础)题目学生姓名指导教师学院专业班级学生学号课程设计实践报告计算机基础…
XXXX学院电子课程设计报告题目:彩灯控制器设计专业班级:电气工程及其自动化XX班姓名:XXX时间:20##.05.27~20##…
中南大学本科生课程设计(实践)任务书、设计报告(大学计算机基础)题目时间旅行学生姓名龙辰指导教师刘光瑜学院化学化工学院高级工程人才…
封面书写实践名称课程设计指导教师申燕萍班级姓名学号学期20xx20xx学年第2学期报告日期20xx年6月11日6月21日实训项目一…
中南大学本科生课程设计(实践)任务书、设计报告(SQL数据库程序设计)题目学生姓名指导教师学院专业班级学生学号网吧会员管理系统戴云…
中南大学本科生课程设计(实践)任务书、设计报告(大学计算机基础)题目时间旅行学生姓名龙辰指导教师刘光瑜学院化学化工学院高级工程人才…
中南大学本科生课程设计(实践)任务书、设计报告(大学计算机基础)题目学生姓名指导教师学院专业班级学生学号课程设计实践报告计算机基础…
XXX学院实习报告系别年级专业(班级)学号姓名实习类别专业课程设计指导教师实习期间教务部XXXX年制专业课程设计周小结为期一周的专…
平面设计公司实习报告经过了在大学里三年的理论学习,我们对平面设计有了一些基本掌握,对于平面设计这个专业也有了一个系统的学习和掌握。…