广工 AnyviewC C语言习题 第六章

Anyview 第六章


6.022 n是系统给定的外部变量。编写程序,求1到n间的

自然数之和。请定义局部变量s存放求和的结果,并用下
列语句输出结果

      printf("1+2+...+n=%d\n",s);
void main()
{
  int s;
  /* 请添加相关说明和语句 */
   s=0;
    for (int i=1;i<=n;i++)
    s+=i;

  printf("1+2+...+n=%d\n",s); /* 注意:不要修改此输出语句 */
}

/**********

6.028 n和s是系统给定的外部整型变量(不需要自行定义)。

编写程序,求1到n之间的偶数之和,并将结果存放到s。
**********/

void main()
{
    for (int i=1;i<=n;i++)
        if (i%2==0)
            s+=i;
}
//第二种方法
    for (int i=2;i<=n;i+=2)
        s+=i;
//第三种方法
for (int i=1;i<=n;i++)
        (i%2==0)?s+=i:; //编译错误?
//第四种方法

/**********

【习题6.033】系统给定外部整型数组a、整型变量n、max、min

和实型变量avg(不需要自行定义)。编写程序,求数组a中前n
个元素的最大值max、最小值min及平均值avg。
**********/

void main()
{
    avg=0;
    max=a[0];
    min=a[0];
    for (int i=0;i<n;i++)
    {
        if (a[i]>max)        
            max=a[i];        
        if (a[i]<min)        
            min=a[i];        
        avg+=a[i];
    }                             
    avg=avg/n;
  }

/**********

6.040 m,n和s是系统定义的外部整型变量(不需要自行定义)。

编写程序,根据m的值求满足1+2+…+n>=m的最小n,并将
1+2+…+n的结果存放到s。例如,若m=50,则n=10,s=55。
**********/

void main()
{

    for (int i=1;i<=m;i++)
    {
        s+=i;
        if (s>=m)
        {
            n=i;
            break;
        }
    }
}

/**********

【习题6.043】系统给定外部整型变量n和整型数组a(不需要

自行定义)。编写程序,找出数组a中前n个元素中的最小元素
及其下标,然后把它和数组中最前面的元素a[0]交换位置。
**********/

void main()
{
      int min=0,t,tmp;
      min=a[0];
      for (int j=0;j<n;j++)
    {
        if (a[j]<min)
        min=a[j];
    }
    for (int k=0;k<n;k++)
    {
        if (a[k]==min)
        t=k;
    }
    tmp=a[t];
    a[t]=a[0];
    a[0]=tmp;
}

/**********

【习题6.050】系统给定外部字符串s和整型数组c[26](不需要

自行定义)。编写程序,将字符串s中26个小写字母出现的次数
依次统计到数组c中。例如,当s=“abcijkabcdexyzuvwx”时,
数组c的26个元素值依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 0
0 0 0 0 0 0 1 1 1 2 1 1。
**********/

void main()
{
   int l=strlen(s);
     for (int j=0;j<26;j++)
     {
        c[j]=0;
     }
    for (int i=0;i<l;i++)
    {
        switch(s[i])
        {
            case 'a':
                c[0]++;
                break;
            case 'b':
                c[1]++;    
                break;
            case 'c':
                c[2]++;
                break;
            case 'd':
                c[3]++;
                break;
            case 'e':
                c[4]++;
                break;
            case 'f':
                c[5]++;
                break;
            case 'g':
                c[6]++;
                break;
            case 'h':
                c[7]++;
                break;
            case 'i':
                c[8]++;
                break;
            case 'j':
                c[9]++;
                break;
            case 'k':
                c[10]++;
                break;
            case 'l':
                c[11]++;
                break;
            case 'm':
                c[12]++;
                break;
            case 'n':
                c[13]++;
                break;
            case 'o':
                c[14]++;
                break;
            case 'p':
                c[15]++;
                break;
            case 'q':
                c[16]++;
                break;
            case 'r':
                c[17]++;
                break;
            case 's':
                c[18]++;
                break;
            case 't':
                c[19]++;
                break;
            case 'u':
                c[20]++;
                break;
            case 'v':
                c[21]++;
                break;
            case 'w':
                c[22]++;
                break;
            case 'x':
                c[23]++;
                break;
            case 'y':
                c[24]++;
                break;
            case 'z':
                c[25]++;
                break;
            default:
                break;
        }
    } 
}

