C语言程序设计实验报告

更新时间:2024-05-15 02:10:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

学 生 实 验 报 告 册

课程名称:

学生学号:

所属院部:

(理工类)

C语言程序设计 专业班级:

学生姓名:

指导教师:

20 15 ——20 16 学年

金陵科技学院教务处制第 一 学期

实验报告书写要求

实验报告上交电子稿,标题采用四号黑体,正文采用小四号宋体,单倍行距。

实验报告书写说明

实验报告中实验目的和要求、实验仪器和设备、实验内容与过程、实验结果与分析这四项内容为必需项。教师可根据学科特点和实验具体要求增加项目。

填写注意事项

(1)细致观察,及时、准确、如实记录。 (2)准确说明,层次清晰。

(3)尽量采用专用术语来说明事物。

(4)外文、符号、公式要准确,应使用统一规定的名词和符号。 (5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。

实验报告批改说明

实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用五级记分制或百分制,按《金陵科技学院课堂教学实施细则》中作业批阅成绩评定要求执行

实验项目名称: 初级程序设计 实验学时: 6 同组学生姓名: 实验地点: 实验日期: 实验成绩:

批改教师: 批改时间:

实验1 初级程序设计

一、实验目的和要求

(1)熟悉Visual C++集成环境,进行编辑、保存、编译、连接及运行,并能进行简单程序调试;

(2)掌握C语言中各种运算符的使用; (3)掌握C语言中各种数据类型的区别与应用;

(4)熟练掌握C语言中变量的定义、赋值和使用,表达式语句、输入/输出语句的使用; (5)掌握C语言中输入/输出函数的使用;

(6)掌握C语言中控制语句的使用,含if-else、for、while、do-while语句的使用。

二、实验仪器和设备

奔腾以上计算机,装有windows XP以上版本操作系统和Visual C++ 6.0软件。

三、实验内容与过程

1、程序调试

(1)#include main()

{ int s,t,p,sum;

scanf(“%d%d%d”,&s,&t,&p); sum=s+t+p;

printf(“sum=%d\\n”,sum); } (2)

#include main() { char c; c=getchar();

if((c>=’a’)&&(c<=’z’)) c=c-32; printf(“Char is %c”,c); } (3)

#include main()

