数组的实参传递

2023-12-23 17:55:09

数组作为函数传递参数

第一个事情:数组作为函数参数

1.数组元素作为函数参数

2.数组名作为函数参数

3.二维数组作为函数参数,实际上传递的是地址

c语言实际的基本操作:

输入一组数组

输出一组数组

累加一组数组的和

求出数组的最大值和最小值

求出数组的平均值

c语言课堂上的具体例题

1.统计最大值并统计他的索引

#include <stdio.h>  
  
// 函数声明  
int max(int x, int y);  
  
int main() {  
    int a[10];  // 用于存储10个整数的数组  
    int i, m, n;  
  
    printf("请输入10个整数:\n");  
    for(i = 0; i < 10; i++) {  
        scanf("%d", &a[i]);  // 输入10个数给a[0]~a[9]  
    }  
  
    m = a[0];  // 初始化最大值为数组的第一个元素  
    n = 0;     // 初始化最大值的索引为0  
    for(i = 1; i < 10; i++) {  
        if(max(m, a[i]) > m) {  // 若max函数返回的值大于m  
            m = max(m, a[i]);   // 更新最大值  
            n = i;              // 更新最大值的索引  
        }  
    }  
  
    printf("最大的数是:%d\n", m);  
    printf("它是第%d个数。\n", n + 1);  
  
    return 0;  
}  
  
// max函数返回两个整数中的较大值  
int max(int x, int y) {  
    return (x > y) ? x : y;  
}

2.求出数组中的平均值带内部参数

#include <stdio.h>  
  
float average(float array[10]); // 函数声明  
  
int main() {  
    float score[10], aver;  
    int i;  
  
    printf("输入10个分数:\n");  
    for(i = 0; i < 10; i++) {  
        scanf("%f", &score[i]);  
    }  
    printf("\n");  
  
    aver = average(score); // 调用average函数  
    printf("平均分数是 %5.2f\n", aver);  
    return 0;  
}  
  
float average(float array[10]) { // 定义average函数  
    int i;  
    float aver, sum = array[0];  
    for(i = 1; i < 10; i++) {  
        sum = sum + array[i]; // 累加学生成绩  
    }  
    aver = sum / 10; // 计算平均值  
    return aver;  
}

?3.通过选择法来排序

zhuyi:

选择一个个元素并逐步排列

#include <stdio.h>  
  
void sort(int array[], int n) {  
    int i, j, temp;  
    for (i = 0; i < n-1; i++) {  
        for (j = i+1; j < n; j++) {  
            if (array[i] > array[j]) {  
                temp = array[i];  
                array[i] = array[j];  
                array[j] = temp;  
            }  
        }  
    }  
}  
  
int main() {  
    int a[10];  
    printf("Enter array elements (10 elements):\n");  
    for(int i=0; i<10; i++) {  
        scanf("%d", &a[i]);  
    }  
    sort(a, 10); // 调用sort函数,a为数组名  
    printf("The sorted array:\n");  
    for(int i=0; i<10; i++) {  
        printf("%d ", a[i]);  
    }  
    printf("\n");  
    return 0;  
}

Zhuyi:这边赋值的是数组

4.看来排序也做完了,接下来不知道要将什么:其实是冒泡排序

zhuyi:冒泡排序比较的就是临街元素的大小并且逐步缩小范围

气泡排序(Bubble Sort)是一种简单的排序算法。它的工作原理是:通过不断地遍历待排序的数列,比较相邻的两个元素,如果它们的顺序错误就交换它们,直到没有需要交换的元素为止。

以下是使用 C 语言实现气泡排序的示例代码:

c
#include <stdio.h>  
  
void bubbleSort(int arr[], int n) {  
    int i, j, temp;  
    for (i = 0; i < n-1; i++) {  
        for (j = 0; j < n-i-1; j++) {  
            if (arr[j] > arr[j+1]) {  
                temp = arr[j];  
                arr[j] = arr[j+1];  
                arr[j+1] = temp;  
            }  
        }  
    }  
}  
  
