在线爆料QQ:165687462 设为首页 | 加入收藏 首页 | 登录 | 注册

当前位置:首页家居 — 数组和循环程序设计实验指导
数组和循环程序设计实验指导
来源:北京网    更新时间:2007/12/17 22:37:30  阅读[7888]

数组和循环程序设计
一、实验目的
1.熟悉数组的定义、初始化、元素引用方法。
2.熟悉while、do-while、for语句的格式与功能,掌握循环程序设计的一般方法。
3.掌握使用单重循环处理一维数组元素的程序设计方法。
4.掌握使用循环结构处理数组中存放字符串的程序设计方法。
5.掌握使用二重循环处理二维数组元素的程序设计方法。
6.熟悉系统提供的字符串处理函数。
二、预习要求
1.复习while、do-while、for、break、continue语句的格式和功能。
2.复习一维数组和二维数组的定义与初始化方法。
3.复习字符型数组的定义和初始化方法。
4.复习字符串处理函数的调用格式和功能。
三、实验准备
【问题一】循环结构的程序设计
     编一个C程序,计算并输出数列:1、3.5…、2n-1、…的前n项之和,其中的n由键盘输入。(要求分别用for、while、do-while语句来完成)
【待填充的源程序参考清单】
方法一(用for语句实现)
    main()
   {long s,n,k, i;
     scanf("____________________",&n);
     k=2*n-1;
     _____________________;
     for(i=1;i<=k;i++,_________________) s+=i;
     printf("1+3+…+%1d=%1d\n",k,s)
    }
方法二(用while语句实现)
    main()
   { long s________________________,n,i=1;
      scanf("%1d",&n);
      while(_______________________)
     { s+=i;
        _____________________;
      }
      printf("1+3+…+%1d=%1d\n", 2*n-l,s);
    }
方法三(用do语句实现)
    main()
   { long s=0,n,i=___________________;
      scanf("%1d",&n);
      do
       { s+=i_____________________;
          i++;
        } while(____________________);
      printf("1+3+…+%1d=%1d\n",2*n-1,s);
   }
【问题二】一维数组及单重和二重循环的应用
编一个C程序,从键盘上输入n(n≤10)和 n个整数,存入数组a中。先依次输出各个数组元素的值(a[0]、a[1]、...);然后对数组a的所有元素值按从小到大的顺序重新排序;再依次输出各个数组元素的值(a[0]、a[1]…)。
【待填充的源程序参考清单】
    main()
   { int a[10],n,i,j,_________________;
      printf("input n=");
      scanf("%d",&n);
      printf("input array a[0]a[l]… a[%d]:\n",n-1);
      for(i=0;i<n;i++)
         scanf("%d",______________________);
      printf("before sort:array\n");
      for(i=0;i<n;i--)
         printf("%d",a[i]);
      printf("\n");
      for(i=0;i<_______________________;i++)
         { min=i;
             for(j=___________________;j<n;j++)
                 if(a[j]<a[min])_________________;
             ax=____________________;
             a[i]=a[min];
             ____________________=ax;
          }
      printf("after sort:array\n");
      for(i=0;i<n;i++)
         printf("%d", a[i]);
      printf("\n");
    }

【问题三】二维字符型数组及二重循环的应用
编一个C程序,从键盘上输入4个字符串,要求每个字符串的长度都要大于5、小于81。将这4个字符串按下列要求存入数组a[4][81]中。
    a[0][0],a[0][l],…a[0][80]中存放第1个字符串
     a[1][0],a[1][1],…a[1][80]中存放第2个字符串
     a[2][0],a[2][1],…a[2][80]中存放第3个字符率
     a[3][0],a[3][1],…a[3][80]中存放第4个字符串
先输出这四个字符串;然后按照下列要求输出新的五串字符:
     a[0][0],a[1][0],a[2][0],a[3][0]中存放的字符组成的第1串字符
     a[0][l],a[1][l],a[2][l],a[3][l]中存放的字符组成的第2串字符
     a[0][2],a[1][2],a[2][2],a[3][2]中存放的字符组成的第3串字符
     a[0][3],a[1][3],a[2][3],a[3][3]中存放的字符组成的第4串字符
     a[0][4],a[1][4],a[2][4],a[3][4]中存放的字符组成的第5串字符
【待调试的源程序参考清单】
     main()
    { char a[4][81];
     int i,j;
     for(i=0;i<4;i++)
       { printf("input NO.%d string:",i+1);
          scanf("%s",&a[ i]);
        }
     printf("\nold string:\n");/*输出原字符串*/
     for(i=0;i<4;i++)
        printf("NO.%d:%c\n",i+1,a[i]);
     printf("\nnew string:\n");/*输出新字符串*/
     for(i=0;i<4;i++)
        { printf("NO.%d:",i);
           for(j=0;j<5;j++)
               printf(”%c”,a[ i][ j]);
           printf("\n");
         }
    }
    【问题四】一维数组及单重循环的应用
    编一个C程序,从键盘上输入一个由10位二进制正整数组成的字符串,将其转换成一个+进制正整数输出。
    提示:设一个10位的二进制正整数s=a9a8a7a6a5a4a3a2a1a0 ,则s对应的+进制数可以使用下列两种公式来计算。
    公式一:
    s=a9*a9+a8*a8+a7*a7+a6*a6+a5*a5+a4*a4+a3*a3+a2*a2+a1*a1*a0*20
    注:其中的2i称为第i位的权。
    公式二:
    s=((((((((a9*2+a8)*2+a7)*2+a6)*2+a5)*2+a4)*2+a3)*2+a2)*2+a1)*2+a0
   【自己编写的原程序清单】
   【方法一】利用公式一。
            输入二进制正整数存入一个字符型数组,然后按照从前向后的顺序取出每位上的数字字符,处理成对应的二进制数字,按照下列公式将其加到+进制整数中:
           +进制整数=+进制整数+当前位的二进制数字*该位数字的权
           提示1:存放+进制整数的变量事先要清0。
           提示2:各位的权可以存放在某个数组中,需要时从该数组中获得某位上的权。
    【方法二】利用公式二。
            输入二进制正整数存人一个字符型数组,然后按照从前向后的顺序取出每位上的数字字符,处理成对应的二进制数字,按照下列公式将其加到+进制整数中:
           +进制整数一+进制整数*2+当前位的二进制数字
           (责任编辑:城市网)

技术支持:165687462 网上爆料:165687462
Copyright© 2017 北京网 版权所有 粤ICP备15066211号