C语言程序设计实验报告

时间:2024.4.13

阿坝师专计科系《C语言程序设计》实验手册

《C语言程序设计》实验简介

课程名称:C语言程序设计

课程性质:专业必修课

课程属性:专业必修课

课程学时学分:学时78 实验学时32 学分6

面向专业:软件技术、网络系统管理、计算机应用技术、楼宇智能化工程技术、现代教育技术

一、课程的任务和基本要求

C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实验性教育环节。本课程的主要任务是让学生充分掌握C语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。

二、实验项目

【实验一】最简单的C程序---顺序程序设计

【实验二】逻辑运算和判断选取控制

【实验三】循环结构程序设计(一)

【实验四】循环结构程序设计(二)

【实验五】函数

【实验六】数组(一)

【实验七】数组(二)

【实验八】指针

【实验九】结构体、共用体和文件

【实验十】C程序综合性实验

三、有关说明

1、与其它课程和教学环节的联系:

先修课程:计算机导论

后续课程:面向对象程序设计、Java程序设计、php、数据结构、软件工程

2、教材和主要参考书目:

(1)教材:

《C程序设计题解与上机指导(第三版)》,谭浩强 编著,北京:清华大学出版社,20xx年。

(2)主要参考书目:

《C语言程序设计(第三版)》 谭浩强 著,清华大学出版社,20xx年。

阿坝师专计科系《C语言程序设计》实验报告

三、实验内容

实验一 最简单的C程序---顺序程序设计

(验证性实验 2学时)

实验时间: 2012, 10,16 实验地点: 公共机房 3 实验成绩:

(一)、实验目的

1.熟悉win-tc程序运行环境

2.掌握运行一个C程序的步骤,理解并学会C程序的编辑、编译、链接方法

3.掌握C语言中使用最多的一种语句——赋值语句

4.掌握数据的输入输出方法,能正确使用各种格式控制符

(二)、实验内容

1.写出下列程序的运行结果

(1)#include <stdio.h>

void main()

{

printf(“*****************\n”);

printf(“This is a c program. \n”);

printf(“****************\n”);

}

运行结果为: *****************

This is a c program.

**************** 分析: printf函数表示输入字符,\n表示换行 将程序中的\n去掉后,运行结果及分析:

运行结果为:**************** This is a c program. **************** 分析: 无 “\n”不能自动换行

(2)#include <stdio.h>

void main()

{

int a=100,b=20,sum,sb;

sum=a+b;

sb=a/b;

printf("sum=%d,sb=%d",sum,sb);

}

阿坝师专计科系《C语言程序设计》实验报告

运行结果为: sum=120 sb=5

分析: sum=100+20=120,sb=100/20=5 输出时一一对应

(3)#include <stdio.h>

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

C语言程序设计实验报告

b,d

分析: 定义字符c1,c2。第一行以字符型输出(a,b),换行, 第二行将字符型以十进制输出得

(97,98),换行,第三行以字符型输出 (c1+1,c2+2)得(b,d)

(4)#include <stdio.h>

void main ()

{

int i=8,j=10,m,n;

m=++i;n=j++;

printf("%d,%d,%d,%d",i,j,m,n);

阿坝师专计科系《C语言程序设计》实验报告

}

运行结果为: 9, 11, 9

C语言程序设计实验报告

10

分析: “++” 在前先i自身加再赋值给m,”++”在后面j先赋值给n再自身加 再将本程序的第3行改为m=i++;n=++j;

运行结果及分析:

运行结果为: 8,11,8,11 分析:

2.程序填空

任意输入一个有五位数字的正整数x,分别输出每一数位上的数字(由高到低分别用

b5,b4,b3,b2,b1表示),请将程序补充完整。

#include <stdio.h>

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);

阿坝师专计科系《C语言程序设计》实验报告

}

程序分析:① long int ② x/10000 ③ (x/100)%10 ④ x%10 ⑤ %1d