int main() {  
    int arr[] = {64, 34, 25, 12, 22, 11, 90};  
    int n = sizeof(arr)/sizeof(arr[0]);  
    bubbleSort(arr, n);  
    printf("Sorted array: \n");  
    for (int i=0; i < n; i++) {  
        printf("%d ", arr[i]);  
    }  
    return 0;  
}
在这个示例中,bubbleSort 函数接收一个整数数组和数组的大小作为参数,然后使用嵌套的 for 循环来遍历和排序数组。如果当前元素大于下一个元素,它们就交换位置。这个过程一直持续到整个数组被排序。在 main 函数中,我们定义了一个待排序的数组,并调用 bubbleSort 函数来对其进行排序。最后,我们打印出排序后的数组。

?5,二维数组

#include <stdio.h>  
  
void fun(int a[][3], int b[], int n) {  
    for (int i = 0; i < n; i++) {  
        b[i] = 0;  
        for (int j = 0; j < 3; j++) {  
            b[i] += a[i][j]; 
        }  
    }  
}  
  
int main() {  
    int a[3][3] = {{1, 2, 3}, {4, 5, 6}, {7, 8, 9}};  
    int b[3]; 
    fun(a, b, 3);  
    for (int i = 0; i < 3; i++) {  
        printf("%d ", b[i]);  
    }  
    return 0;  
}

cccc程序设计统计

1.统计类型题目

2。公示类型题目

3、考察基础知识点类型

cccc例题表示

1、

avaGirl开始学习C语言程序设计了,当她学到数据表示的时候知道了两个数相加有时候是会溢出的,这让她明白了东方不败有时候会爱上令狐冲没有什么好稀奇的。
javaGirl总是会胡思乱想,虽然知道了有溢出这回事,但是她还想准确地知道两个64位无符号整数相加的时候是否会溢出。

输入格式:

首先一个整数t(t <= 500)代表数据组数。
每组测试数据包含两个64位无符号整数a和b。

输出格式:

如果两数相加溢出了,输出1。
否则输出0.

输入样例:

5
1 18446744073709551615
3 18446744073709551615
222 22222
0 18446744073709551615
565328238827302101 92165582197

输出样例:

1
1
0
0
0

#include <stdio.h>  
  
int main() {  
    int t;  
    scanf("%d", &t);  
    while (t--) {  
        unsigned long long a, b;  
        scanf("%llu %llu", &a, &b);  
        if (a + b < a || a + b < b) {  
            printf("1\n");  
        } else {  
            printf("0\n");  
        }  
    }  
    return 0;  
}

2023年12月23日08:24:08段错误的C++有什么办法呢

小葵花妈妈课堂

简单的描述C语言中格式符%g的用法
%g是一个很好用的格式符,在很多时候可以方便我们。
在输出的时候我们使用%g会有什么样的奇特用法呢,比如我们想要输出一个12.3,但是如果你选择使用%f作为格式符,就会输出12.300000。但是很多时候我们只想要打印出12.3,这个时候可以选择%g进行格式化,输出结果就会变成12.3。它将后面无用的0全部舍去了,可以在很多时候满足题目的要求。

举个例子
12.3+12.7如果使用%f输出,你将会得到25.000000,而有的时候你并不想要小数点末尾这么多的0,你可能会选择强制转换成int类型,但是这样子会显得有点繁琐,这个时候%g的妙用就体现出来了,使用%g格式符输出之后,直接得到25了,它会自动将小数点后面没用的0过滤掉,这个设置就显得十分人性化了。而且小数点后面的有效数字也不会省略掉,这个格式符简直好用到爆!

再看看维基百科是怎么解释这个格式符的
'g’使用小写字母,'G’使用大写字母。小数点右侧的尾数0不被显示;显示小数点仅当输出的小数部分不为0。

真的是言简意赅。

#include <stdio.h>
int main(){
? ? printf("%f",12.3);
? ? printf("%g",12.3);
? ? printf("%f",12.3+12.7);
? ? printf("%d",int(12.3+12.7))
? ? printf("%g",12.3+12.7);
? ? return 0;
}
1
2
3
4
5
6
7
8
9
运行结果:

————————————————
版权声明:本文为CSDN博主「桃花er」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_45930241/article/details/108587822

函数声明是放在主程序前面的,要求是定义的函数在主函数后面

文章来源:https://blog.csdn.net/leke2003/article/details/135164332
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。