程序设计c实验报告江苏理工学院.docx
《程序设计c实验报告江苏理工学院.docx》由会员分享,可在线阅读,更多相关《程序设计c实验报告江苏理工学院.docx(20页珍藏版)》请在冰豆网上搜索。
![程序设计c实验报告江苏理工学院.docx](https://file1.bdocx.com/fileroot1/2022-11/29/48c8479c-fddb-4105-8ea3-12f0bc2283ec/48c8479c-fddb-4105-8ea3-12f0bc2283ec1.gif)
程序设计c实验报告江苏理工学院
《程序设计(C)》
实验报告
2014—2015学年第二学期
院系:
.
班级:
.
学号:
.
姓名:
.
江苏理工学院
计算机工程学院计算机应用基础教研室
实验1
题目
选择结构程序设计
实验学时
2学时
实验目的
1.了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”);
2.学会正确使用逻辑运算符和逻辑表达式;
3.熟练掌握if语句的使用(包括if语句的嵌套);
4.熟练掌握多分支选择语句——switch语句;
5.结合程序掌握一些简单的方法;
6.学习调试程序的方法。
实验内容与题目要求
实验内容与题目要求
实验内容与题目要求
1.有一函数:
x(x<1)
y=2x-1(1≤x<10)
3x-11(x≥10)
写程序,输入x的值,输出y相应的值。
源程序代码如下:
#include
intmain()
{intx,y;
printf("输入x:
");
scanf("%d",&x);
if(x<1)
{y=x;
printf("x=%3d,y=x=%d\n",x,y);
}
elseif(x<10)
{y=2*x-1;
printf("x=%d,y=2*x-1=%d\n",x,y);
}
else
{y=3*x-11;
printf("x=%d,y=3*x-11=%d\n",x,y);
}
return0;
}
运行结果贴图:
2.给出一百分制成绩,要求输出成绩等级’A’、’B’、’C’、’D’、’E’。
90分以上为’A’,80-90分为’B’,70-79分为’C’,60-69分为’D’,60分以下为’E’。
源程序代码如下:
#include
intmain()
{
floatscore;
chargrade;
printf("请输入学生成绩:
");
scanf("%f",&score);
while(score>100||score<0)
{
printf("\n输入有误,请重输");
scanf("%f",&score);
}
switch((int)(score/10))
{case10:
case9:
grade='A';break;
case8:
grade='B';break;
case7:
grade='C';break;
case6:
grade='D';break;
case5:
case4:
case3:
case2:
case1:
case0:
grade='E';
}
printf("成绩是%5.1f,相应的等级是%c\n",score,grade);
return0;
}
运行结果贴图:
3.从键盘输入1~12之间的任一数字,输出表示一年中对应该月的英文单词。
源程序代码如下:
#include
intmain()
{
intm;
printf("请输入月份:
\n");
scanf("%d",&m);
printf("m=%d\n",m);
while(m>12||m<1)
{
printf("\n输入有误,请重输!
\n");
scanf("%d",&m);
}
switch(m)
{case12:
printf("month:
December\n");break;
case11:
printf("month:
November\n");break;
case10:
printf("month:
October\n");break;
case9:
printf("month:
September\n");break;
case8:
printf("month:
August\n");break;
case7:
printf("month:
July\n");break;
case6:
printf("month:
June\n");break;
case5:
printf("month:
May\n");break;
case4:
printf("month:
April\n");break;
case3:
printf("month:
March\n");break;
case2:
printf("month:
February\n");break;
case1:
printf("month:
January\n");break;
}
return0;
}
运行结果贴图:
心得体会
注意各种运算符的优先次序。
“&&”和“||”是双目运算符,它要求有两个运算对象;“!
”是一目运算符,只要求有一个运算对象。
逻辑表达式的值应该是一个逻辑量“真”或“假”,逻辑运算的结果不是“0”就是“1”。
实验2
题目
循环结构程序设计
实验学时
2学时
实验目的
1.熟悉掌握用while语句、do…while语句和for语句实现循环的方法;
2.掌握在程序设计中用循环的方法实现一些常用方法;
3.进一步学习调试程序。
实验内容与题目要求
实验内容与题目要求
实验内容与题目要求
1.n从键盘输入,当n为偶数时,求1/2+1/4+…+1/n的值;当n为奇数时,求1/1+1/3+…+1/n的值。
源程序代码如下:
#include
intmain()
{
intn,i;
floatsum=0;
printf("请输入n:
\n");
scanf("%d",&n);
if(n<1)
printf("输入有误,请重新输入!
");
if(n%2!
=1)
{
{for(i=1;i<(n/2+1);i++)
sum=sum+1.0/(2*i);}
printf("1/2+1/4+...+1/n=%f\n",sum);
}
else
{
{for(i=1;i<(n+3)/2;i++)
sum=sum+1.0/(2*i-1);
}
printf("1/1+1/3+...+1/n=%f\n",sum);
}
return0;
}
运行结果贴图:
2.输出1,2,3,4四个数字能组成的所有无重复数字的三位数。
源程序代码如下:
#include
intmain()
{
inti,j,k;
intm=0;
printf("请输出1,2,3,4组成的无重复三位数:
\n");
for(i=1;i<5;i++)
for(j=1;j<5;j++)
for(k=1;k<5;k++)
{
if(i!
=j&&k!
=j&&i!
=k)
{printf("%d%d%d",i,j,k);
m++;
}
}
printf("\n组合三位数的个数:
%d\n",m);
return0;
}
运行结果贴图:
3.输出一个正整数的反序数,例如输入4578,则应输出8754。
源程序代码如下:
#include
intmain()
{
intx;
printf("请输入一个数字:
");
scanf("%d",&x);
printf("反序的数字:
");
while(x!
=0)
{
printf("%d",x%10);
x/=10;
}
printf("\n");
}
运行结果贴图:
心得体会
While与do…while区别为前者先判断条件表达式,后执行循环体语句;后者先执行循环体,然后在检查条件是否成立,若成立,再执行循环体。
在while中不要忽略给i和sum赋初值,否则它们的值是不可预测的。
While、do…while、for,都可以用break语句跳出循环,用continue语句结束本次循环。
实验3
题目
利用数组处理批量数据
实验学时
4学时
实验目的
1.掌握一维数组和二维数组的定义、赋值和输入输出的方法;
2.掌握字符数组和字符串函数的使用;
3.掌握与数组有关的算法。
实验内容与题目要求
实验内容与题目要求
实验内容与题目要求
1.输入一个3*3的整型矩阵,统计其中正数、负数以及零的个数并输出。
源程序代码如下:
#include
intmain()
{
inta[3][3];
inti,j;
intsum_0=0,sum_1=0,sum_2=0;
printf("请输入3*3矩阵:
");
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
scanf("%5d",&a[i][j]);
}
for(i=0;i<3;i++)
{for(j=0;j<3;j++)
printf("%5d",a[i][j]);
printf("\n");
}
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{if(a[i][j]<0)
sum_2++;
elseif(a[i][j]>0)
sum_1++;
elsesum_0++;
}
}
printf("0有:
%d个\n",sum_0);
printf("正数有:
%d个\n负数有:
%d个\n",sum_1,sum_2);
}
运行结果贴图:
2.从键盘输入10个数,找出10个整数中的最大数并与第一个数交换位置,找出最小数与最后一个数交换位置,输出变换后的结果。
源程序代码如下:
#include
intmain()
{
inta[10];
intmax=0,min=0;
inti,temp;
printf("请输入10个整数:
");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
if(a[i]>a[min])
min=i;
temp=a[min];a[min]=a[0];a[0]=temp;
for(i=0;i<10;i++)
if(a[i]max=i;
temp=a[max];a[max]=a[9];a[9]=temp;
printf("变换后的10个数:
");
for(i=0;i<10;i++)
printf("%3d",a[i]);
printf("\n");
}
运行结果贴图:
3.从键盘输入一字符串s,将该字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t数组中。
源程序代码如下:
#include
#include
intmain()
{
chars[50];
chart[50];
inti;
printf("请输入字符串:
");
scanf("%s",s);
memset(t,0,sizeof(t));
for(i=0;i{t[i]=s[i*2];}
t[i]='\0';
printf("%s\n",t);
return0;
}
运行结果贴图:
心得体会
一位数组在比较大小排序时用“起泡法排序”,二维数组用“打擂台算法”
在字符数组的初始化中如果初值个数小于数组长度,则只将这些字符数组赋给数组中前面的那些元素,其余的元素自动定位空字符。
注意字符串的两端实用双撇号而不是单撇号括起来的。
实验4
题目
用函数实现模块化程序设计
实验学时
4学时
实验目的
1.掌握定义、声明函数的方法;
2.掌握调用函数时实参和形参的对应关系,以及“值传递”的方式;
3.熟悉函数的嵌套调用和递归调用的方法;
4.熟悉全局变量和局部变量的概念和用法。
实验内容与题目要求
实验内容与题目要求
实验内容与题目要求
1.函数intflag(intx0,intx1,intd[])的功能是找出x0至x1之间所有能被3整除的数存入d数组中,返回d数组中元素的个数。
编写main函数,调用flag函数求出15~50之间所有满足条件的整数。
源程序代码如下:
#include
intmain()
{
intflag(intx0,intx1);
inta,b,n;
printf("请输入区间范围:
");
scanf("%d~%d",&a,&b);
n=flag(a,b);
printf("能被3整除的数的个数是:
%d\n",n);
return0;
}
intflag(intx0,intx1)
{
intd[40],m,i=0;
m=x0;
for(;m<=x1;m++)
{if(m%3==0)
{
d[i]=m;
i++;
}
}
return(i);
}
运行结果贴图:
2.函数voidmove(inta[],intn,intm)的功能是将有n个元素的数组a中前面各数顺序向后移m个位置,最后m个数变成最前面m个数。
编写main,调用move函数,输出变换后的结果。
源程序代码如下:
#include
voidmain()
{
voidmove(inta[10],intn,intm);
intn,m;
inti;
inta[10];
printf("请输入你要的数组长度\n");
scanf("%d",&n);
printf("输入你要交换的数组:
\n");
for(i=0;iscanf("%d",&a[i]);
printf("输入你要交换前多少个数字:
\n");
scanf("%d",&m);
move(a,n,m);
for(i=0;i{
printf("%3d",a[i]);
}
printf("\n");
}
voidmove(inta[10],intn,intm)
{
int*p,array_end;
if(m>0)
{
p=a+n-1;
array_end=*(a+n-1);
for(p;p>a;p--)
*p=*(p-1);
*a=array_end;
m--;
if(m>0)
move(a,n,m);
}
}
运行结果贴图:
3.函数voidjssort(inta[],intn)的功能是对a数组中前n个元素的后三位的大小进行升序排序。
要求:
在main中输入a数组的10个元素;调用函数jssort实现对a数组的排序;输出排序后的各元素。
测试数据:
6012,5099,9012,7025,8088,9096,8080,3046,5082,2345
运行结果:
6012,9012,7025,3046,8080,5082,8088,9096,5099,2345
源程序代码如下:
#include
intmain()
{voidjssort(intb[]);
voidwritedat(intb[]);
inta[10],i;
printf("请输入需要排序的数组:
\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
jssort(a);
writedat(a);
}
voidjssort(intb[])
{
inti,j,min,t;
for(i=0;i<9;i++)
{min=i;
for(j=i+1;j<10;j++)
if(b[min]%1000>b[j]%1000)min=j;
if(min!
=i)
{t=b[min];b[min]=b[i];b[i]=t;}
}
}
voidwritedat(intb[])
{inti;
printf("排序后的数组:
\n");
for(i=0;i<10;i++)
printf("%5d",b[i]);
printf("\n");
}
运行结果贴图:
心得体会
了解了如何定义函数,如何调用函数,明白全局变量的应用范围。
区别内部函数与外部函数。
学会运用函数。
实验5
题目
用指针处理链表
实验学时
4学时
实验目的
1.掌握指针的概念,会定义和使用指针变量;
2.掌握结构体类型变量定义和使用;
3.掌握链表的概念和操作方法。
实验内容与题目要求
实验内容与题目要求
实验内容与题目要求
1.综合教材第9章例9.9(建立链表的函数creat)、例9.10(输出链表的函数print)和第9章习题第7题(删除链表中结点的函数del)、第8题(插入结点的函数insert),再编写一个主函数,先后调用这些函数。
用5个函数组成一个程序,实现链表的建立、输出、删除和插入,在主函数中指定需要删除和插入的结点的数据。
运行结果贴图:
心得体会
链表是常见的数据结构,它是动态的进行存储分配的结构,链表中各元素在内存中的地址可以是不连续的。
链表这种结构必须利用指针变量才能实现。