C语言实验报告

时间:2024.5.14

通 知

各位老师:

本学期非计算机专业《C语言程序设计基础》课实验报告要求:

1. 统一用《武汉科技大学实验报告》本写。(和上学期05级用过的一样)

2. 本学期交三次实验报告。

① 循环结构程序设计。

② 函数。

③ 指针。

要求学生在完成以下实验报告,参考《C语言程序设计课程实践指导》中的要求认真完成。

实验1 循环结构程序设计

一、实验目的

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

2. 掌握在程序设计中用循环的方法实现各种算法(如穷举、迭代、递推等)。

3. 熟悉break语句和continue语句用法的不同之处。

【例1】 打印出所有“水仙花数”。所谓“水仙花数”是指一个三位数,其各位数字的立方和正好等于该数本身。例如:153是一个“水仙花数”,因为153=13+53+33。

解题思路:根据题目要求只要分别求出一个三位数的个位、十位、百位上的数字,然后判断是否满足(某一三位数a=a的百位的立方+a的十位的立方+a的个位的立方)这个公式,满足这个三位数就是“水仙花数”。

main( )

{ int a, b, c ,n ;

for(n=100 ; n<1000 ;n++)

{ a=n/100 ;

b=n/10-a*10 ;

c=n%10 ;

if(a*100+b*10+c==a*a*a+b*b*b+c*c*c)

printf(“%5d” , n) ;

}

}

运行结果:

水仙花数是:153 370 371 407

【例2】以下程序,输出下三角形状的乘法九九表。

#include <stdio.h>

main()

{ int i,j;

for (i=1;i<=9;i++) /* 打印表头*/

printf(" %4d",i);

printf("%c",'\n');

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

printf("%c",'_');

printf("%c",'\n');

for (i=1;i<=9;i++) /* 循环体执行一次,打印一行*/

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

printf(" %4d",i*j); /* 循环体执行一次,打印一个数据*/

printf("%c",'\n'); /* 每行尾换行*/

}

printf("%c",'\n');

}

输入并执行该程序,观察输出结果,试着修改程序打印上三角形状的乘法九九表。

二、实验内容

1.编写程序,分别用while循环、for循环和do_while循环计算12+22+...+n2的值。比较三个程序在循环控制上的特点。

2. 李先生岁数的平方与他的夫人的岁数之和是1053,而他的夫人的岁数的平方与他的岁数之和是873,请编写程序计算李先生及其夫人的岁数各是多少。

3. 输入一行字符,分别统计出其中的英文字母、空格、数字和其它字符的个数。

三.实验小结

实验2 函数

一实验目的

1掌握定义函数的方法;

2掌握函数实参与形参的对应关系以及“值传递”的方式;

3掌握函数的嵌套调用和递归调用的方法;

4掌握全局变量和局部变量,动态变量和静态变量的概念和使用方法;

二、实验内容

【例1】:有5个人,第5个人说他比第4个人大2岁,第4个人说他对第3个人大2岁,第3个人说他对第2个人大2岁,第2个人说他比第1个人大2岁,第1个人说他10岁。求第5个人多少岁。

分析: 10 (n=1)

age(n)=

age(n-1)+2 (n>1)

程序如下:

main()

{clrscr();

printf("%d",age(5));

}

age(int n)

{ int c;

if (n==1) c=10;

else c=age(n-1)+2;

return c;

}

结果:18

【例2】反向输出一个整数(非数值问题)

非数值问题的分析无法象数值问题那样能得出一个初值和递归函数式,但思路是相同的。 分析方法:

①简化问题:设要输出的正整数只有一位,则“反向输出”问题可简化为输出一位整数。 ②对大于10的正整数,逻辑上可分为两部分:个位上的数字和个位以前的全部数字。将个位以前的全部数字看成一个整体,则为了反向输出这个大于10的正整数,可按以下步骤: a、输出个位上的数字;

b、将个位除外的其他数字作为一个新的整数,重复a步骤的操作。

其中b问题只是对原问题在规模上进行了缩小——递归。

所以,可将反向输出一个正整数的算法归纳为:

if (n为一位整数)

输出n;

else

{ 输出n的个位数字;

对剩余数字组成的新整数重复“反向输出”操作;

}

程序如下:

