实验课程

THIS NAME

实验课程

当前位置: 首页 >> 实验课程 >> 正文

计算机程序设计(C)-C语言数组实验

发布日期:2023-09-08    作者:胡向丽     来源:     点击:

C语言数组实验

一、实验目的

1、掌握C语言数组相关知识

2、使用C语言掌握数组定义及应用。

二、实验设备与器件

PC机、头歌实践教学平台

三、实验内容

使用头歌平台编程:

(一)设计题目

1逆序输出

任意输入5个数字,将数字逆序输出。

逆序前:1 2 3 4 5

逆序后:5 4 3 2 1

C程序1

#include<stdio.h>

int   main()

{

     int a[5],i;

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

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

      /***********Begin**********/

     printf("逆序前:");

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

        printf("%d ",a[i]);

     printf("\n");

     printf("逆序后:");

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

         printf("%d ",a[i]);

       

        /***********End**********/

     

     return 0;

}

2、求最大值、最小值

编写程序输出11221556782345568799中的最大数和最小数。

C程序2

#include<stdio.h>

int main()

{

     /***********Begin**********/

   int min,max,i;

   int   a[10]={11,22,15,56,78,23,45,56,87,99};

   min=max=a[0];

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

   {

      if(a[i]<min)min=a[i];

      if(a[i]>max)max=a[i];

   }

   printf("最大数为%d,最小数为%d",max,min);

 

      /***********End**********/

   

   return 0;

}

3、输出二维数组的最小值

编写一个函数,找出一个整型数组中的最大值和最小值,并将其存储在指定的变量中。

C程序3

#include<stdio.h>

int main()

{

     /***********Begin**********/

   int   a[4][3]={11,23,12,45,67,45,2,56,34,78,55,34};

   int   i,j,min,row=0,volumn=0;

   min=a[0][0];

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

   {

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

         if(min>a[i][j]){

             min=a[i][j];

             row=i;

             volumn=j;

         }

   }

   printf("最小数在%d%d列为%d",row,volumn,min);

 

     /***********End**********/

   return 0;

}

4、输出杨辉三角

编写程序根据输入行数n输出杨辉三角形。

C程序4

#include<stdio.h>

int main()

{

   int i,j,n;

   int a[50][50]={0};

     scanf("%d",&n);

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

   {

         a[i][0]=1;

         a[i][i]=1;

   }

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

    {

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

         a[i][j] = a[i-1][j-1] + a[i-1][j];

    }

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

    {

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

          {

             if(i==j) printf("%d", a[i][j]);

             else printf("%d ", a[i][j]);

         }

         printf("\n");

    }

    return 0;

}

5、矩阵转置

编写程序利用二维数组实现矩阵的转置,要求输出结果如图所示。(提示:输出数字占6位)。

C程序5

#include<stdio.h>

int main()

{

   int   a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};

   int b[4][3];

   int i,j;

   printf("转置前:\n");

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

   {

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

             printf("%6d",a[i][j]);

         printf("\n");

   }

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

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

         b[j][i] = a[i][j];

}

printf("转置后:\n");

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

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

         printf("%6d", b[j][i]);

     printf("\n");

}

           /***********End**********/

   

       return   0;

}