3.程序改错(注意:题中的编号为行序号,并非程序本身)

计算任意一个半径为r的圆的面积和周长(结果保留两位小数)

(1)#include <stdio.h>

(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

教师评语:

阿坝师专计科系《C语言程序设计》实验报告

实验二 逻辑运算和判断选取控制

实验时间: 2012 10,25 实验地点:公共机房3 实验成绩:

(验证性实验 2学时)

(一)、实验目的

1.了解逻辑量在C语言中的表示方法

2.学会使用逻辑运算符和逻辑表达式

3.熟练掌握if语句和switch语句

(二)、实验内容

1.写出下列程序的运行结果

(1)#include <stdio.h>

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 <stdio.h>

void main()

{

int a=2,b=-1,c=2;

If(a<b)

if(b<0)c=0;

else c+=1;

printf(“%d\n”,c);

}

运行结果为: 3

分析:

(3)#include <stdio.h>

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);

阿坝师专计科系《C语言程序设计》实验报告

}

运行结果为: a=1,b=0,c=1

分析: 先判断++a>0,故++b不再运算,条件成立,计算++c,故a=1,b=0,c=1.

(4)#include <stdio.h>

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 <stdio.h>

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

阿坝师专计科系《C语言程序设计》实验报告

填空③: printf(“%d is larger”,b)

结果分析: 显示较大数字

3.编写程序

(1)编写一个程序,读入5个整数,然后确定并显示这组数中的最大整数和最小整数。 程序清单:

#include <stdio.h>

{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 <stdio.h>

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();

}

程序编写注意事项:

阿坝师专计科系《C语言程序设计》实验报告

(3)编写一个程序,从键盘中输入3个不同的整数,然后显示这3个整数的和、平均数、积、最小数和最大数。(用if语句)屏幕中的对话内容如下所示:

程序清单:

#include <stdio.h>

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();

}

程序编写注意事项:

教师评语:

C语言程序设计实验报告

阿坝师专计科系《C语言程序设计》实验报告

实验三 循环结构程序设计(一)

实验时间: 2012, 11,01 实验地点: 公共机房 3 实验成绩:

(验证性实验 2学时)

(一)、实验目的

1.熟悉用while语句、do-wile语句和for语句实现循环的方法

2.掌握在程序设计中用循环方法实现的算法

(二)、实验内容

1.写出下列程序的运行结果

(1)#include <stdio.h>

void main()

{

int count=1;

while(count<=10)

{

}

}

运行结果为:

++++++++++

**** ++++++++++ **** ++++++++++ **** ++++++++++ **** ++++++++++ **** count++; printf(“%s\n”,count%2? “****”: “++++++++++”);

分析:count%2?整除 奇数时显示++++++++++++++,偶数时显示****

(2)#include <stdio.h>

void main()

阿坝师专计科系《C语言程序设计》实验报告

{

int row=10,Column;

while(row>=1) {

} } Column=1; while(Column <=10) { } row--; printf(“\n”); printf(“%s”,row%2 ? “<”: “>”); Column++;

运行结果为:

>>>>>>>>>>

<<<<<<<<<<

>>>>>>>>>>

<<<<<<<<<<

>>>>>>>>>>>

<<<<<<<<<<<

>>>>>>>>>>>

<<<<<<<<<<<

>>>>>>>>>>> <<<<<<<<<<<

分析: 奇数时显示> 偶数时显示<, Column <=10 循环十次

(3)#include <stdio.h>

void main()

{

int y=9;

for( ; y>0 ; y--)

if(y%3==0) printf("%d\n" , --y);

}

}

运行结果为:8

阿坝师专计科系《C语言程序设计》实验报告

5 2

分析: y能被三整除时,显示--y

2.编写程序

(1)利用循环语句来显示如下所示的数值表:

C语言程序设计实验报告

程序清单如下:

#include <stdio.h>

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 <stdio.h>

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);

