《高级语言程序设计》实验报告
班级: 学号: 姓名: 成绩:
实验日期: 年 月 日
实验题目: 实验七指针程序设计
实验目的:
实验内容:(包括算法说明:用文字或流程图说明;程序清单;运行结果:原始数据、相应的运行结果和必要的说明。)
原始数据、相应的运行结果和必要的说明。
原始数据、相应的运行结果和必要的说明。
(1)编写一个程序实现如下功能:利用指针作函数参数,设计一函数实现将n个元素进行排序(程序以文件名sy7_7.c存盘)。
#include<stdio.h>
void sort(int *p,int n)
{int i,j,t;
for(i=0;i<n-1;i++)
for(j=0;j<n-i-1;j++)
if(*(p+j)>*(p+j+1)) //由小到大排序
{ t=*(p+j); *(p+j)=*(p+j+1);*(p+j+1)=t;}
}
void main()
{int a[10],i;
printf("输入%d个正数:",10);
for(i=0;i<10;i++)
scanf("%d",&a[i]);
sort(a,10); //调用排序函数
printf("排序后:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
}
(2)编写一个程序实现如下功能:利用指针作函数参数,设计一函数对字母进行简单加密,把当前的字母变成后面第3个字母,如最后三个字母x、y、z变成字母a、b、c。再设计一函数把加密字符还原(程序以文件名sy7_8.c存盘)。
#include<stdio.h>
void jiami(char *ch)
{ char *p=ch;
while(*p!='\0')
{ if(*p>='a' && *p<='z'|| *p>='A'&& *p<='Z')
{*p=*p+3;
if(*p>'Z'&&*p<'a' ||*p>'z') *p=*p-26;}
++p;
}
}
void jiemi(char *ch)
{ char *p=ch;
while(*p!='\0')
{ if(*p>='a'&& *p<='z'||*p>='A'&& *p<='Z')
{ *p=*p-3;
if(*p<'A'||*p<'a'&&*p>'Z') *p=*p+26;}
++p;
}
}
void main()
{
char line[80];
printf("请输入一行字符:\n");
gets(line);
jiami(line);
puts(line);
jiemi(line);
puts(line);
}
(3)编写一个程序实现如下功能:输入一个字符串,内有数字和非数字字符,如:a123x456 17960?302tab5876 将其中连续的数字作为一个整数,依次存放到一数组a中。例如123放在a[0]中,456放在a[1]中……统计共有多少个整数,并输出这些数(程序以文件名sy7_9.c存盘)。
#include <stdio.h>
#include <string.h>
void main()
{
char ch[1000],*p=ch;
int a[50],*q=a,num=0,i;
gets(ch);
for( ; *p!='\0'; p++)
if(*p>='0' && *p<='9')
{
*q=(*p)-'0';
p++;
while(*p>='0' && *p<='9')
*q=(*q)*10+(*(p++)-'0');
num+=1;
q+=1;
}
for(i=0,q=a; i<num; i++,q++)
printf("%d ",*q);
printf("\n一共输入了%d个数字。\n",num);
}
分析与思考:(调试过程及调试中遇到的问题及解决办法;调试程序的心得与体会)
大学 学院实验报告
课程名称: C语言程序设计 实验内容:VC++集成开发环境 指导教师: 系部: 专业班级:
姓名: 学号: 成绩:
一、实验目的
1、掌握 VC++集成开发环境的安装与设置。
2、掌握VC++集成开发环境的使用方法。
3、运行简单的C程序,掌握简单语句的使用方法。
4、了解VC++的单步执行、跟踪、执行到光标处等调试方法。
二、预习作业
1、程序填空题:调试程序并写出输出结果(共4小题,每题5分,共20分 )
(1) 编译预处理命令填空:
( ) <stdio.h> // ( #include ) <stdio.h>
main( )
{
printf("GNU GCC \n");
}
(2) 编译预处理命令填空:
#include <stdio.h>
( ) N 4 // ( #define ) N 4
main( )
{ int a=2, b;
b = N * a ;
printf (“b = %d \n “, b );
}
(3) 主函数定义填空:
( #include ) <stdio.h>
( ) // main( )
{
printf("MinGW——Minimalist GNU for Windows \n");
}
(4) 输出函数填空:
#include <stdio.h>
main( )
{
( )("GNU/Linux \n"); // printf ("GNU/Linux \n");
}
2、改错题:(共4小题,每题5分,共20分 )
(1) 修改程序中输入/输出的错误
#include <stdio.h>
main( )
{ int a, b, c;
/**********Found*************/
scanf(“%d,%d”,a,b); // scanf(“%d,%d”,&a, &b); c = a + b ;
printf (“c = %d \n , &c ); // printf (“c = %d \n “, c ); }
(2) 修改程序中标识符的错误
#include <stdio.h>
/**********Found*************/
mian[ ] // main( )
{ int a=8, b=3, c;
c = a / b ;
print (“c = %d \n , c ); // printf (“c = %d \n “, c ); }
(3) 修改程序中错误的分隔符
#include <stdio.h>
main()
/**********Found*************/
{ int a=8; b=3; c; // int a=8, b=3, c; c = a - b : b = 4; // c = a / b ; b = 4; printf (?c = %d ? \n , c ); // printf (“c = %d \n ”, c ); }
(4) 修改编译预处理中的错误
/**********Found*************/
#define “stdio.h” // #include “stdio.h”
#include PI 3.1415926 // #define PI 3.1415926 main( )
{ int r=4, s;
s = PI * r * r;
printf (“%d \n “, s) );
}
3、 读程序写结果:(共2小题,每题10分,共20分 )
(1) 求带参数的宏代换
#include <stdio.h>
#define S(x) 4*x*x
main( )
{ int a=1, b=2;
printf (“%d \n “, S(a + b) );
}
输出结果为:( 8 )
(2) 求带参数的宏代换
#include <stdio.h>
#define S(x) 4*(x)*(x)
main( )
{ int a=1, b=2;
printf (“%d \n “, S(a + b) );
}
输出结果为:( 36 )
4、改写程序与替换练习( 共2小题,每题10分,共20分 )
(1) 用printf函数输出字符串,已知字符串用转义字符表示的程序如下,试用其他方法编辑输出相同结果的程序。
#include <stdio.h>
main( )
{
printf("\x6D\171\t\163\x74\157\x72\171!\n"); // printf("my \t story!\n");
}
(2) 用scanf函数输入数据的程序如下,试用赋初值的方法输入数据,改写如下程序。 #include <stdio.h>
main( )
{ double a,b, c; // double a = 3, b = 4;
scanf(“%d, %d”,&a, &b);
c = sqrt(a*a+b*b);
printf (“%f \n “, c);
}
5、编程题( 共2小题,每题10分,共20分 )
(1) 试编写输出如下字符的程序。
--------------------
| C Program |
--------------------
(2) 已知半径为4,用赋值语句计算球的表面积(4*PI*r*r)。
三、调试过程
1、 安装好VC++程序,分别调试验证预习作业的正确性。
2、在调试记录中详细记录调试过程,记录下出现的错误,提示信息,解决错误的方法,目前还没有解决的问题。
3、 调试过程中人为设置错误,查看提示信息的内容。如主函数写错为mian;去掉函数
体开始的“{”,写错变量类型等错误,记下错误的提示信息。
4、记录每个程序的运行结果,思索一下是否有其他的解题方法。
5、 分析编程题的设计思想,分析源文件调试中的错误。
四、分析与总结
1、分析实验结果,判断结果的合理性及产生的原因。
2、总结实验所验证的知识点。
3、写出实验后的学习体会。
大学 学院实验报告
课程名称: C语言程序设计 实验内容:数据类型与表达式 指导教师:
系部: 专业班级:
姓名: 学号: 成绩:
一、实验目的
1、掌握 C语言程序调试的方法
2、掌握数据类型、变量定义和数据的存储。
3、掌握表达式和表达式语句的使用方法。
4、了解VC++的单步执行、跟踪、执行到光标处等调试方法。
二、预习作业
1、程序填空题:调试程序并写出输出结果(共4小题,每题5分,共20分 )
(1) 数据类型填空:(文件名:sy2_32.c)
#include <stdio.h>
main( )
{
( ) iA=8, iB=5; // int
printf("%d \n",iA%iB); // 输出3
}
(2) 变量名填空:(文件名:sy2_33.c)
#include <stdio.h>
main( )
{
int ( ); // iA, iB, iC
iC=(iB=2) && (iA=3);
printf("iA=%d, iC=%d\n",iA,iC); // iA=3, iC=1
}
(3) 运算符填空:输出变量dA的字节数。(文件名:sy2_34.c)
#include <stdio.h>
main( )
{
double dA=3;
printf("%d \n", ( ); // sizeof dA
}
(4) 条件表达式填空:已知iA=4, iB=2, 将两者中的小数赋给iC。(文件名:sy2_35.c)
#include <stdio.h>
main( )
{
int iA=4,iB=2,iC;
iC = ( ); // iA < iB ? iA : iB ;
printf("%d \n", iC); // 输出2
}
2、改错题:(共4小题,每题5分,共20分 )
(1) 修改程序中数据数据类型的错误:输入a,将a右移2位赋给b,a左移2位赋给c。
#include <stdio.h> //(文件名:sy2_36.c)
main( )
{
/****************Found****************/
float a, b, c; // int
scanf("%d",a); // &a,输入65
b = a >> 2;
c = a << 2;
printf ("b=%d, c=%d \n", b, c); // 输出b=16, c=260
}
(2) 修改程序中强制类型转换运算符的错误:(文件名:sy2_37.c)
#include <stdio.h>
main( )
{
int a=6, b=4;
float c;
/****************Found****************/
c = float(a) / b ; // c = (float) a / b ;
print (“c = %d \n , c ); // printf ("c = %f \n " , c );
}
(3) 修改程序中赋值表达式的错误:(文件名:sy2_38.c)
#include <stdio.h>
main( )
{
/****************Found****************/
int a, b, c;
c = (a=2,) || (b=3;) // c = (a=2) || (b=3) ;
printf ("c = %d \n ", c );
}
(4) 修改程序中的错误:将逗号表达a+=2,b+=3,a+b的值赋给c。(文件名:sy2_39.c) #include <stdio.h>
main( )
{ int a=1, b=2, c;
/****************Found****************/
c = a+=2, b+=3, a+b ; // c = (a+=2,b+=3,a+b) ;
printf ("c = %d \n ", c );
}
3、 读程序写结果:(共2小题,每题10分,共20分 )
(1) 写出逻辑表达式的计算结果:(文件名:sy2_40.c)
#include <stdio.h>
main()
{ int x=0, y=2, k;
k=x++<=0 && !(y--<=0);
printf("%d,%d,%d\n",k,x,y);
}
输出结果为:( 1 , 1, 1 )
(2) 写出强制类型转换表达式的计算结果:(文件名:sy2_41.c)
#include <stdio.h>
main()
{ int a=2,b=3;
float x=3.9f,y=2.3f, r;
r=(float)(a+b)/2+(int)x%(int)y;
printf("%f\n",r);
}输出结果为:( 3.500000 )
4、改写程序( 共2小题,每题10分,共20分 )
(1) 用逗号表达式改写如下程序,使得变量x、y、z的输出结果相同。(文件名:sy2_42.c) #include <stdio.h>
main()
{ int x,y,z;
z=(x=3) && (y=4); // z = (x=3,y=4,y=x);
printf("x=%d,y=%d.z=%d \n",x,y,z);
}
(2) 改写字符变量的取值范围,使输出的字符变量不产生溢出。(文件名:sy2_43.c) #include <stdio.h>
main( )
{
char chA='A',chB='B'; // unsigned char chA='A',chB='B';
chA+=chB;
printf("chA=%d\n",chA);
}
5、编程题( 共2小题,每题10分,共20分 )
(1) 输入两个整数iX和iY,试编写输出iZ=|iX-iY|值的程序。(文件名:sy2_44.c) #include <stdio.h>
main( )
{
int iX,iY,iZ;
scanf("%d,%d",&iX,&iY);
iZ= iX>iY ? iX-iY : iY-iX;
printf("iZ=%d\n",iZ);
}
(2) 输入一个小数位超过4位的浮点数,将其精确到小数点后两位。文件名:sy2_45.c) #include <stdio.h>
main( )
{
float iX,iY;
scanf("%f",&iX);
iY= (int)(iX*100+0.5)/100.0;
printf("iY=%f \n",iY);
}
三、调试过程
1、 上机调试,验证预习作业的正确性。
2、 详细记录调试过程中出现的错误,提示信息。
3、调试过程中修改解决错误的方法,目前还没有解决的问题,调试程序使用调试工具。
4、记录程序运行的结果,思索一下是否有其他的解题方法。
5、 用学号和姓名建立文件夹,保存以上已调试的文件并上交给班长。
四、分析与总结
1、分析实验结果,判断结果的合理性及产生的原因。
2、总结实验所验证的知识点。
3、写出实验后的学习体会。
大学 学院实验报告
课程名称: C语言程序设计 实验内容:顺序结构程序设计 指导教师: 系部: 专业班级:
姓名: 学号: 成绩:
一、实验目的
1、掌握赋值语句、表达式语句、函数调用语句、复合语句、空语句的使用方法。
2、掌握输入/输出函数的格式及格式符的使用。
3、掌握数据的输入、存储、输出之间的关系。
4、掌握顺序程序设计的逻辑顺序,掌握顺序结构的常用算法。
二、预习作业(每小题5分,共40分)
1、程序填空题:试在括号中填入正确的答案,并上机验证程序的正确性。
(1) 输入大写字符A,则输出为( 65, a )。
( ) // # include <stdio.h>
main( )
{ ( ) // char ch,chr;
chr=(ch= getchar( ))<?Z?+1 ? ch+32 : ch - 32;
putchar(ch+2);
printf(“%d,%c\n”,ch,chr);
}
(2) 已知变量a = 80000,b = 60000,输出二数据之和c,与二数之差d。
#include <stdio.h>
main( )
{ ( ) a =80000 , b = 60000, c, d; // long int
( ) = ( a - b ,a + b ); // c
( ) = (a + b,a - b); // d
printf(“%ld %ld\n”, c, d);
}
2、程序改错并上机调试运行
(1) 对下列程序中更换位运算符或逻辑运算符,能使变量d、e的结果为零。 #include <stdio.h>
main( )
{ int a = 8, b = 2,c = 3,d,e;
/********** found **********/
d = (a % c & a % c); // ^
e = a / c – b || c + + ; // &&
printf (“%d, %d\n”, d, e);
}
(2) 试修改程序中的错误。
#include <stdio.h>
main( )
{ int a , b , c;
/********** found **********/
scanf(“%d,%d”,a ,b); // &a, &b
a += b += c ;
b = a < b ?a = b < c ?b = c // b = a < b ?a : b < c ?b : c ;
printf(“%d,%d\n”, a, b);
}
3、读程序写结果并上机验证其正确性
(1) 变量 a,b,c,d如下,分别输出各种类型的变量a,输出表达式c+a,d – 32的值。 #include <stdio.h>
main( ) // 结果为:
{ int a = - 1 , b = 2 ;
char c = ?D?,d = ?b?;
b = b + c;
printf (“%d, %u,%o,%x \n ”,a,a,a,a) );
printf (“%c,%c \n ”,c + a, d - 32) );
}
(2) 运行程序后输入B空格o空格y回车后输出结果是( B ,o )。
#include <stdio.h>
main( )
{ int ch1,ch2,ch3;
ch1=getchar( ); ch2=getchar( );
scanf(“%c”,ch3);
putchar(ch1);putchar(ch2);
Printf(“%c \n”,ch3 ) );
}
4、编程题
(1) 给变量abc输入一个3位数,请编程分离出这个数的百位、十位、个位,分别赋给变量a,b,c,输出a,b,c的值。
#include "stdio.h"
main()
{ int abc,a,b,c;
scanf("%d",&abc);
a=abc/100;
b=abc/10-a*10;
c=abc%10;
printf("%d,%d,%d\n",a,b,c);
getch();
}
(2) 输入一个四位小数的浮点数,如16.4572,试编程将该数精确到小数点后的二位。
#include "stdio.h"
main()
{ float a,b;
scanf("%f",&a);
printf("a=%f\n",a);
b=(int)(a*100+0.5)/100.0;
printf("a=%f,b=%f\n",a,b);
getch();
}
三、调试过程(调试记录10分、调试正确性10分、实验态度10分):
1、 上机调试,验证预习作业的正确性。
2、 详细记录调试过程中出现的错误,提示信息。
3、调试过程中修改解决错误的方法,目前还没有解决的问题,调试程序使用调试工具。
4、记录程序运行的结果,思索一下是否有其他的解题方法。
5、 用学号和姓名建立文件夹,保存以上已调试的文件并上交给班长。
四、分析与总结(每个步骤10分,共30分)
1、分析实验结果,判断结果的合理性及产生的原因。
2、总结实验所验证的知识点。
3、写出实验后的学习体会。
大学 学院实验报告
课程名称: C语言程序设计 实验内容:选择结构程序设计 指导教师: 系部: 专业班级:
姓名: 学号: 成绩:
一、实验目的
1、掌握条件表达式的计算过程。
2、掌握if语句的三种控制语句,掌握if与else的配对方法,掌握if结构的执行过程。
3、掌握switch-case语句的控制功能,掌握default、break的功能。
4、掌握if语句、switch-case语句嵌套使用的功能。
二、预习作业(每小题5分,共40分)
1、程序填空题:试在括号中填入正确的答案,并上机验证程序的正确性。
(1) 下面程序用于判断从键盘输入的一个字符是数字、大写字母或小写字母。 #include <stdio.h>
main( )
{ char ch;
if(ch=getchar())!=?#?))
{ if( ch>=?0? ) printf(“number”); // && ch<=?9?
if(ch>=?A? ) printf(“Upper”); // && ch<=?Z?
if(ch>=?a? ) printf(“Litter”);} // && ch<=?z?
printf(“\n”);
}
(2) 已知m的初值为4,试填写变量说明语句,输出结果为( 3 , 4 )。
#include <stdio.h>
main()
{
( ) // int m=4,n;
if(m%4) n = m++;
else n = -- m;
printf ("%d,%d", m -- , ++ n );
getch();
}
2、程序改错并上机调试运行
(1) 输入a, b两个数,若a与b相等,将a+b赋给c; 如若a与b不相等,将a-b赋给c
#include <stdio.h>
main( )
{ /********** found **********/
int a , b,c,max ;
scanf(“%d,%d”, a, b); // &a, &b
max=a;
if(max=b) c = a + b ; // max = = b
else c = a - b ;
printf(“c = %d\n”, c);
}
(2) 改正程序中switch-case语句出现的错误。
#include <stdio.h>
main( )
{ char ch= 'd';
/********** found **********/
switch(ch – 32) ; // switch(ch - 32){
case a ; // case 'a' : ;
default: printf ("%c\n", ch);
case 'b': printf("%d ", ch);
}
}
3、读程序写结果并上机验证其正确性
(1) 选择结构程序如下,当a=1,b=3 ,c=5,d=4时,执行下面程序后,x的值为( x = 2 #include <stdio.h>
main( )
{ int a=1, b=3 , c=5, d=4, 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;
printf (“x=%d”,x);
}
(2) 求表达式的输出结果 )
#include <stdio.h> //结果为: a = 1, b = 2
main( )
{ int x = 1, y = 1, a=0, b=0;
switch(x)
{ case 1: switch(y)
{ case 0: a ++; break;
case 1: b ++; break; }
case 2: a++; b++; break;
case 3: a--; b--; break;
default: a++;b--; }
printf("\n a = %d, b = %d",a,b);
getch();
}
4、编程题
(1) 试编写一个程序,输入a,b,c三个值,输出最大值max和最小值min 。
(2) 试用switch-case语句编制程序,输入一个当前的月份,求出该月份所属的季节。试编制程序,
(3) 根据求根公式,试编写求解二元一次方程ax2+bx+c=0的程序。
三、调试过程(调试记录10分、调试正确性10分、实验态度10分):
1、 上机调试,验证预习作业的正确性。
2、 详细记录调试过程中出现的错误,提示信息。
3、调试过程中修改解决错误的方法,目前还没有解决的问题,调试程序使用调试工具。
4、记录程序运行的结果,思索一下是否有其他的解题方法。
5、 用学号和姓名建立文件夹,保存以上已调试的文件并上交给班长。
四、分析与总结(每个步骤10分,共30分)
1、分析实验结果,判断结果的合理性及产生的原因。
2、总结实验所验证的知识点。
3、写出实验后的学习体会。
大学 学院实验报告
课程名称: C语言程序设计 实验内容:循环结构程序设计 指导教师: 系部: 专业班级:
姓名: 学号: 成绩:
一、实验目的
1、掌握if-goto语句构成的循环、while循环、do-while循环、for循环语句的使用方法。
2、掌握循环嵌套的功能和使用方法。
3、掌握continue语句、break语句的功能与使用方法。
4、掌握程序设计的基本方法,积累常用算法。
二、预习作业(每小题5分,共40分)
1、程序填空题:试在括号中填入正确的答案,并上机验证程序的正确性。
(1) 已知x= 0.6,n=10,试编程求?xn/n! 。 (文件名:ex5_21.c)
#include <stdio.h> // 运行结果为: 0.000004, 1.2255441
main( )
{ int k, n=8;
double t=1.0,x=0.8,s=0.0;
for ( k=1; k<=n ; k++){
( ) // t = t * (x/k) ;
( ) // s = s + t ;
}
printf("%f,%f\n",t,s);
}
(2) 已知变量y的初值为10,执行程序输出的结果为( 0 )。(文件名:ex5_22.c) #include <stdio.h>
main ( )
{
( ) // int y = 10 ;
do { y - -;} while (- - y ) ;
printf("%d\n",y - - ) ;
}
2、程序改错并上机调试运行
(1) 变量a是一个双精度浮点数,把该数精确到小数点后的两位赋给b,请改下程序中的错误。(文件名:ex5_23.c)
#include <stdio.h>
main( )
/********** found **********/
{ double a = 12.3456, b ;
b = (int) (a *100+0.5)/100.0 ; // b = (int) (a *100+0.5)/100.0 ;
frintf("%d, %f\n", a, b); // printf("%f, %f\n", a, b);
}
(2) 用辗转除法求最大公约数,请改下程序中的错误。(文件名:ex5_24.c) #include <stdio.h>
main( )
{ int a , b, t , r ;
/********** found **********/
scanf(“%d,%d”, a, b ) ; // scanf(“%d,%d”, &a, &b ) ;
if(a > b ) { a = b; b = a;} // if(a > b ) {t = a; a = b; b = t;}
r = a % b;
while( r != 0 ) {a = b; b = r; r = a % b; }
printf(“%d\n”, b);
}
3、读程序写结果并上机验证其正确性
(1) 编译下面程序,修改其中的错误,运行以下程序后, 如果从键盘上输入 china#<回车 >,则输出结果为( 4, 5 )。(文件名:ex5_25.c)
# include <stdio.h>
main()
{ int v1=0,v2=0;
char ch;
while((ch=getchar())!='#')
switch(ch)
{ case 'a':;
case 'h':;
default: v1++;
case 'i': v2++; }
printf("%d,%d\n",v1,v2);
}
(2) 写出程序后运行的结果是( X )。(文件名:ex5_26.c) #include "stdio.h"
main( )
{ int iX, iY;
for (iY = -4; iY <= 4; iY++) // 外层循环控制行变化,9行 // 内层循环控制列变化,空格定位
// 每行换行一次 { for (iX = 1; iX <=5-abs(iY); iX++) printf(" "); for (iX = 0; iX <=2*abs(iY); iX++ ) printf("*"); // 内层循环控制列变化,输出*号 printf("\n");
} }
4、编程题
(1) 已知sin(x) = x-x3/3!+x5/5!-x7/7!+x9/9!-x11/11!+??,用级数求sin(3.1415926/6)的值。 (文件名:sy5_27.c)
(2) 试用辗转减法编程,求最大公约数。(文件名:sy5_28.c)
(3) 试编程求100到200之间的全部素数。(文件名:ex5_29.c)
三、调试过程(调试记录10分、调试正确性10分、实验态度10分):
1、 分别调试预习作业,验证预习作业的正确性。
2、 详细记录调试过程,记录下出现的错误,提示信息。
3、记录解决错误的方法,目前还没有解决的问题。记录每个程序的运行结果,思索一
下是否有其他的解题方法。
4、分别将文件按指定的文件名存入考生文件夹中,并上交给班长。
四、分析与总结(每个步骤10分)
1、分析实验结果,判断结果的合理性及产生的原因。
2、总结实验所验证的知识点。
3、写出实验后的学习体会。
5、输入提示与输出换行
编程时,为了方便执行程序时输入数据,一般在输入数据之前用printf语句作出提示,不要在输入语句之中提示,输出数据时,最好在格式串最后加上‘\n’,让输出完数据后换行显示”Press any key to continue”。
大学 学院实验报告
课程名称: C语言程序设计 实验内容: 数 组 指导教师: 系部: 专业班级:
大学 学院实验报告
课程名称: C语言程序设计 实验内容: 函 数 指导教师:
学院: 专业班级:
姓名: 学号: 成绩:
一、实验目的
1、掌握函数的定义、调用和类型,编写自定义函数。
2、掌握函数参数的虚实对应和参数的传递,数值传送、地址传送。
3、掌握全局变量、局部变量,掌握变量的存储方式,变量作用域的概念。
4、掌握函数的嵌套调用与递归调用。
二、预习作业(每小题5分,共40分)
1、程序填空题:试在括号中填入正确的答案,并上机验证程序的正确性。
(1) ,将程序补充完整,并求输出结果( 5, 3, 3, 5 )。
void swap1 ( ( int ) c[ ] )
{ int t ;
t = c [ 0 ] ;c [ 0 ] = c [ 1 ];c [ 1 ] = t;}
( void ) swap2 ( int c0,int c1 )
{ int t ;
t = c0 ;c0 = c1;c1 = t; }
main()
{ int a[2] = { 3, 5 },b[2] = { 3,5 };
swap1 ( a );swap2 ( b[0],b[1] )
printf(“%d,%d,%d,%d \n ”,a[0],a[1],b[0],b[1] );
}
(2) 下列程序的子函数是返回最大值函数,请补充完整,程序输出的值为( 98 , b
char fun(char x, char y)
{ if(x>y) return x;
( else return y; ) }
main()
{ ( char ) a='A',b = 'b',c = 'C',s;
s = fun(fun(a,b),fun(b,c));
printf("%d,%c",s,s);
}
2、程序改错,并上机调试运行
(1) 下面程序进行浮点运算,请改正程序中的错误。13.800000
/********** found **********/
int func(int x, int y) // double func( double x, double y)
{ return x+y;
}
main()
{
int a=4.1, b = 3.3,c = 3.1,s; // double a=4.1, b = 3.3,c = 3.1,s;
s = func(func(a,b),func(b,c));
printf("%f",s);
}
)。
(2) 求第1列元素之和程序,改正程序中的错误。
/********** found **********/
fun( float y ,float x[ ]) // fun( float y ,float x[ ])
{ x[0] = x[1] + x[2];
y = y + x[3] ;
}
main( )
{ float x[4] = { 1.1, 2.2, 3.3, 4.0 }, y = 2.0;
fun( y, x ) ; //fun( y, x ) ;
printf("\n%f, %f",x[0], y );
getch();
}
3、读程序写结果并上机验证其正确性
(1) 以下程序的子函数中包含静态变量,程序运行后,输出结果是( 8,17 )。
#include <stdio.h>
func (int a., int b)
{ static int m = 0 , i = 2;
i + = m+1;
m = i + a + b ;
return ( m );
}
main()
{ int k=4,m=1,p;
p=func (k,m);printf(“%d,”,p);
p=func (k,m);printf(“%d\n”,p);
}
(2) 读以下程序时注意变量的作用域,该程序运行后,输出结果是( 8,4 )。
int d = 1 ;
fun (int p)
{ int d = 5;
d + = p++;
printf(“%d”,d);
}
main()
{ int a = 3 ;
fun(a);
d += a ++ ;
printf(“%d\n”,d);
}
4、编程题
(1) 已知一个字符数组c = “4638”,试将该数的千位和十位组成一个数值43,百位和个位组成一个数值68,试编写实现这两个两数的函数及其主函数。
(2) 试编写递归调用求8!并计算1!+2!+3!+??+n !值的程序。
三、调试过程(调试记录10分、调试正确性10分、实验态度10分):
1、 分别调试验证预习作业的正确性。
2、详细记录调试过程,记录下出现的错误,提示信息。
3、记录解决错误的方法,记录每个程序的运行结果,思索一下是否正确,有没有其他的解题方法。
4、分别将文件ex7_1.c、ex7_2.c、ex7_3.c、ex7_4.C、ex7_5.c、ex7_6.c、ex7_7.c、ex7_8.c等文件存入考生文件夹中,并上交给班长。
四、分析与总结(每个步骤10分)
1、分析实验结果,判断结果的合理性及产生的原因。
2、总结实验所验证的知识点。
3、写出实验后的学习体会。
大学 学院实验报告
课程名称: C语言程序设计 实验内容: 指 针 指导教师: 学院: 专业班级:
姓名: 学号: 成绩:
一、实验目的
(1)掌握指针的基本概念,学会定义、初始化和灵活使用指针变量。
(2)掌握指针作为函数的参数。
(3)掌握指针指向数组与字符指针的使用。
(4)掌握指针的自增自减、赋值运算、取地址运算等基本运算。
二、预习作业
1、 填空题:(共2小题,每题5分,共10分 )
(1) 用混合传送方式将数据传送给函数,将程序补充完整。
#include <stdio.h>
int func (int ( ) , int b)
{ int c;
c = b + ( );
return ( c );
}
main()
{int x=4,y=1,p;
p = func(&x,y);
printf("%d\n",p);
}
(2) 求数组中最大元素,请将括号填充完整。
#include <stdio.h>
fun( )
{ int i,*q = { };
for(i=1;i<8;i++,q++)
if(*q>p[0]) p[0] = *q;
}
main()
{ int a[10] = {7,2,9,1,5,8,4,3};
fun(a);
printf("%d\n",a[0] );
}
2、 读程序写结果:(共4小题,每题5分,共20分 )
(1)下面程序的运行结果为:
void main()
{ int a=1,b=3,c=5;
int *p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf(“%d\n”,c);
}
(2)下面程序的运行结果为:
void f(int a,int *b)
{ int t=0;
if(a%3==0)t=a/3;
else if(a%5==0)t=a/5;
else f(--a,&t);
*b=t;
}
void main()
{int m=7,n ;
f(m,&n) ;
printf(“%d\n” ,n);
}
(3)下面程序的运行结果为:
void f(char *c,int d)
{ *c=*c+1;d=d+1;
printf(“%c,%c”,*c,d);
}
void main()
{
char a=’A’,b=’a’;
f(&b,a);
printf(“%c,%c\n”,a,b);
}
(4)下面程序的运行结果为:
#include<stdio.h> //567
void main()
{ char *p=”ABC”;
do
{printf(“%d”,*p%10);
p++;
}while(*p);
}
3、编程题( 共2小题,每5分,共10分 )
(1)计算并输出一个数组中所有元素的和,最大值、最小值、值为奇数的元素个数。
(2)编写程序,完成以下功能:在输入的字符串中查找有无字符‘s’,若存在输出第一个出现该字符的位置。
三、调试过程
1、分别调试验证预习作业的正确性。
2、在调试记录中详细记录调试过程,记录下出现的错误,提示信息,解决错误的方法,目前还没有解决的问题。
3、记录每个程序的运行结果,思索一下是否有其他的解题方法。
4、分析编程题的设计思想,分析源文件调试中的错误。
四、分析与总结
1、分析实验结果,判断结果的合理性及产生的原因。
2、总结实验所验证的知识点。
3、写出实验后的学习体会。
大学 学院实验报告
课程名称: C语言程序设计 实验内容: 指 针 指导教师: 学院: 专业班级:
姓名: 学号: 成绩:
一、实验目的
(1)掌握指针的基本概念,学会定义、初始化和灵活使用指针变量。
(2)掌握指针作为函数的参数。
(3)掌握指针指向数组与字符指针的使用。
(4)掌握指针的自增自减、赋值运算、取地址运算等基本运算。
二、预习作业
1、 看程序写结果:(共4小题,每题5分,共20分 )
(1)下面程序的运行结果为:
void main()
{ int a=1,b=3,c=5;
int *p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf(“%d\n”,c);
}
(2)下面程序的运行结果为:
void f(int a,int *b)
{ int t=0;
if(a%3==0)t=a/3;
else if(a%5==0)t=a/5;
else f(--a,&t);
*b=t;
}
void main()
{int m=7,n ;
f(m,&n) ;
printf(“%d\n” ,n);
}
(3)下面程序的运行结果为:
void f(char *c,int d)
{ *c=*c+1;d=d+1;
printf(“%c,%c”,*c,d);
}
void main()
{
char a=’A’,b=’a’;
f(&b,a);
printf(“%c,%c\n”,a,b);
}
(4)下面程序的运行结果为:
#include<stdio.h> //567
void main()
{ char *p=”ABC”;
do
{printf(“%d”,*p%10);
p++;
}while(*p);
}
2、编程题( 共2小题,每题10分,共20分 )
(1)计算并输出一个数组中所有元素的和,最大值、最小值、值为奇数的元素个数。
(2)编写程序,完成以下功能:在输入的字符串中查找有无字符‘s’,若存在输出第一个出现该字符的位置。
三、调试过程
1、分别调试验证预习作业的正确性。
2、在调试记录中详细记录调试过程,记录下出现的错误,提示信息,解决错误的方法,目前还没有解决的问题。
3、记录每个程序的运行结果,思索一下是否有其他的解题方法。
4、分析编程题的设计思想,分析源文件调试中的错误。
四、分析与总结
1、分析实验结果,判断结果的合理性及产生的原因。
2、总结实验所验证的知识点。
3、写出实验后的学习体会。
9.4 结构体与共用体实验
9.4.1 实验要求
1、预习实验指导书第9章内容,理解程序功能。
2、要求调试数据类型分析中的4道程序题,验证输出结果是正确性。
3、做实验报告的预习作业,上机调试并验证程序的正确性。
4、认真做好上机调试记录,记录程序编译中的错误。
5、记录修改程序错误时使用的方法,程序运行的结果,分析结果的正确性。
6、使用另外的方法编写程序,看是否能简化程序,获得正确的结果。
7、认真归纳本章的知识点,使用的编程方法。
8、做一套等级考试试题,分析该试题中出现的考点,编程方法,比较该考点的命题方式,可能会有怎样的变化。
9.4.2 实验报告
大学 学院实验报告
课程名称: C语言程序设计 实验内容:结构体与共用休 指导教师:
学院: 专业班级:
姓名: 学号: 成绩:
一、实验目的
1、掌握结构体类型的定义,结构体变量和结构体数组的定义、初始化方法。
2、掌握结构体指针定义、初始化方法。
3、掌握成员运算符“.”和指向运算符“->”的使用方法,掌握结构体的引
用方法。
4、掌握共用体类型的定义,共用体变量的定义、初始化和引用方法。
5、掌握typedef定义类型名的方法,掌握枚举型变量的使用方法。
二、预习作业(每小题5分,共40分)
1、程序填空题:试在括号中填入正确的答案,并上机验证程序的正确性。
(1) 定义链表的节点类型,其中数据域data为字符型,指针域next为节点指针。
struct node
{ char data;
struct node ( )
}n1,n2;
main()
{
}
(2) 根据已定义的结构体类型,定义结构体变量stu、数组st[4]和指针* s 。 #include <stdio.h>
struct StuLoan
{ int Num;
char Name[16];
char Sex;
int Age;
char Addr[20];
float Loan;
}s={20081812,"LinFeng",'M',18,"Wuhan",8000.00} ;
( ) stu,st[4], *p=&s;
main()
{ printf(“%s,%c,%d”,s. Name,(*p).Sex,p->Age);
}
2、程序改错并上机调试运行
(1) 程序的结构类型定义如下所示,请改正程序中的错误。
typedef struct students
{ char name[16];
char sex;
int age;
char addr[20];
} STUD;
/********** found **********/
STUD ={"WangYin", 'F', 18, "Nanjing"},st[4], *s=stu; //
main()
{
printf("%s,%c,%s",stu.name, *s .sex,s->addr); //
}
(2) 请改正程序中结构体引用的错误。
struct NODE
{ int data;
struct NODE *link;
};
main( )
{ struct NODE m[5],*p = m ,*q = m + 4;
int i = 0 ;
while ( p! = q )
/********** found **********/
{ q -> k = ++i;p ++;
q.k = i ++;q - - ; }
( *q ).k = i ;
for (i = 0;i<5;i++)printf(”%d”,m[i].k );
printf(”\n”);
}
3、读程序写结果并上机验证其正确性
(1) 读程序,写出程序的输出结果( )。
#include <stdio.h>
main()
{ union{ char c[2];
int a ;
long b ;
struct NODE
{ int data ; struct NODE * next ;} n;
} m ;
printf(“%d,%d \n”,sizeof( m ),strlen( n ) );
}
(2) 共用体定义如下,试写出程序的输出结果( )。
main()
{ union{ char i[4];
int k;
} a;
a.i[0] = ’A’;a.i[1] = ‘B’;
printf(“%d \n”,a.k);
}
4、编程题
(1) 用枚类型定义春、夏、秋、冬四个季节,当输入一个月份,输出该月份对应的季节。
(2) 试用结构体类型定义学生信息,学生(学号,姓名,年龄,入学成绩),
初始化时输入五条记录,试输出最高成绩的学生信息。
(3) 试用共用体编程,查看浮点数1.5的存储码。
三、调试过程
1、分别调试验证预习作业的正确性。
2、在调试记录中详细记录调试过程,记录下出现的错误,提示信息,解决错误的方法,目前还没有解决的问题。
3、记录每个程序的运行结果,思索一下是否有其他的解题方法。
4、分析编程题的设计思想,分析源文件调试中的错误。
四、分析与总结
1、分析实验结果,判断结果的合理性及产生的原因。
2、总结实验所验证的知识点。
3、写出实验后的学习体会。
大学 学院实验报告
课程名称: C语言程序设计 实验内容: 文 件 指导教师: 系部: 专业班级:
姓名: 学号: 成绩:
一、实验目的
1、掌握缓冲文件系统的概念,掌握文件指针的概念。
2、掌握文件的打开、关闭和输入输出操作。掌握文件指针的定位。
3、掌握文件操作的方法。
二、预习作业(每小题5分,共40分)
1、程序填空题:试在括号中填入正确的答案,并上机验证程序的正确性。
(1),从E盘文件“myfile.txt”中读取一个字符串并显示在屏幕上,请填空。
#include <stdio.h>
#include <stdlib.h>
main( )
{ FILE *fp ; char str [ 20 ] ;
fp = fopen( "( )", "( )");
if ( fp == NULL) { printf ( "Cannot open this file! \n " );( ); } fgets(str, 21, fp );
fputs(str, stdout );
fclose ( fp );
}
(2) 从键盘输入一组字符,并输出到”myout.txt”文件中,用字符#人微言轻键盘输入的结
束标志,请把程序补充完整。
#include <stdio.h>
#include <stdlib.h>
main( )
{ FILE *fpout ; char ch;
fpout = fopen( "t1.txt", "a");
if ( ) { printf ( "Cannot open this file! \n " ); exit(0); } ch = getchar( );
while ( ch !='#')
{ fputc (ch, ( ));
ch=getchar( );}
fclose ( fpout );
}
2、程序改错并上机调试运行
(1) 将文件指针f1所指文件中的字符串复制到f2所指的文件中,请改正程序中的错误。 #include <stdio.h>
main( )
{ FILE *f1,*f2; char str [ 20 ];
/********** found **********/
fp1 = fopen( "file1 ", " w ");// f1 = fopen( "file1 ", " r ")
fgets(str, 20, f1 );
fp2 = fopen( "file2", " r"); // f2 = fopen( "file2", "w");
fputs(str, f2 );
fclose ( fp1 );
fclose ( fp2 );
}
(2) 请改正程序中出现的错误。
#include <stdio.h>
#include <stdlib.h>
/********** found **********/
FILE *fout;
main()
{ int i,j;
if((fout= FILE ("file.dat", "wb")) == NULL) exit(0);
for(i=0; i<10; i++)
{ scanf("%d",&j);
fputs(s, fout );
}
FILEclose(fp);
}
3、读程序写结果并上机验证其正确性
(1) 若文本文件file.dat中原有内容为:good,则运行以下程序后文件file的内 容为( )。
#include <stdio.h>
main()
{ FILE *fp1;
fp1=fopen("file","w");
fprintf(fp1,"abc" );
fclose(fp1);
}
(2) 读程序,写出程序的输出结果( )。
#include <stdio.h>
void WriteStr( char *fn, char * str )
{ FILE *fp;
fp = fopen(fn, "w");
fputs(str,fp);
fclose(fp);
}
main( )
{ WriteStr("t1","start");
WriteStr("t1","end");
}
4、编程题
(1) 试编程统计给定文件中英文字符的个数。
(2) 试编写程序把file3 文件中的文字复制到file4文件中去。
三、调试过程(调试记录10分、调试正确性10分、实验态度10分):
1、分别调试验证预习作业的正确性。
2、详细记录调试过程,记录下出现的错误,提示信息。
3、记录解决问题,改正错误的方法,目前还没有解决的问题。
4、记录每个程序的运行结果,思索一下是否有其他的解题方法。
5、分别将文件ex10_1.c、ex10_2.c、ex10_3.c、ex10_4.C、ex10_5.c、ex10_6.c、ex10_7.c、ex10_8.c等文件存入考生文件夹中,并上交给班长。
四、分析与总结(每个步骤10分)
1、分析实验结果,判断结果的合理性及产生的原因。
2、总结实验所验证的知识点。
3、写出实验后的学习体会。
本科学生综合性实验报告学号学院生命科学学院专业班级10生科B班实验课程名称人体组织学与解剖学实验教师及职称陈穗文讲师开课学期第一学…
实验报告一实验名称鸡的解剖二试验时间20xx年12月12日三实验地点动医楼四使用器械镊子不带齿手术刀手术剪五解剖程序首先把鸡处死方…
金山学院课程实习报告报告题目小牛活体解剖课程实习课程名称家畜解剖学实习地点动物医学家畜解剖实验室实习时间专业动物医学班年级学生姓名…
蛙类坐骨神经腓肠肌标本制备不同频率刺激对肌肉收缩的影响一目的要求1掌握蛙类双毁髓的试验方法2掌握坐骨神经腓肠肌标本标本的制作方法3…
实验报告1实验名称中枢活动的基本特征实验目的了解中枢活动的基本特征分析反射弧的完整性与反射的关系实验用物蟾蜍手术器械万能支台肌夹秒…
C语言程序设计实验报告1实验目的掌握指针的概念会定义和使用指针变量能正确使用变量的指针和指向变量的指针变量能正确使用数组的指针和指…
高级语言程序设计学生实验报告专业计算机科学与技术学号姓名1实验一C程序的运行环境和使用方法1实验目的1了解所用的计算机系统的基本操…
C语言程序设计实验报告专业计算机科学与技术班级ACM班日期20xx年12月24日成绩实验组别第5次实验指导教师学生姓名张启夏学号U…
实验报告1已知三角形的边为abc试设计程序输入三边的值并计算三角形的面积已知三角形的面积计算公式为Sabc2Areaasbsc截图…
C语言实验报告一一实验目的12345掌握C语言中基本的输入输出函数的使用方法掌握printf中转义字符tn的用法掌握赋值语句的用法…
华北水院高级语言程序设计C语言实验报告20xx20xx学年第二学期20xx级专业班级学号一实验题目结构体和共用体二实验目的略三实验…