文档库 最新最全的文档下载
当前位置:文档库 › 实验4:Linux C语言编程和调试

实验4:Linux C语言编程和调试

实验4:Linux C语言编程和调试
实验4:Linux C语言编程和调试

实验报告4

课程名称:Linux程序设计实验名称:Linux C语言编程和调试

学生姓名:班级:学号:

指导老师:钱振江成绩:

一、实验目的

1.掌握Linux环境下C程序的编辑、编译、运行等操作;

2.掌握多文件的编译及连接;

3.初步掌握gdb调试方法;

二、实验任务与要求

1.在Linux环境下C程序的编辑、编译与运行;

2.多文件的编译及连接;

3.应用gdb调试程序;

4.随机数的应用;

三、实验工具与准备

计算机PC机,Linux Ubuntu操作系统

四、实验步骤与操作指导

1.调试下列程序。程序通过创建一个小型函数库,它包含两个函数,然后在一个示例程序中调用其中一个函数。这两个函数分别是pro1和pro2。按下面步骤生成函数库及测试函数库。

步骤1 为两个函数分别创建各自的源文件(将它们分别命名为pro1.c和pro2.c)。

[root@localhost root]# vi pro1.c

#include

void pro1(int arg)

{

printf(“hello:%d\n”,arg) ;

}

[root@localhost root]# vi pro2.c

#include

void pro2(char *arg)

{

printf(“您好:%s\n”,arg) ;

}

步骤2 分别编译这两个文件,生成要包含在库文件中的目标文件。这通过调用带有-c 选项的gcc编译器来实现,-c选项的作用是阻止编译器创建一个完整的程序,gcc将把源程序编译成目标程序,文件名为以.o结尾。如果此时试图创建一个完整的程序将不会成功,因为还未定义main函数。

[root@localhost root]# gcc -c pro1.c pro2.c

[root@localhost root]# ls *.o

pro1.o pro2.o

步骤3 现在编写一个调用pro2函数的程序。首先,为库文件创建一个头文件lib.h。这个头文件将声明库文件中的函数,它应该被所有希望使用库文件的应用程序所包含。

[root@localhost root]# vi lib.h

/*lib.h:pro1.c,pro2.c*/

void pro1(int);

void pro2(char *);

步骤4 创建主程序program.c,它包含库的头文件并且调用库中的一个函数。

[root@localhost root]# cat program.c

#include “lib.h”

int main()

{

pro2(“Linux world”);

exit(0);

}

步骤5 编译并测试程序。暂时为编译器显式指定目标文件,然后要求编译器编译文件并将其与预先编译好的目标模块pro2.o链接。

[root@localhost root]# gcc -c program.c

[root@localhost root]# gcc -o program program.o pro2.o

[root@localhost root]# ./program

您好:Linux world

步骤6 创建并使用一个库文件。用ar程序创建一个归档文件并将目标文件添加进去。这个程序之所以称为ar,是因为它将若干单独的文件归并到一个大的文件中以创建归档文件。注意,也可以用ar程序来创建任何类型文件的归档文件。

[root@localhost root]# ar crv libfoo.a pro1.o pro2.o

函数库现在即可使用。可以在编译器命令行的文件列表中添加该库文件以创建程序,如下所示:

[root@localhost root]# gcc -o program program.o libfoo.a

[root@localhost root]# ./program

您好:Linux world

也可以用“-l”选项来访问函数库,但是因为其未保存在标准位置,所以必须用-L选项来指示gcc在何处可以找到它,如下所示:

[root@localhost root]#gcc -o program program.o -L. -lfoo

-L.选项指示编译器在当前目录“.”中查找函数库。“-lfoo”选项指示编译器使用名为libfoo.a的函数库(或者名为libfoo.so的共享库,如果它存在的话)。

要查看目标文件、函数库或可执行文件里包含的函数,可以使用nm命令。如果查看program和libfoo.a,就会看到函数库libfoo.a中包含pro1和pro2两个函数,而program里只包含函数pro2。创建程序时,它只包含函数库中它实际需要的函数。虽然程序中的头文件包含函数库中所有函数的声明,但这并不将整个函数库包含在最终的程序中。

问题思考:

(1)按照给出的步骤1-6调试程序;

(2)编写两个函数,其中一个求数组中的最大值与最小值,另一函数求某一数组的元素个数及main函数,建立一个库。主程序调用这两个函数,对程序进行调试并记录实验结果。2.调试下列程序。设计一个程序,要求输入两个整数,输出两个整数间的所有自然数。

步骤1 编辑源程序代码。

[root@localhost root]#vim main.c

程序代码如下:

#include

int num(int x, int y);

int main()

{

int a1,a2,min_int;

printf("请输入第一个整数:");

scanf("%d",&a1);

printf("请输入第二个整数:");

scanf("%d",&a2);

num(a1,a2);

}

int num(int x, int y)

{

int temp,i;

if (x>y)

{temp=x;x=y;y=temp;}

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

printf(“%5d”,i);

printf(“\n”);

return 0;

}

步骤2 用gcc编译程序。

在编译的时候要加上选项“-g”。这样编译出的可执行代码中包含调试信息,否则之后gdb无法载入该可执行文件。

[root@localhost root]# gcc main.c -o main -g

步骤3 进入gdb调试环境。

gdb进行调试的是可执行文件,因此要调试的是main而不是main.c,输入如下:

[root@localhost root]#gdb main

回车后就进入了gdb调试模式,如图4-1所示。

GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)

Copyright 2003 Free Software Foundation, Inc.