6、数组综合实验(A

编写一个函数,输入两个长度相等的整型数组,判断它们是否相等。如果相等返回1,否则返回0

C程序6

#include <stdio.h>

int equal(int arr1[], int arr2[], int   len){

/***********begin********/

   int i;

   for(i=0;i<len;i++){

         if(arr1[i]!=arr2[i]){

             return 0;

         }

   }

   return 1;

 

 

/**********end***********/

}

int main(){

   int arr1[5] = {1, 2,   3, 4, 5};

   int arr2[5] = {1, 2,   3, 5, 5};

   int len = 5;

   if(equal(arr1, arr2,   len)){

         printf("两个数组相等\n");

   }

   else{

         printf("两个数组不相等\n");

   }

   return 0;

}

7、数组综合实验(B

编写一个函数,输入一个整型数组和一个整数 k,找出数组中的所有 k 个元素的组合。例如,输入数组{1, 2, 3, 4, 5}k=3,输出所有由3个元素组成的组合,即{1, 2, 3}{1, 2, 4}{1, 2, 5}{1, 3, 4}{1, 3, 5}{1, 4, 5}{2, 3, 4}{2, 3, 5}{2, 4, 5}{3, 4, 5}

C程序7

#include <stdio.h>

void combination(int arr[], int len, int   k, int index, int temp[], int start){

/***********begin********/

   int i;

   if(index==k){

         printf("{");

         for(i=0;i<k;i++){

             printf("%d ", temp[i]);

         }

         printf("}\n");

         return;

   }

     for(i=start;i<len;i++){

         temp[index] = arr[i];

         combination(arr, len, k, index+1, temp, i+1);

   }

 

 

/**********end***********/

}

int main(){

   int arr[5] = {1, 2, 3,   4, 5};

   int len = 5;

   int k = 3;

   int temp[3];

   combination(arr, len,   k, 0, temp, 0);

   return 0;

}

8、合并数组

编写一个函数,对整型数组进行升序排序并输出。

C程序8

#include <stdio.h>

#include <stdlib.h>

void merge(int arr1[], int len1, int   arr2[], int len2){

/***********begin********/

   int i, j, k;

   int *arr3 =   (int*)malloc(sizeof(int)*(len1+len2));

   i = j = k = 0;

   while(i<len1   && j<len2){

         if(arr1[i]<arr2[j]){

             arr3[k++] = arr1[i++];

         }

         else{

             arr3[k++] = arr2[j++];

         }

   }

   while(i<len1){

         arr3[k++] = arr1[i++];

   }

   while(j<len2){

         arr3[k++] = arr2[j++];

   }

   printf("合并后的数组是:");

   for(i=0;i<k;i++){

         printf("%d ", arr3[i]);

   }

     printf("\n");

   free(arr3);

 

 

/**********end***********/

}

 

int main(){

   int arr1[3] = {1, 3,   5};

   int arr2[4] = {2, 4,   6, 8};

   merge(arr1, 3, arr2,   4);

   return 0;

}

9、数组排序

编写一个函数,对整型数组进行升序排序并输出。

C程序9

#include <stdio.h>

#include <stdlib.h>

int compare(const void *a, const void   *b){

/***********begin********/

 

return (*(int*)a - *(int*)b);

 

/**********end***********/

}

void sort(int arr[], int len){

/***********begin********/

   qsort(arr, len,   sizeof(int), compare);

   int i;

   printf("排序后的数组是:");

   for(i=0;i<len;i++){

         printf("%d ", arr[i]);

   }

     printf("\n");

 

 

/**********end***********/

}

int main(){

   int arr[5] = {4, 2, 5,   1, 3};

   sort(arr, 5);

   return 0;

}  

10、字符串连接

编写一个程序,输入两个字符串,将这两个字符串连接起来并输出。

C程序10

#include <stdio.h>

#include <string.h>

int main(){

   char str1[100],   str2[100];

/***********begin********/

   scanf("%s",   str1);

   scanf("%s",   str2);

   strcat(str1, str2);

     printf("%s\n", str1);

 

 

/**********end***********/

   return 0;

}    

11、二维数组

编写一个程序,接收一个二维数组,将其中的偶数元素乘以 2,奇数元素不变,然后输出数组。

C程序11

#include <stdio.h>

void doubleEven(int arr[][4], int rows,   int cols) {

/***********begin********/

   for (int i = 0; i <   rows; i++) {

         for (int j = 0; j < cols; j++) {

             if (arr[i][j] % 2 == 0) {

                 arr[i][j] *= 2;

             }

         }

   }

}

void printArray(int arr[][4], int rows,   int cols) {

   for (int i = 0; i <   rows; i++) {

         for (int j = 0; j < cols; j++) {

             printf("%d ", arr[i][j]);

         }

         printf("\n");

   }

}

int main() {

   int numbers[][4] =   {{1, 2, 3, 4}, {5, 6, 7, 8}, {9, 10, 11, 12}};

   int rows =   sizeof(numbers) / sizeof(numbers[0]);

   int cols =   sizeof(numbers[0]) / sizeof(numbers[0][0]);

   doubleEven(numbers,   rows, cols);

   printArray(numbers,   rows, cols);

   return 0;

}    

12、一维数组

编写一个程序,接收一个一维数组,将其中的偶数元素乘以 2,奇数元素不变,然后输出数组。

C程序12

#include <stdio.h>

void doubleEven(int arr[], int len) {

/***********begin********/

   for (int i = 0; i <   len; i++) {

         if (arr[i] % 2 == 0) {

             arr[i] *= 2;

         }

   }

/**********end***********/

}

void printArray(int arr[], int len) {

   for (int i = 0; i <   len; i++) {

         printf("%d ", arr[i]);

   }

     printf("\n");

}

int main() {

   int numbers[] = {1, 2,   3, 4, 5};

   int len =   sizeof(numbers) / sizeof(numbers[0]);

   doubleEven(numbers,   len);

   printArray(numbers,   len);

   return 0;

}    

 

上一条:计算机程序设计(C)-C语言指针实验 下一条:计算机程序设计(C)-C语言循环结构实验

关闭