阿坝师专计科系《C语言程序设计》实验报告

}

Printf(“the largest num is %1d”

getch();

}

程序编写注意事项:

(3)请开发一个程序来输入每油箱的行程里程和所用的汽油。能够计算并显示出对于每个油箱每加仑汽油的行驶里程。处理输入信息后,计算并显示所有油箱每加仑汽油的行驶里程。以下是一个事例的输入/输出:

C语言程序设计实验报告

程序清单:

#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++;

阿坝师专计科系《C语言程序设计》实验报告

average=sum/i;

}

printf(“the overall average miles/gallon was %f”,aveerrage);

getch();

}

程序编写注意事项:

(4)编写一个程序读入一个5位数,并判断该整数是否是回文。(回文指顺读和倒读都一样的数字和文字语句,例:12321,55555。)提示:使用除法运算符和求模运算符把该数分解成单位个数。

程序清单:

#include <stdio.h>

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();

}

程序编写注意事项:

教师评语:

阿坝师专计科系《C语言程序设计》实验报告

实验四 循环结构程序设计(二)

实验时间: 2012, 11.18 实验地点: 公共机房 3 实验成绩:

(验证性实验 2学时)

(一)、实验目的

1.熟练掌握循环语句。

2.较灵活地运用三种不同循环语句实现循环程序设计。

3.熟练掌握break语句、continue语句及循环的嵌套使用。

(二)、实验内容

1. 写出下列程序的运行结果

(1)#include <stdio.h>

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++;

}

k=i+j;

printf("k=%d,x=%d\n" , k , x);

}

运行结果为: K=5,x=8 x++;

分析: 循环结束时i=2,j=3,故k=i+j;

(2)#include <stdio.h>

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;

阿坝师专计科系《C语言程序设计》实验报告

}

printf(“x=%d,y=%d\n”,x,y);

}

运行结果为: X=10,y=6

分析:X的变化过程为:6,3,8,5,10,循环执行了五次,故y=6

(3)#include <stdio.h>

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 <stdio.h>

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.

阿坝师专计科系《C语言程序设计》实验报告

2. 程序填空

(1)下面程序的功能是:输出100以内同时能被3和7整除的所有整数,请填空。

#include <stdio.h>

void main()

{

int i, j;

for ( i=1;___①_____; i++ )

{

if (___②______) continue;

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

}

}

填空①: i<=100

填空②: (i%3==0)&&(i%7==0)

程序分析:这个数要同时被3和7整除,并且continue语句要执行 ,同时满足

(2)判断m是否素数

#include <stdio.h>

void main()

{

int m,i,k;

scanf(“%d”,&m);

for(i=2;i<m;i++) if(_m%i==0) break;

if(i>=m)printf(“%d是一个素数\n”,m);

else printf(“%d不是一个素数\n”,m);

}

运行结果为:

C语言程序设计实验报告

阿坝师专计科系《C语言程序设计》实验报告

分析:

3. 编写程序

(1)编写一个程序,能够找出几个整数中最小的整数。假定程序读取的第一个值是余下数值的数目。

程序清单:

#include <stdio.h>

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]<min)

min=a[i];}

printf(“The smallest number is %d”,min);

getch();

}

程序编写注意事项:

(2)编写一个程序显示出如下菱形图案。可以使用printf语句来显示一个(*)和一个空格,尽量多使用循环语句(嵌套的for语句),尽量少用printf语句。

C语言程序设计实验报告

程序清单:

#include "stdio.h"

#include "conio.h"

main()

{ int i,j,k;

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

{for(j=1;j<=5-i;j++)

printf(" ");

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

printf("*");

printf("\n");

}

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

阿坝师专计科系《C语言程序设计》实验报告

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

printf(" ");

for(k=1;k<=9-2*i;k++)

printf("*");

printf("\n");}

getch();

}

程序编写注意事项:

(3)输入从1994~1999这个范围内的年份,并使用for循环语句来生成一个简洁的日历。注意闰年的情形。

