二级 C 语言

错题集:
1.编写函数 fun() ,统计在主函数中输入的单词个数,作为函数返回值。规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。

#include<string.h>
#include<stdio.h>
#define N 80

int fun(char *s)
{
  int m, n = 0;

  for(m=0;s[m] != '\0';m++)
  {
      if(s[m] != ' ' && (s[m+1] == ' ' || s[m+1] == '\0'))
        n++;
  }
  return n;
}
void main()
{ 
  char line[N]; 
  int num=0;
  printf("Enter a string:\n "); 
  gets(line);
  num=fun(line);
  printf("The number of word is:%d\n\n ",num);
}

2.用for循环求n个整数的最大值

#include<stdio.h>

int main()
{
    int number, max;
    int i, n;

    printf("请输入整数的个数:\n");
    scanf("%d", &n);
    printf("请输入%d个整数:\n",n);
    scanf("%d",&max);

    for(i=1; i<=n-1; i++)
    {
        scanf("%d",&number);
        if(number > max)
            max = number;
    }

    printf("%d\n",max);

    return 0;
}

3.输入一个整数 n ,输出 1~n 的阶乘表

#include<stdio.h>

int main()
{
    int i, n;
    double fact;

    printf("请输入整数n:\n");
    scanf("%d", &n);

    fact = 1;
    for(i=1; i<=n; i++)
    {
        fact = fact * i;
        printf("%d %.0f\n",i,fact);
    }
    return 0;
}

4.定义一个NxN的二维数组,并在主函数中赋值。函数fun的功能是:求出数组周边元素的平均值并作为函数值返回给主函数的s。

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define  N  5
double fun (int w[][N])
{
     double av,sum = 0;
     int i,j,k = 0;

     for (i=0; i<N; i++)
     { 
         for (j=0;j<N;j++)
         {
            if(i==0 || i==N-1 || j==0 || j==N-1)
            {
                sum += w[i][j];
                k++;
             }
         }
     }
     av = sum/k;

     return av;
}
void main()
{
  FILE *wf;
  int a[N][N]={0,1,2,7,9,
               1,9,7,4,5,
               2,3,8,3,1,
               5,9,1,4,1
               };
  int i, j;
  double s;
  system("CLS");
  printf("*****The array*****\n ");
  for (i=0; i<N; i++)
    { 
        for (j=0;j<N;j++)
        {
             printf("%4d ",a[i][j]);
        }
        printf("\n ");
     }
  s=fun(a);
  printf("*****THE RESULT*****\n ");
  printf("The sum is : %lf\n ",s);

5.定义一个函数fun,用来交换x、y的的值

#include <stdio.h>

void fun(int *x,int *y)
{ 
    int t;

    t=*x;
    *x=*y;
    *y=t;
}
void main()
{ 
    int a,b;
    a=8;
    b=3;
    fun(&a, &b);
    printf("%d  %d\n ", a,b);
}

6.将mm行,nn列的二维数组按照行顺序依次放到一维数组,一位数组的个数存放在形参n所指的存储单元中。

#include <stdio.h>

void fun (int (*s)[10], int *b, 
                        int *n, int mm, int nn)
{
    int i,j,k = 0;

    for(i=0; i<mm; i++)
    {
        for(j=0; j<nn; j++)
        {
            b[k++] = s[i][j];
            *n = k;
        }
    } 
}
void main()
{
     int w[10][10]={{33,33,33,33},{44,44,44,44},
                                {55,55,55,55}}, i, j;
      int a[100]={0},n=0 ;
      printf("The matrix:\n");
      for (i=0; i<3; i++)
      {
            for (j=0;j<4;j++)  
            printf("%3d",w[i][j]);
            printf("\n");
      }
      fun(w,a,&n,3,4);
      printf("The A array:\n");
      for(i=0; i<n; i++)  
         printf("%3d",a[i]); 
      printf("\n\n");

猜你喜欢

转载自blog.csdn.net/qq_37369201/article/details/82387030