GDB is free software, covered by the GNU General Public License, and you are

welcome to change it and/or distribute copies of it under certain conditions.

Type "show copying" to see the conditions.

There is absolutely no warranty for GDB. Type "show warranty" for details.

This GDB was configured as "i386-redhat-linux-gnu"...

(gdb)

图4-1 进入gdb调试环境

可以看到,在gdb的启动画面中有gdb的版本号、使用的库文件等信息,在gdb的调试环境中,提示符是“(gdb)”。

步骤4 用gdb调试程序。

(1)查看源文件

在gdb中输入“l”(list)就可以查看程序源代码,一次显示10行。

可以看出,gdb列出的源代码中明确地给出了对应的行号,这样可以大大方便代码的定位。

(2)设置断点

设置断点在调试程序时是一个非常重要的手段,它可以使程序到一定位置暂停运行。软件工程师可以在断点处查看变量的值、堆栈情况等,从而找出代码的问题所在。

在gdb中设置断点的命令是“b”(break),后面跟行号或者函数名。

不指定具体行号的断点设置在“b”(break)后面跟函数名。本例可以输入“break num”。

(3)查看断点信息

设置完断点后,可以用命令“info b”(info break)查看断点信息。

(4)运行程序

接下来可以运行程序,可以输入“r”(run)开始运行程序。

(5)查看与设置变量值

调试程序重要手段就是查看断点处的变量值。程序运行到断点处会自动暂停,此时输入“p变量名”可查看指定变量的值。

调试程序时,若需要修改变量值,可程序运行到断点处时,输入“set 变量=设定值”,例如,给变量“a2”赋值100,输入“set a2=100”。

gdb在显示变量值时都会在对应值前加“$n”标记,它是当前变量值的引用标记,以后想再引用此变量,可以直接使用“$n”,提高了调试效率。

(6)单步运行

很多情况下,调试的时候要单步运行程序。在断点处输入“n”(next)或者“s”(step)可单步运行。它们之间的区别在于:若有函数,调用时,“s”会进入该函数,而“n”不会进入该函数。

(7)继续运行程序

在查看完变量或堆栈情况后可以输入“c”(continue)命令恢复程序的正常运行,把剩余的程序执行完,并显示执行结果。

(8)退出gdb环境

退出gdb环境只要输入“q”(quit)命令,回车后退出gdb环境。

3.调试下列程序。产生10个介于1到10之间的随机数值。提示:函数rand( )会返回一个0~ RAND_MAX(其值为2147483647)之间的随机值。产生一个大于等于0、小于1的数,此数可表示为:rand()/(RAND_MAX+1.0)。

操作步骤

步骤1 编辑源程序代码。

[root@localhost root]#vim 4-3.c

程序代码如下:

#include

#include "stdio.h"

int main()

{

int i,j;

srand((int)time(0));

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

{

j=1+(int)(10.0*rand()/(RAND_MAX+1.0));

printf(" %d ",j);

}

printf(“\n”);

}

问题思考:

(1)修改程序,产生50个100-1000之间的随机整数;

(2)编写一个猜数游戏的程序,先产生一个随机数,要求测试者输入一个数,计算机会提示猜大了,猜小了或恭喜您猜中了,直到猜中,退出程序;

C语言程序设计实验报告参考答案

长沙理工大学C语言实验报告参考答案 实验一熟悉C语言程序开发环境及数据描述四、程序清单 1.编写程序实现在屏幕上显示以下结果: Thedressislong Theshoesarebig Thetrousersareblack 答案: #include main() { printf("Thedressislong\n"); printf("Theshoesarebig\n"); printf("Thetrousersareblack\n"); } 2.改错题(将正确程序写在指定位置) 正确的程序为: #include main() {

printf("商品名称价格\n"); printf("TCL电视机¥7600\n"); printf("美的空调¥2000\n"); printf("SunRose键盘¥50.5\n"); } 2.编写程序:a=150,b=20,c=45,编写求a/b、a/c(商)和a%b、a%c(余数)的程序。 答案: #include main() { inta,b,c,x,y; a=150; b=20; c=45; x=a/b; y=a/c; printf("a/b的商=%d\n",x);

printf("a/c的商=%d\n",y); x=a%b; y=a%c; printf("a/b的余数=%d\n",x); printf("a/c的余数=%d\n",y); } 4.设变量a的值为0,b的值为-10,编写程序:当a>b时,将b赋给c;当a<=b时,将a赋给c。(提示:用条件运算符) 答案: #include main() { inta,b,c; a=0; b=-10; c=(a>b)?b:a; printf("c=%d\n",c); }

C语言程序设计实验与习题答案

2.程序填空 (1)以下程序的功能是计算1~50之间能被7整除的整数之和。 #include void main() {int i,sum= 0; for(i=1;50;i++) if(i%7==0) sum+=i; printf("sum=%d\n",sum); } (2) 下面程序接收来自键盘的输入,直到输入+Z(值为-1)键为止。这些字符被原样输出,但若有连续一个以上的空格时只输出一个空格。请填空。 #include void main() {char cx; char front=’’; while ((cx=getchar())!=’\n’) {if (cx!=’’) putchar(cx); if (cx= =’’) if (front!=’’) putchar(cx); front=cx; } } 3.程序改错 (1)下列程序的功能是求1+3+5+…99的和。

