C语言程序设计
附件1:实验报告模板
C语言程序设计
实验报告
教学班级:冶金136 学号: 01 姓名:张博
课程教师:胡春安 实验教师:胡春安
完成时间:20##-2016学年第1学期
实验时间:2机时
一、实验目的
1. 熟悉C程序编辑环境,掌握主要菜单项的操作和作用。
2. 熟悉编写一个C程序的上机过程(编辑、编译、链接和运行)。
二、实验意义
通过上机实验,加深对第一章所学基本知识:C语言的基本结构和简单C程序的理解。通过调试简单的C程序,让学生对C程序的编辑、编译、链接和运行有一个直观的体验和熟悉,激发学习的好奇心和兴趣,为后面的全面学习奠定非常必要的基础。
三、实验内容
1.验证实验
(1)掌握程序的编辑、编译、连接、运行、调试过程,按以下步骤进行实验。
n 输入源程序
#include <stdio.h>
int main()
{
float a,b;
a=12
b=10;
c=a%b;
printf("a=%d,b=%d,c=%d",a,b,c);
return 0;
}
n 编译、链接及运行,并记录下列问题:
① 您在编辑、编译该程序时,在输出窗口显示了几条错误信息?请记录在实验报告中。
C:\Users\h\Desktop\c\ex1\main.c||In function 'main':|
C:\Users\h\Desktop\c\ex1\main.c|6|error: expected ';' before 'b'|
C:\Users\h\Desktop\c\ex1\main.c|7|error: 'c' undeclared (first use in this function)|
C:\Users\h\Desktop\c\ex1\main.c|7|note: each undeclared identifier is reported only once for each function it appears in|
C:\Users\h\Desktop\c\ex1\main.c|7|error: invalid operands to binary % (have 'float' and 'float')|
||=== Build failed: 3 error(s), 0 warning(s) (0 minute(s), 0 second(s)) ===|
错误1:变量b前少了分号“;”
错误2:变量c未定义;
错误3:%运算符运算对象必须是整型数据。
② 对出现的错误信息进行分析,找出错误原因并重新编辑、编译,直到程序正确运行为止。
n 正确的程序:
#include <stdio.h>
int main()
{
int a,b,c;
a=12;
b=10;
c=a%b;
printf("a=%d,b=%d,c=%d",a,b,c);
return 0;
}
③ 保存文件。
2. 请将560分钟转换成小时和分钟。
3. 从键盘上输入圆锥体的半径r和高度h ,计算其体积v=
4. 实现一个简单的程序,输出字符串“Welcome to Jxust!”。
实验时间:2机时
一、实验目的
1. 熟悉C程序编辑环境,掌握主要菜单项的操作和作用。
2. 熟悉编写一个C程序的上机过程(编辑、编译、链接和运行)。
二、实验意义
通过上机实验,加深对第一章所学基本知识:C语言的基本结构和简单C程序的理解。通过调试简单的C程序,让学生对C程序的编辑、编译、链接和运行有一个直观的体验和熟悉,激发学习的好奇心和兴趣,为后面的全面学习奠定非常必要的基础。
三、实验重点
1. 一个C程序的上机过程。
2. C语言编辑环境的基本操作。
四、实验难点
1. 调试C程序中的语法错误。
2. 保存C程序。
五、实验方式
提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。
六、实验内容
1.验证实验
(1)掌握程序的编辑、编译、连接、运行、调试过程,按以下步骤进行实验。
n 输入源程序
#include <stdio.h>
int main()
{
double a,c;
a=12
b=10;
c=a/b;
printf("a=%d,b=%d,c=%d",a,b,c);
return 0;
}
n 编译、链接及运行,并记录下列问题:
① 您在编辑、编译该程序时,在输出窗口显示了几条错误信息?请记录在实验报告中。
② 对出现的错误信息进行分析,找出错误原因并重新编辑、编译,直到程序正确运行为止。
③ 保存文件。
特别提醒:由于初学者对C程序设计不熟练,初次上机时对C程序的字符集不熟练,特别容易产生字符输入的错误(约90%的初学者出现过这种错误)。因此,在对程序进行编译时便会出现许多语法错误信息,此时你需要与样例程序清单仔细比对、仔细检查输入字符的拼写错误或其它类型错误,每修改一处,必须重新编译一次,如此反复操作直至错误不再出现。另外,由于编译的错误信息是英文信息,对英文阅读和理解可能有一定的困难,这点也是初学者实验时的难点,但请放心,同样的错误信息见的次数多了你也就能明白意思,希望读者不要害怕。正所谓磨刀不误砍柴功,多花点时间和心思做好语法错误信息理解,将提升你编程、调试程序的能力。
2. 请将560分钟转换成小时和分钟。
提示:
(1) 已知1小时=60分钟
(2) 560/60的结果为小时数;
(3) 560%60的余数为分钟数;
(4) 输出结果
请根据给出的语句,试着编写程序。
3. 从键盘上输入圆锥体的半径r和高度h ,计算其体积v=
提示:
(1)已知л、r、h的值
(2)将数学公式转换成C语言表达式
v=π*r*r*h/3
(3)求v
(4)输出结果。
请试着编程求体积v。
4. 实现一个简单的程序,输出字符串“Welcome to Jxust!”。
实验时间:2机时
一、实验目的
1. 掌握C语言数据类型,熟悉各种类型变量的定义和含义。
2. 掌握C语言标准输入、输出函数的使用方法
3. 进一步熟悉C程序的上机过程,积累调试经验。
二、实验意义
通过上机实验,巩固本章所学基本知识-C语言的数据类型、变量的定义和使用、结合数据类型更深入地理解标准输入函数scanf()和标准输出函数printf()的格式控制符的意义和使用。通过简单程序设计的练习加深对运算符优先级和结合方向的理解,并正确求解表达式的值,这些必要的基础知识是后面深入学习C语言所必须的知识储备。
三、实验重点
1. 数据类型、变量的定义和使用;
2. 运算符、表达式的求解
3. 简单顺序结构的C程序设计
四、实验难点
数据类型的转换、自增自减运算
五、实验方式
提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。
六、实验内容
1.程序阅读题
(1) 阅读并执行下列程序,分析结果。
#include <stdio.h>
int main()
{
float x=1,y;
y=++x*++x;
printf(“%f\n”,y);
return 0;
}
提示:此题在C_Free中运行结果为6,在codeblocks和VC中运行结果为9。为什么会产生这种情况,是因为编译器处理的方式不同,这种++x*++x运算情况建议读者尽可能的少用或不用。
如对程序作如下修改,则可避免歧义性的发生。
#include <stdio.h>
int main()
{
float x=1,y,m,n;
m=++x;
n=++x;
y=m*n;
printf("%f\n",y);
return 0;
}
(2) 阅读下列程序段并分析结果。
int m=0,n=0; char c=’d’;
scanf("%d%c%d",&m,&c,&n);
printf("%d,%c,%d\n",m,c,n);
若从键盘上输入:6D6<回车>,则输出结果是( )。
(3) 以下程序的运行结果是( )
#include<stdio.h>
int main()
{
int a,b,d=241;
a=d/100%9; b=(-1)&&(-1);
printf(“%d,%d”,a,b);
return 0;
}
(4) 以下程序的运行结果是( )。
#include<stdio.h>
int main()
{
int x=1,y,z;
x*=3+2; printf(“%d\t”,x);
x*=y=z=5; printf(“%d\t”,x);
x=y==z; printf(“%d\n”,x);
return 0 ;
}
(5) 分析以下程序的运行结果。
#include <stdio.h>
int main()
{
int n=2;
printf("%d,%d,%d\n",++n,n+=2,--n);
return 0;
}
实验时间:2机时
一、实验目的
1. 掌握C语言标准输入、输出函数的使用方法
2. 掌握格式控制字符的使用和理解
3. 进一步熟悉C程序的上机过程,积累调试经验。
二、实验意义
通过上机实验,巩固本章所学基本知识:标准输入函数scanf()和标准输出函数printf()的应用。此部分实验为顺序结构的程序,通过上机验证以更好地理解格式控制字符的语义,正确掌握格式控制字符和普通字符的输出,掌握顺序结构的程序设计。
三、实验重点
1. 标准输入函数scanf()的使用
2. 标准输出函数printf()的使用
3. 简单顺序结构的C程序设计
四、实验难点
标准输入函数scanf()中的格式输入方式
五、实验方式
提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。
六、实验内容
1. 上机练习下列各程序段,并完成变量的定义,运行时观察输入数据时的格式要求。
(1)
int main()
{
; &&定义变量
scanf("%c%c%c",&a,&b,&c);
printf("%c,%c,%c\n",a,b,c);
return 0;
}
(2)
int main()
{
; &&定义变量
scanf("%c,%c,%c",&a,&b,&c);
printf("a=%c,b=%c,c=%c\n",a,b,c);
return 0;
}
(3)
int main()
{
; &&定义变量
scanf("%d%d%d",&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);
return 0;
}
(4)
int main()
{
; &&定义变量
scanf("%d,%d,%d",&a,&b,&c);
printf("%d,%d,%d\n",a,b,c);
return 0;
}
(5)
int main()
{
; &&定义变量
scanf("%d%f%d",&a,&b,&c);
printf("a=%d,b=%f,c=%d\n",a,b,c);
return 0;
}
(6)
int main()
{
; &&定义变量
scanf("%d%c%lf",&a,&b,&c);
printf("a=%d,b=%c,c=%lf\n",a,b,c);
return 0;
}
2. 阅读程序
(1) 以下程序的输出结果是( ),结合格式控制符的语义对结果进行分析。
#include <stdio.h>
int main( )
{
printf("\n*s1=%15s*", "chinabeijing");
printf("\n*s2=%-5s*","chi");
rerurn 0;
}
(2) 阅读以下程序,当输入数据形式为: 25,13,10<CR>,正确的输出结果为( ),结合格式控制符的语义对结果进行分析。
#include <stdio.h>
int main( )
{
int x,y,z;
scanf("%d%d%d",&x,&y,&z);
printf("x+y+z=%d\n",x+y+z);
return 0;
}
(3) 以下程序的输出结果为( ),结合格式控制符的语义对结果进行分析。
int main( )
{int x=10; float pi=3.1416;
printf("(1)%d\n",x); printf("(2)%6d\n",x);
printf("(3)%f\n",56.1);printf("(4)%5.14f\n",pi);
printf("(5)%e\n",568.1);printf("(6)%14.e\n",pi);
printf("(7)%g\n",pi); printf("(8)%12g\n",pi);
return 0;
}
(4) 以下程序的输出结果为( )
int main( )
{short a; a=-4; printf("\na:dec=%d,oct=%x,unsigned=%u\n",a,a,a,a);
return 0;
}
实验时间:2机时
一、实验目的
1. 掌握选择结构的语句格式和语义。
2. 掌握if语句和switch语句的使用。
3. 掌握多分支if语句嵌套中的else与if的配对原则。
4. 了解条件表达式的格式和语义。
5. 掌握综合应用if语句和switch语句的编程能力。
二、实验意义
通过上机实验,巩固对选择结构知识的掌握。掌握结构化程序设计的第二种基本结构--选择结构,它是程序设计必备的基本知识,只有掌握好这些基本结构,才能进一步进行程序设计,进行更复杂的算法设计。
三、实验重点
1. 关系运算符和逻辑运算符以及条件运算符的使用
2. if语句的使用
3. switch语句的使用
4. 多重条件下的if语句嵌套使用
四、实验难点
1. 复杂条件的表达
2. 复合语句的使用
3. if语句嵌套
五、实验方式
提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。
六、实验内容
1. 程序阅读题
(1) 请阅读以下程序,该程序运行结果是( )。
#include <stdio.h>
int main()
{
int a=5,b=0,c=0;
if (a+b+c) printf(“***\n”); else printf(“$$$\n”);
return 0;
}
(2) 当a=5,b=8,c=11,d=9时,执行完下面一段程序后x的值是( )
if (a<b) if(c<d) x=1;else if(a<c) if(b<d)x=2;else x=3;else x=6;else x=7;
(3) 执行以下程序段后的输出结果是:( )
int w=3,z=7,x=10;
printf(“%d\n”,x>10 ? x+100:x-10);printf(“%d\n”,w++||z++);
printf(“%d\n”,!w>z);printf(“%d\n”,w&&z);
(4) 请阅读以下程序,该程序运行结果是( )。
#include <stdio.h>
int main()
{
int k=2;
switch(k)
{
case 1:printf("%d",k++);
case 2:printf("%d",k++);
case 3:printf("%d",k++);
case 4:printf("%d",k++);break;
default:printf("Full!\n");
}
printf("\nk=%d\n",k);
return 0;
}
2. 编程题
(1) 从键盘上任意输入三个整数,按照由大到小的顺序输出。
(2) 编写程序,输入一个字符存入变量ch中,根据该字符的ASCII码值判断该字符是字母、数字或其他字符(other)。
(3) 有一函数:
编写一个程序,用scanf函数输入x的值,输出y值。注意表达式的书写方法。
提示:此题要用到数学函数exp()和log10(),因此应包含相应的头文件。
(4) 编写一个程序,用户输入日期,计算该日期是这一年的第几天。
(5) 某书店有以下规定:购书在20000元以上者,打7.5折;购书在10000元以上者打8折;购书在2000元以上者打8.5折;购书在100元以上者打9折。假设某一种书的定价为24元,编写一个程序,计算一位顾客只购买这一种书的应付金额。
实验时间:2机时
一、实验目的
1. 掌握while、do-while和for三种循环语句的格式;
2. 掌握while、do-while和for三种循环语句的执行流程;
3. 掌握循环嵌套的执行流程和应用;
4. 掌握跳转语句break和continue语句的应用;
二、实验意义
通过上机实验,巩固所学的循环结构知识。循环结构是结构化程序设计的基本结构之一,它与顺序结构、选择结构共同作为各种复杂程序的基本构造单元。掌握好循环结构与选择结构的配合使用,掌握好循环语句的嵌套,才能进行更复杂的程序设计,也才能解决更多的复杂问题。这章的内容在整个程序设计过程中具有重要的意义,因此本部分的实验,对于提高学生的程序设计能力具有非常重要的作用,应给予高度的重视和实战练习。
三、实验重点
1. 三种循环语句的使用;
2. 简单循环问题的分析和程序设计;
3. 正确的构造循环条件和程序的流程;
4. 循环程序的调试方法和技巧;
四、实验难点
1. 复杂问题的循环语句设计
2. 循环嵌套的和break和continue循环设计
3. 循环程序的调试:死循环的验证
五、实验方式
提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。
六、实验内容
1.程序阅读
(1) 若运行以下程序时,从键盘输入2473<CR>,则下面程序的运行结果是()
#include<stdio.h>
int main( )
{
int c;
while((c=getchar( ))!=’\n’)
switch(c-‘2’)
{case 0: case 1: putchar(c+4); case 2: putchar(c+4); break; case 3: putchar(c+3);
case 4:putchar(c+2);break;}
printf(“\n”);return 0;}
(2) 请阅读以下程序,该程序运行结果是( )。
#include <stdio.h>
int main()
{
int x=-1,n=0;
do
{
x=x*x;
n++;
}while (!x);
printf("n=%d\n",n);
return 0;
}
(3) 请阅读以下程序,该程序运行结果是( )。
#include <stdio.h>
int main()
{
int y=10;
for(; y>0;y--)
if(y%3==0)
{
printf("%d",--y);
continue;
}
return 0;
}
(4) 请阅读以下程序,该程序运行结果是( )。
#include <stdio.h>
int main()
{
int x;
for(x=1;x<100;x++)
if (++x%2==0)
if (++x%3==0)
if (++x%5==0)
printf("%d\n",x);
return 0;
}
(5) 请阅读以下程序,该程序运行结果是( )。
#include <stdio.h>
int main()
{
int x,i;
for(i=1;i<100;i++)
{
x=i;
if (++x%2==0)
if (++x%3==0)
if (++x%7==0)
printf("%d ",x);
}
return 0;
}
(6) 执行下面程序段后,a的值为( )。
int a,b;
for(b=1,a=1;b<=20;b++)
{
if(a>=10) break;
if (a%2==1)
{ a+=5; continue;}
a-=3;
}
2. 编程题
(1) 键盘输入一行字符,以回车键作为结束标志,分别统计出大写字母、小写字母、空格、数字和其它字符的个数。
(2) 分别用while、do-while和for语句计算(即求1!+2!+3!+…+20!),并试着简化程序。
(3) 有一分数序列:
求出这个数列的前20项之和。
(4) 求的值,其中a是一个数字,如2+22+222+2222+22222(此时a=2,n=5),a和n均由键盘输入。
(5) 输入x,计算级数:
要求输出精度为10-8。
(6) 用循环语句编写程序,输出如下图案:
* * * * * *
* * * * *
* * * *
* * *
* *
*
实验时间:4机时
一、实验目的
1. 掌握一维数组的定义、引用。
2. 掌握一维数组元素初始化的特点、编程注意事项。
3. 掌握一维数组排序的经典算法。
4. 掌握二维数组的定义、元素引用、编程方法。
5. 掌握字符数组的定义、元素引用、编程方法。
6. 掌握字符串常用程序设计方法。
二、实验意义
在解决实际问题或实现某些算法时,数组是经常使用的构造数据类型,掌握数组的定义,元素引用特征和数组的编程特色,可加强学生解决实际问题的能力,同时可接触到更多的经典算法,这些算法很多都是通过数组类型存储数据并实现的,有了这些基础后,学生可以在今后的编程中应用这些知识编写出解决复杂问题的程序。数组的实验能让学生进一步的提高程序设计编程和调试的能力,对于数组元素引用及循环控制的综合使用,也可以在实验中得以加深理解和巩固知识。
三、实验重点
1. 一维数组的定义、元素的引用。
2. 一维数组编程的循环控制特色。
3. 排序算法的实现。
4.二维数组的定义、元素引用、编程方法。
5. 字符数组的定义、元素引用、编程方法。
6. 掌握二维数组与循环嵌套的综合应用
四、实验难点
1. 一维数组编程的循环控制特色,程序调试时的数组越界问题
2. 排序算法的理解和应用
3. 二维数组与循环嵌套的综合应用
4. 字符串操作的循环控制方法。
五、实验方式
提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。
六、实验内容 (4机时)
1. 程序阅读题
(1) 运行下面的程序,根据运行结果,找出问题。
#include <stdio.h>
int main( )
{
int i,x[5]={1,2,3,4,5};
for (i=0;i<=5;i++)
printf("%4d",x[i]);
return 0;
}
(2) 下列程序的运行结果是( )。
#include <stdio.h>
int main()
{
int i=1,n=3,j,k=3;
int a[5]={1,4,8};
while (i<=n && k>a[i])
i++;
for (j=n-1;j>=i;j--)
a[j+1]=a[j];
a[i]=k;
for (i=0;i<=n;i++)
printf("%3d",a[i]);
printf("\n");
return 0;
}
(3) 下列程序的运行结果是( )。
#include <stdio.h>
int main()
{
int s[4][4],i,j,k;
for (i=0;i<4;i++)
for (j=0;j<4;j++)
s[i][j]=i-j;
for (i=0;i<3;i++)
for (j=i+1;j<4;j++)
{
k=s[i][j];
s[i][j]=s[j][i];
s[j][i]=k;
}
for (i=0;i<4;i++)
{
printf("\n");
for (j=0;j<4;j++)
printf("%4d",s[i][j]);
}
return 0;
}
(4) 下列程序的运行结果是( )。
#include<stdio.h>
int main()
{int i=5;char c[6]="abcd";
do {c[i]=c[i-1];} while(--i>0);
puts(c);
return 0;
}
2. 编程题
(1) 某歌手大赛,共有10个评委给歌手打分,分数采用百分制,去掉一个最高分,去掉一个最低分,然后取平均分,得到歌手的成绩。10个分数由键盘输入,编写程序计算某歌手的成绩。
(2) 歌手大赛,共有N个歌手参赛,每个歌手得分已揭晓(百分制),现要知道排在第K位的歌手分数,请编程实现。
(3) 一个一维数组,含10个元素,从键盘上输入10个数,编写程序将数组元素逆序重新存放。即第一个元素和最后一个元素交换位置,第二个元素和倒数第二个元素交换位置,……。
(4)给你N(N<=1000)个不同的数,每个数都小于10^6,求第k小的数与及第k大的数(k<=N)。
输入:第一行给出N和k的值,第二行就是N个数据。
输出:第k小的数与及第k大的数。
例如:
输入:6 3
10 2 30 21 15 8
输出:第3小的数10 ,第3大的数是15。
(5) 有一个4×5的矩阵,编写程序找出值最大的元素并输出其值以及所在的行号和列号。
(6) 输入一个M行M列的二维数组,分别计算两条对角线上的元素之和。M由符号常量定义:#define M 5
(7) 编写函数判断输入的字符串是否是“回文”,(顺读和倒读都一样的字符串称“回文”,如:level)。
实验时间:2机时
一、实验目的
1. 掌握模块化编程方法中自定义函数和主调函数的模块关系。
2. 掌握定义无参函数和有参函数的定义及调用方法。
3. 掌握函数调用时如何处理函数的返回值。
二、实验意义
采用模块化程序设计的方法,是解决复杂问题的基础。将一个复杂的较大的问题,分解为一个个独立的简单模块。模块在C语言中是用函数来实现的,因此掌握好函数的定义、调用,及了解函数模块之间的连接关系对于开发大型项目具有非常重要的意义,函数的实验对于巩固和理解函数的知识是非常必要的。
三、实验重点
1. 无参函数的定义和调用
2. 有参无返回值函数的定义和调用
3. 对于有返回值函数调用时的处理方法
四、实验难点
1. 有参函数调用时,实参和形参的概念理解和对应关系。
2. 有返回值函数调用时返回值的处理
五、实验方式
提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。
六、实验内容
1. 程序阅读题
(1)以下程序的运行结果是( )
int main()
{
increment(); increment(); increment();
return 0;
}
increment()
{ static int x=0;x+=1; printf(“%d”,x); }
(2)以下程式序的运行结果是( )
int main()
{int i=2,x=5,j=7;fun(j,6);printf(“i=%d;j=%d;x=%d\n”,i,j,x);return 0;}
fun(int i,int j){int x=7; printf(“i=%d;j=%d;x=%d\n”,i,j,x);}
(3)以下程序的运行结果是( )
int i=0;
int main()
{
int i=5;
reset(i/2);
printf(“i=%d\n”,i);
reset(i=i/2);
printf(“i=%d\n”,i);
reset(i/2);
printf(“i=%dn\”,i);
workover(i);
printf(“i=%d\n”,i);
return 0;
}
workover(int i)
{i=(i%i)*((i**)/(2*i)+4);printf(“i=%d\n”,i);
return(i);}
reset(int i)
{i=i<=2?5:0; return(i);}
(4) 下面程序的运行结果是( )
int main()
{
int i=5;
printf(“%d\n”,sub(i));
return 0;
}
sub(int n)
{int a;if(n==1) return 1;a=n+sub(n-1);return(a);}
(5) 以下程序的运行结果是( )
int fac(int n){static int f=1;f=f*n;return(f);}
int main()
{
int i;for(i=1;i<=5;i++)
printf(“%d!=%d\n”,i,fac(i));
return 0;
}
2.编程题
(1) 编写函数,判断指定的字符是否是数字字符,如果是返回1,不是则返回0。提示:在主函数中输入字符,调用函数判断该字符是否是数字字符。
(2) 编写一个函数,计算整数m的n次幂,在主函数中输入m和n,并在主函数中输出计算结果。
(3) 设计函数,求一个字符串的长度。在主函数中输入字符串,并输出其长度。
(4) 编写函数判断输入的字符串是否是“回文”,(顺读和倒读都一样的字符串称“回文”,如:level)。
实验时间:2机时
一、实验目的
1. 掌握使用指针访问数组和字符串的方法。
2. 掌握一些常用字符串操作的算法。
3. 掌握使用字符指针作为函数参数的模块化程序设计方法。
二、实验意义
在解决实际问题或实现某些算法时,数组是经常使用的构造数据类型,掌握数组的定义,元素引用特征和数组的编程特色,可加强学生解决实际问题的能力。在数组的使用中,字符数组及相关字符串操作是经常使用的操作。增强字符串的编程练习,提高相关程序设计经验对于提高学生的程序设计和调试的能力具有很重要的作用。
三、实验重点
1. 使用指针访问数组
2. 常用字符串操作的算法
3. 字符指针作为函数参数的程序设计方法
四、实验难点
1. 使用指针访问字符串
2. 字符指针作为函数参数的函数编程
五、实验方式
提前编写程序,写好实验报告,上机实验时一边调试程序一边将实验报告上关于程序调试和运行结果的信息填写到实验报告上,实验完成时上交实验报告。
六、实验内容
1.程序阅读题。
(1) 下列程序的运行结果是( )。
#include <stdio.h>
int main()
{
int i;
int a[10],*p=a;
for(i=0;i<10;i++)
*p++=2*i;
for(i=0;i<10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
(2) 下列程序的运行结果是( )。
#include <stdio.h>
int main( )
{char a[10]={'1','2','3','4','5','6','7','8','9','\0'};
char *p;
int i=8;
p=a+i;
printf("%s\n",p-2);
return 0;
}
(3) 下列程序的运行结果是( )。
#include <stdio.h>
int main()
{
int i;
int a[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
printf("%d,%d\n",*p+2,*(p+2));
return 0;
}
(4) 下列程序的运行结果是( )。
sub(int x, int y, int *z)
{ *z=y-x;}
int main()
{int a,b,c;
sub(10,5,&a); sub(7,a,&b); sub(a,b,&c);
printf(“%4d,%4d,%4d\n”,a,b,c);
return 0;
}
(5) 下列程序的运行结果是( )。
int aa[3][3]={ {2},{4},{6} };
int main()
{ int i, *p=&aa[0][0];
for(i=0;i<2;i++)
{ if(i==0)
aa[i][i+1]= *p+1;
else
++p;
printf("%d", *p ); }
return 0;
}
(6) 下列程序的运行结果是( )。
#include <stdio.h>
int main()
{ int a[3][2]={1,2,3,4,5,6},(*p)[2];
p=a;
printf("%d,%d,%d,%d\n",*(p[2]+1),*(*(p+2)+1),(*(p+2))[1],p[2][1]);
return 0;
}
(7) 下列程序的运行结果是( )。
void prtv(int *x)
{ printf("%d\n", ++*x ); }
int main()
{ int a=25; prtv(&a);return 0; }
高级语言程序设计学生实验报告专业计算机科学与技术学号姓名1实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操…
暨南大学本科实验报告专用纸课程名称高级语言程序设计成绩评定实验项目名称结构体和共用体指导教师张晓刚实验项目编号8060151108…
高级语言程序设计学生实验报告专业学号姓名实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操作方法学会独立使用…
实验报告课程名称C语言程序设计实验项目顺序结构程序设计实验仪器计算机系别机电工程学院专业机械设计制造及其自动化班级学号机械1101…
滁州学院机械与电子工程学院实验报告课程姓名专业20xx机械本科学号实验一工作平台一目的和要求1熟悉语言程序的支持运行环境了解所用计…
数据库原理上机实验指导一实验目的和要求1实验目的力图通过本实践课程的学习使学生掌握数据库管理系统的基本概念操作方法和管理方法能够根…
Web技术实验指导书内容简介Web技术是计算机专业学生的一门专业课程着重讲述Web编程的技术方法对于学生从事Web系统的研发使用和…
前言行政案例分析课程的首要特点是强调理论联系实际的学习方法要求学生运用已学的行政学基本理论对当前行政管理领域的重特大事件公共政策规…