if(m%i=0)
返回0;
否则返回1;
}
主函数main()
{
定义整型变量i,j,m,p,h;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
将二维数组b[i][j]初始化
b[i][j]=0;
for(m=0;m<3;m++)
输入1~10十个整数a[m];
b[1][1]=a[0];
调用函数isprime;
if(isprime(a[0]+a[m]))
{
将与a[0]相加是素数的整数赋予d[p];
[p]=a[m];
a[m]=0;
p++;
}
if((i+j)%2!
=0)
将d[p]中的整数赋予b[i][j];
b[i][j]=d[p];
排除不满足条件的整数;
for(m=0;m<3;m++)
if(a[m]%2==0)
a[m]=0;
while(a[m]!
=0&&b[i][j]==0)
{
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
b[i][j]=a[m];
m++;
}
h=b[2][0];
b[2][0]=b[2][2];
b[2][2]=h;
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
输出结果;
}
结束程序
3.3详细定义、说明主要函数和过程的输入输出参数和功能
主函数中利用for循环语句实现了数组值的输入,并按要求选填1~10十个整数的9个。
自定义函数的功能是判断一个整数是否为素数。
3.4程序的流程图
主函数流程图如图2.2所示
图2.2主函数
判断素数子函数流程图如图2.3所示。
图2.3判断素数子函数流程图
第4章调试分析
4.1调试过程中遇到的问题及解决办法
调试过程中遇到了一些问题:
1.在不该加分号的地方加分号,例如:
在if条件句的后面加了分号。
2.该用复合语句是忘记写花括号{}。
3.定义空间不够,出现数组越界操作。
4.在定义子函数时,在主函数内部定义函数。
5.变量未定义就使用。
6.函数调用时实参个数多于形参个数。
解决方法:
通过编译后的错误提示找出错误并改正。
4.2改进设想
编译的时检查到语法错误,进行修改。
利用单步跟踪,找出出现逻辑错误的部分,进行修改。
4.3经验和体会
1.在调用函数时,一定要保证实参个数和形参个数相同。
22.在给数组申请空间时,尽量多申请些,防止出现越界现象。
3.在使用复合语句时一定不要忘记使用{}。
4.在if条件句的后面不能加了分号,以防止其成为空语句。
5.在使用变量是要保证前面已经定义。
第5章用户使用说明
1、运行VC++程序。
2.、在运行界面下按要求输入1~10十个整数,存入到一个一维数组中,每输入一个数据后按空格再输入下一个数据。
3、当10个数据都输入结束后按回车键,数据输入结束。
4、运行界面上会显示出运行结果。
5、按任意键,程序结束。
第6章测试结果
Pleaseinputthedata:
1~10
输入待填入3*3方格的数据:
1,2,3,4,5,6,7,8,9,10
将1~10十个整数填入方格的中间过程:
1二维数组b[3][3]初始化,赋值为0.即b[i][j]=0;即b[3][3]={0,0,0,0,0,0,0,0,0};
2.利用循环赋值:
a]10]={1,2,3,4,5,6,7,8,9,10};
3.b[1][1]=a[0];a[0]=0;标示a[0]已经被填入方格;
4b[1][1]=1;
5.b[3][3]={0,0,0,1,0,0,0,0,0}
6.利用循环将与a[0]相加是素数的整数a[m]赋值于d[10],d[10]={2,4,6,10};a[m]=0;
7.a[10]={0,0,3,0,5,0,7,8,9,0}
8.利用循环找i与j相加是奇数的方格位置即:
b[0][1],b[1][0],b[1][2],b[2][1];
9.利用循环将d[10]中的整数赋予b[0][1],b[1][0],b[1][2],b[2][1];
10.b[3][3]={0,2,0,4,1,6,0,10,0};
11.利用循环在剩余的5个数中找出与b[0][1],b[1][0],b[1][2],b[2][1];相加均不为素数的整数,赋值为0;表示该数不可选填,即a[7]=0;
12.a[10]={0,0,3,0,5,0,7,0,9,0}
13.在条件a[m]!
=0的情况下,利用循环将满足b[0][0]位置的整数选填,并使a[m]=0;
14a[10]={0,0,0,0,5,0,7,0,9,0}
15b[3][3]={3,2,0,4,1,6,0,10,0};
16在条件a[m]!
=0的情况下,将利用循环将满足b[0][2]位置的整数选填,并使a[m]=0;
17a[10]={0,0,0,0,0,0,7,0,9,0}
18b[3][3]={3,2,5,4,1,6,0,10,0};
19在条件a[m]!
=0的情况下,将利用循环将满足b[2][0]位置的整数选填,并使a[m]=0;
20a[10]={0,0,0,0,0,0,7,0,9,0}
21b[3][3]={3,2,5,4,1,6,7,10,0};
22在条件a[m]!
=0的情况下,将剩余的唯一整数填入b[2][2]的位置
23b[2][2]=9,
24b[3][3]={0,2,0,4,1,6,7,10,9};
25不合理
26定义中间变量h,将b[2][2]和b[2][2]位置的整数调换
27h=b[2][2];b[2][2]=b[2][0];b[2][0]=h
28b[3][3]={3,2,5,4,1,6,9,10,7};
29利用循环(i=0;i<3;i++)
30换行
31利用循环(j=0;j<3;j++)
32输出结果:
33325
34416
359107
36Pressanykeytocontinue
参考文献
[1]谭浩强主编,卜家岐,范燮昌编著.C语言程序设计[M].北京:
高等教育出版社,2006
[2]张磊.C语言程序设计[M].京:
高等教育出版社,2005
[3]张长海.C语言程序设计[M].北京:
高等教育出版社2006
[4]谭浩强.C语言程序设计(第三版)[M].北京:
清华大学出版社2006
附录(程序清单)
#include
intisprime(intm)//判断是否为素数
{
inti;
if(m==1||m%2==0)
return0;
if(m==2)
return1;
for(i=3;i*i<=m;i+=2)
if(m%i==0)
return0;
return1;
}
voidmain()
{
inti,j,m,p=0,k=0;
intsum=0;
intd[10],a[10],b[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
b[i][j]=0;//数组初始化
printf("pleaseinputthedata\n");//提示输入数据
for(m=0;m<10;m++)
scanf("%d",&a[m]);//存放数据
b[1][1]=a[0];
for(m=1;m<10;m++)
{
if(isprime(a[0]+a[m]))//判断与a[0]相加是否为素数
{
d[p]=a[m];//存放与其相加为素数的数
a[m]=0;
p++;
sum++;//计算与a[0]相加为素数的个数
}//if(isprime)
}
p=0;
while(p{
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if((i+j)%2!
=0)
{
b[i][j]=d[p];
p++;
}
}
for(m=1;m<10;m++)
if(a[m]%2==0)
a[m]=0;
for(m=1;m<10;m++)
{
if(a[m]!
=0)
{
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
if(((i+j)%2==0)&&(i*j!
=1))
b[i][j]=a[m];
if((!
isprime(b[0][0]+b[0][1]))&&(!
isprime(b[0][0]+b[1][0])));
if((!
isprime(b[0][2]+b[0][1]))&&(!
isprime(b[0][2]+b[1][2])));
if((!
isprime(b[2][0]+b[2][1]))&&(!
isprime(b[2][0]+b[1][0])));
if((!
isprime(b[2][2]+b[2][1]))&&(!
isprime(b[2][2]+b[1][2])));
m++;
}
}
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%3d",b[i][j]);
printf("\n");
}
}
课程设计总结:
这次课程设计总共用了两周的时间,通过这次课程设计我感到自己学到了很多知识。
不仅巩固了自己在课堂上学的东西,而且收获很多在过去半年中没学过知识,自己对于C语言了解也加深了。
在这次课程设计中,对自定义函数的运用有了很深的了解,对for循环的运用也变得顺畅,我的程序题目是字数最少的,但自我感觉却是最难做的!
在这两周中我进了很多次图书馆,看了很多与专业相关的书籍,它们帮助我很多很多。
我的程序题目很难,按照最初的设计思想,最佳的方法应该是运用回溯法,考虑到大一学生专业科目知识的欠缺,老师给我的题目降低了难度。
虽然降低了难度,相比来说,仍然挺难。
正是因为这个题目有难度,我才能有机会更好的锻炼自己。
由于自己知识的欠缺,在这两周内我不仅翻阅了大量的书籍,还向大二大三的学长学姐请教了相关知识。
从学长学姐那里,我学到了在过去半年中没有学到的知识。
从这次课程设计中我领略到:
题目越难,收获才会越多。
这次程序我加强自己的动手能力,改掉了自己眼高手低的毛病,收获很多。
通过这次课程设计,自己的实际编程能力有了进一步的锻炼,也有了一定程度的提高。
而且加强了自己如何进行编译,修改错误和单步跟踪检查等的能力。
更加强了自己编程的能力。
指导教师评语:
指导教师(签字):
年月日
课程设计成绩