{int x=1,y=1,z=1; y=y+z; x=x+y;

printf(“%d ”,x

printf(“%d ”,x

#include main() { char s[50];

printf(“Please input a string:”); gets(s); /*scanf(“%s”,s);*/ printf(“\\nYou input string is: %s”,s); }

(5)#include main() { int k=3;

if(k=3) printf(“***”); else printf(“###”); }

(6)#include main() {int k=0; do

{ printf(“k=%d\\n”,k); }while(k++>0); }

2、问题:完成以下三个程序,分别以文件名A01.c、A02.c和A03.c保存:

(1)定义两个整型变量x,y,要求利用scanf()函数从键盘对x,y赋值,然后利用printf()输出两者之和。

(2)定义两个变量:整型x,实型y,要求利用scanf()函数从键盘对x,y赋值,然后利用printf()输出两者之积。

(3)定义两字符型变量ch1、ch2,分别用getchar()和putchar()函数进行输入输出。

要求:

(1)从键盘输入的时候,注意用多种分隔符的方法; (2)输出时,格式控制中要包含一些提示字符。

金陵科技学院实验报告

}

void fun(int tt[M][N],int pp[N]) { }

int i ,j; for(j=0;j

pp[j]=tt[0][j]; for(i=1;i

if(tt[i][j]

pp[j]=tt[i][j];

printf(\原始数据为:\\n\ for(i=0;i

for(j=0;j

printf(\

printf(\

}

printf(\

fun(t,p);

printf(\结果为:\\n\ for(k=0;k

printf(\

printf(\

19

金陵科技学院实验报告

心得体会:

20

金陵科技学院实验报告

实验项目名称: 高级程序设计 实验学时: 6 同组学生姓名: 实验地点: 实验日期: 实验成绩: 批改教师: 批改时间:

21

金陵科技学院实验报告

实验3 高级程序设计

一、实验目的和要求

(1)理解C语言中指针的本质,区分指针与指针变量,掌握有关指针的应用; (2)熟练掌握字符串常量和字符串的存储及字符串处理函数的使用; (3)掌握字符指针的定义、使用等; (4)掌握向函数传递字符串的方法;

二、实验仪器和设备

奔腾以上计算机,装有windows XP以上版本操作系统和Visual C++ 6.0软件。

三、实验内容与过程

1、程序调试 (1) main()

{ int a=10,b=20,x,*pa,*pb; pa=&a;pb=&b;

printf(“%d,%d,%d,%d”,a,b,*pa,*pb); x=*pa;*pa=*pb;*pb=x;

printf(“%d,%d,%d,%d”,a,b,*pa,*pb); } (2) main()

{ int a=10,b=20,*p,*pa=&a,*pb=&b; printf(“%d,%d,%d,%d”,a,b,*pa,*pb);

p=pa;pa=pb;pb=p;

printf(“%d,%d,%d,%d”,a,b,*pa,*pb); }

(3) int *swap(int *a,int *b)

{ int *p; p=a; a=b; b=p; return(a); } main()

{int x=3,y=4,z=5; swap(swap(&x,&y),&z); printf(“%d,%d,%d”,x,y,z); }

思考:上面程序中函数swap()预将两个数的值相互交换,但结果为什么没有交换? 2、程序改错

22

金陵科技学院实验报告

要求:1、改错时,只允许修改现有语句中的一部分内容,不允许添加和删除语句。 2、提示行下一行为错误行。

(1)功能:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换,输出数组元素。

#include

void input(int *arr,int n) {

int *p,i; p=arr;

printf(\ for(i=0;i

/**********ERROR**********/ scanf(\}

void max_min(int *arr,int n) {

int *min,*max,*p,t; min=max=arr;

for(p=arr+1;p

/**********ERROR**********/ if(*p<*max) max=p;

else if(*p<*min) min=p; t=*arr;*arr=*min;*min=t; /**********ERROR**********/ if(max=arr) max=min; t=*(arr+n-1);

*(arr+n-1)=*max; *max=t; }

void output(int *arr,int n) {

int *p,i; p=arr;

printf(\ /**********ERROR**********/ while(i=0;i

main() {

int a[10]; input(a,10);

23

金陵科技学院实验报告

max_min(a,10); output(a,10); }

(2)功能:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。 例如:当s所指的字符串的内容为\时,t所指数组中的内容为\。 #include #include #include

/**********FOUND**********/ void fun (char s, char t) {

int i, d;

/**********FOUND**********/ d = len(s);

/**********FOUND**********/ for (i = 1; i

t[i] = s[d - 1 - i ]; for (i = 0; i

/**********FOUND**********/ t[2*d] = '/0'; }

main() {

char s[100], t[100];

printf(\ scanf(\ fun(s, t);

printf(\}

3、程序设计

说明,所有题目均需添加main(),在main()中调用子函数并设计完整的输入输出才可调试通过。

(1) 功能:请编写一个函数 int fun(int *s, int t, int *k),用来求出数组的最大元素在数组中的下标, 用k返回。

例如: 输入如下整数:876 675 896 101 301 401 980 431 451 777 则输出结果为: 6, 980

(2) 功能:编写函数void len_cat(char c1[],char c2[])将第二个串连接到第一个串之后,不允许使用strcat函数

(3) 功能:编写函数long fun ( char *p),将一个数字字符串转换为一个整数(不得调用C语言提供的将字符串转换为整数的函数)。

例如:若输入字符串\,则函数把它转换为整数值 -1234。

24

金陵科技学院实验报告

(4) 功能:编写函数int fun(char *ptr)过滤串,即只保留串中的字母字符,并统计新生成串中包含的字母个数作为函数的返回值。

(5)功能:编写函数void fun(char s[])将一个由四个数字组成的字符串转换为每两个数字间有一个空格的形式输出。

例如:输入“4567”,应输出“4□5□6□7”(□表示空格)。

(6) 功能:编写函数void fun(char s[],char c)从字符串s中删除指定的字符c。 说明:该字符可能多次和连续出现,算法应全面考虑。

4、讨论、思考题

(1)功能:请编写函数void fun(char (*s)[N], char *b),将M行N列的二维数组中的字符数据按列的顺序依次放到一个字符串中。

例如:二维数组中的数据为: W W W W S S S S H H H H

则字符串中的内容应是:WSHWSHWSHWSH。

(2)功能:编写函数void fun(char str[],int i,int n),从字符串str中删除第i个字符开始的连续n个字符(注意:str[0]代表字符串的第一个字符)。

(3)功能:编写函数void fun(char *s,char t[]),将s所指字符串中除了下标为奇数、同时ASCII值也为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。

例如:若s所指字符串中的内容为:\,其中字符A的ASCII码值虽为奇数,但所在元素的下标为偶数,因此必需删除;而字符1的ASCII码值为奇数,所在数组中的下标也为奇数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是:\。

(4) 功能:请编写函数int fun( char *s),统计一行字符串中单词的个数作为函数值返回。规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。

程序清单及流程图:

1、程序调试

25

金陵科技学院实验报告

2、程序改错

(1)功能:为一维数组输入10个整数;将其中最小的数与第一个数对换,将最大的数与最后一个数对换,输出数组元素。 #include

void input(int *arr,int n) {

int *p,i; p=arr;

printf(\ for(i=0;i

/**********ERROR**********/ scanf(\}

void max_min(int *arr,int n) {

int *min,*max,*p,t; min=max=arr;

for(p=arr+1;p

/**********ERROR**********/ if(*p>*max) max=p;

26

金陵科技学院实验报告

else if(*p<*min) min=p; t=*arr;*arr=*min;*min=t; /**********ERROR**********/ if(max==arr) max=min; t=*(arr+n-1); *(arr+n-1)=*max; *max=t; }

void output(int *arr,int n) {

int *p,i; p=arr;

printf(\ /**********ERROR**********/ for(i=0;i

printf(\ printf(\}

main() {

int a[10]; input(a,10); max_min(a,10); output(a,10); }

(2)功能:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。 例如:当s所指的字符串的内容为\时,t所指数组中的内容为\。 #include #include #include

/**********FOUND**********/

27

金陵科技学院实验报告

void fun (char *s, char *t) {

int i, d;

/**********FOUND**********/ d = strlen(s);

/**********FOUND**********/ for (i = 0; i

t[i] = s[d - 1 - i ]; for (i = 0; i

/**********FOUND**********/ t[2*d] = '\\0'; }

main() {

char s[100], t[100];

printf(\ scanf(\ fun(s, t);

printf(\}

四、实验结果与分析(程序运行结果及其分析)

3、程序设计

(1) 功能:请编写一个函数 int fun(int *s, int t, int *k),用来求出数组的最大元素在数组中的下标, 用k返回。

例如: 输入如下整数:876 675 896 101 301 401 980 431 451 777 则输出结果为: 6, 980

#include

int fun(int *s, int t, int *k) {

int i,max;

max=s[0];

for(i=0;i

if(max

max=s[i];

28

本文来源:https://www.bwwdw.com/article/q007.html

Top