文档库 最新最全的文档下载
当前位置:文档库 › C语言程序设计实验课程简介

C语言程序设计实验课程简介

四川师范大学计算机科学学院《C语言程序设计》

2010年2月

年级: 2009级

专业:计算机科学与技术

班级:一班

姓名:谢丹

学号: 2009110156 指导教师:廖雪花

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

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

课程性质:专业必修课

课程属性:专业必修课

学时学分:学时32 学分1

开课实验室:软件实验室

面向专业:网络工程、软件工程、计算机科学与技术

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

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

二、实验项目

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

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

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

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

【实验五】函数

【实验六】数组(一)

【实验七】数组(二)

【实验八】指针

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

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

三、有关说明

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

先修课程:计算机文化

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

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

(1)教材:

《C程序设计习题解答与上机指导》,谭浩强吴伟民著,北京:清华大学出版社,2003年。(2)主要参考书目:

《C语言程序设计》谭浩强主编,清华大学出版社,2003年。

三、实验内容

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

(验证性实验 2学时)

(一)、实验目的

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

}

运行结果及分析:

结果:****************** 分析:在C语言中,\n表示换行,因此运行结果为三行。 This is a c program. Printf 是预定义的标准的C函数,用于显示输出。 ******************

将程序中的\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);

}

运行结果及分析:

结果:sum=120,sb=5

分析:变量声明语句int·····告诉编译器a b sum sb均为整数型,可执行语句中的%d表示输出的结果为整数。

(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 分析:C语言中,%c表示字符输出,在ASCⅡ中,97、98、100 97,98 分别为a b d。

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

}

运行结果及分析:

结果:9,11,9,10

分析:m=++i表示i加1再赋值给m,而n=j++表示先将j赋值给n,再加1.

再将本程序的第3行改为m=i++;n=++j;

运行结果及分析:

结果:9,11,8,11

2.程序填空

任意输入一个有五位数字的正整数x,分别输出每一数位上的数字(由高到低分别用b5,b4,b3,b2,b1表示),请将程序补充完整。

#include

main()

{

int b1,b2,b3,b4,b5;

①long int x;

Scanf( “ %ld ”,&x);

b5= ②(x/10000)%10 ;

b4=(x/1000)%10;

b3= ③(x/100)%10 ;

b2=(x/10)%10;

b1= ④(x/1)%10 ;

printf(“the number is ⑤ %ld \n”,x);

printf(“its bit is:%d,%d,%d,%d,%d\n”,b5,b4,b3,b2,b1);

}

程序分析:int的表示范围只有-32768~32767,并没有包含所有的五位数,而long int的表示范围则比int的范围大了很多,包含了所有的五位数。而算术运算符%为取模运算,该运算的结

果是整数除的余数。

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,c,area;

错误语句的行号:(4)

改正后的语句全行:p=3.14;

错误语句的行号:(7)

改正后的语句全行:area=p*r*r;

错误语句的行号:(6)

改正后的语句全行:c=2*p*r;

改错分析:

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