程序清单:

#include <stdio.h>

viod main()

程序编写注意事项:

教师评语:

阿坝师专计科系《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 <stdio.h>

fun(int a);

void main()

{

int a=3;

fun(a);

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

}

fun(int a)

{

a=a+3;

printf("%d,",a);

阿坝师专计科系《C语言程序设计》实验报告

}

运行结果为: 分析:

(3)#include <stdio.h>

int fun(int x)

{

static int a=3;

}

void main()

{

int k=2,m=1,n;

n=fun(k);

n=fun(m);

printf(“%d\n”,n);

}

运行结果为: 分析:

(4) #include <stdio.h>

float fac(int n)

{

float f;

}

void main()

{

int n=4;

float y;

y=fac(n);

printf(“%d!=%f\n”,n,y);

}

运行结果为: 分析:

2. 程序填空 if(n<0)printf(“error!”); else if(n==0||n==1) f=1; else f=fac(n-1)*n; return(f); a=a+x; return a;

阿坝师专计科系《C语言程序设计》实验报告

(1) 通过调用函数求a+b的和。

#include <stdio.h>

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 <stdio.h>

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 。要求读取几个整数,并使用前面的语句把每个数字四舍五入为最近的整数。对于程序中处理的每个整数,显示出原始数字和四舍五入后的数字。 程序清单:

阿坝师专计科系《C语言程序设计》实验报告

程序编写注意事项:

(2) 实现下列每个整型函数。

a)函数 Celsius 返回与华氏温度等价的摄氏温度。

b)函数 Fahrenheit 返回与摄氏温度等价的华氏温度。

c)使用这两个函数编写程序,使其显示一些图表,图表中显示从0度 ~ 100度之间的所有摄氏温度的华氏温度等价值,以及从32度 ~ 212 度之间的所有华氏温度的摄氏温度等价值。按照见解的表格形式来显示输出结果,在保留可读性的同时使输出的行数最小。

程序清单:

阿坝师专计科系《C语言程序设计》实验报告

程序编写注意事项:

教师评语:

阿坝师专计科系《C语言程序设计》实验报告

实验六 数组(一)

实验时间: 实验地点: 实验成绩:

(验证性实验 2学时)

(一)、实验目的

1.掌握一维数组的定义,赋值和输入输出的方法。

2.掌握二维数组有关的定义,赋值和输入输出的方法。

3.掌握与数组有关的非数值计算方法。

(二)、实验内容

1.写出下列程序的运行结果。

(1) #include <stdio.h>

void main()

{

int a[3]={1,2};

int i,j;

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

}

运行结果:

分析:初始化:a0= ,a1= ,a2= ;

第一次i循环:i= ,a0= ;a0= ;a0= ;

第二次i循环:i= ,a1= ;a1= ;a1= ;

第三次i循环:i= ,a2= ;a2= ;a2= .

(2)#include <stdio.h>

#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 页 for(j=0;j<3;j++) { } a[i]=a[j]+1; printf("\n%d",a[i]);

阿坝师专计科系《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 <stdio.h>

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 <stdio.h>

void main()

{

int fib[15],i,s=0;

fib[0]=1;

fib[1]=1;

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

阿坝师专计科系《C语言程序设计》实验报告

① ;

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

if( ② )s=s+fib[i];

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

}

填空①:

填空②:

程序分析:

(2)给出以下形式数据,计算各行之和,并存入一个一维数组中。

124

615

800

#include <stdio.h>

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

阿坝师专计科系《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中。在处理了上个月的所有信息之后,以列表形式输出结果,其中列代表特定的销售人员,而行代表特定的产品。计算每行的总和,以得到上个月每个销售人员的销售总额。输出结果应该在每行的右边显示产品销售总和,在每列的底部显示个人销售总和。 程序清单:

阿坝师专计科系《C语言程序设计》实验报告

程序编写注意事项:

