欢迎您访问浙江自考网!  今天是
当前位置: > 实践考核 >

浙江自考《计算机基础与程序设计》实验指导书

2013-04-17 21:49来源:未知
《计算机基础与程序设计》实验
实验一  顺序结构
【实验目的】
1. 熟悉计算机的操作,了解Windows环境。
2. 熟悉C程序设计编程环境Turbo C 2.0,掌握调试C程序的过程,包括编辑、编译、连接和运行,调试教材上的例题, 为学习复杂C程序的编写和调试打好基础。
3. 掌握C语言程序设计的基本框架,设计简单的顺序结构程序,并上机调试。
4. 掌握基本输入, 输出函数的使用。
5. 掌握C程序的查错方法, 找出并改正C程序中的语法错误和逻辑错误。
 
【上机步骤】
1. 我的电脑  -->  C:盘  -->  TC文件夹  -->  TC.EXE文件
( 或 “桌面” 上双击 ”TC” 图标 )
2. 输入程序 (编辑):  File  -->  New
3.运行程序:  Run  -->  Run  ( Ctrl键 + F9键 )
4.查看结果:  Run  -->  User screen  ( Alt 键 + F5键 )
5.存盘:      File  -->  Write To : e: \ 文件名.c
6.把所编的程序存入e盘根目录中(e:\ ), 并分别取名为:
1-1.C、  1-2.C、  1-3.C、  1-4.C
 
【实验内容】
1-1   填空
输入三个整数a,b,c, 把b的值给a, 把c的值给b,把a的值给c, 交换后输出a,b,c的值。
例如   a=10, b=20, c=30, 交换后a=20, b=30, c=10.
main()
{ int a, b, c,   (1)     ;
  printf (“Enter a, b, c: ” );
  scanf (“%d%d%d”,    (2)    );
     (3)   ;
  a=b;
  b=c;
       (4)    ;
  printf (“a=%d, b=%d, c=%d\n ”, a, b, c );
}
1-2   写一程序,从键盘输入二个整数,然后输出这二个数的和、差、积、商。
1-3   从键盘输入一个四位整数,把该整数颠到过来输出。
例如  1234 变为 4321。
1-4   有一个并联电路如图,r1=30Ω, r2=60Ω, r3=45Ω, u=120V, 求电流i.
             (保留二位小数,四舍五入)
 

【参考程序】
 
[1-1]
(1)  t
(2)  &a, &b, &c
(3)  t=a
(4)  c=t
 
[1-2]
#include “stdio.h”
void main()
{ int  a, b;
  scanf(“%d%d”, &a, &b );
   printf(“%d+%d=%d\n”, a, b, a+b);
   printf(“%d-%d=%d\n”, a, b, a-b);
printf(“%d*%d=%d\n”, a, b, a*b);
printf(“%d/%d=%.2f\n”, a, b, 1.0*a/b);
}
 
[1-3]
#include “stdio.h”
void main()
{ int  x, a, b, c, d;
  scanf(“%d”, &x );
  a=x/1000;
  b=x/100%10;
  c=x/10%10;
  d=x%10;
  printf(“%d%d%d%d”, d, c, b, a);
  }
 
[1-4]
#include “stdio.h”
void main()
{ float r, r1=30, r2=60, r3=45, u=120, i;
  r=1.0/(1.0/r1+1.0/r2+1.0/r3);
  i=u/r;
printf(“%.2f”, i );
}
 
实验二  选择结构和循环结构
【实验目的】
1. 掌握分支结构的程序结构设计方法,用if 语句实现选择结构, 用switch语句实现多
分支选择结构, 并上机调试。
2.      掌握选择结构的嵌套。
3.      掌握for、while和do-while循环结构的程序结构设计方法,并上机调试。
4.      掌握循环的嵌套结构及continue、break语句的合理运用。
 
【实验内容】
2-1 有一函数 
 
 
 
               
     输入x的值,输出相应的y值。
 
2-2   编写程序,当输入字符‘A’时,输出“America”; 当输入字符‘B’时,输出“Britain”; 输入
字符‘C’时,输出“China”; 输入其他字符时,输出“France”.
               (要求用switch语句实现)
2-3   填空:
用 π/4 =1-1/3+1/5-1/7+…..近似公式求π的近似值,直到最后一项的绝对值小于10-6为止。
   #include “math.h”
   void main()
{ int s=1;
  float n=1, t=1, pi=     (1)      ;
  while (fabs(t)>=1e-6 )
   { pi=pi+        (2)       ;
     n=n+2;
     s=s        (3)        ;
     t=s/n;
}
   pi=pi*4;
   printf (“pi=%f\n”, pi );
}
2-4   打印出所有的“水仙花数”,所谓“水仙花数”时指一个三位数,其各位数字立方和等于该 数本身。
例如   153 是“水仙花数”,因为153=13+53+33.
 