/**********

【习题6.051】 系统给定外部字符串s和整型数组c[26]

(不需要自行定义)。编写程序,将字符串s中26个字母
(不区分大小写)出现的次数依次统计到数组c中。例如,
当s=“AbcijKaBcdEXyzuvwx”时,数组c的26个元素值
依次为:2 2 2 1 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0
1 1 1 2 1 1。
**********/

void main()
{
       int l=strlen(s);
    for (int j=0;j<26;j++)
    c[j]=0;
    for (int i=0;i<l;i++)
    {
        switch(s[i])
        {
            case 'a':
            case 'A':
                c[0]++;
                break;
            case 'b':
            case 'B':
                c[1]++;    
                break;
            case 'c':
            case 'C':
                c[2]++;
                break;
            case 'd':
            case 'D':
                c[3]++;
                break;
            case 'e':
            case 'E':
                c[4]++;
                break;
            case 'f':
            case 'F':
                c[5]++;
                break;
            case 'g':
            case 'G':
                c[6]++;
                break;
            case 'h':
            case 'H':
                c[7]++;
                break;
            case 'i':
            case 'I':
                c[8]++;
                break;
            case 'j':
            case 'J':
                c[9]++;
                break;
            case 'k':
            case 'K':
                c[10]++;
                break;
            case 'l':
            case 'L':
                c[11]++;
                break;
            case 'm':
            case 'M':
                c[12]++;
                break;
            case 'n':
            case 'N':
                c[13]++;
               break;
            case 'o':
            case 'O':
                c[14]++;
               break;
            case 'p':
            case 'P':
                c[15]++;
                break;
            case 'q':
            case 'Q':
                c[16]++;
                break;
            case 'r':
            case 'R':
                c[17]++;
                break;
            case 's':
            case 'S':
                c[18]++;
                break;
            case 't':
            case 'T':
                c[19]++;
                break;
            case 'u':
            case 'U':
                c[20]++;
                break;
            case 'v':
            case 'V':
                c[21]++;
                break;
            case 'w':
            case 'W':
                c[22]++;
                break;
            case 'x':
            case 'X':
                c[23]++;
                break;
            case 'y':
            case 'Y':
                c[24]++;
                break;
            case 'z':
            case 'Z':
                c[25]++;
                break;
            default:
                break;
        }
    } 
}

/**********

6.176 系统给定外部长整型变量s,整型变量a、m和k,

1<=a<=9,1<=m<=9且m+k<=9(不需要自行定义)。编写
程序,求数列a,aa,aaa,…,aa…a,…(第i项为i个a)中,
第m项起的k项之和,并将结果存放到s。例如:当a=6,
m=4且k=3时,置s=6666+66666+666666。
**********/

void main()
{
     int t=1;
    long s0[10]={0};
    if (a>=1 && a<=9 && 1<=m && m<=9 && m+k<=9)
    {
            for (int j=0;j<m;j++)
            {
                t=1;
                for (int i=1;i<=j;i++)
                {
                    t*=10;
                }
                
                s0[0]+=a*t;
            }
            s+=s0[0];
            //printf("%d\n",s0[0]);
            for (int i=1;i<k;i++)
            {
                s0[i]=s0[i-1]*10+a;
                s+=s0[i];
            }
    }
     if(a==0 || m==0 || k==0)
    {
        s=0;
    }
}

/**********

6.183 系统给定外部长整型变量s和整型变量n,且

n的值在0和9之间(不需要自行定义)。编写程序,
求1+12+123+…+12…n之值,并将结果存放到s。例如,
n=5时,置s=1+12+123+1234+12345。
**********/

void main()
{
int t;
    long s0[10]={0};
    if (n>=1 && n<=9)
    {
        s0[0]=1;
            for (int j=1;j<n;j++)
            {
                t=1;
                for (int i=1;i<=j;i++)
                {
                    t*=10;
                }
                
                s0[j]+=s0[j-1]*10+j+1;
            }
            
            //printf("%d\n",s0[0]);
            for (int i=0;i<n;i++)
            {
                
                s+=s0[i];
            }
            
    }
    else   
    {
        s=0;
    }
}

/**********

【习题6.225】系统给定外部整型变量n、e和整型数组a(不需要自行定义),

其中数组a中前n个元素(a[0],a[1],…,a[n-1])已经按元素值由小到大排序。
编写程序,把变量e的值插入到数组a中,并且仍然保持a中元素由小到大的排列
顺序。若e的值比原有所有的数都大时,插入在末尾的a[n]。若比原有的数都小
时,则插入在最前面的a[0]。
**********/

void main()
{
   for (int i=0;i<n;i++)
    {
        if (a[i]>=e)
        {
            for (int j=n-1;j>=i;j--)
            {
                a[j+1]=a[j];
            }
            a[i]=e;
            break;
        }
    }
    if (e>=a[n-1])
    a[n]=e;
}