#include <stdio.h>

void main()

{ void printn(int x);

int n;

printf("Input n=");

scanf("%d",&n);

if (n<0)

{n=-n;putchar('-');}

printn(n);

}

void printn(int x) /*反向输出整数x*/

{if (x>=0&&x<=9) /*若x为一位整数*/

printf("%d",x); /*则输出整数x*/

else /*否则*/

{printf("%d",x%10); /*输出x的个位数字*/

printn(x/10); /*将x中除个位数字外的全部数字形成新的x后,继续递归操作*/ }

}

执行:Input n=12345

结果:54321

执行:Input n=-12479

结果:-97421

【讨论】Input n=123456

-6167

为什么:123456710=1 1110 0010 0100 00002

int类型的数实际只能存入16位,即1110 0010 0100 00002

第1位为符号位,其余各位取反后再加1,得原码1001 1101 1100 0000 (真值-761610)

三、编程序并上机调试运行。

(1)写一个判别素数的函数,在主函数输人一个整数,输出是否素数的信息。

本程序应当准备以下测试数据:17、34、2、l、0。分别输人数据,运行程序并检查结果是否正确。

(2)用一个函数来实现将一行字符串中最长的单词输出。此行字符串从主函数传递给该函数。

(3)用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意的整数。

(4) 编写程序,计算下面公式并输出结果。

Cm

n?n! (n?m)!m!

要求:(1)编写一个函数计算n!

(2)编写主函数,由键盘输入n和m,调用(1)中的函数完成计算。

(3)输入n和m要给出提示,并检查n和m的合理性,不合理的输入应输出错误信息,并不再进行计算。

(4)运行程序并计算C、85C、72C1、8C7、7C08。

实验三 指针

实验目的 1、 了解指针参数的特殊性。

2、 掌握函数、指针、数组的用法。

实验要求 1 .复习指针的定义与使用方法。复习函数指针和指针数组的使用方法。 2 .编写程序,运行程序并记录运行结果。

实验内容

1 、想使指针变量 pt1 指向 a 和 b 中的大者, pt2 指向小者,以下程序能否实现此目的?

swap(int *p1,int *p2)

{

int *p;

p=p1;p1=p2;p2=p;

}

main()

{

int a,b;

scanf(“%d,%d”,&a,&b);

pt1=&a;pt2=&b;

if(a<b)swap(pt1.pt2);

printf(“%d,%d\n”,*pt1,*pt2);

}

上机调试此程序。如果不能实现题目要求,指出原因,并修改之。

? 2个学生各学 4 门课,计算总平均分,并输出第 n 个学生成绩

main()

{ void average(float *p,int n);

void search(float (*p)[4],int n);

float score[3][4]=

{{65,67,79,60},{80,87,90,81},

{90,99,100,98}};

average(*score,12);

search(score,2);

}

void average(float *p,int n)

{ float *p_end, sum=0,aver;

p_end=p+n-1;

for(;p<=p_end;p++)

sum=sum+(*p);

aver=sum/n;

printf("average=%5.2f\n",aver);

}

void search(float (*p)[4], int n)

{ int i;

printf(" No.%d :\n",n);

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

printf("%5.2f ",*(*(p+n)+i));

}

写一个函数,从传入的 num 个字符串中找出最长的一个字符串,并通过形参指针 max 传回该串地址。(注意:用 **** 作为结束输入的标志。)

#include "stdio.h"

#include "string.h"

#include "conio.h"

/* 函数 strlen() 用于求出字符串的长度,这个题中主要是 *max=p; 不能换成 max=&p ;如果用 maz=&p; 则只改变了 max 的指向,它不能传回给实参。因此我们要改变 max 指 向地址中的内容,这才能使得实参 ps 有正确的值。 */

fun(char (*a)[81], int num,char **max)

{ char *p=a[0];int i;

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

if(strlen(a[i])>strlen(p))

p=a[i];

*max=p;

}

main()

{ char ss[10][81],*ps;

int n,i=0;

clrscr();

printf("enter string:\n"); gets(ss[i]);

puts(ss[i]);

while(!strcmp(ss[i],"****")==0) {

i++;

gets(ss[i]);

puts(ss[i]);

}

n=i;

fun(ss,n,&ps);

printf("\nmax=%s\n",ps); }


