C实验报告(第七章)解答

《高级语言程序设计》实验报告

班级:         学号:       姓名:         成绩:    

 实验日期:           月   

                                                           

实验题目:         实验七指针程序设计

实验目的:

 

实验内容:(包括算法说明:用文字或流程图说明;程序清单;运行结果:原始数据、相应的运行结果和必要的说明。)

 

原始数据、相应的运行结果和必要的说明。

原始数据、相应的运行结果和必要的说明。

 


(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实验报告解答

大学 学院实验报告

课程名称: 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实验报告解答

C实验报告解答

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、写出实验后的学习体会。

相关推荐