#include void main( ) { int s,i; ★//int s=0,i; i=1; while(i<=99)s=s+i;★//{s=s+i;i++;} printf("1+3+5+…99的和是:%d\n",s); } (2)下面程序的功能是输入一个正整数,判断是否是素数,若 为素数输出1,否则输出0。 #include void main() { int i,x,y=0; ★//y=1 scanf("%d",&x); for(i=2;i<=x/2&&y;i++) if ((x%i)!=0) y=0; ★//x%i==0 printf("%d\n",y); } 4.设计性实验 (1)题 /* 方法(1)精度控制*/ #include

C语言程序设计实验报告(数组)

C语言程序设计实验报告(数组) 1实验目的 (1)熟练掌握一维数组,二维数组的定义,初始化和输入、输出方法; (2)熟练掌握字符数组和字符串函数的使用; (3)掌握与数组有关的常用算法(查找、排序等)。 2实验内容 编写函数catStr(char str1[],char str2[])用于进行两个字符串的连接,编写函数lenStr(char str[])用于统计一个字符串的长度,并在主函数中调用。 要求: 1、不允许用strcat()和strlen()字符处理库函数; 2、在主函数以直接初始化的方式输入两个字符串str1和str2.调用函数 strlen()计算并返回两个字符串的长度; 3、调用函数catstr()连接两个字符串(将str2连接在str1后面); 4、调用函数lenstr()计算并返回连接后字符串的长度; 5、在主函数中输入两个原始的字符串及几个字符串的长度,以及处理后字 符串及其长度。

3算法描述流程图

4源程序 #include #include void catStr(char str1[],char str2[]) { int i,j; for (i=0;str1[i]!='\0';i++); for(j=0;str2[j]!='\0';j++) str1[i+j]=str2[j]; str1[i+j]='\0'; } lenStr(char m[] ) {int i;

for (i=0;m[i]!='\0';i++); printf("%d",i); } void main() {char s1[50]="forever",s2[50]="more"; printf("s1=%s,s2=%s",s1,s2); printf("\ns1的长度:"); lenStr(s1); printf("\ns2的长度:"); lenStr(s2); catStr(s1,s2); printf("\n连接后的字符:"); printf("%s\n",s1); printf("连接后字符的长度:"); lenStr(s1); printf("\n"); } 5测试数据 s1=forever, s2=more 6运行结果 7出现问题及解决方法 在输入程序时,少写了半边引号,调试时发现存在错误,找到了错误并加以改正。无论什么事,细心都是必不可少的,认真是解决问题的关键。 8实验心得 通过本次实验,对于函数的定义和声明,数组以及循环语句有了进一步的认识,掌握了字符数组和字符串函数的使用,以及与数组有关的常用算法。此次实验不是调用strlen()和strcat()函数,而是通过自己设计程序来进行字符串的连接以及计量字符串的长度,由此我学会了如何去理清自己的思路来设计程序。

C语言程序设计实验实验指导书及答案

实验一熟悉C程序运行环境 班级学号姓名成绩 一、实验目的 1. 熟悉C语言Visual C++调试环境。 2. 掌握C程序的编辑、调试及运行。 二、实验内容 项目1. 调试并运行下面程序,并写出运行结果: #include <> int main() { printf(“Good morning!\n”); printf(“Hello,world!\n”); return 0; } 运行结果(注意,按照屏幕输出格式写): 项目2. 调试并运行下面程序,并写出运行结果: #include <> int main() { int a , b , sum; /*定义变量*/ a=23; b=56; /*为变量赋值*/ sum=a+b; /*计算两个变量的和*/ printf(“sum is %d\n”,sum); /*输出计算结果*/ return 0; } 运行结果:

项目3. 调试并运行下面程序,并写出运行结果: #include <> int max(int,int); int main() { int a , b , c; /*定义变量*/ a=23; b=56; /*为变量赋值*/ c=max(a,b); /*调用max函数,将得到的值赋给c*/ printf(“max is %d\n”,c); /*输出c的值*/ return 0; } int max(int x,int y) /*定义max函数,函数值为整型*/ { int z; /*定义变量*/ if(x>y) z=x; else z=y; return(z); /*将z的值返回*/ } 运行结果: 三、提高部分 1.试想,如果求10个数中的最大者,则程序该如何编写。 程序代码 运行结果:

C语言程序设计实验报告(实验1-12)

文档从网络中收集,已重新整理排版.word版本可编辑.欢迎下载支持. 《C语言程序设计》 实验报告 2013~2014学年第二学期 班级 姓名 学号 指导教师

实验一 实验项目名称:C程序的运行环境和运行C程序的方法 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.了解在Visual C++ 6.0环境下如何编辑、编译、连接和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点。 二、预习内容: 教材《C语言程序设计教程》第1章。 三、实验内容: 1. 在Visual C++ 6.0环境下输入并运行下面的程序: #include int main( ) { printf("This is a C program.\n"); return 0; } 2. 在Visual C++ 6.0环境下输入下面的程序(有语法错误),编译、连接、调试该程序,直至程序 无语法错误,然后运行程序,并观察分析运行结果。 #include int main( ) { int a,b,sum a=3; b=4; sun=a+b; print(“%d+%d=%d\n”,a,b,sum); return 0; } 四、实验结果: 1. 运行结果(或截图): This is a C program. Press any key to continue