教师评语:

阿坝师专计科系《C语言程序设计》实验报告

实验七 数组(二)

实验时间: 实验地点: 实验成绩:

(验证性实验 2学时)

(一)、实验目的

1. 掌握字符数组的定义、赋值和引用

2. 字符串函数的使用。

(二)、预习内容

1.预习数组的定义、赋值及输入输出方法,以及典型的算法。

2.熟练循环语句与数组处理语句结合的方法。

(三)、实验内容

1. 写出下列程序的运行结果

(1)#include <stdio.h>

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 <stdio.h>

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)下列程序的输出结果是:

阿坝师专计科系《C语言程序设计》实验报告

#include <stdio.h>

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 <stdio.h>

void main()

{

char a[20];

int n,i,t;

gets(a);

① ;

for(i=0;i<n/2;i++)

{_ ②_ _____}

puts(a);

}

填空①:

填空②: 程序分析:

(2)以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中输出.(所谓回文即正向与反向的拼写都一样,例如:adgda).请填空.

#include "string.h"

#include <stdio.h>

int huiwen(charstr[])

{

int p,i,j;

p=strlen(str);

for(i=0,j=p-1;i<j; i++,j--)

if( ① ) return 0;

return 1;

}

阿坝师专计科系《C语言程序设计》实验报告

void main()

{

char str[50];

printf("Input:");

scanf("%s",str);

if( ② )

printf("yes!");

else printf("no!");

}

填空①:

填空②:

程序分析:

3. 程序改错

写出有错误语句的行号,及改正后的语句全行。(每行语句前的序号只标注行号,非程序本身的内容)

(1)以下scpy( )函数实现字符串复制,即将t所指字符串复制到s所指向内存空间中,形成一个新的字符串s。请填空。

① #include <stdio.h>

② void scpy(char s[ ],char t[ ])

{

int i;

while(t[i])

s[i++]=t[i++];

t[i]=‘\0’; ③ ④ ⑤ ⑥

} {

char str1[ ],str2[ ]="abcdefgh";

scpy(str1,str2);

printf("%s ",str1); ⑦ void main( ) ⑧ ⑨ ⑩

}

错误语句的行号:

改正后的语句全行: 错误分析:

(2)比较两个字符串的大小,如果相等输出equal,如果不相等输出unequal.

① #include <stdio.h>

② void main()

{

阿坝师专计科系《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 leaves in 3 hours”.

阿坝师专计科系《C语言程序设计》实验报告

程序清单:

阿坝师专计科系《C语言程序设计》实验报告

程序编写注意事项:

(3)(输出数组)编写一个递归函数printArray,它以数组和数组大小作为参数,并且不返回任何值。当数组大小为0时,函数应该停止处理并返回。

程序清单:

程序编写注意事项:

教师评语:

阿坝师专计科系《C语言程序设计》实验报告

实验八 指针

实验时间: 实验地点: 实验成绩:

(验证性实验、综合性实验 2学时)

(一)、实验目的

1.掌握指针的概念、会定义和使用指针变量

2.掌握指针与一维数组、二维数组、字符数组的关系

(二)、实验内容

1.写出下列程序的运行结果

(1)#include <stdio.h>

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 <stdio.h>

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 <stdio.h>

void main( )

阿坝师专计科系《C语言程序设计》实验报告

{

int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;

p=a;

printf(“\n%d”,*p+9);

}

运行结果为:

程序功能分析:

(4)#include <stdio.h>

fun(int *s,int n1,int n2)

{

int i,j,t;

i=n1;j=n2;

while(i<j)

{

t=*(s+i);*(s+i)=*(s+j);*(s+j)=t;

i++;j--;

}

}

void main()

{

int a[10]={1,2,3,4,5,6,7,8,9,0},i,*p=a;

fun(p,0,3);fun(p,4,9);fun(p,0,9);

for(i=0;i<10;i++) printf("%d",*(a+i));

}

运行结果为:

程序功能分析:

2.程序填空

(1)下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,填空。

#include <stdio.h>

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;

}

