C语言程序
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
实验报告
阿坝师专计科系《C语言程序设计》实验手册
《C语言程序设计》实验简介
课程名称:C语言程序设计
课程性质:专业必修课
课程属性:专业必修课
课程学时学分:学时78 实验学时32 学分6
面向专业:软件技术、网络系统管理、计算机应用技术、楼宇智能化工程技术、现代教育技术
一、课程的任务和基本要求
C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实验性教育环节。本课程的主要任务是让学生充分掌握C语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。
二、实验项目
【实验一】最简单的C程序---顺序程序设计
【实验二】逻辑运算和判断选取控制
【实验三】循环结构程序设计(一)
【实验四】循环结构程序设计(二)
【实验五】函数
【实验六】数组(一)
【实验七】数组(二)
【实验八】指针
【实验九】结构体、共用体和文件
【实验十】C程序综合性实验
三、有关说明
1、与其它课程和教学环节的联系:
先修课程:计算机导论
后续课程:面向对象程序设计、Java程序设计、php、数据结构、软件工程
2、教材和主要参考书目:
(1)教材:
《C程序设计
题
快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题
解与上机指导(第三版)》,谭浩强 编著,北京:清华大学出版社,2005年。 (2)主要参考书目:
《C语言程序设计(第三版)》 谭浩强 著,清华大学出版社,2005年。
阿坝师专计科系《C语言程序设计》实验报告
三、实验内容
实验一 最简单的C程序---顺序程序设计
(验证性实验 2学时)
实验时间: 2012, 10,16 实验地点: 公共机房 3
实验成绩:
(一)、实验目的
1(熟悉win-tc程序运行环境
2(掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法 3(掌握C语言中使用最多的一种语句——赋值语句
4(掌握数据的输入输出方法,能正确使用各种格式控制符
(二)、实验内容
1(写出下列程序的运行结果
(1)#include
void main()
{
printf(“*****************\n”);
printf(“This is a c program. \n”);
printf(“****************\n”);
}
运行结果为: *****************
This is a c program.
****************
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
: printf函数表示输入字符,\n表示换行
将程序中的\n去掉后,运行结果及分析:
运行结果为:**************** This is a c program. ****************
分析: 无 “\n”不能自动换行
(2)#include
void main()
{
int a=100,b=20,sum,sb;
sum=a+b;
sb=a/b;
printf("sum=%d,sb=%d",sum,sb);
}
第 1 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告 运行结果为: sum=120 sb=5
分析: sum=100+20=120,sb=100/20=5 输出时一一对应
(3)#include
void main( )
{
char c1,c2;
c1=97;c2=98;
printf("%c ,%c\n",c1,c2);
printf("%d,%d\n",c1,c2);
printf("%c %c\n",c1+1,c2+2);
}
运行结果为: a,b
97,98
b,d
分析: 定义字符c1,c2。第一行以字符型输出(a,b),换行, 第二行将字符型以十进制输出得(97,98),换行,第三行以字符型输出 (c1+1,c2+2)得(b,d)
(4)#include
void main ()
{
int i=8,j=10,m,n;
m=++i;n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
第 2 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
}
运行结果为: 9, 11, 9 10
分析: “++” 在前先i自身加再赋值给m,”++”在后面j先赋值给n再自身加
再将本程序的第3行改为m=i++;n=++j;
运行结果及分析:
运行结果为: 8,11,8,11 分析: 2(程序填空
任意输入一个有五位数字的正整数x,分别输出每一数位上的数字(由高到低分别用b5,b4,b3,b2,b1表示),请将程序补充完整。
#include
main()
{
int b1,b2,b3,b4,b5;
?printf(“b1,b2,b3,b4,b5:” x;
Scanf( “ %ld ”,&x);
b5= ?(x/10000)%10 ;
b4=(x/1000)%10;
b3= ?(x/100)%10 ;
b2=(x/10)%10;
b1= ? x%10 ;
printf(“the number is ? %d \n”,x);
printf(“its bit is:%d,%d,%d,%d,%d\n”,b5,b4,b3,b2,b1);
第 3 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
}
程序分析:? long int ? x/10000 ? (x/100)%10 ?
x%10 ? %1d
3(程序改错(注意:题中的编号为行序号,并非程序本身) 计算任意一个半径为r的圆的面积和周长(结果保留两位小数) (1)#include
(2)main()
{
(3) float r; p=3.14,c,area;
(4) printf(“input r:”);
(5) scanf(“%f ”, r);
(6) c=2p*r;
(7) area=p*r*r
(8) printf(“c=%-7.2f,area=%-7.2f”,c,area); (9)}
错误语句的行号: (3)
改正后的语句全行:float r,p=3.14,c,area;
错误语句的行号: (5)
改正后的语句全行: scanf(“%f”,r) 错误语句的行号: 6
改正后的语句全行: c=2*p*r 错误语句的行号: (7)
改正后的语句全行: area=p*r*r
教师评语:
第 4 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
实验二 逻辑运算和判断选取控制 实验时间: 2012 10,25 实验地点:公共机房3
实验成绩:
(验证性实验 2学时) (一)、实验目的
1(了解逻辑量在C语言中的表示方法
2(学会使用逻辑运算符和逻辑表达式
3(熟练掌握if语句和switch语句
(二)、实验内容
1(写出下列程序的运行结果
(1)#include
void main( )
{
int a,b,x=10,y=9;
a=(--x == y++)? --x : ++y;
b= y;
printf(“%d,%d\n”,a,b);
}
运行结果为: 8,11
分析: --x先自减x=9=y,所以计算结果为1,故取值—x=8,y只进行了一次自增,所以y=9.
(2)#include
void main()
{
int a=2,b=-1,c=2;
If(a
void main( )
{
int a=0,b=0,c=0;
if(++a > 0 || ++b > 0) ++c;
printf(“\na=%d,b=%d,c=%d”,a,b,c);
第 5 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
}
运行结果为: a=1,b=0,c=1 分析: 先判断++a>0,故++b不再运算,条件成立,计算++c,故a=1,b=0,c=1.
(4)#include
void main()
{
int x=-1;
switch (x)
{
default: printf(“a”);
case 1: printf(“b”);
case 2: printf(“c”);
}
}
运行结果为: abc 分析:由于x=-1,所以运行default后面的句子,由于没有break语句,所以继续运行,所以三个语句都运行了。 在case 1:printf(“b”);后加上break;语句,结果如何,修改程序并上机调试。 运行结果为: ab 分析: 2(程序填空
输入两个整数,从用户处获取这两个整数,显示其中较大的数,在其后跟随“is larger”。如果这两个数相等,显示“These numbers are equal.”。请在_____内填入正确内容。 #include
void main( )
{
int a,b;
printf(“please input two numbers, a, b! “);
scanf(“%d%d”,&a,&b);
if( a>b ? ) printf(“%d is larger”, a );
else if(_______?____________) printf(“These numbers are equal”);
else ___________ ?_____________________;
}
填空?: a>b
填空?: a=b
第 6 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告 填空?: printf(“%d is larger”,b)
结果分析: 显示较大数字 3(编写程序
(1)编写一个程序,读入5个整数,然后确定并显示这组数中的最大整数和最小整数。
程序清单:
#include
{viod main()
Int a,b,c,d,e,max1,min1; Scanf(“%d%d%d%d%d”&a, &b, &c, &d, &e); max1=max(a,b,c);
max1=max(max1,d,e);
min1=min(a,b,c);
min1=min(min1,d,e);
printf(“max=%d min=%d”,max1,min1); getch();
}
程序编写注意事项:
(2)编写程序,读取一个整数,判断并显示出这个整数是奇数还是偶数。(提示:使用求模运
算符。偶数是2的倍数。任何2的倍数除以2时,余数均为零。) 程序清单:
#include
Viod main()
{long int a;
Printf(“Enter a num:\n”);
Scanf(“%1d”,&n);
If(a%2==0)
Printf(“A\n”);
else
printf(“B\n”);
getch();
}
程序编写注意事项:
第 7 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告 (3)编写一个程序,从键盘中输入3个不同的整数,然后显示这3个整数的和、平均数、积、
最小数和最大数。(用if语句)屏幕中的对话内容如下所示:
Input three different integers: 13 27 14
Sum is 54
Average is 18
Product is 4914
Smallest is 13
Largest is 27
程序清单:
#include
viod main()
{int a,b,c,max1,min1;
long int sum,product;
float average;
printf(“Enter three different integer:”); scanf(“%d%d%d”,&a,&b,&c);
sum=a+b+c;
average=sum/3;
product=a*b*c;
max1=max(a,b,c);
min1=min(a,b,c);
printf(“sum is %1d\n average is %f\n product is %1d\n smallest is %d\n largest
is %d\n”,sum,average,pro,minl,max1); getch();
}
程序编写注意事项:
教师评语:
第 8 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
实验三 循环结构程序设计(一) 实验时间: 2012, 11,01 实验地点: 公共机房 3
实验成绩:
(验证性实验 2学时) (一)、实验目的
1(熟悉用while语句、do-wile语句和for语句实现循环的方法 2(掌握在程序设计中用循环方法实现的算法
(二)、实验内容
1(写出下列程序的运行结果
(1)#include
void main()
{
int count=1;
while(count<=10)
{
count++;
printf(“%s\n”,count%2? “****”: “++++++++++”);
}
}
运行结果为:
++++++++++
****
++++++++++
****
++++++++++
****
++++++++++
****
++++++++++
****
分析:count%2?整除 奇数时显示++++++++++++++,偶数时显示****
(2)#include
void main()
第 9 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
{
int row=10,Column;
while(row>=1)
{
Column=1;
while(Column <=10)
{
printf(“%s”,row%2 ? “<”: “>”);
Column++;
}
row--;
printf(“\n”);
}
}
运行结果为:
>>>>>>>>>>
<<<<<<<<<<
>>>>>>>>>>
<<<<<<<<<<
>>>>>>>>>>>
<<<<<<<<<<<
>>>>>>>>>>>
<<<<<<<<<<<
>>>>>>>>>>>
<<<<<<<<<<<
分析: 奇数时显示> 偶数时显示<, Column <=10 循环十次
(3)#include
void main()
{
int y=9;
for( ; y>0 ; y--)
if(y%3==0) printf("%d\n" , --y);
}
}
运行结果为:8
第 10 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告 5
2
分析: y能被三整除时,显示--y
2(编写程序
(1)利用循环语句来显示如下所示的数值表:
程序清单如下:
#include
viod main()
{int n,n1,n2,n3;
frintf(“N\t\tN*10\t\tN*100\t\tN*1000\n”); for (n=1;n<11;n++)
printf(“%-16d%-16d%-16d%-16d%\n”,n,n*10,n*100,n*1000);
getch();
}
程序编写注意事项:
(2)编写一程序,能够输入一组10个数字,判断并显示出这些数字中的最大数。提示:程序中
应该使用如下的3个变量:
Counter:能够记数到10的记数器。
Number:当前输入到程序中的数字。
Largest:迄今为止所发现的最大数字。 程序清单:
#include
viod main()
{
long int num,l=0;
int i;
for(i=1;i<11;i++)
{printf(“Enter a num:”,i);
Scanf(“%d”,&num);
If(num>l) l=num;
,largest);
第 11 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告 }
Printf(“the largest num is %1d”
getch();
}
程序编写注意事项:
(3)请开发一个程序来输入每油箱的行程里程和所用的汽油。能够计算并显示出对于每个油箱
每加仑汽油的行驶里程。处理输入信息后,计算并显示所有油箱每加仑汽油的行驶里程。以下是
一个事例的输入/输出:
程序清单:
#include < stdio.h>
viod main()
{float gallons=0,miles,average[100],sum=0,average; int i=0;
while(gallons!=-1)
{printf(“Enter the gallons used<-1 to end>:”); scanf(“%f”,&gallons);
if(gallons==-1)break;
printf(“Enter the miles driver:”);
scanf(“%f”,&miles);
averrge[i]=miles/gallons;
Sum+=average[i];
printf(“The Miles\Gallon for this tank was %f\n\n”,average[i]);i++;
第 12 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告 average=sum/i;
}
printf(“the overall average miles/gallon was %f”,aveerrage);
getch();
}
程序编写注意事项:
(4)编写一个程序读入一个5位数,并判断该整数是否是回文。(回文指顺读和倒读都一样的
数字和文字语句,例:12321,55555。)提示:使用除法运算符和求模运算符把该数分解成单
位个数。
程序清单:
#include
viod main()
{long int a,b,a1,a2,a3,a4,a5;
); printf(“Enter a num:”
scanf(“%1d”,&a);
a5=a/10000;
a4=(a/1000)%10;
a3=(a/100)%10;
a2=(a/10)%10;
a1=a%10;
b=a1*10000+a2*1000+a3*100+a4*10+a5; if(a==b)printf(“\n%1d is A”,a);
else
printf(“\n%1d is notA”,a);
getch();
}
程序编写注意事项:
教师评语:
第 13 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
实验四 循环结构程序设计(二) 实验时间: 2012, 11.18 实验地点: 公共机房 3
实验成绩:
(验证性实验 2学时) (一)、实验目的
1(熟练掌握循环语句。
2(较灵活地运用三种不同循环语句实现循环程序设计。 3(熟练掌握break语句、continue语句及循环的嵌套使用。
(二)、实验内容
1( 写出下列程序的运行结果
(1)#include
void main()
{
int i,j,k,x=0;
for(i=0;i<2;i++)
{
x++;
for(j=0;j<3;j++)
{
if(j%2) continue;
x++;
}
x++;
}
k=i+j;
printf("k=%d,x=%d\n" , k , x);
}
运行结果为:
K=5,x=8
分析: 循环结束时i=2,j=3,故k=i+j;
(2)#include
void main()
{
int x,y;
for(y=1,x=1;y<=50;y++)
{
if(x>=10) break;
if(x%2==1) { x+=5; continue;}
x-=3;
第 14 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
}
printf(“x=%d,y=%d\n”,x,y);
}
运行结果为:
X=10,y=6 分析:X的变化过程为:6,3,8,5,10,循环执行了五次,故y=6
(3)#include
void main()
{
int i , j , sum;
for(i=1;i<6;i++)
{
sum=0;
for(j=1;j<=4;j++)
sum+=j;
}
printf(“sum=%d\n”, sum);
}
运行结果为:
Sum=10 分析:在j的循环后,sum=10,由于每次i的循环时都使sum=0,故循环6次后的10
(4) #include
void main ( )
{
int k = 0 , m = 0 , i , j;
for( i = 0 ; i < 2 ; i++)
{
for ( j = 0 ; j < 3 ; j++)
k++;
k -= j;
}
m = i + j;
printf("k=%d,m=%d\n",k,m);
}
运行结果为: K=0,m=5
分析:j的循环中,K的变化值为1,1,2,1,2,0.循环两次结果不变,循环结束,i=2,j =3,故m=5.
第 15 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告 2( 程序填空
(1)下面程序的功能是:输出100以内同时能被3和7整除的所有整数,请填空。
#include
void main()
{
int i, j;
( i=1;___?_____; i++ ) for
{
if (___?______) continue;
printf ( "%d\t",i );
}
}
填空?: i<=100
填空?: (i%3==0)&&(i%7==0) 程序分析:这个数要同时被3和7整除,并且continue语句要执行 ,同时满足
(2)判断m是否素数
#include
void main()
{
int m,i,k;
scanf(“%d”,&m);
for(i=2;i=m)printf(“%d是一个素数\n”,m);
else printf(“%d不是一个素数\n”,m); }
运行结果为:
第 16 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
分析:
3( 编写程序
(1)编写一个程序,能够找出几个整数中最小的整数。假定程序读取的第一个值是余下数值的
数目。
程序清单:
#include
viod main()
{long int a[100],min; int i,n;
printf(“Enter a num:”);
scanf(“%d”,&n);
for(i=0;i<=n-1;i++)
{scanf(“%1d”,&n[i]);
if(a[i]
viod main()
程序编写注意事项:
教师评语:
第 18 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
实验五 函数
实验时间: 实验地点: 实验成绩:
(验证性实验、综合性实验 2学时)
(一)、实验目的
1(掌握定义函数的方法
2(学会利用函数的相关概念解决问题 3(学会使用函数的方法设计程序
(二)、实验内容
1(写出下列程序的运行结果
(1)#include “stdio.h”
f(int x, int y);
void main()
{
int a=1,b=2;
f(a,b);
printf(“%d,%d\n”,a,b);
}
f(int x,int y)
{
x=x+1;
y=y+1;
}
}
运行结果为:
分析:
(2) #include
fun(int a);
void main()
{
int a=3;
fun(a);
printf("%d\n",a);
}
fun(int a)
{
a=a+3;
printf("%d,",a);
第 19 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告 }
运行结果为:
分析:
(3)#include
int fun(int x)
{
static int a=3;
a=a+x;
return a;
}
void main()
{
int k=2,m=1,n;
n=fun(k);
n=fun(m);
printf(“%d\n”,n);
}
运行结果为:
分析:
(4) #include
float fac(int n)
{
float f;
if(n<0)printf(“error!”);
else if(n==0||n==1) f=1;
else f=fac(n-1)*n;
return(f);
}
void main()
{
int n=4;
float y;
y=fac(n);
printf(“%d!=%f\n”,n,y);
}
运行结果为:
分析:
2. 程序填空
第 20 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
(1) 通过调用函数求a+b的和。 #include
float add(float x,float y); void main()
{
float add(float x,float y);
float a,b,c;
scanf(“%f,%f”,&a,&b);
c=______________;
printf(“%f”,c);
}
float add(float x,float y) {
float z;
z=x+y;
return z;
}
填空并运行分析: (2)从键盘输入任意一个数,用函数计算它的阶乘
#include
long int f(int a) {
long int i,t=1;
for(i=1;i<=a;i++)
t=t*i;
return ;
}
void main()
{
long int x;
scanf(“%ld”,&x);
printf(“%ld”,f(x)); }
填空并运行分析:
3(编写程序
(1) 编写函数floor,把值四舍五入为最近的整数。语句:y = floor + ( x + .5) ;将把x 四
舍五入为最近的整数,并存如 y 。要求读取几个整数,并使用前面的语句把每个数字四舍五入
为最近的整数。对于程序中处理的每个整数,显示出原始数字和四舍五入后的数字。
程序清单:
第 21 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
程序编写注意事项:
(2) 实现下列每个整型函数。
a)函数 Celsius 返回与华氏温度等价的摄氏温度。
b)函数 Fahrenheit 返回与摄氏温度等价的华氏温度。
c)使用这两个函数编写程序,使其显示一些图表,图表中显示从0度 ~ 100度之间的所有摄氏温度的华氏温度等价值,以及从32度 ~ 212 度之间的所有华氏温度的摄氏温度等价值。按照见解的表格形式来显示输出结果,在保留可读性的同时使输出的行数最小。 程序清单:
第 22 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
程序编写注意事项:
教师评语:
第 23 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
实验六 数组(一) 实验时间: 实验地点: 实验成绩:
(验证性实验 2学时) (一)、实验目的
1(掌握一维数组的定义,赋值和输入输出的方法。 2(掌握二维数组有关的定义,赋值和输入输出的方法。 3(掌握与数组有关的非数值计算方法。
(二)、实验内容
1.写出下列程序的运行结果。
(1) #include
void main()
{
int a[3]={1,2};
int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
{
a[i]=a[j]+1;
printf("\n%d",a[i]);
}
}
运行结果:
分析:初始化:a0= ,a1= ,a2= ; 第一次i循环:i= ,a0= ;a0= ;a0= ; 第二次i循环:i= ,a1= ;a1= ;a1= ; 第三次i循环:i= ,a2= ;a2= ;a2= . (2)#include
#define N 20
fun(int a[],int n,int m)
{
int i,j;
for(i=m;i>=n;i--)
a[i+1]=a[i];
第 24 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
}
void main()
{
int i,a[N]={1,2,3,4,5,6,7,8,9,10};
fun(a,2,9);
for(i=0;i<5;i++)
printf("%d,",a[i]);
}
运行结果: 分析:在进入函数之前:a0= ,a1= ,a2= ,a3= ,a4= ;
进入函数后:a4= ,a3= ,a3= ,a2= ,其余不变。 (3)#include
void swap1(int c[])
{
int t;
t=c[0];c[0]=c[1];c[1]=t;
}
void swap2(int c0,int c1)
{
int t;
t=c0;c0=c1;c1=t;
}
void main( )
{
int a[2]={3,5},b[2]={3,5};
swap1(a) ;
swap2(b[0],b[1]);
printf("%5d %5d %5d %5d ",a[0],a[1],b[0],b[1]);
}
运行结果为: 分析:两个函数的作用,
。
2.程序填空
(1)将Fibonacci数列前15项放入一个一维数组中(fib[0]=1,fib[1]=1),并计算其中奇数之
和。
#include
void main()
{
int fib[15],i,s=0;
fib[0]=1;
fib[1]=1;
for(i=2;i<15;i++)
第 25 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
? ;
for(i=0;i<15;i++)
if( ? )s=s+fib[i];
printf("%d\n",s);
}
填空?:
填空?:
程序分析: (2)给出以下形式数据,计算各行之和,并存入一个一维数组中。
124
615
800
#include
void main()
{int a[3][3]={{1,2,4},{6,1,5},{8,0,0}},b[3]={0}; int i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
? ;
for(i=0;i<3;i++)
printf("%6d", ? );
}
填空?:
填空?:
程序分析: 3. 编写程序
(1)已知数组a[10]={3,7,6,5,4,1,2,9,9,7},计算数组下标为奇数的元素之和。 程序清单:
程序编写注意事项: (2)使用数组解决下列问题。公司在对销售人员支付佣金。销售人员每个星期收到$200,以及那个星期他们总销售额的9%。例如,在某个星期中销售额为$3000的销售人员收到$200以及$3000
第 26 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
的9%,也就是$470。编写一个程序(使用计数器数组),确定销售人员在下列范围内可以赚取的收入(假定每个销售人员的工资将截断为整数):
a) $200 -$299
b) $300 -$399
c) $400 -$499
d) $500 -$599
e) $600 -$699
f) $700 -$799
g) $800 -$899
h) $900 -$999
i) $1000 以及$1000以上
程序清单:
程序编写注意事项: (3)使用二维数组来解决下列问题。公司与4个销售人员(1 ~ 4),他们销售5种不同的产品 (1~ 5)。每天,每个销售人员为销售的每种不同产品上交报告。每份报告包括: a) 销售人员编号。
b) 产品编号。
c) 当天每种产品的总销售额。
因此,每个销售人员每天上交0~5份销售报告。假设已经知道上个月所有报告的信息。编写一个程序读取所有这些信息,以得到上个月的销售额,并对销售人员按产品来计算总销售额。所有总和必须存储在二维数组sales中。在处理了上个月的所有信息之后,以列表形式输出结果,其中列代表特定的销售人员,而行代表特定的产品。计算每行的总和,以得到上个月每个销售人员的销售总额。输出结果应该在每行的右边显示产品销售总和,在每列的底部显示个人销售总和。
程序清单:
第 27 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
程序编写注意事项:
教师评语:
第 28 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
实验七 数组(二) 实验时间: 实验地点: 实验成绩:
(验证性实验 2学时) (一)、实验目的
1( 掌握字符数组的定义、赋值和引用
2( 字符串函数的使用。
(二)、预习内容
1(预习数组的定义、赋值及输入输出方法,以及典型的算法。 2(熟练循环语句与数组处理语句结合的方法。
(三)、实验内容
1( 写出下列程序的运行结果
(1)#include
void main()
{
char a[10]= "abcdefg",b[ ]="abcdefg";
a[3]=’\0’;
b[3]=0;
printf("%d,%d",sizeof(a),strlen(a));
printf("%d,%d",sizeof(b),strlen(b));
}
运行结果:
结果分析:
(2)#include
void main()
{
char ch[2][5]={"6937","8254"};
int i,j,s=0;
for(i=0;i<2;i++)
for(j=0;ch[i][j]>'\0'&&ch[i][j]<='9';j+=2)
s=10*s+ch[i][j]-'0';
printf("%d\n",s);
}
运行结果:
结果分析:
(3)下列程序的输出结果是:
第 29 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告 #include
void main( )
{
char p1[20]="abcd",p2[20]="ABCD",str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
}
运行结果:
结果分析:
2( 程序填空
(1)将一个字符串按逆序重新存放,并输出。
#include
void main()
{
char a[20];
int n,i,t;
gets(a);
; ?
for(i=0;i
int huiwen(charstr[])
{
int p,i,j;
p=strlen(str);
for(i=0,j=p-1;i ?
? void scpy(char s[ ],char t[ ])
{
? int i;
? while(t[i])
? s[i++]=t[i++];
? t[i]=‘\0’;
}
? void main( )
{
? char str1[ ],str2[ ]="abcdefgh";
? scpy(str1,str2);
? printf("%s ",str1);
}
错误语句的行号:
改正后的语句全行:
错误分析:
(2)比较两个字符串的大小,如果相等输出equal,如果不相等输出unequal.
? #include
? void main()
{
第 31 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
? char s1[10],s2[10];
? gets(s1);get2(s2);
? if(s1=s2) printf(“equal”);
? else printf(“unequal”);
}
错误语句的行号:
改正后的语句全行: 错误分析: 4( 编写程序
(1)将一个字符串首尾倒置,重新存放。
程序清单:
程序编写注意事项: (2)(飞机定票系统)一家小型航空公司刚刚购买了计算机,用于新的自动化定票系统。总裁要求您为新系统编制程序。需要分配该航空公司的唯一一架飞机每个航班的座位(容量:10个座位)。
程序应该轮流显示下列菜单:
Please type 1 for “first class”
Please type 2 for “economy”
如果输入1, 则程序应该分配头等舱内的座位(座位1 ~ 5)。如果输入2 ,则程序应该分配经济舱的座位(座位 6 ~ 10)。然后,程序输出登机证,说明座位号,以及它位于飞机的头等舱,还是经济舱内。
使用一个数组来代表飞机的座位安排。将数组的所有元素初始化为0,以说明所有座位都是空的。当分配每个座位时,将数组的对应元素设置为1,以说明不能再次使用那个座位号。当然,程序不应该分配已经分配过的座位。当头等舱满员时,程序应询问是否可以安排在经济舱内(等等)。如果可以,则进行适当的座位分配。如果不可以,则输出信息“Next Flight leave
第 32 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告 s in 3 hours”.
程序清单:
第 33 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
程序编写注意事项: (3)(输出数组)编写一个递归函数printArray,它以数组和数组大小作为参数,并且不返回任何值。当数组大小为0时,函数应该停止处理并返回。
程序清单:
程序编写注意事项:
教师评语:
第 34 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
实验八 指针 实验时间: 实验地点: 实验成绩:
(验证性实验、综合性实验 2学时) (一)、实验目的
1(掌握指针的概念、会定义和使用指针变量
2(掌握指针与一维数组、二维数组、字符数组的关系
(二)、实验内容
1.写出下列程序的运行结果
(1)#include
void fun(int * a,int * b)
{
int k;
k=*a;*a=*b;*b=k;
}
void main( )
{
int a=3,b=6;
fun(&a,&b);
printf(“%d,%d”,a,b);
}
运行结果为:
程序功能分析:
(2)#include
void fun(int * a,int * b)
{
int *k;
k=a;a=b;b=k;
}
void main( )
{
int a=3,b=6,*x=&a,*y=&b;
fun(x,y);
printf(“%d,%d”,a,b);
}
运行结果为:
程序功能分析:
(3)#include
void main( )
第 35 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
{
int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf(“\n%d”,*p+9);
}
运行结果为:
程序功能分析:
(4)#include
fun(int *s,int n1,int n2)
{
int i,j,t;
i=n1;j=n2;
while(i
int add(int x,int y,_?_____z);
void main()
{
int a=3,b=4,c;
add(_____?_________);
printf(“%d\n”,c);
}
int add(int x,int y,_?_____z)
{
_?_____=x+y;
}
第 36 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
填空?:
填空?:
填空?:
程序分析:
(2)下面的程序通过函数average计算数组中各元素的平均值,请填空。
#include
float average(int *pa,int n) { int i;
float avg=0.0;
for(i=0;i
? swap(int *p,*q);
{
? int *t,a;
? t=&a;
? *t = *p;
? *p = *q;
? *q = *t;
}
? void main()
{
第 37 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
? int a =10,b=20;
? swap(&a,&b);
? printf(“%d%d\n”,a,b);
}
错误语句的行号:
改正后的语句全行: 错误分析: (2)写出程序运行结果:2010
? #include ″stdio.h″
? main()
{
? int a[]={1,2,3,4,5,6,7,8,9,10,11,12}; ? int *p=a+5;
? int *q=null;
? q=p+5;
? printf(“%d %d”,*p,*q);
}
错误语句的行号:
改正后的语句全行:
错误分析: 4、编程题(选做题)
利用函数把字符数组b,连接到字符数组a的后面,并返回字符数组a中新的长度。 程序清单:
第 38 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
编程注意事项:
教师评语:
第 39 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
实验九 结构体、共用体和文件
实验时间: 实验地点: 实验成绩:
(验证性实验、设计性实验 2学时)
(一)、实验目的:
1(掌握结构体类型和共用体类型变量 2(结构体类型数组和结构体类型指针的定义 3(掌握链表的定义及操作
4(掌握文件的打开、关闭和文件的读写操作
(二)、实验内容
1(写出程序的运行结果
(1)以下程序的输出结果是:
#include
union
{
int num;
struct
{char c1,c2;} sc;
}un;
void main()
{
un.sc.cl=65;un.sc.c2=97; un.num=0;
printf("%d\n",un.sc.c2);
}
运行结果为: 程序分析:
(2)以下程序的输出结果是:
#include
typedef union
{
long i;
int k[5];
char c;
}DATE;
struct date
{
int cat;
DATE cow;
double dog;
}too;
DATE max:
第 40 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
void main()
{
printf(″%d\n″,sizeof(struct date)+sizeof(max));
}
运行结果为: 程序分析:
2(填空题
(1)下面程序建立一个单向链表。
#include
void main()
{
struct stud
{
long num;
float score;
struct stud _______;
}stud1,stud2,stud3,*head;
stud1.num = 1;stud1.score = 89.5;
stud2.num = 2;stud2.score = 90.5;
stud3.num = 3;stud3.score = 94.5;
head = &stud1;
stud1.next = &stud2;
stud2.next = &stud3;
stud3.next = NULL;
}
填空并运行分析:
(2)以下程序把a数组中的数据输出到fp所指的二进制文件中。
#include
#define N 10
void main()
{
float a[N];
int i;
FILE *fp;
for(i=0;i
void main( )
{
char c;
FILE *fp1, *fp2;
fp1=fopen(“f1.doc”,“r”);
fp2=
c=fgetc(fp1);
while(c!=EOF)
{
fputc(c,fp2);
c=fgetc(fp1);
}
fclose(fp1);
fclose(fp2);
}
填空并运行分析:
3.改错题
(1)定义一个结构体变量a,输出a变量中每一个成员的值。 ? #include
? void main()
{
? struct
{
? char flag; ? float t;
? } STC; ? STC a={‘a’,46};
? printf(“%c,%f\n”,a.flag,a.t); ? }
错误语句的行号:
改正后的语句全行:
错误原因分析:
第 42 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告 (2)从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“,”号为止。
? #include
? void main()
{
? file *fp;
? char ch,filename[10];
scanf(“%s”,filename); ?
? if((fp=fopen(filename,”w”))==NULL)
{
? printf(“cannot open file\n”);
? exit(0);
? }
? ch = getchar();
? while(ch!=’#’)
{
? fputc(ch,fp);
? putchar(ch);
? ch=getchar();
? }
? fclose(fp);
}
错误语句的行号:
改正后的语句全行:
错误原因分析:
4(编程题(选做)
(1)有10名学生,每名学生有语文、数学、外语三门课程的成绩,计算每名学生的总成绩,然
后按总成绩由高到低排序,若总成绩相同,再按外语成绩由高到低排序。
要求:? 利用结构体数组存放数据。
? 通过函数调用方式。
程序清单:
第 43 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
第 44 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
编写程序注意事项: (2)编写一个程序,它使用sizeof运算符来确定计算机系统上不同数据类型的字节数。将结果
写入到文件“datasize.dat”中,这样您可以稍后输出结果。文件中的结果格式如下:
Data type Size
Char 1
Unsigned char 1
Short int 2
Unsigned short int 2
Int 4
Unsigned int 4
Long int 4
Unsigned long int 4
Float 4
Double 8
Long double 16
程序清单:
第 45 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
编写程序注意事项:
教师评语:
第 46 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
实验十 C程序综合性实验
实验时间: 实验地点: 实验成绩:
(综合性实验、设计性实验 4学时)
(一)、目的要求:
1(巩固三种不同循环语句,实现循环程序设计。
2(巩固C语言函数定义及调用
规则
编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf
。
3(掌握结构体类型的概念及定义方法;结构体变量的定义和引用。
4(掌握文件的读写、定义、输入输出。
(二)、实验内容:(可以任选其一)
1(将5名学生的数据从键盘输入,然后送入磁盘文件student1.c中保存,最后从磁盘调入这些数据,依次打印出来(用fread和fwrite函数)。设学生数据包括:学号、姓名、成绩。
2(对存放在student1.c中的各学生数据按成绩高低顺序排序,将排好序的各
记录
混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载
存放在student2.c文件中,并打印出student2.c文件中所有学生记录。
3(在student1.c的基础上,增加一个新学生的数据,要求按成绩高低顺序插入到原有文件中,然后存放到student3.c中,并打印出student3.c中顺序号为奇数的学生记录(即第1、3、5学生的数据)。
4(在student1.c的基础上,删除一个学生的数据,然后存放到student4.c中,并打印出student4.c中顺序号为偶数的学生记录(即第2、4学生的数据)。
学号 姓名 成绩
1 zhao 98
2 tian 79
3 sun 77
4 Li 96
5 zhou 89
程序清单:选第一题
第 47 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告
第 48 页 共 50 页
阿坝师专计科系《C语言程序设计》实验报告 编写程序注意事项:
教师评语:
第 49 页 共 50 页