2. (1) 改正后的源程序: #include int main( ) { int a,b,sum; a=3; b=4; sum=a+b; printf("%d+%d=%d\n",a,b,sum); return 0; } (2) 运行结果(或截图): 3+4=7 五、思考题: 1. 一个C程序上机的步骤有哪些? 答:上级输入与编辑源程序—对原程序进行编译–与库函数链接–运行可执行的目标程序。 2. 组成C程序的基本单位是函数,一个函数包括哪几个部分? 答:一个函数包括两部分:分别为函数头或函数首部和函数体。 成绩指导教师签名 实验二 实验项目名称:数据类型、运算符和表达式 所使用的工具软件及环境:Visual C++ 6.0 一、实验目的: 1.掌握整型、实型与字符型这三种基本类型的概念; 2.掌握常量及变量的使用方法; 3. 掌握基本算术运算符及其表达式的使用方法; 4. 掌握++、--运算符、赋值运算符及其表达式的使用方法。 二、预习内容:

C语言程序设计实验-答案

-前言- /*非常感谢度娘以及各位网上C语言高手的支持,才能让敝人完成此文档的整理。 本文档集合了本人、度娘、众网友的力量,其中代码的正确率约为90%(不正确的有标注)。为回报度娘及众网友的帮助,本文档免费下载。 */ /*配“电子科技大学出版社(周信东主编)”的C语言程序设计实验*/ /*努力吧,骚年以及学妹们!*/ /*整理ed by 口玉刀一of GUET.*/ ===================== 实验一C语言程序初步 ===================== 1.---------------------------- 已知a=5,b=4,c=6,求出s并换行 #include"stdio.h" main() { int a,b,c,s; a=5;b=4;c=6; s=(a+b+c)/3; printf("a=%d,b=%d,c=%d\n,s=%d",a,b,c,s); } 2.------------------------------- 输入一个数字求他的平方 #include main() { int r,s; scanf("%d",&r); s=r*r; printf("s=%d\n",s); } 3.-------------------------------- (1) #include main() { printf(" *\n"); printf("***\n"); printf(" *\n"); } (2) #include