/**********

【习题6.255】系统给定外部整型变量n和整型数组a(不需要自行定义)。

编写程序,用起泡法对数组a中前n个元素(a[0],a[1],…,a[n-1])进行
分段排序,其中前一半为从小到大排序,后一半为从大到小排序,n为奇数
时,位于中间点的数不需要排序。
**********/

void main()
{
      for (int i=0;i<n/2;i++)
    {
        int max=a[0];
        for (int j=1;j<n/2-i;j++)
        {
            if (max>a[j])
            {
                int t=a[j];
                a[j]=max;
                a[j-1]=t;
            }
            else
            {
                //int t=max;
                max=a[j];
                //a[j-1]=t;
            }
        }
    }
    
    for (i=n;i>n/2;i--)
    {
        int min=a[n/2];
        for (int j=n/2+1;j<n;j++)
        {
            if (min<a[j])
            {
                int t=a[j];
                a[j]=min;
                a[j-1]=t;
            }
            else
            {
                //int t=max;
                min=a[j];
                //a[j-1]=t;
            }
        }
    }
}

/**********

【习题6.265】系统给定外部整型变量n和整型数组a(不需要自行定义)。

编写程序,用起泡法对数组a中前n个元素(a[0],a[1],…,a[n-1])进行
分段排序,其中前一半为从大到小排序,后一半为从小到大排序,并把n个
数的平均值存在a[n]中,n为奇数时,位于中间点的数不需要排序。
**********/

void main()
{          double min,max,t;
int k;
a[n]=0;
       for (int i=0;i<n/2;i++)
    {
        min=a[0];
        for (int j=1;j<n/2-i;j++)
        {
            if (min<a[j])
            {
                 t=a[j];
                a[j]=min;
                a[j-1]=t;
            }
            else
            {
                //int t=max;
                min=a[j];
                //a[j-1]=t;
            }
        }
        
    }
    if (n%2==0)
    k=0;
    else
    k=1;
    for ( i=n-k;i>n/2;i--)
    {
         max=a[n/2+k];
        for (int j=n/2+1;j<n;j++)
        {
            if (max>a[j])
            {
                 t=a[j];
                a[j]=max;
                a[j-1]=t;
            }
            else
            {
                //int t=max;
                max=a[j];
                //a[j-1]=t;
            }
        }
        
    }
    for (i=0;i<n;i++)
    a[n]+=a[i];
     a[n]/=n;
}

/**********

【习题6.425】系统给定外部整型变量n和整型数组a(不需要自行定义)。

编写程序,求某数列中前n个数,并依次存放在数组a中,该数列的前两个
数为2和3,以后每一个数都是前两个数之差(后面的数减去前面的数)的2
倍,如前6个数依次为:2,3,2,-2,-8,-12)。
**********/

void main()
{
         a[0]=2;a[1]=3;
    for (int i=2;i<n;i++)
    {
        a[i]=2*(a[i-1]-a[i-2]);
     } 
}

/**********

【习题6.435】系统给定外部整型变量m、n、整型数组a和实型数组b(不需要自

行定义),其中n的值是m的整数倍。编写程序,对数组a的前n个元素依次赋予从
2开始的偶数,然后按顺序每m个数求出一个平均值并依次存储在另一数组b中。
**********/

void main()
{
       int t=n/m;
    float p=0.0;
    for (int i=0;i<n;i++)
    {
        a[i]=2*(i+1);
        p+=a[i];
        //printf("p%d=%d\n",i,a[i]);
        for (int j=1;j<=t;j++)
        {
            if (i==j*m-1)
            {
                b[j-1]=p/m;
                p=0;
            }
        }
    }
}

/**********

【习题6.615】系统给定外部整型变量m、n和整型二维数组a和b(不需要

自行定义)。编写程序,将mn二维数组a的行和列元素互换,存到nm二
维数组b中。
**********/

void main()
{
     for (int j=0;j<=m;j++)
    {
        for (int i=0;i<=n;i++)
        b[j][i]=a[i][j];
    }
}

/**********

【习题6.621】系统给定外部整型变量n、i、imin和整型二维数组a(不需要

自行定义)。编写程序,求n*n二维数组a中第i行的元素最小值imin。
**********/

void main()
{
    imin=a[i][0];
    for (int j=1;j<n;j++)
    {
        if (imin>a[i][j])
        {
            imin=a[i][j];
        }
    }
}

