《C语言程序设计》实验报告册.docx

上传人:b****1 文档编号:17363084 上传时间:2023-04-24 格式:DOCX 页数:55 大小:25.91KB
下载 相关 举报
《C语言程序设计》实验报告册.docx_第1页
第1页 / 共55页
《C语言程序设计》实验报告册.docx_第2页
第2页 / 共55页
《C语言程序设计》实验报告册.docx_第3页
第3页 / 共55页
《C语言程序设计》实验报告册.docx_第4页
第4页 / 共55页
《C语言程序设计》实验报告册.docx_第5页
第5页 / 共55页
点击查看更多>>
下载资源
资源描述

《C语言程序设计》实验报告册.docx

《《C语言程序设计》实验报告册.docx》由会员分享,可在线阅读,更多相关《《C语言程序设计》实验报告册.docx(55页珍藏版)》请在冰豆网上搜索。

《C语言程序设计》实验报告册.docx

《C语言程序设计》实验报告册

河南工程学院

计算机学院

C语言程序设计

实验报告册

 

学期:

2020~2021学年第1学期

专业:

软件工程

班级:

2021-2024

学号:

202052213120

姓名:

刘兴要

指导教师:

张天伍

实验一循环控制

一、实验学时:

2学时

二、实验目的

熟练掌握选择结构和循环结构

三、实验内容

1.求1!

+2!

+3!

+4!

+5!

…+20!

2.输出所有“水仙花数”,所谓水仙花数是指一个3位数,其各位数立方和等于该数本身。

例如:

153是一个水仙花数,因为153=1^3+5^3+3^3

3.有一个分数序列,2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

4.输出以下图案:

1

123

12345

1234567

12345

123

1

四、主要仪器设备及耗材

硬件:

计算机一台

软件:

DEV-CPP或其他软件

五、实验步骤

1.复习循环语句

2.输入源程序,编译、连接直到没有错误

3.根据实验步骤,撰写实验报告

六、程序清单

1.求1!

+2!

+3!

+4!

+5!

…+20!

#include

longjiecheng(intx){

longinti,k=1;

for(i=1;i<=x;i++)

k=k*i;

returnk;

}

intmain()

{

longintj,k=0;

inti;

for(i=1;i<=20;i++)

{

j=jiecheng(i);

k+=j;

}

printf("%ld\n",k);

}

2.输出所有“水仙花数”,所谓水仙花数是指一个3位数,其各位数立方和等于该数本身。

例如:

153是一个水仙花数,因为153=1^3+5^3+3^3

#include

intmain()

{

inti,a=0,b=0,c=0;

for(i=100;i<=999;i++)

{

a=i%10;

b=(i/10)%10;

c=i/100;

if(i==a*a*a+b*b*b+c*c*c)

{

printf("%d\n",i);

}

}

return0;

}

3.有一个分数序列,2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前20项之和。

#include

#include

intmain()

{

floata=2,b=1,sum;

inti,t;

sum=0;

for(i=0;i<20;i++)

{sum=sum+(float)(a/b);

t=b;

b=a;

a=a+t;

}

printf("%.2lf\n",sum);

return0;

}

4.输出以下图案:

1

123

12345

1234567

12345

123

1

#include