{ int v; int a,b,c; //a,b,c aer sides,v is volume of cube a=3;b=3;c=5; v=a*b*c; printf("v=%d\n",v); } ================================= 实验二数据类型、运算符和表达式 ================================= 1. (1)-------------------------------------------------- //总觉得打印结果怪怪的,DO YOU THINK SO? main() { char s1='3',s2='4',s3='5'; int c1=101,c2=102; printf("3%c\t4%c\t5%c\n",s1,s2,s3); //3%c为输出3和%c printf("s1=%d\ts2=%d\ts3=%d\n",s1,s2,s3);//注意哦,s1,s2,s3是char!而%d:输入输出为整形%ld 长整型%hd 短整型%hu无符号整形%u %lu%s:输入输出为字符串%c字符%f:输入输出为浮点型%lf双精度浮点型printf("c1=%d\t~%c\n",c1,c1); //换码符'\t',表示水平制表位(horizeontal tab),它的作用是将光标移到最接近8的倍数的位置 printf("c2=%d\t~%c\n",c2,c2); //注意c1,c2的类型 } (2) //运行结果为8.300000 %是求余数先运算x-y,把结果转换为int型的有利于四则运算 main() { float x=8.3,y=4.2,s; int a=7; s=x+a%5*(int)(x-y)%2/3; printf("s=%f",s); }

C语言程序设计实验报告(函数)

C语言程序设计实验报告(实验名称:函数) 1实验目的 (1)掌握函数的定义方法、调用方法、参数说明以及返回值; (2)掌握实参与形参的对应关系,以及参数之间的“值传递”的方式; (3)掌握函数的嵌套调用及递归调用的用的设计方法; (4)在编程过程中加深理解函数调用的程序设计思想。 2实验内容 (1)编写一个函数primeNum(int x),功能是判别一个数是否为素数。 要求: ①在主函数中输入一个整数x(直接赋值或从键盘输入); ②函数类型为空值(void),调用primeNum( )函数后,在函数中输出x是 否为素数的信息,输出格式为“x is a prime number”或”x is not a prime number”; ③分别输入一下数据:0,1,2,5,9,13,59,121,并运行程序,检查 结果是否正确。 (2)编写函数 mulNum(int a,int b),它的功能是用来确定a和b是否是整数倍的关系。如果a是b的整数倍,则函数返回值为1,否则函数返回值为0。 要求: ①在主函数中从键盘输入一对整型数据a和b; ②调用函数后,根据返回值对a和b的关系进行说明。例如,在主函数中输 入:10,5,则输出“10 is a multiple of 5”; ③分别输入下面几组数据进行函数的正确性测试:1与5,5与5,6与2,6 与4,20与4,37与9。

3算法描述流程图 (1)primeNum(int x)(判别一个数是否是素数)函数流程图 ①主函数流程图:

②判断素数函数流程图:

(2)mulNum(int a,int b)(确定a和b是否是整数倍的关系)函数流程图 ①主函数流程图:

C语言程序设计实验报告.doc

C语言程序设计实验报告 实验名称计算出1000以内10个素数之和 实验目的 1、熟练掌握if、if…else、if…else if语句和witch 语句格式及使用方法,掌握if语句中的嵌套关系和匹配原则,利用if语句和switch语句实现分支选择结构。 2、熟练掌握while语句、do…while语句和for语句格式及使用方法,掌握三种循环控制语句的循环过程以及循环结构的嵌套,利用循环语句实现循环结构。 3、掌握简单、常用的算法,并在编程过程中体验各种算法的编程技巧。进一步学习调试程序,掌握语法错误和逻辑错误的检查方法。 实验内容 计算并输出1000以内的10个素数以及它们的和。 要求: 在程序内部加必要的注释。 由于偶数不是素数,可以不考虑对偶数的处理。 虽然在1000以内的素数超过10个,但是要对1000以内不够10个素数的情况进行处理。 输出形式为:素数1+素数2+素数3+…+素数10=总和值。 算法描述流程图

Main函数: 判断素数: 源程序 #include #include int sushu(int n)/* 判断素数的函数 */ { int t,i; t=sqrt(n); for(i=2;i1;i-=2)/* x为奇数时,做函数计算 */ { n=sushu(i); /* 做判断素数的函数调用 */ ( 励志天下 ) if(n!=0)/* 对素数的处理 */ { a[j]=n;/* 把素数由大至小存入数组a[ ]中 */ j++; if(j<11) m+=n; /* 统计前10个素数之和 */ } } if(j<10)/* 当素数个数小于10个时,结果输出 */

C语言程序设计实验报告——实验2 数据类型、运算符和表达式

凯里学院 C 语言程序设计 实验报告 ××××× 专业×× 年级×× 班,学号×××××× 姓名××成绩 合作者 实验日期 年 月 日 指导教师 评阅日期 年 月 日 实验二 数据类型、运算符和表达式 一、实验目的: (1)掌握C 语言数据类型,熟悉如何定义一个整型、字符型、实型变量、以及对它们赋值的方法,了解以上类型数据输出时所用的格式转换符。 (2)学会使用C 的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(――)运算符的使用。 (3)掌握C 语言的输入和输出函数的使用 (4)进一步熟悉C 程序的编辑、编译、连接和运行的过程,学会使用step by step 功能。 (5)认真阅读教材数据类型,算术运算符和表达式,赋值运算符和表达式部分内容。 二、实验内容: (1)输人并运行下面的程序 #include void main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); } (2)按习题3. 7的要求编程序并上机运行 该题的要求是: 要将“China ”译成密码,密码规律是:用原来字母后面的第4个字母代替原来的字母。 例如,字母“A ”后面第4个字母是“E ”,用“E ”代替“A ”。因此,“China ”应译为“Glmre" 。 请编一程序,用赋初值的方法使。cl ,c2,c3,c4,c5五个变量的值分别为‘C ’、‘h ’、‘i ’、‘n ’、‘a ’,经过运算,使cl ,c2,c3,c4,c5分别变为‘G ’、‘l ’、‘m ’、‘r ’、‘e ’,并输出。 三、实验步骤: (1)输人并运行下面的程序 #include void main() { char c1,c2; c1='a'; c2='b'; printf("%c %c\n",c1,c2); } 装订线 装订线

c语言程序设计实验报告模板

c语言程序设计实验报告模板 篇一:C语言程序设计实验报告 一、实验目的: 1、掌握C语言的数据类型和变量的声明。 2、掌握不同类型数据之间赋值的规律。 3、掌握C语言的运算符和表达式的使用。 4、熟悉C程序的编辑、编译、连接和运行的过程。 二、实验内容: ①输人程序:#includevoid main { int a, b; float d,e; char c1,c2; double f, g; long m, n; unsigned int p,q; a=61;b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%d c1=%c,c2=%c d=%6.2f,e=%6.2f ",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.6f m=%ld,n=%ld p=%u,q=%u ",f,g,m,n,p,q); } ②运行此程序并分析结果(2)按习题4. 8要求编写程序题目为: 设圆半径r=l. 5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf输人数据,输出计算结果口输出时要有文字说明,取小数点后两位数字。 程序: 三、实验步骤: ①输人程序: #include void main { int a, b; float d,e; char c1,c2; double f, g; long m, n;

unsigned int p,q; a=61;b=62; c1='a';c2='b'; d=3.56;e=-6.87; f=3157.890121;g=0.123456789; m=50000;n=-60000; p=32768;q=40000; printf("a=%d,b=%d c1=%c,c2=%c d=%6.2f,e=%6.2f ",a,b,c1,c2,d,e); printf("f=%15.6f,g=%15.6f m=%ld,n=%ld p=%u,q=%u ",f,g,m,n,p,q); } ②运行此程序并分析结果。 预计结果: a=61,b=62 c1=a,c2=b d=``3.56,e=`-6.87 f=````3157.890121,g=```````0.123456 m=50000,n=-60000 p=32768,q=40000(`代表空格) 结果: g的输出看来是四舍五入了。 ③在此基础上,将程序第9~14行改为: a=61;b=62; c1=a;c2=b; f=3157.890121;g=0.123456789; d=f;e=g; p=a=m=50000;q=b=n=-60000; 运行程序,分析结果。 p=a=m=50000;q=b=n=-60000;这两条语句将p、a、m的值和q、b、

C语言程序设计实验报告

《C程序设计》实验教学大纲 一、适用范围 大纲适用信息管理专业本科教学使用。 二、课程名称 C程序设计 三、学时数与学分 总学时:90 总学分: 4 实验学时:28 实验学分:1 四、教学目的和基本要求 目的:通过C程序设计实验,培养学生对学习程序设计的兴趣,加深对讲授内容的理解,尤其是通过上机来掌握语法规则,使学生全面了解 C 语言的特点,熟练掌握C 语言程序设计的基本方法和编程技巧。 基本要求:了解和熟悉C语言程序开发的环境;学会上机调试程序,善于发现程序中的错误,并且能很快地排除这些错误,使程序能正确运行,达到实验知识和理论知识的融会贯通。上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止,上机结束后,应整理出实验报告。 注:带*的实验项目为选做实验项目 六、教材、讲义及参考书 《C程序设计题解与上机指导》谭浩强主编清华大学出版社 七、实验成绩评定办法 实验成绩=平时实验表现+实验报告。实验成绩占总成绩的20%。 实验成绩以等级形式给出,评定等级分优、良、中、及格、不及格五类。 1、平时考核:上机实验前,学生必须事先根据题目的内容编好程序,然后在实验时输入程序、调试程序、直至运行结果正确为止。在实验中,教师可根据学生编程操作能力、观察和分析及运用知识能力、程序编制正确性以及学生的课堂纪律、实验态度、保持实验室卫生等方面的表现进行综合考核。

2、实验报告:学生实验后应按时完成实验报告。 八、实验教学大纲说明 本大纲共安排28学时的实验,其中带*号实验项目为选做实验项目,实际课时为18学时。实验项目多为设计性实验项目,每个设计性实验项目中都包含数个小的设计性题目,其中带*号的题目为选做题目,有时间和有能力的同学可以选做。 九、实验项目 实验一 C程序的运行环境和运行一个C程序的方法 一、实验目的 1.了解Visual C++编译系统的基本操作方法,学会独立使用该系统。 2.了解在该系统上如何编辑、编译、连接和运行一个C程序。 3.通过运行简单的C程序,初步了解C源程序的特点。 二、实验内容 1.用编辑程序,输入教材第一章例程序,并进行编译和运行。应了解所用的系统是用什么命令进行编译和连接运行的。编译和连接后所得到的目标程序的后缀是什么形式的? 2.编写一个C程序,输出以下信息: **************************** very good! **************************** 3.输入并运行教材第一章中例,了解如何在运行时向程序变量输入数据。 实验二数据类型、运算符和表达式 一、实验目的 1.掌握C语言数据类型,熟悉如何定义一个整型、字符型、实型变量,以及对它们赋值的方法,了解以上类型数据输出时所用格式转换符。 2.学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(++)和自减(--)运算符的使用。 二、实验内容 1.输入并运行以下程序: main( ) { char c1,c2; c1=97;c2=98; printf(“%c %c\n”,c1,c2); printf(“%d %d\n”,c1,c2); } 在此基础上 ①将第三行、第四行改为: c1=321;c2=353; 再使之运行,分析其运行结果。 ②将第二行改为: int c1,c2; 再使之运行,分析其运行结果。。 2.输入并运行以下程序:

C语言程序设计实验报告

C语言程序设计实验报告 (实验三:C程序的多源文件工程化设计试验)实验成绩: (实验四:函数的调用及参数传递验证试验) 实验成绩: 专业:轨道交通信号与控制 班级:1303班 姓名:郭芸 学号:201310010 指导教师:李建国 兰州交通大学自动化与电气工程学院 2014年05月03日

实验三:C程序的多源文件工程化设计试验 一实验要求: 设计一个发牌的程序,要求按照1-13分别对应同一个花色的牌的数字,按照随机方式发出这13张牌,程序每次运行时发出的牌的顺序不同。 解题思路:随机数的产生需要采用:srand(time(0));语句和(1+rand()%13)两个语句来实现。 1.流程图:

2.编辑环境的截图与过程描述: 3.源代码: #include #include int main() { void Srand(); Srand(); return 0;

} #include #include #include void Srand() { int i,j; int a[13]; srand(time(0)); for(i=0;i<13;i++) { j=1+rand()%13; while(a[j]==1) { j=rand()%13; } a[j]=1; printf("%d ",j+1); } } 4.代码编译链接中编译系统给出的错误、警告内容截图和分析、警告和错误的原因分析,修改是怎样进行的说明: 错误分析:函数定义错误,

5.运行结果截图: 实验四:函数的调用及参数传递验证试验 一实验内容: 设计一个发牌的程序,要求按照1-13分别对应同一个花色的牌的数字,按照随机方式生成这13张牌,并存放于数组中。 1设计包括数组元素作为参数的子函数,在子函数内输出该元素,并改变该元素的值,再次输出; 2设计包括数组名为参数的子函数,在子函数内对数组进行从到大的排序; 排序后在主函数输出; 解题思路:套用实验三的函数,修改实验三的func1函数,让其多加一个改变数组元素值得语句,实现实验四的要求1。增加一个func进行数组元素排序,在func1中调用func2,实现实验四要求2。

C语言程序设计实验指导书

C 语言程序设计 实 验 指 导 书 电子工程学院 2012-2

实验一 C程序的运行环境和编辑、调试、运行简单C程序 一、实验目的 1.了解 Turbo C 的基本操作方法,学会独立使用该系统。 2.掌握在该系统上如何编辑、编译、运行一个C程序。 二、实验内容及步骤 1.进入C的工作环境 1)在Windouws环境下:“开始”→“程序”→“MS-DOS” 屏幕上进入 MS-DOS窗口 2)在Dos环境下:键入命令c:\> cd c:\tc↙ c:\tc> tc↙ 屏幕上出现Turbo C的工作环境 2.熟悉Turbo C的工作环境 了解Edit窗口与Message窗口 了解主菜单的8个菜单项 File Edit Compile Project Option Debug break/watch 3.输入并运行一个简单的程序 File→New 输入源程序:

main() { printf("This is a C program.\n"); printf("OK\n"); } 按F9进行编译和连接,观察屏幕上显示的编译信息。如果出现出错信息,则应找出原因并改正。 按Run→Run(或按Ctrl+F9) 编译、连接、运行一起完成。 按Run→User screen(或按Alt+F5) 察看运行结果。 按任一键从用户屏切换回TC窗口。 4.输入并编辑第二个C程序 File→New 输入源程序: main ( ) { int a,b,sum; a=123; b=456; sum=a+b; printf("sum is %d\n", sum); }

编辑、运行、调试该程序。 5.编辑、运行、调试自己编写的程序(至少一个程序) 如:输入上底、下底和高,计算梯形面积。 观察屏幕上显示的编译信息。如果出现出错信息,则应找出原因并改正。 用File→Save (或F2)保存程序(程序名为a1.c) 三、实验报告要求 写明: 1.实验目的 2.实验内容与步骤 3.编写的程序(题目,经调试、运行后正确的程序) 4.编译过程中出现的错误信息。 5.总结讨论本次实验的结果和收获。

C语言程序设计实验六_答案

1.编程实现:该程序的功能是:计算并输出 S=1+(1+20.5)+(1+20.5+30.5)+…+(1+20.5+30.5+…+n0.5) 例如,若从键盘给n输入20后,则输出为s=534.188884。文件名:myf61.c 【参考源程序】 #include void main() { float t=1.0,s=1.; int i,n; scanf("%d",&n); for(i=2;i<=n;i++) { t=t+sqrt(i); s=s+t; } printf("%f",s); } 2.编程实现:将a数组中的n个数和b数组中逆序的n个数一一对应相加、求平方,其结 果存放在c数组中。文件名:myf62.c 例如: 若a数组中的值是:1、3、5、7、8 b数组中的值是:2、3、4、5、8 输出结果c中存放的数据是81、64、81、100、100 【参考源程序】: #define N 5 void main() { int a[N],b[N],c[N]; int i; for(i=0;i

} 3.用以下的递归公式求数列a0,a1,……,a19,递归公式为: a0=0; a1= l; a2=1; a i=a i-3十2a i-2+a i-1当i大于2时。Myf63.c 【参考源程序】: #include "stdio.h" void main() {long a[20]={0,1,1},i,j=0; for(i=3;i<=20;i++) a[i]=a[i-3]+2*a[i-2]+a[i-1]; for(i=0;i<20;i++) { if(j++%5==0) printf("\n"); printf("%8ld",a[i]); } } 4.用数组编程。输入10位学生的《C语言程序设计》成绩。求出该门课程的平均成绩, 并求高于平均成绩的人数,该门课程的最高分和最低分,以及该门课程的不及格人数。 文件名:myf64.c 【参考源程序】: #include void main() { int a[10],i,j,max,min,av_c=0,no_c=0; float sum=0,av; for(i=0;i<10;i++) { scanf("%d",&a[i]); sum=sum+a[i]; } max=min=a[0]; av=sum/10; for(i=0;i<10;i++) { if(maxa[i]) min=a[i]; if(a[i]>av) av_c++; if(a[i]<60) no_c++; } printf("\n"); printf("ave=%.2f low_av=%d NOpass=%d\n",av,av_c,no_c); printf("max=%d min=%d",max,min); }

C语言程序设计实验题

一、实验目的 1.掌握赋值语句的功能和使用方法。 2.掌握C语言的数据类型,熟悉不同类型变量的定义及赋值的方法。 3.学会使用C语言的有关算术运算符,以及包含这些运算符的表达式。 4.掌握简单数据类型的输入输出方法,能正确使用格式控制符。 5.学习编制简单的C程序。 二、实验内容(均要求给出运行结果) 1.程序改错题 (1) 以下程序输入一个十进制整数,输出与之对应的八进制数与十六进制数。例如,输入31,输出37(八进制)和1F(十六进制)。请改正程序中的错误。 #include void main() { /**********FOUND**********/ n; printf("输入一个十进制整数:"); /**********FOUND**********/ scanf("%d",n); /**********FOUND**********/ printf("对应的八进制整数是%O\n",n); printf("对应的十六进制整数是%X\n",n); } 正确程序清单:(主体黑色,改错部分红色字体) #include void main() { /**********FOUND**********/ int n; printf("输入一个十进制整数:"); /**********FOUND**********/ scanf("%d",&n); /**********FOUND**********/ printf("对应的八进制整数是%o\n",n); printf("对应的十六进制整数是%x\n",n); } 运行结果:(抓图)

大学一年级下学期C语言程序设计实验报告答案完整版

《C语言程序设计》实验教学大纲 学时课程总:64学分:4 实验学时:24 实验个数:9 实验学分: 1.5 课程性质:必做适用专业:计算机科学技术、网络工程、软件工程、电子商务、教育技术 教材及参考书:《C语言程序设计与实践实验指导》,谢满得邵俊编著,机械工业出版社,2014年1月 大纲执笔人:廖雪花大纲审定人: 一、实验课的性质与任务 C语言程序设计实验是面向计算机相关专业学生开设的《C语言程序设计》实验课,是配合《C语言程序设计》课程而开设的实践性教育环节。本课程的主要任务是让学生充分掌握C语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。 二、实验课程目的与要求 1.实验目的 通过实验课程的学习实践,加深学生对所学的基本概念、基础理论和知识的理解,熟悉使用Visual C++ 6.0集成环境进行C语言的编写、编译与调试。同时,通过项目开发全过程的全方位指导,从需求分析、算法设计到程序编写和过程调试,以项目实训的形式引导和帮助学生解决实际问题,提高学生解决具体问题的能力,以及培养学生用多函数、多文件组织程序的思维习惯,为今后的后继课程学习和实际工作打下良好基础。 2.实验要求 (1)掌握C语言程序的基本格式,了解C程序的开发过程和C语言中的一些常用概念。 (2)掌握常量和五种基本数据类型变量的使用。 (3)掌握C表达式和运算符的正确使用,熟练掌握数据输入、输出函数。 (4)掌握条件转移语句if-else和选择分支语句switch;掌握三种程序跳转的方法,即break语句、continue语句、return 语句。 (5)掌握循环语句(for语句;do-while语句;while语句)的正确使用,认真体会应该如何组织循环。 (6)掌握数组的定义、赋值,一维数组与二维数组的使用。 (7)掌握函数的定义、函数的调用以及函数的类型说明。 (8)掌握局部变量、全局变量的定义和使用。 (9)掌握指针的基本概念以及数组与指针、指向指针的指针的基本用法。 (10)掌握结构体变量的定义,引用结构体中成员的方法,应用结构数组解决实际问题;共用体的概念,引用共用体中成员的方法。 (11)掌握链表的类型定义及其基本操作。 (12)掌握文件的打开、读写及关闭,并能运用文件提高编程的效率。 (13)理解项目式程序开发的过程。 三、实验项目及内容提要

C语言程序设计实验报告(一)

C语言程序设计实验报告 专业:班级:日期:成绩: 实验组别:第次实验:指导教师: 学生姓名:学号:同组人姓名: 实验名称:指针实验 一、实验目的 (1)熟练掌握指针的说明、赋值、使用。 (2)掌握用指针引用数组的元素,熟悉指向数组的指针的使用。 (3)熟练掌握字符数组与字符串的使用,掌握指针数组及字符指针数组的用法。 (4)掌握带有参数的main函数的用法。 二、实验内容及要求 1.源程序改错 下面的源程序中是否存在错误?如果存在,原因是什么?如果存在错误要求在计算机上对这个源程序进行调试修改,是之能够正确执行。 源程序: #include int main(void) { float * p; scanf("%f",p); printf("%f\n",*p); return 0; } 2.源程序修改替换 (1)下面源程序的功能是,通过函数指针和菜单选择来调用字符串拷贝函数或字符串连接函数。请在程序中的下划线处填写合适的表达式、语句或代码片段来完善该程序。 源程序: #include #include int main(void) { ____________________________ char a[80],b[80],c[160],*result=c; int choice,i;

do { printf("\t\t1 copy string.\n"); printf("\t\t2 connect string.\n"); printf("\t\t3 exit.\n"); printf("\t\tinput a number(1-3)please! \n"); scanf("%d",&choice); } while(choice<1||choice>5); switch (choice) { case 1: p=strcpy; break; case 2: p=strcat; break; case 3: goto down; } getchar(); printf("input the first string please! \n"); i=0; _______________________ printf("input the second string please!\n"); i=0; _______________________ result=____(a,b); printf("the result is %s\n",result); down: ; return 0; } (2)请上机运行第(1)题程序使之能按下面要求输出结果(注:(输入)表示该行数据是键盘数据): 1.copy string。 2.Connect string。 3.Exit。 Input a number(1-3)please! 2(输入) Input the first string please! The more you learn,(输入) Input the second string please! The more you get.(输入)

C语言程序设计实验

实验报告 课程C语言程序设计实验项目简单程序设计成绩 专业班级学号批阅日期 姓名实验日期指导教师 一【实验目的】 1.了解使用VC++6.0或CodeBlocks的开发环境,掌握在编译器上如何编辑、编译、连接 和运行一个C程序; 2.通过运行简单的C程序,初步了解C源程序的特点; 3.学习变量常量的使用; 4.掌握顺序结构程序设计方法; 二【实验内容】 第一部分:编译环境熟悉及常量变量的使用(2学时) 【实验1—基础题】 要求:完成实验指导书P208页2.2.1第2章实验题:熟悉上机实验环境和不同类型变量的定义与赋值,并把实验结果(包括编写的程序和运行结果)截图粘贴到“实验结果”下方(其他试验项目要求相同,不再重复说明) 目的:熟悉VC++6.0编译环境,了解变量类型和赋值方法 实验结果:

【实验2—验证题】 要求:完成实验指导书P208页2.2.2第3章实验题:编写一个程序从键盘输入球体的半径r,计算球体的体积和表面积,并把实验结果截图到相应位置 目的:熟悉简单的算术运算 实验结果: 第二部分:顺序结构程序设计(2学时) 【实验—3】数学函数及运算表达式的使用 编写程序求函数的值,要求输入一个x,程序输出y的值。 程序分析: (1)声明两个实型变量x、y

(2)用scanf函数从键盘输入一个数给x (3)带入表达式求出y的值并用printf函数输出 注意事项: (1)头文件还应包含数学头文件:#include,绝对值符号用函数fabs实现,7e x 应表达为7*exp(x),度数67应写弧度转换时应注意整除的概念,sin(67.0/180*3.14159),数学公式具体参照实验指导书附录 实验结果: 【实验—4】顺序结构程序设计应用 美国人习惯使用英制计量单位,他们用几尺几寸(英尺英寸)来报自己的身高。如果遇到?个美国人告诉你他的身高是5英尺7英寸,他的身高应该是多少米呢? 编程实现一个英尺转换器,输入英尺英寸,输出对应米数。 提示:换算关系如下: 1英尺=12英寸=30.48厘米 实验结果: 【实验5—延伸训练】算数运算符的使用 要求:编写一个程序,其功能是:将两个两位数的正整数a、b合并成一个整数放在c中。合并的方式是:将a中的十位和个位数一次放在c数的千位和十位上,b数的十位和个位数依次放在c数的百位和个位上。例如:a=45,b=12时,执行程序后,c=4152. 实验结果:

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