C语言课程设计实习报告C语言课程设计实习报告
班级: 072115
姓名: 石鹏
学号:20111002452
2012-6
题目一、
题目描述:要求输入两个相对较大的正整数,能够通过程序计算出其结果。
设计思路:
输入m、n
开始
输入p、q
j=0
j≤n-1
N
j=j+1
Y
x=j
x≤m+j
N
x=j
Y
Y N
x=m+j
c[x]=r[x-1]+a[m-1]*b[j]/10
Y
N
r[x]=(c[x]+(a[0]*b[j])%10)/10
c[x]=(c[...
C语言课程设计实习
班级: 072115
姓名: 石鹏
学号:20111002452
2012-6
目一、
题目描述:
输入两个相对较大的正整数,能够通过程序计算出其结果。
设计思路:
输入m、n
开始
输入p、q
j=0
j≤n-1
N
j=j+1
Y
x=j
x≤m+j
N
x=j
Y
Y N
x=m+j
c[x]=r[x-1]+a[m-1]*b[j]/10
Y
N
r[x]=(c[x]+(a[0]*b[j])%10)/10
c[x]=(c[x]+(a[0]*b[j])%10)%10
r[x]=((a[1]*b[j])%10+c[x]+r[x-1]+a[0]*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
x=x+1
c[m+n-1]=0
Y N
x=m+n-1
x=m+n-22
x≥0
x≥0
N
Y Y
输入c[x]
输入c[x]
结束
x=x-1
x=x-1
由于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等。试设计一学生信息管理系统,使之能提供以下功能:
系统以文本菜单方式工作;
学生信息录入功能(学生信息最好用文件保存)---输入;
学生信息浏览功能---输出;
查询、排序功能---算法;
按学号查询;
按姓名查询;
学生信息的删除与修改。
设计思路:
功能函数声明
开始
1
调用清屏函数
system(“cls”)
输出文本菜单主界面
输入c
switch c
1 2 5 6
3 4
change()
dele()
input()
scan()
sort()
find()
本程序中不同的功能模块均由数据的读入、数据的处理、数据的输出及返回封装而成,差别仅体现在数据的处理上,而不同功能模块的选择则采用了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
#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标准后便将它近似看做方程的解。
判断若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文件中。
设计思路:
n=0
开始
fp1=fopen(“a1.txt”, “r”)
fp1指向的文件未结束
N
a[n].score=(5-a[n].num)*5000+a[n].wage*100+a[n].age
Y
n++
调用排序函数
sort(a,n)
fp2=fopen("a2.txt","w")
输出a1.tx全部内容到a2.txt中
fp3=fopen("a3.txt","w")
输出a1.tx全部内容到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
本文档为【C语言课程设计实习报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。