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输人数据,输出计算结果口输出时要有文字说明,取小数点后两位数字。
程序:三、实验步骤:①输人程序:#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); }②运行此程序并分析结果。
预计结果:a=61,b=62c1=a,c2=bd=``3.56,e=`-6.87f=````3157.890121,g=```````0.123456m=50000,n=-60000p=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、n的值都重新赋了相应的新值。
除m、n外都是整型、无符号整型或字符型,因此输出会按数据类型强制截取,因此得到的值会不尽相同,但可以从理论上做出推测,但由于编译系统的不同,真正得到的结果也可能不尽相同。
④改用scanf函数输人数据而不用赋值语句,scanf函数如下:scanf("%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u",,,1,2,,,,,,,%p,%q);输入的数据如下:分析运行结果。
(说明:lf和ld格式符分别用于输人double型和long型数据)⑤在④的基础上将printf语句改为:printf("a=%d,b=%d c1=%c,c2=%c d=%15.6f,e=%15.6f ",a,b,c1,c2,d,e);printf("f=%f,g=%f m=%ld,n=%ld p=%u,q=%u ",f,g,m,n,p,q);运行程序:⑥将p、q改用%o格式符输出。
⑦将scanf函数中的%1f和%ld改为%f和%d,运行程序并观察分析结果。
出现错误,提示为:浮点错误:超出范围。
程序异常中止。
(2)按习题4. 8要求编写程序题目为:设圆半径r=l. 5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输人数据,输出计算结果口输出时要有文字说明,取小数点后两位数字。
程序:#includevoid main{float h,r,s,sq,vq,vz;float pi=3.1415926;printf("Please input the circinal r, and the cylindrical h:");scanf("%f,%f",,);l=2*pi*r;sq=4*pi*r*r;vq=4.0/3.0*pi*r*r*r;vz=pi*r*r*h;printf("circinal girth is: l=%6.2f ",l);printf("circinal area is: s=%6.2f ",s);printf("sphere surface area is: sq=%6.2f ",sq);printf("sphere cubage is: vq=%6.2f ",vq);printf("cylindrical cubage is: vz=%6.2f ",vz);}(3)编程序,用getchar函数读人两个字符给c1 ,c2,然后分别用putchar函数和printf输出这两个字符。
上机运行程序,比较用printf 和putchar函数输出字符的特点。
程序如下:#includevoid main { char c1,c2; printf("Please input tow letters: "); c1=get); c2=get);printf("Putchar is: "); putc1); putc2); printf(" "); printf("Printf is: "); printf("%c %c ",c1,c2);}可见有putchar输出的结果是一个字符一个字符顺序输出的。
每个putchar函数只能输出一个字符,且只能输出字符,而printf可以输出多个数据,且为任意类四、实验心得(体会):通过本次C语言上机实验,我对顺序结构程序设计有了一定的了解。
通过几个例题,我对顺序结构中scanf和printf语句的基本实用情况有了一定的理解。
我相信这些都为后来的编程打下基础。
对C语言学习,我会更加努力。
篇二:C语言程序设计实验报告(一)实验目的(1)熟悉和掌握结构的说明和引用、结构的指针、结构数组,以及函数中使用结构的方法。
(2)掌握动态存储分配函数的用法,掌握自引用结构和单向链表的创建、遍历、结点的增删、查找等操作。
(3)了解字段结构和联合的用法。
(二)实验内容及要求1.表达式求值的程序验证设有说明:char u = "UVWXYZ"; char v = "xyz"; struct T{ int x; char c; char *t;}a = {{11, 'A', u}, {100, 'B', v}}, *p = a;请先自己计算表2.1中表达式的值,然后编写程序并运行来加以验证。
(各表达式相互无关)2.源程序修改、替换下面所给源程序的功能是:给定一批整数,以0作为结束标志且不作为结点,将其建成一个先进先出的链表。
先进先出链表的头指针始终指向最先创建的结点(链头),先建结点指向后建结点,后建结点始终是尾结点。
请完成以下工作:(1)源程序中存在什么样的错误(先观察执行结果)?对程序进行修改、调试。
使之能够正确完成指定任务。
(2)修改替换creat_list函数,将其建成一个后进先出的链表。
后进先出的链表的头指针始终指向最后创建的结点(链头),后建结点指向先建结点,先建结点始终是尾结点。
源程序#include#includestruct s_list{ int data;struct s_list *next; };void creat_list(struct s_list *headp, int *p); int main(void) {struct s_list *head = NULL, *p; int s = {1, 2, 3, 4, 5, 6, 7, 8, 0};creat_list(head, s); p = head; while(p) {printf("%d ", p -> data);p = p -> next; }printf(" "); return 0; }void creat_list(struct s_list *headp, int *p) {struct s_list *loc_head = NULL, *tail; if(p[0] == 0); else {loc_head = (struct s_list *)malloc(sizeof(struct s_list));loc_head -> data = *p++;tail = loc_head;while(*p){tail -> next = (struct s_list *)malloc(sizeof(struct s_list)); tail = tail -> next; tail -> data = *p++;}tail -> next = NULL; }headp = loc_head; }3.程序设计编写并上机调试运行能实现以下功能的程序或函数:(1)编写一个程序,实现以下功能:定义一个字段结构struct bits,它将一个8位无符号字节从最低位向最高位声明为8个字段,各字段依次为bit0, bit1, ……bit7,且bit0的优先级最高。
同时设计8个函数,第i个函数以biti(i = 0, 1,……7)为参数,并且在函数体内输出biti的值。
将8个函数的名字存入一个函数指针数组p_fun。
如果bit0为1,调用p_fun[0]指向的函数。