intmain(){

inti,j,k;

for(i=3;i>=-3;i--){

k=i<0?

-i:

i;

for(j=0;j

printf("");

for(j=1;j<=7-k*2;j++)

printf("%d",j);

printf("\n");

}

}

七、实验中出现的问题及解决的方法

实验一:

阶乘的结果超出了int型的表达范围造成溢出。

int型表示正整数的极限是2的31次方减一,int可以正确表达所有9位及以下的整数,所以我在这里用longint代替int

实验二:

拼写错误外无其它错误

实验三:

实验二数组

一、实验学时:

2学时

二、实验目的

掌握二维数组、字符数组与字符串的关系以及字符串变量的表示,熟练字符串处理函数的应用

三、实验内容

1.用选择法对10整数排序

2.有一篇文章,共有3行文字,每行有80个字符。

要求分别统计出其中的英文大写字母、小写字母、数字、空格以及其它字符的个数。

3.将两个字符串连接起来,不要用strcat函数。

4.(飞机定票系统)一家小型航空公司刚刚购买了计算机,用于新的自动化定票系统。

总裁要求您为新系统编制程序。

需要分配该航空公司的唯一一架飞机每个航班的座位(容量:

10个座位)。

提示:

程序应该轮流显示下列菜单:

Pleasetype1for“firstclass”

Pleasetype2for“economy”

如果输入1,则程序应该分配头等舱内的座位(座位1~5)。

如果输入2,则程序应该分配经济舱的座位(座位6~10)。

然后,程序输出登机证,说明座位号,以及它位于飞机的头等舱,还是经济舱内。

使用一个数组来代表飞机的座位安排。

将数组的所有元素初始化为0,以说明所有座位都是空的。

当分配每个座位时,将数组的对应元素设置为1,以说明不能再次使用那个座位号。

当然,程序不应该分配已经分配过的座位。

当头等舱满员时,程序应询问是否可以安排在经济舱内(等等)。

如果可以,则进行适当的座位分配。

如果不可以,则输出信息“NextFlightleavesin3hours”.

四、主要仪器设备及耗材

硬件:

计算机一台

软件:

DEV-CPP或其他软件

五、实验步骤

1.复习数组相关内容,编写以上题目源程序

2.输入源程序,编译、连接直到没有错误

3.根据实验步骤,撰写实验报告

六、程序清单

1.用选择法对10整数排序

#include

voidmain()

{

inti,j,min,temp,a[11];

for(i=1;i<=10;i++){

printf("a[%d]=",i);

scanf("%d",&a[i]);

}

printf("\n");

for(i=1;i<=10;i++)

printf("%5d",a[i]);输出带符号的整数,需要占用5个字符位置,不够则空格补齐.%5d是右对齐

printf("\n");

for(i=1;i<=9;i++){

min=i;

for(j=i+1;j<=10;j++)

if(a[min]>a[j])

min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

}

for(i=1;i<=10;i++)

printf("%5d",a[i]);

printf("\n");

}

2.有一篇文章,共有3行文字,每行有80个字符。

要求分别统计出其中的英文大写字母、小写字母、数字、空格以及其它字符的个数。

#include

#include

#include

voidfun(charstr[][80]){

intspace=0;

intcapital=0;

intlowercase=0;

intnum=0;

intother=0;

inti,j;

for(i=0;i<3;i++){

for(j=0;j<80;j++){

if(str[i][j]==''){

space++;//空格的个数加一

}

elseif(str[i][j]>64&&str[i][j]<91){

capital++;//大写字母加一

}

elseif(str[i][j]>96&&str[i][j]<123){

lowercase++;//小写字母加一

}

elseif(str[i][j]>47&&str[i][j]<58){

num++;//数字加一

}

elseif(str[i][j]!

='\0'){

other++;//其它加一

}

}

}

printf("大写字母个数为%d\n小写字母个数为%d\n空格个数为%d\n数字个数为%d\n其他字符个数为%d\n",capital,lowercase,space,num,other);

}

voidmain(){

charstr[3][80]={{"Mr.Johnsonhadneverbeenupinanaerophanebeforeandhehadreadalotabout"},

{"airaccidents,soonedaywhenafriendofferedtotakehimforarideinhis"},

{"wonsmallphane,Mr.Johnsonwasveryworriedaboutaccepting.Finally,123456"}};

printf("文章为:

\n");

inti;

for(i=0;i<3;i++){

printf("%s",str[i]);

}

printf("\n");

fun(str);

system("pause");

}

3.将两个字符串连接起来,不要用strcat函数

#include

intmain()

{

charstr1[80],str2[40];

inti=0,j=0;

gets(str1);//gets()函数的功能是从输入缓冲区中读取一个字符串存储到字符指针变量str所指向的内存空间

gets(str2);

while(str1[i]!

='\0')//运行到字符串结尾时结束

i++;

while(str1[j]!

='\0')

{

str1[i]=str2[j];

i++;

j++;

}

str1[i]='\0';

printf("\n%s\n",str1);

}

4.(飞机定票系统)一家小型航空公司刚刚购买了计算机,用于新的自动化定票系统。

总裁要求您为新系统编制程序。

需要分配该航空公司的唯一一架飞机每个航班的座位(容量:

10个座位)。

提示:

程序应该轮流显示下列菜单:

Pleasetype1for“firstclass”

Pleasetype2for“economy”

如果输入1,则程序应该分配头等舱内的座位(座位1~5)。

如果输入2,则程序应该分配经济舱的座位(座位6~10)。

然后,程序输出登机证,说明座位号,以及它位于飞机的头等舱,还是经济舱内。

使用一个数组来代表飞机的座位安排。

将数组的所有元素初始化为0,以说明所有座位都是空的。

当分配每个座位时,将数组的对应元素设置为1,以说明不能再次使用那个座位号。

当然,程序不应该分配已经分配过的座位。

当头等舱满员时,程序应询问是否可以安排在经济舱内(等等)。

如果可以,则进行适当的座位分配。

如果不可以,则输出信息“NextFlightleavesin3hours”.

#include

intmain()

{

inta=2;

intb=0;

inttic1=0;

inttic2=0;

intfi[6]={0,0,0,0,0,6};

intec[7]={0,0,0,0,0,0,6};

while(a!

=0)

{

/*code*/

printf("Pleasetype1for“firstclass”\n");

printf("Pleasetype2for“economy”\n");

scanf("%d",&b);

switch(b)

{

case1:

if(fi[tic1]==0)

{

/*code*/

fi[tic1]=1;

printf("你的座位号为%d\n",tic1+1);

tic1++;

}

Else

{

printf("NextFlightleavesin3hours\n");

}

break;

case2:

/*code*/

if(ec[tic2]==0)

{

ec[tic2]=1;

/*code*/

printf("你的座位号为%d\n",tic2+5);

tic2++;

}

Else

{

printf("NextFlightleavesin3hours\n");

}

break;

case3:

a=0;

break;

default:

printf("error,Pleasetypethecorrectnumber\n");

break;

}

}

printf("Programend\n");

}

七、实验中出现的问题及解决的方法

实验一:

无法确定两个数两两相比较的次数刚开始以为是比较10次,经过检测是比较9次。

实验二:

每组80个字符输入有问题有时候空格会没法计算。

实验三:

无。

实验四:

无。

实验三函数

一、实验学时:

4学时

二、实验目的

1.理解如何模块化地用函数来构建程序、全局变量和局部变量的概念及应用,进一步理解变量存储类别。

2.掌握如何创建新的函数。

3.理解在函数间传递信息的机制。

三、实验内容

1.求2~100间的素数,要求编写一个求素数的函数,在主函数中调用并输出2~100之间的素数。

2.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。

两个整数由键盘输入。

3.写一个函数,使给定的一个3×3的二维数组转置,即行列互换。

4.写一个函数,用“起泡法”对输入的10个字符按由小到大的顺序排列。

5.输入10个学生5门课程的成绩,分别用函数求:

①每个学生平均分,并输出;②每门课的平均分,并输出。

四、主要仪器设备及耗材

硬件:

计算机一台

软件:

DEV-CPP或其他软件

五、实验步骤

1.创建空白新工程,向新工程中添加空文件

2.编写代码

3.编译、调试并运行

六、程序清单

1.求2~100间的素数,要求编写一个求素数的函数,在主函数中调用并输出2~100之间的素数。

#include

intisprime(inta)

{

inti;

for(i=2;i

if(a%i==0){

break;

}

}

if(a==i)

return1;

else

return0;

}

intmain(void)

{

inti;

for(i=2;i<100;i++)

{

if(isprime(i))

{

printf("%d",i);

}

}

printf("\n");

}

#include

intmain()

{

sushu();

}

intsushu()

{

inti;

for(i=2;i<=100;i++)

{

/*code*/

inta=0;

intj;

for(j=2;j

{

/*code*/

if(i%j==0)

{

/*code*/

a++;

}

}

if(a==0)

{

printf("%d",i);

}

}

return0;

}

2.写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。

两个整数由键盘输入。

#include

intmain(){

inta,b,c,g;

printf("输入两个整数:

");

scanf("%d%d",&a,&b);

if(a!

=0&&b!

=0){

c=gcd(a,b);

g=lcd(a,b);

printf("最大公约数:

%d\n",c);

printf("最小公倍数:

%d\n",g);

}

else{

printf("Inputerror!

\n");

}

return0;

}

intgcd(inta,intb){

intt=0;

while

(1){

t=a%b;

if(t==0)

break;

a=b;

b=t;

}

returnb;

}

intlcd(inta,intb){

returna*b/gcd(a,b);//最大公约数等于两个数的乘积除以最小公倍数

}

3.写一个函数,使给定的一个3×3的二维数组转置,即行列互换

#include

voidchange(inta[3][3]){

inti,j,t;

for(i=0;i<3;i++){

for(j=0;j

t=a[i][j];//数组里面不能将行列互换,只能借助另外的参数;

a[i][j]=a[j][i];//即不能写成a[i][j]=a[j][i];

a[j][i]=t;

}

}

}

intmain(){

inta[3][3];

inti,j;

for(i=0;i<3;i++){

for(j=0;j<3;j++){

scanf("%d",&a[i][j]);

}

}

change(a);

for(i=0;i<3;i++){

for(j=0;j<3;j++){

printf("%d",a[i][j]);

}

printf("\n");

}

return0;

}

4.写一个函数,用“起泡法”对输入的10个字符按由小到大的顺序排列。

#include

intmain()

{

inta[10];

inti,j,k;

printf("input10numbers:

\n");

for(i=0;i<10;i++)

scanf("%d",&a[i]);

/*printf("\n");*/

for(j=0;j<9;j++)

for(i=0;i<9-j;i++)

if(a[i]>a[i+1]){

k=a[i];

a[i]=a[i+1];

a[i+1]=k;

}

printf("thesortednumber:

\n");

for(i=0;i<10;i++)

printf("%d",a[i]);

return0;

}

#include

intpaixu(intc[]);

intmain(){

intj,i;

inta[10];

for(i=0;i<10;i++)

scanf("%d",&a[i]);

paixu(a);

for(i=0;i<10;i++)

printf("%d",a[i]);

return0;

}

intpaixu(intc[]){

intk,j,m;

for(k=0;k<9;k++){

for(j=0;j<9-k;j++){

if(c[j]>c[j+1]){

m=c[j];

c[j]=c[j+1];

c[j+1]=m;

}

}

}

}

5.输入10个学生5门课程的成绩,分别用函数求:

①每个学生平均分,并输出;②每门课的平均分,并输出。

#include

#include

intxpj(inta[10][5]);

intkpj(inta[10][5]);

intmain(){

inta[10][5];

inti,j;

for(i=0;i<10;i++){

printf("第%d个同学的成绩:

",i+1);

for(j=0;j<5;j++){

scanf("%d",&a[i][j]);}}//**输入时数字之间用空格分隔**

printf("\n");

xpj(a);

printf

展开阅读全文
相关搜索

当前位置:首页 > 考试认证 > 从业资格考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1