C程序设计实验报告上传版.docx
《C程序设计实验报告上传版.docx》由会员分享,可在线阅读,更多相关《C程序设计实验报告上传版.docx(34页珍藏版)》请在冰豆网上搜索。
C程序设计实验报告上传版
实验报告
《高级语言程序设计》
2011~2012学年第二学期
学院(部)
管理学院
指导教师
班级代号
姓名/学号
同组人
一、实验项目名称:
综合练习数据类型、变量、运算符、循环、数组、函数声明、定义与调用,实参与形参数值传递以及其它复杂数据类型。
二、实验目的
综合练习数据类型、变量、运算符、循环、数组与函数编写,学会形式参数与实际参数的结合及其值的传递要点(数据类型、变量个数与顺序严格一致,忽略变量名是否一致)。
把函数调用与前面章节内容如变量、数组、循环及if分支语句等进行结合运用,巩固练习。
三、实验内容
为下面各题分别创建一个函数,通过实参向形参传递值方式实现数值传递。
1结合循环语句编一个一维数组输出一句有十个单词的话,在函数中使用
extern,auto,static,register等限定不同类型的变量。
#include
staticvoidprintResult(charax);
intmain()
{
charstr[]="IwanttolearnCLanguageandwanttobeexpertinthislanguage.";
char*p;
printf("程序段的输出结果:
");
printf("\n==============================================");
printf("\n");
p=str;
while(*p!
='\0')
{
printResult(*p);
p++;
}
printf("\n==============================================");
printf("\n");
return0;
}
staticvoidprintResult(charx)
{
autochara=x;
printf("%c",a);
}
/****************************************************
程序运行结果:
程序段的输出结果:
==============================================
IwanttolearnCLanguageandwanttobeexpertinthislanguage.
==============================================
Pressanykeytocontinue
******************************************************/
2编程输出一个3*5的整数矩阵。
(二维数组)
#include
voidprintMyArray(intx);
intmain()
{
inti,j;
intarray[3][5]={{10,20,30,40,50},{100,200,300,400,500},{1000,2000,3000,4000,5000}};
printf("3*5的整数矩阵:
");
printf("\n==============================================");
for(i=0;i<3;i++)
{
printf("\n");
for(j=0;j<5;j++)
{
printMyArray(array[i][j]);
}
}
printf("\n==============================================");
printf("\n");
return0;
}
voidprintMyArray(intx)
{
printf("\t%d",x);
}
/****************************************************
程序运行结果:
3*5的整数矩阵:
==============================================
1020304050
100200300400500
10002000300040005000
==============================================
Pressanykeytocontinue
******************************************************/
3请结合使用for与if语句编一个字符数组,并将其大写改为小写,或小写改为大写。
#include
charchange(charx);
intmain()
{
inti;
chararray[]="Hi,Howareyou!
";
printf("\n==============================================");
printf("\n原字符数组:
");
printf("\n%s",array);
printf("\n");
printf("\n%s","将大写改为小写,小写改为大写的结果:
");
printf("\n");
for(i=0;array[i]!
='\0';i++)//'\0'结束符
{
charafterChange=change(array[i]);
printf("%c",afterChange);
}
printf("\n==============================================");
printf("\n");
return0;
}
charchange(charx)
{
if(x>='a'&&x<='z')
{
x-=32;
}
elseif(x>='A'&&x<='Z')
{
x+=32;
}
returnx;
}
/****************************************************
程序运行结果:
==============================================
原字符数组:
Hi,Howareyou!
将大写改为小写,小写改为大写的结果:
hI,hOWAREYOU!
==============================================
Pressanykeytocontinue
******************************************************/
4请用循环语句和二维数组计算并输出全班同学(共69位)的这次英语、数
学和物理成绩总分及平均分。
#include
voidprintMyArray(intenglish,intmatchs,intphysics);
intmain()
{
inti;
intarray[69][3]={
{100,99,98},
{99,98,97},
{98,97,96},
{97,96,95},
{96,95,94},
{95,94,93},
{94,93,93},
{93,93,92},
{93,92,91},
{92,91,90},
{91,90,89},
{90,89,88},
{89,88,87},
{88,87,86},
{87,86,85},
{86,85,84},
{85,84,83},
{84,83,82},
{83,82,81},
{82,81,80},
{81,80,79},
{80,79,78},
{79,78,77},
{78,77,76},
{77,76,75},
{76,75,74},
{75,74,73},
{74,73,72},
{73,72,71},
{72,71,70},
{71,70,69},
{70,69,68},
{69,68,67},
{68,67,66},
{67,66,65},
{66,65,64},
{65,64,63},
{64,63,62},
{63,62,61},
{62,61,60},
{61,60,59},
{60,59,58},
{59,58,57},
{58,57,56},
{57,56,55},
{56,55,54},
{55,54,53},
{54,53,52},
{53,52,51},
{52,51,50},
{51,50,49},
{100,100,100},
{99,98,97},
{98,97,96},
{97,96,95},
{96,95,94},
{95,94,93},
{94,93,92},
{93,92,91},
{92,91,90},
{91,90,89},
{90,89,88},
{89,88,87},
{88,87,86},
{87,86,85},
{86,85,84},
{85,84,83},
{84,83,82},
{83,82,81}
};
printf("全班同学(共69位):
");
printf("\n==============================================");
printf("\n英语\t数学\t物理\t总分\t平均分");
for(i=0;i<69;i++)
{
printf("\n");
printMyArray(array[i][0],array[i][1],array[i][2]);
}
printf("\n==============================================");
printf("\n");
return0;
}
voidprintMyArray(intenglish,intmatchs,intphysics)
{
inttotal=english+matchs+physics;
intaverage=total/3;
printf("%d\t%d\t%d\t%d\t%d",english,matchs,physics,total,average);
}
/****************************************************
程序运行结果:
全班同学(共69位):
==============================================
英语数学物理总分平均分
100999829799
99989729498
98979629197
97969528896
96959428595
95949328294
94939328093
93939227892
93929127692
92919027391
91908927090
90898826789
89888726488
88878626187
87868525886
86858425585
85848325284
84838224983
83828124682
82818024381
81807924080
80797823779
79787723478
78777623177
77767522876
76757422575
75747322274
74737221973
73727121672
72717021371
71706921070
70696820769
69686720468
68676620167
67666519866
66656419565
65646319264
64636218963
63626118662
62616018361
61605918060
60595817759
59585717458
58575617157
57565516856
56555416555
55545316254
54535215953
53525115652
52515015351
51504915050
100100100300100
99989729498
98979629197
97969528896
96959428595
95949328294
94939227993
93929127692
92919027391
91908927090
90898826789
89888726488
88878626187
87868525886
86858425585
85848325284
84838224983
83828124682
==============================================
Pressanykeytocontinue
******************************************************/
把下列程序段放在函数中,通过实参向形参传递值方式实现数值传递。
在main()中调用,写出结果。
5执行下列程序,其输出结果是______
inti=9;
switch(i)
{case9:
i+=1;break;
case10:
i+=1;
case11:
i+=1;break;
default:
i+=1;
}printf(“%d”,i);//i=13
#include
voidprintResult();
intmain()
{
printf("输出结果是:
");
printf("\n==============================================");
printf("\n");
printResult();
printf("\n==============================================");
printf("\n");
return0;
}
voidprintResult()
{
inti=9;
switch(i)
{
case9:
i+=1;
break;
case10:
i+=1;
case11:
i+=1;
break;
default:
i+=1;
}
printf("%d",i);//i=13
}
/****************************************************
程序运行结果:
输出结果是:
==============================================
10
==============================================
******************************************************/
6以下程序段的输出结果_______
inti,a[8]={1,2,3,4,5,6,7,8},sum=0;
for(i=0;i<8;i=i+2)
sum=sum+a[i];
printf(“sum=%d\n”,sum);
#include
voidprintResult();
intmain()
{
printf("程序段的输出结果:
");
printf("\n==============================================");
printf("\n");
printResult();
printf("\n==============================================");
printf("\n");
return0;
}
voidprintResult()
{
inti,a[8]={1,2,3,4,5,6,7,8},sum=0;
for(i=0;i<8;i=i+2)
sum=sum+a[i];
printf("sum=%d\n",sum);
}
7以下程序段的输出结果_________
chara[20]=“abcd”,b[10]=“12345”;
strcat(a,“ABC”);
strcpy(a+5,b);
printf(“%s,%d\n”,a,strlen(a));
#include
#include
voidprintResult();
intmain()
{
printf("程序段的输出结果:
");
printf("\n==============================================");
printf("\n");
printResult();
printf("\n==============================================");
printf("\n");
return0;
}
voidprintResult()
{
chara[20]="abcd",b[10]="12345";
strcat(a,"ABC");/*a=abcdABC*//*strcat字符串连接函数*/
strcpy(a+5,b);/*a第一个字符右移五个(即第六个字符开始)用b替换*//*strcpy字符串复制函数*/
printf("%s,%d",a,strlen(a));/*strlen字符串取长*/
}
/****************************************************
程序运行结果:
程序段的输出结果:
==============================================
abcd12345,10
==============================================
Pressanykeytocontinue
******************************************************/
8运行以下程序段后sum的值是______
inti,a[10]={1,2,3,4,5,6,7,8,9,10},sum=0;
for(i=3;i<7;++i)
a[i]=a[i+1];
for(i=0;i<10;++i)
sum=sum+a[i];
printf(“sum=%d\n”,sum);
#include
intprintResult(intx[10]);
intmain()
{
intc;
inta[10]={1,2,3,4,5,6,7,8,9,10};
printf("程序段的输出结果:
");
printf("\n==============================================");
printf("\n");
c=printResult(a);
printf("\n==============================================");
printf("\n");
return0;
}
intprintResult(intx[10])
{
inti=3;
intsum=0;
for(i=3;i<7;++i)
x[i]=x[i+1];
for(i=0;i<10;++i)
sum=sum+x[i];
printf("sum=%d\n",sum);
return(sum);
}
/*****************************************