c程序实验报告Word格式文档下载.docx
《c程序实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《c程序实验报告Word格式文档下载.docx(37页珍藏版)》请在冰点文库上搜索。
stdio.h>
intnoco(intn,int*a)
{inti=1,k=1,j=1,sum=0,m;
m=n*n*n;
while(sum<
m)
{i=k;
sum=0;
j=0;
while(j<
n)
{sum=sum+i;
i=i+2;
j++;
}
k=k+2;
}
k=k-2;
for(j=0;
j<
n;
j++)
{a[j]=k;
k=k+2;
if(sum==m)return1;
elsereturn0;
voidmain()
{FILE*fp;
inti,n,k,a[10];
fp=fopen("
myf2.out"
"
w"
);
for(n=1;
n<
=10;
n++)
{k=noco(n,a);
if(k)
{printf("
%d^3="
n);
fprintf(fp,"
for(i=0;
i<
n-1;
i++)
{printf("
%d+"
a[i]);
}
printf("
%d\n"
}
else
false"
fprintf(fp,"
myexamnumberis:
"
fclose(fp);
2011春07等级考试
1.编写函数longfind_m(intn)。
函数功能是查找满足以下条件的整数m:
(1)m是n的整数倍;
(2)m的十进制表示中仅由0和1组成。
函数返回找到的m的值。
2.编写main函数。
函数功能是声明变量n和m,输入一个整数到n中(n<
100),用n作实参调用函数find_m,将n及找到的整数m输出到屏幕及文件myf2.out.
longfind_m(intn)
{intflag1=1,flag2;
longm1,m2,k;
k=2;
while(flag1)
{flag2=1;
m1=m2=n*k;
while(m2&
&
flag2)
{if(m2%10!
=0&
m2%10!
=1)
flag2=0;
else
m2=m2/10;
if(m2==0)
flag1=0;
k++;
returnm1;
intn;
longm;
printf("
pleaseinputanum:
scanf("
%d"
&
n);
m=find_m(n);
\nn=%d\tm=%ld\n"
n,m);
2011年江苏省计算机等级考试春季上机试卷01
1.编写函数voidcresort(inta[][3],intn)。
函数功能是根据a指向的二维数组中第一列(列下标为0)和第二列(列下标为1)的值按如下规则生成第3列各元素的值,再以行为单位重排a数组各行元素的值,使得所有行按第3列元素从小到大有序。
第3列生成规则:
对任意的0<
=i<
=n-1,有:
a[i][0]
a[i][1]
a[i][2]
非素数
1
素数
2
3
4
函数功能是声明5行3列二维数组a并用测试数据初始化,用数组a作为实参调用cresort函数,将a数组中数据输出到屏幕及文件myf2.out.
#include"
stdio.h"
#defineN5
intisprime(intm)
{inti;
for(i=2;
=m/2;
if(m%i==0)return0;
return1;
voidcresort(inta[][3],intn)
{inti,j,k,m,c,t;
for(i=0;
{c=isprime(a[i][0])+isprime(a[i][1]);
switch(c)
{case0:
a[i][2]=1;
break;
case2:
a[i][2]=4;
case1:
if(isprime(a[i][0]))a[i][2]=3;
elsea[i][2]=2;
break;
{k=i;
for(j=i+1;
if(a[j][2]<
a[k][2])
k=j;
if(k!
=i)
for(m=0;
m<
3;
m++)
{t=a[k][m];
a[k][m]=a[i][m];
a[i][m]=t;
{inti,j,a[N][3]{{1812},{7,16},{4,9},{7,11},{24,5}};
FILE*fp;
fp=fopen("
cresort(a,N);
for(i=0;
N;
{for(j=0;
{printf("
%5d"
a[i][j]);
\n"
\nmyexamnumberis"
2011年江苏省计算机等级考试春季上机试卷02
1.定义符号常量N代表4.
2.编写函数Intinsert_row(inta[][N]),intb[][N],intm)。
已知形参a指向的二维数组(简称a数组)前n行数据已按每行数据之和和升序排列,形参b指向的二维数组中有m行数据。
Insert_row函数实现将b数组中m行数据插入到a数组中,完成插入操作后a数组中所有行的数据仍按每行数据之和升序排列。
函数返回a数组中有效数据的行数。
3.编写main函数。
函数功能是声明两个二维数组x与y并用测试数据初始化,用x与y数组作为实参调用insert_row函数将y数组中的两行数据插入到x数组中。
输出x数组中全部数据到屏幕及文件myf2.out。
#defineN4
intinsert_row(inta[][N],intn,intb[][N],intm)
{inti,j,k,f,c[10]={0},d[5]={0};
c[i]+=a[i][j];
m;
d[i]+=b[i][j];
for(j=0;
{for(i=0;
i++)if(c[i]>
d[j])break;
for(f=n;
f>
=i;
f--)
for(k=0;
k<
k++)
a[f][k]=a[f-1][k];
a[i][k]=b[j][k];
n++;
returnn;
{inti,j,n,x[10][N]={{2,2,3,4},{9,10,11,12}},y[2][N]={{1,3,5,7},{5,10,15,20}};
FILE*fp;
n=insert_row(x,2,y,2);
%4d"
x[i][j]);
fprintf(fp,"
fprintf(fp,"
\nmyexamnumberis:
fclose(fp);
2011年江苏省计算机等级考试春季上机试卷04
1.定义符号常量N代表4。
2.编写函数voidrotate(int(*t)[N],intn)。
函数功能是将t指向的数组中存储的n×
n矩阵最外圈全部元素做顺时针旋转90度变换。
例如,若n=3有下列矩阵:
123
456
789
将矩阵最外圈全部元素做顺时针旋转90度变换后应为:
741
456
3.编写main函数。
函数功能是声明N行N列二维数组t,从键盘输出n(1<
=4),用1~n2之间的自然数以行为主序的方式依次填充到二维数组t中,用n和数组t作为实参调用函数rotate,将数组t中数据输出到屏幕及文件myf2.out。
#include<
#defineN4voidrotate(int(*t)[N],intn)
{inti,j,r[N];
j++)r[j]=t[0][j];
j++)t[0][n-j-1]=t[j][0];
j++)t[j][0]=t[n-1][j];
for(j=n-1;
j>
=0;
j--)t[n-1][n-1-j]=t[j][n-1];
j--)t[j][n-1]=r[j];
{intt[N][N],n,i,j,k=0;
t[i][j]=++k;
rotate(t,n);
{for(j=0;
%2d"
t[i][j]);
printf("
2011年江苏省计算机等级考试春季上机试卷05
1.定义符号常量N代表20.
2.编写函数voidmatrix(int(*a)[N],intn)。
函数功能是生成一个n阶方阵并保存到a指向的二维数组中。
方阵中各元素值得构成规律是:
最外圈全部元素的值均为1,自外向内第2圈全部元素均为2,第3圈全部元素的值均为3,其他层依次类推。
例如:
若n=5,则生成的方阵为:
11111
12221
12321
11111
4.编写main函数。
函数功能是声明N行N列二维数组a,输入整数(1<
n《N),用n和数组a作为实参调用matrix,将数组a中的方阵输出到屏幕及文件myf2.out.
#defineN20
voidmatrix(int(*a)[N],intn)
{inti,j,k,m;
m=(n+1)/2;
{for(j=i;
n-i;
a[i][j]=a[n-i-1][j]=i+1;
for(k=i+1;
n-j;
a[k][i]=a[k][n-i-1]=i+1;
}
main(){intx[N][N]={0},i,j,n;
scanf("
matrix(x,n);
%3d"
myexamis:
2011年江苏省计算机等级考试春季上机试卷06
2.编写函数intmatrixchange(inta[][N],intm).函数功能是在a指向的m行N列数组中查找鞍点。
若找到一个鞍点则从数组中删除该鞍点所在行及所在列上的全部数据,函数返回1;
若找不到鞍点,函数返回0.
函数功能是声明二维数组x并用测试数据初始化,用x数组作为实参调用matrixchange函数,将变换后的x数组中数据输出到屏幕及文件myf2.out。
intmatrixchange(inta[][N],intm)
{inti,j,ii=-1,jj=-1,k,max,min;
{max=a[i][j];
for(k=0;
if(a[i][j]>
max)break;
if(k==N)
{min=a[i][j];
for(k=0;
if(a[k][j]<
min)break;
if(k==m)ii=i,jj=j,i=m,j=N;
if(ii!
=-1&
jj!
=-1)
{for(i=ii;
m-1;
for(j=jj;
N-1;
j++)a[i][j]=a[i+1][j];
for(j=jj;
i++)a[i][j]=a[i][j+1];
{inti,j,x[N][N]={{4,3,2,1},{8,7,6,5},{12,11,10,9},{16,15,14,13}},k;
k=matrixchange(x,N);
N-k;
\nmyexamnumberis:
1、题目名称:
学生成绩管理系统
内容:
学生信息包括学号、姓名、3门考试成绩。
试设计一学生成绩管理系统,使之能提供以下功能:
1、学生成绩录入功能(成绩信息用文件保存,也可不用)
2、统计:
3、所有学生的总分及平均分;
4、所有课程的平均分。
排序:
按平均分
5、查找:
输入一个学生学号,输出其各科成绩及平均成绩
6、修改、删除学生信息(任选一项)
2、解题的基本思路
《程序设计综合训练》是在学习完《程序设计基础》课程后开设的一门实践性课程。
要求学生以个人为单位,在教师指导下,综合运用所学过的C语言程序设计知识,掌握结构化程序设计的基本思路和方法,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题,加深对所学知识的理解和掌握,增强学生运用理论课所学知识分析问题、解决实际问题的能力,通过本课程的实践,为以后的程序开发打下良好的基础。
使学生巩固和加强《C语言程序设计》课程的理论知识。
(1)使学生掌握C语言的基本概念、语法、语义和数据类型的使用特点。
(2)使学生掌握C语言程序设计的方法和编程技巧,能正确使用C语言编写程序。
(3)进一步理解和运用结构化程序设计的思想和方法,学生利用流程图或N-S图表示算法。
(4)使学生掌握调试程序的基本方法及上机操作方法。
(5)掌握书写程序设计开发文档的能力,使学生学会撰写综合训练总结报告。
综合训练的思想和方法还可以作为学生做毕业设计时的参考资料。
(6)通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。
为学生以后的程序开发打好基础。
(7)初步掌握开发一个小型实用系统的基本方法:
结合实际应用的要求,使综合训练既覆盖知识点,又接近工程实际需要。
通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己分析问题的能力和编程能力,养成良好习惯。
(8)培养学生的创新能力和创新思维方式。
学生可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序,也可以根据自己的兴趣、爱好、特长,或者以前已经接触过的内容,自行确定综合训练课题。
3、设计方案
培养学生良好的程序设计风格。
在实际编程中,为了提高编程质量,对空行、空格和注释均有要求。
学生在综合训练书写代码时,应该严格按要求处,以便理建立良好的程序设计风格和习惯。
每个学生的信息为:
学号姓名性别联系电话语文数学外语三门单科成绩,考试平均成绩。
4、算法设计
是新增学生信息,修改记录,记录交换,按编号从小到大选择排序并显示存盘,删除记录,查询记录,备份记录和把下标为i的记录写入文件。
:
(1)新增学生信息。
输入学号、姓名、联系电话,三门功课成绩,计算总成绩并显示,同时按输入顺序存入文件中。
(提示:
先把学生信息读入数组,然后按提示输入每科成绩,计算平均成绩,平均成绩=(语文+数学+外语)/3,计算平均成绩最后把学生记录写入一个文件中)
(2)插入(修改)学生信息。
要求学号不重复,若学号已经存在,让重新输入,无重复学号则将插入的学生其他信息输入,计算总成绩并显示,把该记录插入数组,然后把插入后信息写入文件中)
(3)删除学生信息。
输入学号,根据学号删除该学生信息。
输入将删除学生学号,读出该学生信息,要求对此进行确认,以决定是否删除,若是则删除该学生信息并把删除后的信息写入文件中)
(4)显示全部学生信息。
打开文件,显示该文件的学生信息)
(5)根据学号查询学生信息:
输入学号,查找该生并显示学生数据。
输入要查询的学生学号,若存在,读出该学生信息,否则,给出提示信息,无此记录)
(6)学生信息排序:
一、根据学号排序学生数据。
学生信息可先在数组中排序,排序后再写到文件中。
)二、根据总成绩排序学生数据。
(7)备份学生信息。
要求输入文件名,按此文件名建立文件,并把所有学生信息写入该文件)
5.调试运行与结果分析
(1)程序运行后的菜单显示
.
(2)显示数据界面
(3)删除数据”界面
(4)查询数据”界面
(5)输入数据界面
(6)修改数据界面
(7)备份数据界面
(8)数据排序界面
6.训练中遇到的问题和解决的方法,未能解决的问题
遇到的问题:
(1).怎样按编号从小到大选择排序,并显示存盘
(2).删除记录
解决的方法:
(1)在《C程序设计》书中关于对10个数从小到大的排序例题中,借鉴所运用的选择法来完成此程序中关于按编号从小到大选择排序的程序。
至于显示存盘的程序,借鉴真题答案中标准答案中关于存盘的例题。
(2).一开始考虑的是用指针的方法来解决问题,后来通过比较用Strcpy和循环语句做比较方便。
未解决的问题:
关于密码的设置
7.综合训练总结
体会:
C语言作为一种计算机语言,很好的学习它,有助于我们更好的了解计算机,与计算机进行交流。
C语言功能丰富,表达能力强,使用灵活方便,应用面广,目标程序效率高,可移植性好,既具有高级语言的优点,又具有低级语言的许多特点。
一个大型的系统,都是通过复杂的程序编写而来,要想顺利的运行系统,必须很缜密的编写程序,否则会因为一个语句的编写错误而导致系统得到错误。
收获:
通过程序设计的综合训练,更好的掌握了结构,枚举类型的定义与使用;
数组的定义使用;
程序的三种基本控制流程的综合和灵活运用;
普通指针和数组指针的定义和使用;
各类函数的定义和调用;
文件的输入和输出;
程序的调试.掌握设计程序的思路,学习到用计算机语言编写程序,以实现所需处理的任务。
我们能够在这样的复杂的程序中很好的了解到C语言的重要性,用所学的知识很好的运用到实际生活中,解决更多的问题。
8.源程序清单
#include"
stdlib.h"
string.h"
#defineMAX500
#defineM3