C循环
实验目的:
1.熟悉掌握while语句、do-while语句和for语句实现循环的方法
2.掌握在程序设计中用循环方法实现一些常用算法(如穷举、迭代、递推等)
3.掌握并会分析循环结构程序
实验内容:
1.编程计算5!,要求输出结果为:1×2×3×4×5=120。
2.输入10个数,求其中的最大数和最小数
实验过程及调试过程:
实验一:
#include
int main()
{
int
i=1,product=1;
while(i<=5)
{
product=product*i;
i++;
}
printf("The number is
%d\n",product);
return 0;
}
实验二:
#include
int main()
{
int
i=1,product=1;
while(i<=5)
{
product=product*i;
i++;
}
printf("The number is
%d\n",product);
return 0;
}
实验结果:
实验一:
The number is 120.
实验二:
(我输入的是1 2 3 4 5 6 7 8 9 10)
得到的答案是:
max=10
min=1
C语言的运行环境
实验目的:
1.熟悉开发环境,掌握程序设计的基本步骤
2.编制简单C程序并运行,熟悉C的编辑、编译、连接和运行过程
3.熟悉C的基本元素、标识符等,掌握C程序的基本结构
实验内容:
1. 检查所用的计算机系统是否已安装了C编译系统并确定它所在的子目录。
2.进入所用的C编译集成环境。
3.熟悉集成环境的界面和有关菜单的使用方法。
4.输入并运行一个简单的、正确的程序。
(1)输入下面的程序
#include
int main()
{
printf(“This is a c program.\n”);
return 0;
}
(2)仔细观察屏幕上的已输入的程序,检查有无错误,对程序进行编译,连接,运行,查看其结果。
(3)修改以上程序,请输出你的学号姓名。
5.编写程序,实现求两整数和与差。
实验步骤与调试过程:
1、
检查所用的计算机系统是否已安装了VC6.0,并确定它所在的子目录;
2、
进入C语言的编辑器;
3、
观察题目要求,开始进行自己的编译;
4、
根据题目一:对程序输入代码,
#include
int main()
{
printf(“This is a c program.\n”);
return 0;
}
5、
题目二对程序输出自己的学号和自己的姓名;
6、
对程序二进行修改,进行两数之和和两数之差的运算;
7、
试验结束后,分别进行运行并不断进行调试,得到正确结果后,再次进行保存。
实验结果:
试验一:
“This is a program.”
实验二:
“小明 1315935007”
实验三:
7 //2+5
3 //6-3
疑难小结:
.熟悉开发环境,掌握程序设计的基本步骤;编制简单C程序并运行,熟悉C的编辑、编译、连接和运行过程;熟悉C的基本元素、标识符等,掌握C程序的基本结构,对C语言有了一个较为深层面的认识。
主要算法和程序流程图:
实验一:
#include
int main()
{
printf("This is a
program");
return 0;
}
实验二:
#include
int main()
{
printf("小明 1315935007");
return 0;
}
实验三:#include
int main()
{
int a,b,sum;
printf("请输入两个数");
scanf("&d
%d",&a,&b);
sum=a+b;
printf("%d",sum);
return 0;
}
#include
int main()
{
int a,b,c;
printf("请输入两个数");
scanf("&d
%d",&a,&b);
c=a-b;
printf("%d",c);
return 0;
}
选择结构程序设计
实验目的:
1.
了解C语言表示逻辑量的方法(以0表示“假”,以非0代表“真”)
2.
学会正确使用逻辑运算符和逻辑表达式
3.
熟悉选择结构程序设计
4.
熟练使用if语句进行程序设计
5.
使用switch语句实现多分枝选择结构
实验内容:
1.输入x,y,编写程序求z=x+|y|的值。
2.编程判断输入的正整数是否既是5又是7的整数倍。若是,则输出yes;否则输出no。
3.编写简单的计算器程序:根据用户输入的两个操作数和运算符,显示计算结果。(设运算符包括+,-,*,/)。
实验步骤与调试过程:
1、
在电脑桌面上打开vc.6;
2、
新建一个文档,并将文档放入E盘中,文档名称为自己的姓名和学号;
3、
开始编译程序;
4、
保存并运行;
5、
如果有错误要仔细寻找错误并认真改正;
6、
记录程序结果。
实验结果:
实验一:
5 //x=2 y=-3
实验二:
NO //5
实验三:
3 //1+2
疑难小结:
在实验三中,输入1+2,最后得到的结果总是0,一直在寻找原因却找不到,请教学长才明白,是因为没有加break,导致程序不能跳出本次循环,一直往下运行。经过调整后,结果正确。
主要算法和程序流程图:
实验一:
#include
void main()
{
int x,y,z;
scanf("%d,%d",&x,&y);
if(y>=0)
z=x+y;
else
z=x-y;
printf("%d",z);
}
实验二:
#include
int main()
{
int i;
printf("please enter a
number \n");
scanf("%d",&i);
if (i>=0)
if(i%5==0&&i%7==0)
printf("YES\n");
else
printf("NO\n");
return 0;
}
实验三:
#include
int main()
{
int a,b,c;
char ch;
printf("Please
input:\n");
scanf("%d%c%d",&a,&ch,&b);
switch (ch)
{
case'+':c=a+b; break;
case'-':c=a-b; break;
case'*':c=a*b; break;
case'/':c=a/b;
}
printf("%d\n",c);
return 0;
}
循环结构程序设计
实验目的:
1.熟练掌握循环结构的嵌套
2.熟练掌握选择与循环结构的嵌套
3.掌握break和continue语句的使用
实验内容:
1.求任意两个整数之间所有的素数。
2.编写程序,从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。
实验步骤与调试过程:
1、
打开电脑,并查看桌面上是否有VC6;
2、
检查完毕后,打开VC6,建立一个新的文件;
3、
将此文件命名为自己的名字,并将此文件存于E盘中;
4、
查看实验题目要求,进行实验操作;
5、
完毕后,运行试验,检查是否发生错误,若错误,要及时查看并改正;
6、
进行小结。
实验结果:
实验一:
101 103 107 109 113 127 131 137 139 149
151 157 163 167 173 179 181 191 193 197
199
实验二:
第一的成绩:total=282,aver=76
第二的成绩:……
第三的成绩:……
第四的成绩:……
第五的成绩:……
疑难小结:
在实验二中,printf的语句出现问题,导致最后的结果总是被覆盖,经过老师的指导,最终改正过来,得到正确答案。
主要算法和程序流程图:
实验一:
#include
#include
int main()
{
int
n,k,i,m=0;
for(n=101;n<=200;n=n+2)
{
k=sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0) break;
if(i>=k+1)
{
printf("%d ",n);
m=m+1;
}
if(m==0)
printf("\n");
}
printf("\n");
return
0;
}
实验二:
#include
int main()
{
int
i,j1,j2,j3,j4,j5,aver,total;
for(i=1;i<=6;i++)
{
printf("please enter the %d kinds of grades\n",i);
scanf("%d,%d,%d,%d,%d",&j1,&j2,&j3,&j4,&j5);
total=j1+j2+j3+j4+j5;
aver=total/5;
printf("第%d的成绩: total=%d,aver=%d\n",i,total,aver);
}
return
0;
}
数组一
实验目的:
1.掌握一维数组和二维数组的定义、赋值和输入输出的方法
2.掌握字符数组和字符串函数的使用
3.掌握与数组相关的算法(排序算法)
实验内容:
1.输入10个数,利用数组求其中的最大数和最小数。
2.
输入10个数,保存在数组中,在数组中查找某个数。如果找到了要求输出该数在数组中所在的位置,如果找不到则输出“没找到该数”的提示信息。
3. 求3×3矩阵中的最大数及其所在的位置(即行号和列号)。
实验步骤与调试过程:
1、
打开电脑,找到VC6的软件;
2、
打开VC6,新建一个文档;
3、
把这个文档命名为自己的学号,并把此文件存于E盘中;
4、
根据实验要求,开始试验;
5、
试验结束后,执行;
6、
发现错误后,要根据提示,自行琢磨改正;
7、
小结并保存。
实验结果:
实验一:
the max is 10
the min is 1
//我输入的是1,2,3,4,5,6,7,8,9,10
实验二:
在数组第五个位置找到6 //我输入的10个数字是 1 2 3
4 5 6 7 8 9 10
实验三:
The max is 9
在二维数组第三行第三列找到9
疑难小结:
在实验三中,程序并不能正确执行,原因是缺少循环语句并且没有定义行和列,经过修改,成簇能够正常运行。
主要算法和程序流程图:
实验一:
#include
int main()
{
int i,
a[10],max,min;
for(i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
max=min=a[0];
if(max
{
printf("the max is %d\n",a[i]);
}
if(min
{
printf("the min is %d\n",a[0]);
}
return
0;
}
实验二:
#include
int main()
{
int
m,a[10];
printf("please enter 10 numbers\n");
for(int
i=0;i<=9;i++)
{
scanf("%d",&a[i]);
}
printf("请输入要寻找的数 :\n");
scanf("%d",&m);
for(i=0;i<10;i++)
if(a[i]==m)
{printf("在数组第%d个位置找到%d\n",i,a[i]);
return
0;
}
printf("没有这个数\n");
printf("\n");
return
0;
}
实验三:
#include
int main()
{
int
i,j,a[3][3],max;
printf("请输入三行三列的数\n");
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
scanf("%d",&a[i][j]);
//printf("%d",a[i][j]);
}
//printf("\n");
}
max=a[0][0];
int
row=0;int col=0;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
if(max
{
max=a[i][j];
row=i;
col=j;
}
}
}
printf("the
max is %d\n",max);
printf("在二维数组第%d行%d列找到%d\n",row+1,col+1,max);
printf("\n");
getchar();
return
0;
}
数组二
实验目的:
1.掌握一维数组和二维数组的定义、赋值和输入输出的方法
2.掌握字符数组和字符串函数的使用
3.掌握与数组相关的算法(排序算法)
实验内容:
1.编写一个程序,实现把一个字符串颠倒过来。
2.编写一个程序,循环从键盘接收一批学生的某门课的成绩,并依次保存在数组score的相应元素中,直到输入的成绩为999时结束。
(1)对成绩按从高到低排序,然后顺序输出排序后的所有学生的成绩,
(2)再输入一个学生的成绩,并插入排序后的成绩表中并保持有序,最后再输出所有学生的成绩
(3)再输入一个成绩,并从数组中删除与该数相同的所有同学成绩,最后输出最终的成绩表
实验步骤与调试过程:
1、
打开电脑,看电脑桌面上是否有VC6.0这个程序;
2、
打开VC6.0,建立一个新的文件,并将此文件命名为自己的姓名和学号,将次文件存在E盘中;
3、
根据题目要求,开始编写程序;
4、
完毕后,开始运行,如若发现错误,不断的进行调试,调试完毕后再次进行保存。
写小结,总结经验,完毕。
实验结果:
Dlrowolleh
疑难小结:
实验二的过程很复杂,在操作过程中比较困难,从中体现了知识结构的不牢固,在今后的学习中,要加强对C语言知识的学习,使自己能够更加自如地应用。
实验一:
#include
int main()
{
char a [11]="helloworld";
char b [11];
int i,j;
for(j=0;j<=9;j++)
{
b[j]=a[9-j];
}
for(i=0;i<=9;i++)
printf("%c",b[i]);
printf("\n");
return 0;
}
实验二:
#include
int I;
int main();
{
int i=0,n=0;
float score[N];
for(i=0;;i++)
{
printf("输入第%d个学生的成绩",i+1);
scanf("%f",&score[i]);
if(score[i]=999)break;
}
//输入所有的成绩
int j;
for(n=0;n
{
for(j=n+1;j
{
int temp;
if(score[n]
{
temp=scorn[n];
score[n]=score[j];
score[j]=temp;
}
}//冒泡算法排序
printf("从高到低分数排序为:\n");
for(n=0;n
printf("%7.2f",score[n]);
printf("\n");//输出排序后的成绩
I=i;
printf("请输入这个学生的成绩:\n");
scanf("%f",&score[i]);
I=I+1;
for(n=0;n;n++)
{
for(j=n+1;j
{
int temp;
if(score[n]
{
temp=score[n];
score[n]=score[j];
score[j]=temp;
}
}
}
printf("从高到低分数排序为:\n");
for(n=0;n
printf("%7.2f",score[n]);
printf("你想删除的分数:");
float dnumber;
scanf("%f",&dnumber);
for(i=0;i
{
if(dnumber==score[i])
i++;
else printf("%7.2f",score[i]);
}
}
}
函数一
实验目的:
1.理解和掌握多模块的程序设计与调试的方法
2.掌握函数的定义和声明函数的方法
3.熟悉调用函数时实参和形参的对应关系,以及“值传递”的方式
实验内容:
1.用函数实现两个整数交换,设计一个函数swap,实现两个整数的交换。
2.在主函数中输入一个十进制数,调用转换函数把这个十进制数转换成二进制数。
3.定义一个函数,判断三个整形边长能否构成三角形,如果是三角形,则判断它是否是直角三角形。
1)声明函数judge;
2)实现函数judge,根据输入的三个边长判断是否可以构成三角形;
3)在main中调用judge;
4)在main中根据judge的返回值判断是否是三角形,如果构成三角形则进一步判断是否是直角三角形,输出相应的结果。
实验步骤与调试过程:
5、
打开电脑,看电脑桌面上是否有VC6.0这个程序;
6、
打开VC6.0,建立一个新的文件,并将此文件命名为自己的姓名和学号,将次文件存在E盘中;
7、
根据题目要求,开始编写程序;
8、
完毕后,开始运行,如若发现错误,不断的进行调试,调试完毕后再次进行保存。
9、
写小结,总结经验,完毕。
实验结果:
实验一:a=12
b=21 //我输入的是a=21,b=12
实验二:10100 //我输入的是20
疑难小结:
实验一中不能够完全理解数值交换一意义。
试验一:
#include
int main()
{
void swap(int a,int
b);
int a,b,c;
printf("请输入分别a和b的值\n",a,b);
scanf("%d,%d",&a,&b);
swap(a,b);
}
void
swap(int a,int b)
{
int c;
c=a;
a=b;
b=c;
printf("a=%d,b=%d\n",a,b);
}
实验二:
#include
void f(int n)
{
if(n) f(n/2);
else return;
printf("%d",n%2);
}
int main()
{
int n;
while(1)
{
scanf("%d",&n);
if(n<0) break;
if(n==0) printf("0");
f(n);
printf("\n");
}
return 0;
}
实验三:#include
int judge(int a,int b,int c)
{
int m;
if(((a+b)>c)&&((a-b)b)&&((a-c)a)&&((b-c)
m=1;
else
m=0;
return m;
}
#include
void main()
{
int x,y,z,n;
printf("请输入三个数\n");
scanf("%d,%d,%d",&x,&y,&z);
n=judge(x,y,z);
if(n==1)