C语言集中上机实验报告

C语言集中上机实验报告

学   生:            

学   号:             

班   级:             

专   业:             

 重庆邮电大学移通学院

 20##年5月


第一章  循 环................................................................................................................. 3

1.1  实验目的.......................................................................................................... 3

1.2  实验要求.......................................................................................................... 3

1.3  实验基本内容................................................................................................... 3

1.3.1  题目一................................................................................................... 3

1.3.2  题目二................................................................................................... 5

第二章  数 组................................................................................................................. 7

2.1  实验目的.......................................................................................................... 7

2.2  实验要求.......................................................................................................... 7

2.3  实验基本内容.................................................................................................... 7

第三章  函 数............................................................................................................... 10

3.1  实验目的........................................................................................................ 10

3.2  实验要求........................................................................................................ 10

3.3  实验基本内容................................................................................................. 10

第四章  指 针................................................................................................................. 7

4.1  实验目的.......................................................................................................... 7

4.2  实验要求.......................................................................................................... 7

4.3  实验基本内容................................................................................................... 7

第五章  综合练习............................................................................................................ 8

5.1  实验目的.......................................................................................................... 8

5.2  实验要求.......................................................................................................... 8

5.3  实验基本内容................................................................................................... 8

集中上机总结................................................................................................................... 9


第一章  循 环

1.1  实验目的

(1)掌握一维数组和二维数组的定义、赋值和输入输出的方法

(2)掌握字符数组和字符串函数的使用;

(3)掌握与数组有关的算法。

1.2  实验要求

(1) 在报告中记录建立、保存C程序实习过程。

(2) 完成典型题目,分析遇到的困难和实验中的收获。

1.3  实验基本内容

1.3.1  题目一

打印出以下图案

*

*   *   *

*   *   *   *   *

*   *   *   *   *   *   *

*   *   *   *   *

*   *   *

*

(1) 题目分析:此题为循环题目,我们常用的循环语句为for语句,所以此题选择用for语句来做。进行循环输出。

(2)程序:

#include<stdio.h>

void main()

{

       int i,j,k;

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

       {

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

                     printf(" ");

              for(k=0;k<=2*i;k++)

                     printf("*");

              printf("\n");

       }

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

       {

              for(j=0;j<=i+2;j++)

                     printf(" ");

              for(k=0;k<=4-2*i;k++)

                     printf("*");

              printf("\n");

       }

}

(3) 运行结果:

1.3.2  题目二

编写程序实现输入整数n,输出如下所示由数字组成的菱形。(图中n=5)

1

1 2 1

1 2 3 2 1

1 2 3 4 3 2 1

1 2 3 4 5 4 3 2 1

1 2 3 4 3 2 1

1 2 3 2 1

1 2 1

1

(1) 题目分析:此题为循环题目,我们常用的循环语句为for语句,所以此题选择用for语句来做。进行循环输出。然后循环过后考虑对齐。

(2) 程序:

#include<stdio.h>

void main()

{

   int i,j;

   printf("\n");

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

   {

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

         printf("%2d",j);

      for(j=i-1;j>=1;j--)

         printf("%2d",j);

      printf("\n");

   }

   for(i=4;i>=1;i--)

   {

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

         printf("%2d",j);

      for(j=i-1;j>=1;j--)

         printf("%2d",j);

      printf("\n");

   }

}

(3)       运行结果:


第二章  数 组

2.1  实验目的

(1) 掌握一维数组和二维数组的定义、赋值和输入输出的方法

(2) 掌握字符数组和字符串函数的使用;

(3) 掌握与数组有关的算法。

2.2  实验要求

(1)       在报告中记录建立、保存C程序实习过程。

(2)       完成典型题目,分析遇到的困难和实验中的收获。

2.3  实验基本内容

2.3.1题目一:

编程:打印以下图案:

*  *  *  *  *

   *  *  *  *  *

      *  *  *  *  *

         *  *  *  *  *

            *  *  *  *  *

