C语言实验报告Word下载.docx
《C语言实验报告Word下载.docx》由会员分享,可在线阅读,更多相关《C语言实验报告Word下载.docx(19页珍藏版)》请在冰豆网上搜索。
w=1;
//定义整形变量W来通过W判断是否输出逗号
for(i=1;
i<
=9;
i++)//用i代表百位从1开始执行循环
{
for(j=0;
j<
j++)//用j代表十位从0开始执行循环
for(k=0;
k<
k++)//用k代表个位从0开始执行循环
m=i*100+j*10+k;
//用i,j,k表示出3位数
if((pow(i,3)+pow(j,3)+pow(k,3))==m)//判断是否符合水仙花数的要求
{if(w==1)printf("
%d"
m);
//w=1第一个数字不输出逗号
else{
printf("
%d"
//输出水仙花数
}w=0;
//让w=0在数字的前面输出逗号
}}}}
return0;
案例二:
用指针方法对10个整数按由大到小顺序排序
因为要求用指针,所以必须知道如何应用指针。
通过在主函数中定义数组a存放10个整数,用选择排序法对10个数进行排序。
解题思路:
在主函数中定义数组a存放10个整数,定义int*型指针变量p指向a[0]。
定义函数sort使数组a中的元素按由大到小的顺序排列。
在主函数中调用sort函数,用指针变量p作实参。
Sort函数的形参用数组名。
用选择排序法进行排序。
#include<
voidsort(intx[],intn);
//sort函数声明
inti,*p,a[10];
p=a;
//指针变量p指向a[0]
printf("
pleaseenter10integernumber:
"
);
for(i=0;
10;
i++)
scanf("
p++);
//输入10个整数
//整形变量p重新指向a[0];
sort(p,10);
//调用sort函数
for(p=a,i=0;
*p);
输出排序后的10个数组元素
p++;
}
\n"
return0;
voidsort(intx[],intn)//定义sort函数,x是形参数组名
inti,j,k;
n-1;
k=I;
for(j=i+1;
n;
j++)
if(x[j]>
x[k])k=j;
if(k!
=j)
t=x[i];
x[i]=x[k];
x[k]=t;
}}}
2.大作业报告
实验要求:
一.要具有一下功能:
首先选择登陆账号类型,为管理员或者学生(权限不同),分别输入账号密码,验证正确则登陆系统
若登陆的是管理员,则显示对应的功能选项
1)提供基本的菜单选项,能根据不同的选项执行不同操作;
2)对学生信息进行录入,删除、修改、查询等操作,;
3)对学生信息进行统计(如求各门课程平均分等)、排序等操作。
若登陆的是学生账户,则显示对应的功能选项
2)查询学生自己的个人信,包括自己的学号,姓名,各门课程成绩等;
3)修改自己的密码,统计自己成绩平均分,总分等。
二.要求
1)管理员的账号密码均在程序中初始化;
2)每个学生的信息统一用结构体来存储,结构体中包含学生的学号,姓名,密码,两个数组,一个用来存储课程名称,另一个用来存储各门课程成绩;
实验目的:
用所学的知识和前面积累的编程经验实现一个较为完整的系统,尽量全部使用到函数、数组、指针和结构体。
体现你的成果。
题目分析:
为了编一个较为完整的学生管理系统。
首先需要用数组来储存学生信息。
同时为了完成排序,求平均分,修改,删除等功能需要调用很多函数,通过调用函数来实现这些功能。
涉及的知识点:
数组,函数,冒泡排序法,循环,用分支结构等知识。
实验结果:
进入系统界面输入1然后输入账号,密码进入管理员页面,因为是管理员,所以未存储学生信息,要先录入信息,再进行其他操作
输入1开始录入学生信息,录入如下的两个学生信息
返回主界面,输入4查询学生信息,输入学生姓名,可输出这位学生的信息
返回主界面,输入5可求出各科的平均分
返回主界面输入6可求出各科排序
返回主界面输入3进入修改界面,输入要修改的学生姓名,然后输入修改信息,即可得出要修改的结果。
进入主界面输入2进入删除界面,删除想要删除学生的信息,在显示的学生信息列表中,输入想要删除学生所处的行数,即可达到删除目的。
管理员功能基本已经实现,下面是学生运行的结果:
在初始界面按0输入学生账号,密码即可进入学生操作界面,进行查询信息,查看总分,平均分,修改密码等操作。
返回主界面,输入1查看个人信息
返回主界面,输入2查看个人总分
返回主界面,输入4查看个人平均分
返回主界面,输入3进入修改密码界面,输入想要修改的新密码,然后重新登录进入学生端
3.实验总结
起初得到大作业的题目,感觉很难,有着迷茫,不知道从何下手,如何去完成这个作业。
曾一度认为这个大作业自己根本没法完成。
可是慢慢的,看着同学们都在做大作业心中亦有着许多的不服气,认为同样学习别人可以做出来,自己为什么不可以。
于是我开始尝试着去看教材,进一步消化所学的知识,同时也在网上查找资料,通过查阅逐渐有了一定基础,感觉可以开始做。
可真正开始后才发现还是有很多地方还是不太明白,比如系统主体框架如何去搭建,在函数的调用方面如何去做,在调用的函数中如何编才可以达到完成目标的目的。
后来慢慢的通过自己查阅书籍,寻求同学的帮助,大作业终于逐步完成。
在这次大作业的完成过程中,虽然花了很多时间去查阅资料,很累。
同时也感到自己很充实,在做的过程中花时间查阅资料进一步加深了对教材知识的巩固也进一步提高了自己分析问题的能力,编程的能力。
对自身有很大的帮助。
string.h>
stdlib.h>
structstudent
charid[20];
charname[20];
charsex[20];
intmath;
intprogram;
intpe;
}stu44[50];
intnum=0;
voidstu_check(void);
voidadmin_check();
voidstu(void);
system("
cls"
管理员登陆请输入1,学生登陆请输入0:
inta;
&
a);
if(a==1)
admin_check();
elseif(a==0)
stu_check();
return0;
}
voidadmin_check()
voidadmin(void);
\n请输入管理员账号:
characcount[20];
intt;
%s"
account);
\n请输入密码:
charpassword[20];
password);
if(strcmp(account,"
a"
)==0&
&
strcmp(password,"
b"
)==0)admin();
else
printf("
\n账号或密码错误,继续请按1,返回请按0:
scanf("
t);
if(t==1)admin_check();
elseif(t==0)return;
}
voidadmin(void)
voidmenu_admin(void);
menu_admin();
voidadd(void);
voiddel(void);
voidedt(void);
voidcha(void);
voidpaixu(void);
voidave(void);
m1:
scanf("
switch(t)
case1:
add();
break;
case2:
del();
case3:
edt();
case4:
cha();
case5:
ave();
case6:
paixu();
case7:
break;
default:
输入错误!
请重新输入:
gotom1;
}
voidmenu_admin(void)
请输入要使用的功能的序号:
*1.录入学生成绩*\n"
*2.删除学生成绩*\n"
*3.修改学生成绩*\n"
*4.查询学生成绩*\n"
*5.求各课程平均分*\n"
*6.各科排序*\n"
*7.退出*\n"
voidadd(void)
inti=0;
\n请按照以下格式录入学生信息:
学号姓名性别数学程序体育\n"
example:
\n2140505082LiM9810095\n\n"
while
(1)
stu44[i].id);
if(strcmp(stu44[i].id,"
0"
)==0)break;
else
%s%s%d%d%d"
stu44[i].name,stu44[i].sex,&
stu44[i].math,&
stu44[i].program,&
stu44[i].pe);
id:
%s\tname:
%s\tsex:
%s\tmath:
%d\tprogram:
%d\tpe:
%d\n"
stu44[i].id,stu44[i].name,stu44[i].sex,stu44[i].math,stu44[i].program,stu44[i].pe);
i++;
\n请继续输入,返回请输入0。
\n\n"
num++;
admin();
voiddel(void)
intn,i;
\n所有学生信息:
for(i=0;
num;
stu44[i].id,stu44[i].sex,stu44[i].name,stu44[i].math,stu44[i].program,stu44[i].pe);
\n请输入你要删除学生的位置:
n);
\n删除后的学生信息:
for(i=n-1;
strcpy(stu44[i].id,stu44[i+1].id);
strcpy(stu44[i].name,stu44[i+1].name);
strcpy(stu44[i].sex,stu44[i+1].sex);
stu44[i].math=stu44[i+1].math;
stu44[i].program=stu44[i+1].program;
stu44[i].pe=stu44[i+1].pe;
num-1;
\n输入任意数字继续查询,返回请输入0。
intk;
k);
if(k==0)admin();
voidedt(void)
inti;
charstr2[20];
\n请输入姓名:
str2);
if(strcmp(str2,stu44[i].name)==0)
{
请输入修改信息:
%s%s%s%d%d%d"
stu44[i].id,stu44[i].sex,stu44[i].name,&
}
修改后的信息为:
\n返回请输入0。
voidcha(void)
charstr1[20];
str1);
if(strcmp(str1,stu44[i].name)==0)
elsecha();
voidave(void)
inta,b,c,d,e,f,i;
a=0;
b=0;
c=0;
a=a+stu44[i].math;
b=b+stu44[i].program;
c=c+stu44[i].pe;
d=a/num;
e=b/num;
f=c/num;
数学平均分=%d\n"
d);
程序平均分=%d\n"
e);
体育平均分=%d\n"
f);
intk;
voidpaixu(void)
inti,j,t;
num-i;
for(i=0;
num-1-j;
{
t=stu44[i].math;
stu44[i].math=stu44[i+1].math;
stu44[i+1].math=t;
}
数学成绩排序为:
%d"
stu44[i].math);
t=stu44[i].pe;
stu44[i].pe=stu44[i+1].pe;
stu44[i+1].pe=t;
\n体育成绩排序为:
stu44[i].pe);
t=stu44[i].program;
stu44[i].program=stu44[i+1].program;
stu44[i+1].program=t;
\n程序成绩排序为:
stu44[i].program);
charstr4[20]="
abc"
;
voidstu_check(void)
charstr3[20]="
\n请输学生账号:
if(strcmp(account,str3)==0&
strcmp(password,str4)==0)stu();
if(t==1)stu_check();
/*structstudentstu44[50]={{"
11"
"
li"
m"
80,80,80},{"
12"
wang"
85,85,85},{"
13"
zhou"
w"
90,90,90}};
*/
voidstu(void)
charstr1[20]="
2140505082"
charstr2[20]="
n"
strcpy(stu44[1].id,str1);
strcpy(stu44[1].name,str2);
strcpy(stu44[1].sex,str3);
stu44[1].math=90;
stu44[1].program=95;
stu44[1].pe=98;
voidstumenu_admin(void);
voidck(void);
voidzf(void);
voidxg(void);
voidpj(void);
stumenu_admin();
ck();
zf();
xg();
pj();
gotom1;
voidstumenu_admin(void)
*1.查看学生信息*\n"
*2.查看成绩及总分*\n"
*3.修改密码*\n"
*4.查看平均分*\n"
*5.退出*\n"
voidck(void)
stu44[1].id,stu44[1].sex,stu44[1].name,stu44[1].math,stu44[1].program,stu44[1].pe);
printf