(验证性实验 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,10

分析:a=(--x == y++)? --x : ++y;所表示的是:若--x==y++,则将—x的值赋给a,反之就将++y 的值赋给a.而--x的意思为x先减1再用变量x的新值进行表达式计算;而y++的意思为y先进行表达式计算,再加1.

(2)#include

void main()

{

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

If(a

if(b<0)c=0;

else c+=1;

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

}

运行结果及分析:

结果:2

分析:c+=1相当于c=c+1

(3)#include

void main( )

{

int a=0,b=0,c=0;

if(++a > 0 || ++b > 0) ++c;

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

}

运行结果及分析:

结果:

a=1,b=0,c=1

分析:(++a > 0 || ++b > 0)语句中,||是逻辑或运算符,该运算符的关联性为从左到右,因此当||左边的表达式满足要求时,右边的表达式将不再进行计算。

?(4)#include

void main()

{

int x=-1;

switch (x)

{

default: printf(“a”);

case 1: printf(“b”);

case 2: printf(“c”);

}

}

运行结果及分析:

结果:abc

在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( ① ) printf(“%d is larger”, a );

else if(_______②___________) printf(“These numbers are equal”);

else ___________ ③_____________________;

}

填空①:a>b

填空②:a=b

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

结果分析:

如果输入的两个数a和b中,a>b,则输出结果为:a is larger;如果a=b,则输出结果为:These numbers are equal;如果a

3.编写程序

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

#include

main()

{

int a, b, c, d, e;

printf ("Input five different integers:");

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

getch();

}

程序编写注意事项:

(2)编写程序,读取一个整数,判断并显示出这个整数是奇数还是偶数。(提示:使用求模运算符。偶数是2的倍数。任何2的倍数除以2时,余数均为零。)

程序清单:

#include

main()

{

int number;

printf ("Enter an integer number\n");

scanf ("%d", &number);

if (number % 2==0)

printf ("The number is odd number.\n");

else

printf ("The number is even number.\n");

getch();

}

程序编写注意事项:

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

程序清单:

#include

main()

{

int a,b,c;

int sum, average, product, smallest, largest;

printf ("Input three different integers:");

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

if (sum=a+b+c)

printf ("Sum is %d\n", sum);

if (average=sum/3)

printf ("Average is %d\n", average);

if (product=a*b*c)

printf ("Product is %d\n", product);

getch();

}

程序编写注意事项:

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

(验证性实验 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? “****”:”++++++++”表示如果 **** count%2为真,则输出****,若count%2为假,则输出++++++++ ++++++++ 而count++表示每循环一次就增加1,直到count的值为10 **** 为止。

++++++++

****

++++++++

****

++++++++

****

(2)#include

void main()

{

int row=10,Column;

while(row>=1)

{

Column=1;

while(Column <=10)

{

printf(“%s”,row%2 ? “<”: “>”);

Column++;

}

row--;

printf(“\n”);

}

}

运行结果及分析:

结果:>>>>>>>>>> 分析:当row=10时,Column=1,因此row%2为假,则输出 <<<<<<<<<< 一个>;然后Column增加1,继续进行while(Column<=10) >>>>>>>>>> 循环,直到Column=10为止。然后运行到row--,继续进 <<<<<<<<<< while(row>=1)的循环,当运行到第二个while循环时, >>>>>>>>>> 又将进行十次循环过后再继续运行。

<<<<<<<<<<

>>>>>>>>>>

<<<<<<<<<<

>>>>>>>>>>

<<<<<<<<<<

(3)#include

void main()

{

int y=9;

for( ; y>0 ; y--)

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

}

运行结果及分析:

结果: 8 分析:

5

2

2.编写程序

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

程序清单如下:

#include

main()

{

int n=0,number1,number2,number3;

printf ("N 10*N 100*N 1000*N\n\n");

while(n<10)

{

n++;

number1=10*n;

number2=100*n;

number3=1000*n;

printf ("%d %d %d %d\n",n,number1,number2,number3);

}

getch();

}

程序编写注意事项:

(2)编写一程序,能够输入一组10个数字,判断并显示出这些数字中的最大数。提示:程序中应该使用如下的3个变量:

Counter:能够记数到10的记数器。

Number:当前输入到程序中的数字。

Largest:迄今为止所发现的最大数字。

程序清单:

#include

main()

{

long int a, b, number, counter=2,largest;

printf("Enter one integert:");

scanf ("%ld", &a);

b=a;

printf ("The largest one is %ld\n",b);

while (counter<=10)

{

printf("Enter an integer:");

scanf("%ld", &number);

if(number >b)

{

largest= number;

printf ("The largest one is %ld\n", largest);

}

else

{

largest= b;

printf ("The largest one is %ld\n", largest);

}

b=largest;

counter++;

}

getch();

}

程序编写注意事项:

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

程序清单:

程序编写注意事项:

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

程序清单:

#include

main()

{

int a, b, c, d;

long int n;

scanf("%ld", &n);

a=n/10000;

b=(n%10000)/1000;

c=(n%100)/10;

d=n%10;

if(a==d && b==c)

printf("this %ld is a hui wen\n",n);

else

printf ("this %ld is not a hui wen\n",n);

getch();

}

程序编写注意事项:

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

(验证性实验 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);

}

运行结果及分析:

结果为:。

分析:程序中continue语句表示控制权直接跳转到测试条件,使循环继续下一次循环,跳过其后的全部语句。

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

}

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

}

运行结果及分析:

结果为:x=10,y=6

分析:程序中,语句if(x>=10) break;表示当x>=10时,跳出循环,语句if(x%2==1) { x+=5; continue;},表示当x%2为真时,继续循环。

(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

分析:程序中,有两个循环,外循环和内循环。外循环循环一次,内循环就循环四次,每次循环结束,sum的值为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

2.程序填空

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

#include

void main()

{

int i, j;

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

{

if (___②______) continue;

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

}

}

填空①:i<100

填空②:i/3 && i/7

程序分析:程序中的for循环限制数的范围,if语句中表示条件。Continue表示结束if语句,继续for循环。

(2)判断m是否素数

#include

void main()

{

int m,i,k;

scanf(“%d”,&m);

for(i=2;i

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

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

}

填空并运行分析:

3.编写程序

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

程序清单:

程序编写注意事项:

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

程序清单:

#include

void main()

{

int i,j,k;

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

{

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

printf(" ");

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

printf("*");

printf("\n");

}

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

{

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

printf(" ");

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

printf("*");

printf("\n");

}

getch();

}

程序编写注意事项:

相关文档
相关文档 最新文档