(1)题目分析:此题为循环以及数组的基本运用,考虑数组的定义以及for语句的基本运用。

(2)程序:

#include<stdio.h>

void main()

{

  char a[5]={'*','*','*','*','*'};

  int i,j,k;

  char space=' ';

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

  {

     printf("\n");

     for(j=1;j<=3*i;j++)

        printf("%1c",space);

     for(k=0;k<=5;k++)

        printf("%3c",a[k]);

    }

  printf("\n");

}

(3)       运行结果:

(4)      

2.3.2题目二:

输入4×4的数组,编写程序实现:

(1)求出对角线上各元素的和;

(2)求出对角线上行、列下标均为偶数的各元素的积;

(3)找出对角线上其值最大的元素和它在数组中的位置。

(1)题目分析:此题主要为输入选择和输出,用循环和数组进行求和和求积运算。

(2)程序:

#include<stdio.h>

void main()

{

float a[4][4],sum=0,sum1=1,max;

int i,j,b;

printf("请输入数组4*4个数:\n");

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

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

       scanf("%f",&a[i][j]);

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

    sum=sum+a[i][i];

 printf("sum=%6.2f\n",sum);

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

    if(i%2==0)

       sum1=sum1*a[i][i];

 printf("sum1=%6.2f",sum1);

 max=a[0][0];

  b=0;

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

 if(max<a[i][i])

 { max=a[i][i];

 b=i;

 }

 printf("max=%6.2f,%d",max,b);

 }

(3)运行结果:


第三章  函 数

3.1  实验目的

(1) 掌握定义函数的方法;

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

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

(4) 掌握全局变量和局部变量动态变量、静态变量的概念和使用方法。

(5) 学习对多文件程序的编译和运行。

3.2  实验要求

(1)       在报告中记录建立、保存C程序实习过程。

(2)       完成典型题目,分析遇到的困难和实验中的收获。

3.3  实验基本内容

3.3.1题目一:

写一函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间空一个空格。如输入1990,应输出“1└┘9└┘9└┘0”。

(1)题目分析:数组以及循环的运用,考虑变量的函数的使用。

(2)程序:

#include<stdio.h>

void main()

{

void insert(str);

char str[80];

printf("input four number:\n");

scanf("%s",str);

insert(str);

}

void insert(str)

char str[];

{

int i;

for(i=strlen(str);i>0;i--)

{

str[2*i]=str[i];

str[2*i-1]=' ';

}

printf("\n result:\n  %s\n",str);

}

(3)运行结果:

3.3.2题目二:

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

(1)题目分析:首先要用递归方式,然后要用选择语句。进行筛选输出。

(2)程序:

#include<stdio.h>

void convert(n)

int n;

{int i;

if((i=n/10)!=0)

convert(i);

putchar(n%10+'0');

}

void main()

{

int number;

printf("input number:\n");

scanf("%d",&number);

printf("\n result:");

if((number<0))

{

putchar('-');

number=-number;

}

convert(number);

}

(3)运行结果:


第四章  指 针

4.1  实验目的

(1)  掌握指针的概念,掌握定义和使用指针变量的方法。

(2)  掌握使用数组的指针和指向数组的指针变量。

(3)  掌握使用字符串的指针和指向字符串的指针变量。

(4)  学习对多文件程序的编译和运行。

4.2  实验要求

(1)       在报告中记录建立、保存C程序实习过程。

(2)       完成典型题目,分析遇到的困难和实验中的收获。

4.3  实验基本内容

4.3.1题目一:

编一程序,输入月份号,输出该月的英文月名。例如,输入“3”,则输出“March”,要求用指针数组处理。

(1)题目分析:选择调换字符以及数字用选择以及指针实现。

(2)程序:

4.3.2题目二:

有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符复制成为另一个字符串。

(1)题目分析:要求从输入字符串中截断重组字符, 考虑用指针来进行。

(2)程序:

#include<stdio.h>