/**********

【习题6.625】系统给定外部整型变量n、dmin和整型二维数组a(不需要

自行定义)。编写程序,求n*n二维数组a中主对角线元素的最小值dmin。
**********/

void main()
{
    dmin=a[0][0];
    for (int i=1,j=1;i<n && i==j;i++,j++)
    {
        if (dmin>a[i][j])
        {
            dmin=a[i][j];
        }
    }
}

/**********

【习题6.633】系统给定外部整型变量n、min和整型二维数组a(不需要

自行定义),其中a中元素值均为非负整数。编写程序,求n*n二维数组a
中的元素最小值min。
**********/

void main()
{
           min=a[0][0];
    for (int i=0;i<n;i++)
    {
        for (int j=0;j<n;j++)
        if (min>a[i][j])
        {
            min=a[i][j];
        }
    }
}

/**********

【习题6.636】系统给定外部整型变量n、d2min和整型二维数组a(不需要自行

定义)。编写程序,求n*n二维数组a的两条对角线上的元素的最小值d2min。
**********/

void main()
{
      int i,j;
    d2min=a[0][0];
    for (i=0;i<n;i++)
    {
        for (j=0;j<n;j++)
        {
            if (i==j || (i-j==n-1) || (j-i==n-1))
            {
                if (a[i][j]<d2min)
                {
                    d2min=a[i][j];
                }
            }
        }
    }
}

/**********

【习题6.641】系统给定外部整型变量n、i、isum和整型二维数组a(不需要

自行定义)。编写程序,求n*n二维数组a中第i行的元素之和isum。
**********/

void main()
{        int j;
   isum=0;
    for (j=0;j<n;j++)    
        isum+=a[i][j];
}

/**********

【习题6.644】系统给定外部整型二维数组a、整型变量n、j和

实型变量javg(不需要自行定义)。编写程序,求n*n二维数组
a中第j列的元素平均值javg。
**********/

void main()
{
javg=0.0;
     int i;
    for (i=0;i<n;i++)
    {
        javg+=a[i][j];
    }
    javg/=n;
}

/**********

【习题6.646】系统给定外部整型变量n、整型二维数组a和

实型变量davg(不需要自行定义)。编写程序,求n*n二维
数组a的主对角线元素平均值davg。
**********/

void main()
{
     int i,k;
     davg=0.0;
    for (i=0;i<n;i++)
    {
        for (k=0;k<n;k++)
        {
            if (i==k)
            davg+=a[i][k];
        }
    }
    davg/=n;
}

/**********

【习题6.653】系统给定外部整型变量n、sum和整型二维

数组a(不需要自行定义)。编写程序,求n*n二维数组a
的全部元素之和sum。
**********/

void main()
{
         int j,k;
         sum=0;
for (j=0;j<n;j++)
    {
        for (k=0;k<n;k++)
        sum+=a[j][k];
    }
}

/**********

【习题6.656】系统给定外部整型二维数组a和整型变量n、d2sum

(不需要自行定义)。编写程序,求n*n二维数组a的两条对角线
上各元素值之和d2sum。注意:对角线的元素只能计算一次。
**********/

void main()
{
    int j,k,t=1;
     d2sum=0;
    for (j=0;j<n;j++)
    {
        for (k=0;k<n;k++)
        {
        
                if (j==k )
                {
                    d2sum+=a[j][k];
                }
                if (k-j==n-t)
                {
                        d2sum+=a[j][k];
                    t+=2;
                }
        }
    }
    if (n%2!=0)
    d2sum-=a[n/2][n/2];
}

/**********

【习题6.662】系统给定外部整型变量n、ss和整型二维数组a(不需

要自行定义)。编写程序,求n*n二维数组a的周边元素之和ss。
**********/

void main()
{
       int j,k;
     ss=0;
    for (j=0;j<n;j++)
    {
        for (k=0;k<n;k++)
        {
        
                if (j==0 || k==0 || j==n-1 || k==n-1 )
                {
                    ss+=a[j][k];
                }
        }
    }
}

/**********

【习题6.664】系统给定外部整型变量n、smin和整型

二维数组a(不需要自行定义)。编写程序,求n*n二
维数组a的周边元素的最小值smin。
**********/

void main()
{
    int j,k;
    smin=a[0][0];
    for (j=0;j<n;j++)
    {
        for (k=0;k<n;k++)
        {
        
                if (j==0 || k==0 || j==n-1 || k==n-1 )
                {
                    if (a[j][k]<smin)
                    smin=a[j][k];
                }
        }
    }
}

你可能感兴趣的:(AnyviewC)