阿坝师专计科系《C语言程序设计》实验报告

填空①:

填空②:

填空③:

程序分析:

(2)下面的程序通过函数average计算数组中各元素的平均值,请填空。

#include <stdio.h>

float average(int *pa,int n)

{ int i;

float avg=0.0;

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

avg=avg+_??______;

avg=__??_____;

return avg;

}

void main()

{

int i,a[5]={2,4,6,8,10};

float m;

m=average(a,5);

printf("m=%f\n",m);

}

填空①:

填空②:

程序分析:

3.程序改错

写出有错误语句的行号,及改正后的语句全行。(每行语句前的序号只标注行号,非程序本身的内容)

(1)将两个整数值进行交换。

① #include <stdio.h>

② swap(int *p,*q);

{

}

⑧ void main()

{

第 37 页 共 50 页 int *t,a; t=&a; *t = *p; *p = *q; *q = *t;

阿坝师专计科系《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中新的长度。

程序清单:

阿坝师专计科系《C语言程序设计》实验报告

编程注意事项:

教师评语:

阿坝师专计科系《C语言程序设计》实验报告

实验九 结构体、共用体和文件

实验时间: 实验地点: 实验成绩:

(验证性实验、设计性实验 2学时)

(一)、实验目的:

1.掌握结构体类型和共用体类型变量

2.结构体类型数组和结构体类型指针的定义

3.掌握链表的定义及操作

4.掌握文件的打开、关闭和文件的读写操作

(二)、实验内容

1.写出程序的运行结果

(1)以下程序的输出结果是:

#include <stdio.h>

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 <stdio.h>

typedef union

{

long i;

int k[5];

char c;

}DATE;

struct date

{

int cat;

DATE cow;

double dog;

}too;

DATE max:

阿坝师专计科系《C语言程序设计》实验报告

void main()

{

printf(″%d\n″,sizeof(struct date)+sizeof(max));

}

运行结果为:

程序分析:

2.填空题

(1)下面程序建立一个单向链表。

#include <stdio.h>

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 <stdio.h>

#define N 10

void main()

{

float a[N];

int i;

FILE *fp;

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

scanf(“%f”,a+i);

fp=fopen(“file.dat”,“wb”);

fwrite(a,4*N,1,fp);

______________________;

}

阿坝师专计科系《C语言程序设计》实验报告

填空并运行分析: 分析:

(3)下面程序把一个名为f1.doc的文件拷贝到一个名为f2.doc的文件中,请在__处添入适当命令行,使之正确运行。

#include <stdio.h>

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 <stdio.h>

② void main()

{

struct

{

char flag; float t; ④ ⑤

⑨ } ③ } STC; STC a={‘a’,46}; printf(“%c,%f\n”,a.flag,a.t);

错误语句的行号:

改正后的语句全行: 错误原因分析:

阿坝师专计科系《C语言程序设计》实验报告

(2)从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#”号为止。

① #include <stdio.h>

② 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名学生,每名学生有语文、数学、外语三门课程的成绩,计算每名学生的总成绩,然后按总成绩由高到低排序,若总成绩相同,再按外语成绩由高到低排序。

要求:① 利用结构体数组存放数据。

② 通过函数调用方式。

程序清单:

阿坝师专计科系《C语言程序设计》实验报告

阿坝师专计科系《C语言程序设计》实验报告

编写程序注意事项:

(2)编写一个程序,它使用sizeof运算符来确定计算机系统上不同数据类型的字节数。将结果写入到文件“datasize.dat”中,这样您可以稍后输出结果。文件中的结果格式如下:

C语言程序设计实验报告

阿坝师专计科系《C语言程序设计》实验报告

编写程序注意事项:

教师评语:

阿坝师专计科系《C语言程序设计》实验报告

实验十 C程序综合性实验

实验时间: 实验地点: 实验成绩:

(综合性实验、设计性实验 4学时)

(一)、目的要求:

1.巩固三种不同循环语句,实现循环程序设计。

2.巩固C语言函数定义及调用规则。

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学生的数据)。