#include<string.h>

void main()

{

  int m;

  char *str1[20],*str2[20];

printf("please input string:");

scanf("%s",str1);

printf("input number:");

scanf("%d",&m);

if(strlen(str1)<m)

printf("error!");

else

{

  copystr(str1,str2,m);

  printf("result:%s\n",str2);

}

}

copystr(p1,p2,m)

char *p1,*p2;

int m;

{

int n;

n=0;

while(n<m-1)

{ n++;

p1++;

}

while(*p1!='\0')

{ *p2=*p1;

p1++;

p2++;

}

*p2='\0';

}

(3)运行结果:


第五章  综合练习

5.1  实验目的

(1)  掌握指针的概念,掌握定义和使用指针变量的方法。

(2)  掌握使用数组的指针和指向数组的指针变量。

(3)  掌握使用字符串的指针和指向字符串的指针变量。

(4)  学习对多文件程序的编译和运行。

5.2  实验要求

(1)       在报告中记录建立、保存C程序实习过程。

(2)       完成典型题目,分析遇到的困难和实验中的收获。

5.3  实验基本内容

5.3.1题目一:  编写一个程序计算下式之和。

1+(1+2)+(1+2+3)+(1+2+3+4)+…...+(1+2+3+4+5+6+7+8+9+10)

(1)题目分析:这是道计算求和的问题,要求的是循环和算术运算符的运用我们继续用for语句了进行循环的计算。以及用算术运算符求结果。

(2)程序:

#include <stdio.h>

void main()

{

       int i,b=0,s=0;

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

       {

       b+=i;

       s+=b;

       }

       printf("1+(1+2)+(1+2+3)+(1+2+3+4)+…...+(1+2+3+4+5+6+7+8+9+10)=%d\n",s);

}

(3)运行结果:

5.3.2题目一:

在主函数中输入一个字符串,然后删除该字符串里面所有的空格,并打印删除空格后的字符串。(用指针)

(1)题目分析:首先题目要求我们用指针进行编程这个问题,然后要求是删除输入字符串中的空格,我们就要考虑找到源地址,进行对源地址上的字母进行修改。

(2)程序:

#include <stdio.h>

#include <string.h>

char *delchar(char *s, char c_h) {

 char *p,*q;

 p = s;

 while(*p != '\0') {

  if(*p == c_h) {

   q = p;

   while(*q != '\0') {

    *q = *(q + 1);

    q++;

   }

   p--;

  }

  p++;

 }

 return (s);

}

int main() {

 char s[80];

 char *p,c = ' ';

 printf("源串是 : ");

 gets(s);

 p = delchar(s,c);

 printf("去除(%c)后是:%s\n",c,p);

 return 0;

}

(3)运行结果:


集中上机总结

      通过这周集中上机发现自己c语言编程学的太差了,好多实验都不会做,把一个实验做出来了自己不会修改发现错误的地方还不知道下面解释是什么地方错了。以前会的一些东西由于没有及时去复习,已经不会做了。一些简单的c语言编程就不会写,这就是没有及时复习的错误,然而c语言又是二级必考的内容我们毕业也必须要过的,这也给我一个警醒要好好学。

    这周的集中上机也让我学到了很多的东西,复习了很多东西,这个计算机学习还是讲的上机实验比在平时这样学习还是好很多的,自己一边做实验一边有不懂的老师给我指点然后自己在去做,直到自己会做了为止,这样反复的去做对一些c语言的用法有了更深刻的了解,加强了自己对c++平台操作的熟悉程度。老师细心的讲解也给了我解决了很多不懂问题。让自己对一些函数以及c语言的运用更加熟悉,为自己下学期的二级考试奠定了更好的基础。上机也让自己了解到自己在电脑编程这个方面连一点点入门也算不上,想想那些大型的程序有多少函数组成,有多少c语句,那个难度现在的我根本无法想象,这也让自己更加坚定决心去好好学习。

相关推荐