第二篇:C语言实验报告2


实 验 报 告

学院: 专业: 年级: 姓名: 学号: 实验室号: 计算机号: 实验日期: 年 月 日 指导教师签字: 成绩: 报告退发 (订正 、 重做)

实验二:数据类型、运算符和表达式

一、实验目的

1. 掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法。

2. 掌握不同的类型数据之间赋值的规律。

3. 学会使用C的有关算术运算符,以及包含这些运算符的表达式。

二、实验内容和步骤 P238—P241 完成(1)---(5)

(描述实验的具体操作步骤和方法)

(1).输入并运行下面的程序:

三、实验调试与结果分析

(描述实验的调试过程,实验中发生的现象、中间结果、最终得到的结果,并进行分析说明,分析可能的误差或错误原因等。)

四、总结

(说明实验过程中遇到的问题及解决办法;新发现或个人的收获;未解决/需进一步研讨的问题或建议新实验方法等。)

更多相关推荐:
c语言实验报告

四川师范大学计算机科学学院C语言程序设计实验手册20xx年2月年级20xx级专业电子商务班级04班姓名罗桂清学号20xx110438指导教师廖雪花1C语言程序设计实验课程简介课程名称C语言程序设计实验课程性质专...

c语言实验报告

课程设计报告学院课程名称专业班级学生姓名学号指导教师完成时间年月目录1菜单选择程序课程设计2学生信息管理系统课程设计题目1菜单选择程序课程设计一课程设计内容与要求1主菜单编写程序能够显示以下的主菜单主菜单1字母...

C语言实验报告书写格式及模板

大学学院实验报告专业名称实验室实验课程C实验名称姓名学号同组人员实验日期语言程序设计程序设计12345678

c语言实验报告模板完成版

高级语言程序设计学生实验报告专业计算机科学与技术学号姓名1实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2了解在该系统上如何编辑编译连接和运行一个C程序3通过运...

C语言实验报告(八)

华北水院高级语言程序设计C语言实验报告20xx20xx学年第二学期20xx级专业班级学号一实验题目文件二实验目的略三实验内容1程序验证用记事本编辑文本文件file1txt分析一下程序的功能及结果并验证inclu...

大学C语言实验报告答案

郑州大学09级C语言实验报告答案实验一1includeltstdiohgtvoidmainintabcscanfquotdddquotampaampbampcprintfquotsumdnquotabc2inc...

C语言实验报告样本

实验报告课程名称C语言程序设计实验项目顺序结构程序设计实验仪器计算机系别机电工程学院专业机械设计制造及其自动化班级学号机械110120xx010008学生姓名郭奎宇实验日期20xx年10月24日成绩指导教师一实...

C语言实验报告(五)

C语言实验报告五一实验目的1掌握使用C语言中数组的方法2掌握如何定义数组如何引用数组元素3掌握二维数组的元素在内存中的存放方式4掌握什么是字符串字符串结束符的作用5实现字符串的存储和操作包括字符串的输入和输出6...

《C语言》课内实验报告7

C语言实验报告一实验题目结构体的应用二实验目的1进一步掌握结构体变量数组的定义和使用方法掌握结构体与指针的应用2学习共用体的概念和使用3学习链表的概念和使用三实验内容1有6个学生每个学生的数据包括学号姓名性别4...

C语言贪吃蛇实验报告

C语言程序设计实训报告姓名专业班级指导教师二011年7月14日11112目录实训目的和要求1实训目的和任务1实训要求122122实训任务内容1游戏规则1流程设计23313233软件使用说明3编辑程序主要软件3编...

c语言三种基本控制结构实验报告

学生实验报告实验课名称C语言实验项目名称三种基本控制结构专业名称班学级号学生姓名教师姓名月日实验日期年月日实验室名称六实验中遇到的问题解决方法及体会在实验过程中写的很多程序显示错误的结果做起来不熟练体会到平时上...

C语言程序设计实验报告9

C语言程序设计实验报告九专业计算机科学与技术班级卓越工程师班日期20xx年12月23日实验组别第一组成绩第九次实验结构与联合实验指导教师李开学生姓名学号实验名称结构与联合实验一实验目的1熟悉和掌握结构的说明和引...

c语言实验报告(38篇)