C语言程序设计实验报告

阿坝师专计科系《C语言程序设计》实验报告

阿坝师专计科系《C语言程序设计》实验报告

编写程序注意事项:

教师评语:

更多相关推荐:
《C语言程序设计》课程设计报告(小组)

东莞理工学院《C语言程序设计》课程设计题目:图书信息管理系统院系:电子工程学院专业:电子信息工程年级:20##班别:2班指导教师:##组长:##同组成员:##目录一、目的....................…

c语言课程设计报告

C语言程序设计课程设计学生姓名学号系院专业设计论文题目学生选课系统管理完成日期20xx年6月指导教师目录一实验目的二实验内容三总体设计四详细设计五运行结果六课程设计体会一实验目的1通过课程设计加深对结构化程序设...

C语言课程设计报告

河南理工大学计算机科学与技术学院课程设计报告20XX20XX学年第一学期课程名称C语言课程设计设计题目《小学算术运算测试》学生姓名学号专业班级计算机07-2班指导教师20XX年9月12日目录1.设计任务书21.…

C语言课程设计报告范例

C语言课程设计报告设计题目专业班级学号姓名任课老师时间目录一课程设计题目及所涉及知识点二课程设计思路及设计流程图三课程设计中遇到的难点及解决办法四小结五附录原程序2一课程设计题目及所涉及知识点一课程设计题目1基...

厦门理工学院11级C语言C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期题目专业班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求1二方案实现与调试221掷骰子游戏222射击游戏323汽车...

C语言程序设计课程设计报告

C语言程序设计课程设计报告20xx20xx学年第1学期专业计算机科学与技术班级姓名学号指导教师成绩计算机科学与技术系20xx年12月31日目录一课程设计的目的与要求3二方案实现与调试321掷骰子游戏322汽车加...

c语言程序贪吃蛇课程设计报告

山东工商学院信电学院自动111班第一组贪吃蛇课程设计报告高级语言程序设计课程设计报告ExperimentDesigningreporter课程名称高级语言程序设计英文名称CProgramExperimentDe...

C语言课程设计报告 --学生成绩管理系统

内蒙古科技大学课程设计论文内蒙古科技大学本科生课程设计论文题目学生成绩管理系统学生姓名胡书培学号1067111106专业计算机科学与技术班级10级计算机1班指导教师周李涌20xx年12月30日1内蒙古科技大学课...

C语言课程设计报告 学生学籍管理系统

信息学院课程设计报告课程名称C语言程序设计题目名称学生学籍管理系统学生学院信息学院专业班级计科12学号学生姓名指导教师20xx年12月26日1目录一设计目的与要求311题目与设计要求312本程序设计的知识点4二...

《C语言程序设计实践》课程报告

课程报告课程名称程序设计实践专业班级计算机科学与技术1205班学生姓名雷原康学号20xx16010522任课教师陈卫东学期20xx20xx学年第二学期1课程报告任务书成绩评定教师21需求分析经过大一上学期的理论...

C语言课程设计报告 学生选课系统加源代码

实践教学兰州理工大学计算机与通信学院20##年春季学期C程序设计课程设计题目:学生选课系统专业班级:通信工程1班姓名:学号:指导教师:成绩:摘要学生选课系统是一个教育单位不可缺少的重要系统组成部分,它对于学校的…

c语言课程设计报告

青岛农业大学课程设计报告题目:使用菜单选择趣味程序姓名:学院:理学与信息科学学院专业:通信工程班级:2班学号:指导教师:年月日一设计目的进一步加深、巩固所学专业课程(《C语言程序设计》)的基本理论知识,理论联系…

c语言程序设计课程设计报告(34篇)