2-5   百钱买百鸡问题。
公鸡5元一只,母鸡3元一只,小鸡1元三只;100元买100只鸡,且需要包含
公鸡、母鸡、小鸡,求有哪几种方案?
 
【参考程序】
[2-1]
#include “stdio.h”
void main()
{ int  x, y;
   scanf(“%d”, &x);
   if(x>0) y=1;
   else if(x==0) y=0;
       else  y=-1;
   printf(“%d”, y);
}
 
[2-2]
#include “stdio.h”
void main()
  { char ch;
   ch=getchar();
   switch(ch)
{ case ‘A’: printf(“America”);
case ‘B’:  printf(“Britain”);
case ‘C’:  printf(“China”);
default :  printf(“France”);
}
}
 
[2-3]
(1)  0
(2)  t
(3)  *(-1)
 
[2-4]
#include “stdio.h”
#include “math.h”
void main()
{ int i, a, b, c;
 for(i=100; i<1000; i++)
  { a=i/100;
   b=i/10%10;
 c=i%10;
 if(i==a*a*a+b*b*b+c*c*c) printf(“%d\n”,i);

}
[2-5]
#include “stdio.h”
void main()
{ int chick,cock,hen;
   for (cock=1;cock<=20;cock++)
     for (hen=1;hen<=33;hen++)
         { chick = 100 - cock - hen ;
              if (cock*5+hen*3+chick*1.0/3.0 == 100)
printf(“公鸡=%d 母鸡=%d 小鸡=%d\n",cock,hen,chick );
            }
}
 
实验三  数组和函数
【实验目的】
1. 掌握一维、二维数组的定义、初始化和引用。
2. 编写一维、二维数组应用程序,并上机调试。
3. 掌握函数的定义方法、函数的类型和返回值。
4. 掌握函数形参与实参的参数传递关系。
5. 编写二个以上函数的应用程序,并上机调试。
 
【实验内容】
3-1 任意输入10个数,计算:
(1)正数的个数和正数的和;
(2)负数的个数和负数的和;
(3)零的个数。
 
3-2 对一个任意的4行4列的二维整型数组,编程实现:
(1)每一列的最大值;
(2)每一行的最小值;
(3)所有元素的最大值、最小值以及它们的行下标和列下标。
 
3-3 填空
对输入的一个数,调用prime函数判断其是否是素数:是,则打印“yes”;不是,则打印“no”.
void main()
 { int x;
  scanf (“%d”,      (1)       );
  if (prime(x))       (2)        ;
  else       (3)         ;
}
prime (int a)
 { int  i=2, y=1, e=a/2;
   while ((i<=e)       (4)        )
    if (a%     (5)      ==0 )   y=0;
 else  i++;
        (6)       ;
}
 
3-4 编写函数fun(int x ), 求x的各位数字之和。
在main()中,求出100-10000之间有多少个整数,它们的各位数字之和等于5。
 
3-5 编写函数fact (n), 计算n!.
在main()中,计算并输出p=n! / (n-r)! 的值。(n>r).
 
【参考程序】
 
[3-1]
#include “stdio.h”
void main()
 { int i, a[10], z=0, sum_z=0, f=0, sum_f=0, l=0;
  for(i=0; i<10; i++)
{ scanf(“%d”, &a[i]);
  if(a[i]>0)
     { sum_z+=a[i];
       z++;
}
else if(a[i]<0)
         { sum_f+=a[i];
           f++;
 }
       else
           l++;
 }
printf(“sum_z=%d, number_z=%d\n”, sum_z, z);
printf(“sum_f=%d, number_f=%d\n”, sum_f, f);
printf(“number_l=%d\n”, l);
}
 
[3-2]
#include “stdio.h”
void main()
 { int a[4][4], i, j, max, min, maxz, minz, rowz_max, colz_max, rowz_min, colz_min;
  for(i=0; i<4; i++)
for(j=0; j<4; j++)
   scanf(“%d”, &a[i][j]);
 
   for(j=0; j<4; j++)
     { max=a[0][j];
for(i=1; i<4; i++)
       if(a[i][j]>max) max=a[i][j];
      printf(“col %d: max=%d\n”, j, max);
}
 
for(i=0; i<4; i++)
     { min=a[i][0];
for(j=1; j<4; j++)
       if(a[i][j]<min) min=a[i][j];
printf(“row %d: min=%d\n”, i, min);
}
 
     maxz=minz=a[0][0];
rowz_max=colz_max=0;
rowz_min=colz_min=0;
for(i=0; i<4; i++)
      for(j=0; j<4; j++)
        { if(a[i][j]>maxz)
{ maxz=a[i][j];
  rowz_max=i;
  colz_max=j;
 }
         if(a[i][j]<minz)
{ minz=a[i][j];
   rowz_min=i;
   colz_min=j;
            }
       }
printf(“maxz:a[%d][%d]=%d\n”, rowz_max, colz_max, maxz);
printf(“minz:a[%d][%d]=%d\n”, rowz_min, colz_min, minz);
}
 
[3-3]
  (1) &x 
  (2) printf(“yes!”)
  (3) printf(“no!”)
  (4) && y==1
  (5) i
  (6) return y;
 
[3-4]
#include “stdio.h”
int fun(int x)
   { int sum=0,r;
     while(x>0)
        { r=x%10;
sum=sum+r;
x=x/10;
}
    return sum;
}
void main()
{ int i;
for(i=100;i<=10000;i++)
   if(fun(i)==5) printf(“%d\n”,i);
  }
 
[3-5]
#include “stdio.h”
long fact(int n)
  { int i;
long y=1;
    for(i=1;i<=n;i++)
        y=y*i;
     return y;
}
 void main()
   { int n,r;
     float p;
     scanf(“%d%d”,&n,&r);
     p=fact(n)/fact(n-r);
     printf(“%f”,p);
}
实验四  指针和结构体
【实验目的】
1. 掌握指针、指针变量的概念,熟练使用指向变量、数组、字符串的指针。
2. 掌握指针类型数据在程序设计中的应用方法。
3. 掌握结构体类型的定义方法以及结构体变量的定义和引用。
4. 掌握结构体数组的引用。
5. 掌握结构体类型数据在程序设计中的应用方法。
6. 仿照例题设计出相应程序,并上机调试运行得到正确结果。
 
【实验内容】
4-1 填空:
    以下函数完成两个字符串的连接。
    void str (char *str1, char *str2)
     { int i=0, j;
       while (str1[i++]!=’\0’) ;
       i--;
       for (j=0; str2[j]!=     (1)       ; j++)
 str1[i+j]=        (2)       ;
       str1[i+j]=    (3)      ;  
     }
 
4-2  有一个字符串,包含n个字符。写一函数将此字符串中从第m个字符开始的全部字符复制成另一个字符串。
 
4-3 在主函数中输入10个整数,用另一个函数将10个整数按逆序存放,然后在主函数中输出结果。
 
4-4 现有一职工情况简表,数据项有:编号、姓名、年龄、工作单位。要求用单向链表实现下列功能。
(1)建立职工情况简表(要求输入3个职工的情况)。
(2)输出职工情况简表。
(3)任给一个职工编号,查找该职工的情况。如果存在,输出该职工的简况,否则,输出信息“找不到”。
      请分别用3个函数实现,并用主函数调用。
 
【参考程序】
 
[4-1]
 (1)  ‘\0’
 (2)  str2[j]
 (3)  ‘\0’
 
[4-2]
#include “stdio.h”
void fun(char *s, int m, char *t)
 { int i, j=0;
for(i=m; *(s+i)!=’\0’; i++, j++)
     *(t+j)=*(s+i);
   *(t+j)=’\0’;
 }
void main()
 { char s[80], t[80], m, n;
   int i;
scanf(“%d%d”, &n, &m);
   for(i=0; i<n; i++)
      scanf(“%c”, &s[i]);
   s[i]=’\0’;
   fun(s,m,t);
  puts(t);
}
 
[4-3]
#include “stdio.h”
void fun(int *s)
 { int i,j,t;
   for(i=0,j=9;i<5;i++,j--)
     { t=*(s+i);
      *(s+i)=*(s+j);
      *(s+j)=t;
}
}
void main()
 { int i,s[10];
   for(i=0;i<10;i++)
      scanf(“%d”,&s[i]);
fun(s);
   for(i=0;i<10;i++)
      printf(“%4d”,s[i]);
}
 
[4-4]
1.  建立职工情况简表
#define LEN sizeof(struct zg)      /* sizeof()  求字节数运算符 */
struct  zg
   { long  num;
char name[10];
int nl;
char dw[20];
struct zg *next;
};
int n;               /* 结点的个数  */
struct student *creat ( )
{ struct zg *head;           /*  结构体类型  */
struct zg *p1,*p2;       /*p1 指向新结点, p2  指向最后一个结点*/
 n=0;
 p1=p2=(struct zg *)malloc(LEN);  /* 分配一个结点的空间 */
scanf (“%ld,%s,%d,%s”, &p1->num, p1->name,&p1->nl,p1->dw);
 /* 输入第一个结点的值 */
head=NULL;           /* 空链表 */
 while(p1->num!=0)      /* 若编号=0,则建表结束 */
   { n=n+1;              /*结点数*/
    if (n==1)
 head=p1;   /* 第一个结点  */
    else
p2->next=p1;    /* 链入下一个结点 */
   p2=p1;
     p1=(struct zg *) malloc(LEN);  /* 分配一个新结点的空间 */
    scanf (“%ld,%s,%d,%s”, &p1->num, p1->name,&p1->nl,p1->dw);
/* 输入这个结点的值 */
}
p2->next=NULL;
 return(head);           /*  返回链表的起始地址   */
}
 
2. 输出职工情况简表   
void print( struct zg  *head )     /* 输入链表的首地址 */
{ struct zg *p;
      printf("\n现在,存在 %d 个记录是: \n",n);
      p=head;                    /* p 指向第一个结点  */
      if (head != NULL)            /* 不是空链 */
      do
        { printf ("“%ld,%s,%d,%s”, p->num, p->name,p->nl,p->dw);
   /* 输出结点的内容 */
          p=p->next;             /*  p 指向下一个结点    */
        } while (p!=NULL);       /* p 为空指针时,循环结束 */
}
 
3. 查找职工的情况
 void find( struct zg *head )     /* 输入链表的首地址 */
{ struct zg *p;
      printf("\n现在,存在 %d 个记录是: \n",n);
      p=head;                /* p 指向第一个结点  */
printf("输入查找的职工编号: ");
      scanf(“%ld”,&cz_num);      
      if (head != NULL)            /* 不是空链 */
      do
        { if(p->num==cz_num)
{ printf ("“%ld,%s,%d,%s”, p->num, p->name,p->nl,p->dw);
   /* 输出结点的内容 */
                break;
}
else
p=p->next;             /*  p 指向下一个结点    */
        } while (p!=NULL);          /* p 为空指针时,循环结束 */
      if (p==NULL) printf(“找不到!”);
}
 
4.      主函数
#include “stdio.h”
void main()
{ struct zg *head;
   head=creat();                    /* 建立链表   */
   print(head);                     /* 输出全部结点 */
   find(head);                      /*  查找  */
}
 
实验五  编译预处理和文件
【实验目的】
1. 掌握编译预处理命令的作用和应用方法。
2. 掌握文件类型指针(FILE类型)的定义。
3. 掌握文件操作函数:fopen()、fclose()、fscanf()、fprintf()、fgets()、fputs()。
4. 编写应用文件系统的程序,实现从文件中输入数据,向文件输出结果,熟练地上机调试运行。
 
【实验内容】
5-1定义一个带参数的宏,使两个参数的值互换,并编写程序任意输入两个数,进行宏调用,输出互换结果。
 
5-2定义一个宏,它给出三个参数中的最大值,并写一个程序来调用该宏定义。
 
5-3 建立数据文件“c.dat”,内容为:80,90,72,64,59,92。
 
5-4 求数据文件“c.dat”中的最大值、最小值和平均值,并存入文件“jg.dat”.
 
【参考程序】
[5-1]
#include “stdio.h”
#define SWAP(a,b)  t=a;a=b;b=t;
void main()
{ int a,b,t;
  scanf(“%d%d”,&a,&b);
SWAP(a,b);
  printf(“%d    %d\n”,a,b) ;
}
 
[5-2]
#include “stdio.h”
#define MAX(a,b,c)  a>(d=b>c?b:c)?a:d
void main()
 { int a,b,c,d;
  scanf(“%d%d%d”,&a,&b,&c);
  printf(“%d”, MAX(a,b,c));
}
 
[5-3]
#include “stdio.h”
void main()
 { FILE *fp;
   int x,i,n;
   fp=fopen(“c.dat”, “w”);
   scanf(“%d”,&n);
for(i=1;i<=n;i++)
     { scanf(“%d”, &x);
      fprintf(fp, “%d”, x);
     }
  fclose(fp);
}
 
[5-4]
#include “stdio.h”
void main()
 {  FILE *fp1, *fp2:
   int i=1,x,max,min,sum=0;
   float aver;
   fp=fopen(“c.dat”,”r”);
   fp=fopen(“jg.dat”,”w”);
   fscanf(fp1,“%d”,&x);
   max=min=x;
   while(x!=EOF)
     { sum=sum+x;
       If(x>max) max=x;
       else if(x<min) min=x;
fscanf(fp,“%d”,&x);
i++;
}
   aver=1.0*sum/i;
   fprintf(fp2, “max=%d, min=%d, aver=%f”, max, min,aver);
}


本资料doc文件下载:
《计算机基础与程序设计》.doc

上一篇:浙江自考《高电压技术》实验指导书

下一篇:浙江自考《计算机软件基础(二)》实验指导书