您的位置:首页 > 编程语言 > C语言/C++

C语言使用数组解决简单问题

2020-07-16 05:13 260 查看
  • 一维数组

    数组给数组赋值
    1、逐个元素赋值法

    a[0]=b[0];
    a[1]=b[1];
    a[2]=b[2]
    ....

    2、使用for循环赋值

    int i;
    for(i=0;i<N;i++){
    a[i]=b[i];
    }
  • 生成随机数,将随机数放到一个数组中,使用for循环求出数组中生成的随机数的最值和最值在数组中的索引值
    用N 10定义一个容量为10的数组
    使用for循环给数组赋值
    使用#include<stdlib.h> 和 rand()%101取得从0到100的整数
    再使用for循环嵌套if语句进行交换取得最值
    定义m,n得到最值得索引值

    #include<stdio.h>
    #include<stdlib.h>
    #define N 10
    int main(){
    int a[N];
    int max,min;
    int i,j;
    int m,n;
    for(i=0;i<N;i++){   //赋值
    a[i]=rand()%101;
    printf("%4d",a[i]);
    }
    printf("\n");
    for(j=1;j<N;j++){
    if(a[0]>a[j]){
    min=a[j];
    m=j;
    a[j]=a[0];
    a[0]=min;
    }
    if(a[9]<a[j]){
    max=a[j];
    n=j;
    a[j]=a[0];
    a[0]=a[j];
    }
    }
    printf("最小值为%d\n",min);
    printf("最小值的索引值%d\n",m);
    printf("最大值为%d\n",max);
    printf("最大值的索引值%d\n",n);
    return 0;
    }
  • 排序法总结

    选择排序法
    使用第二个for循环嵌套for循环
    所嵌套的for循环将最小的值赋给a[0]
    外层for循环将除去a[0]以外的最小值赋值给a[1]

    依次执行下去使原数组变成从小到大排列的数组
#include<stdio.h>
#include<stdlib.h>
#define N 10
int main(){
int a[N];
int i,j,t;
printf("排序前的数组:");
for(i=0;i<N;i++){
a[i]=rand()%101;
printf("%4d",a[i]);
}
printf("\n");
printf("排序后的数组:");
for(i=0;i<N;i++){
j=i;
for(j;j<N;j++){
if(a[i]>a[j]){
t=a[i];
a[i]=a[j];
a[j]=t;
}
}
printf("%4d",a[i]);
}
return 0;
}
  • 冒泡排序法
    使用双重for循环嵌套if语句
    在嵌套的for循环嵌套if语句引入变量 i 实现数组中所有不满足相邻两个数中前一个数小于后一个数就交换 接着再在外层加入for循环完成N次交换使得最小值在a[0]的位置最大值在a[9]的位置
    最后使用一个for循环遍历数组
#include<stdio.h>
#include<stdlib.h>
#define N 10
int main(){
int a[N];
int i,j,t;
for(i=0;i<N;i++){
a[i]=rand()%101;
printf("%4d",a[i]);
}
printf("\n");
for(j=0;j<N;j++){
for(i=0;i<N;i++){
if(a[i]>a[i+1]){
t=a[i];
a[i]=a[i+1];
a[i+1]=t;
}
}
}
for(i=0;i<N;i++){
printf("%4d",a[i]);
}
}

二维数组
a[i][j];定义一个i行j列的二维i数组
进行矩阵相加,相加的条件具有相同的行和列,实质是两个矩阵行列对应元素两两相加最后输出矩阵
前两个for循环给数组a[] b[]赋值 最后一个for循环将数组a[] b[]每个位置的和赋值给c[]

#include<stdio.h>
int main(){
int a[2][2];
int b[2][2];
int c[2][2];
int i,j;
for(i=0;i<2;i++){
for(j=0;j<2;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<2;i++){
for(j=0;j<2;j++){
scanf("%d",&b[i][j]);
}
}
for(i=0;i<2;i++){
for(j=0;j<2;j++){
c[i][j]=a[i][j]+b[i][j];
printf("%-2d",c[i][j]);
}
printf("\n");
}
return 0;
}

字符串数组
字符串数组内存占用 如:hello

h e l l o \0

总存在\0占位
字符串逆序输出

#include<stdio.h>
int main(){
char str[6]="hello";
int i=5;
for(i;i>=0;i--){
printf("%c",str[i]);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: