C中对数组的一些操作

#include <stdio.h>
#include <string.h>
#define PI 3.14159
#define MAX 21
void exchange()
{
    char a[20]="acdeklm"; //声明一个长度为20的字符型数组
    char s;//定义一个字符变量s
    long i,na;//定义两个int型变量一个为i,一个为na
    scanf("%c",&s);//输入一个新字符
    na=strlen(a);//测量字符串的长度
    for (i=na-1; i>=0; i--) {//将数组中的元素遍历一遍
        if (a[i]>s)//若a的ascii值大于新字符为真则将a向后移一位
            a[i+1]=a[i];
        else break;//否则退出循环
    }
    a[i+1]=s;//将新字符放在i+1的位置
    na++;//将字符数组长度加一
    a[na]='\0';//将字符数组最后一位放上'\0'
    printf("%s",a);
    printf("\n");
}
void exchange1()
{
    char a[20]="acdeklm";//声明一个长度20字符型数组
    char s[5]="tfbx"; //声明长度w为5的字符数组
    long i,k,na,ns;//声明4个long型变量
    na=strlen(a);//测字符串的长度
    ns=strlen(s);
    for (k=0; k<ns; k++) {
        for (i=na-1; i>=0; i--)
            if (a[i]>s[k])
                a[i+1]=a[i];
            else break;
            a[i+1]=s[k];
            na++;
    }
    a[na]='\0';
    printf("%s\n",a);
}
void circle_area()
{
    float r,c,a;
    scanf("%f",&r);
    c=2*r*PI;
    a=r*r*PI;
    printf("周长:%f\n",c);
    printf("面积:%f\n",a);
}
void exchange2(){
    int a[10]={3,7,8,10,15,20,30};
    int x,i,n=6;
    printf("input a number:");
    scanf("%d",&x);
    for (i=n; i>=0; i--)
        if(a[i]>x)
            a[i+1]=a[i];
        else
            break;
    a[i+1]=x;
    n++;
    for (i=0; i<=n; i++)//把新数组遍历一遍
        printf("%3d",a[i]);
}
void Bubble_sort()
{
    /*int a[MAX],i,j,k;
    for (i=1; i<MAX;i++)
        scanf("%d",&a[i]); //给数组a赋初始值
    for (k=1; k<MAX-1; k++)
        for (i=MAX-1;i<MAX-k ;i++ )
            if (a[i]<a[i+1]) {
                j=a[i+1];
                a[i]=a[i+1];
                a[i+1]=j;
            }
    for (i=1; i<MAX; i++)
        printf((i%5)?"%8d":"%8d\n",a[i]);
    printf("\n");*/
}
void Descending_order()
{
    int a[5]={4,6,2,0,7};
    int i,j,m;
    for (i=1; i<5; i++) {
        m=a[i];
        j=i-1;//前移
        while (j>=0&&m>a[j]) {
            a[j+1]=a[j];
            j--;
        }
        a[j+1]=m;
    }
    for (i=0; i<5; i++) {//重排
        printf("%d,",a[i]);
        printf("\n");
    }
}
void ascending(){
    int a[4]={3,7,9,10};
    int b[3]={2,6,8};
    int c[10],i,j,k;
    for (i=0,j=0,k=0; i<4&&j<3; k++) {
        if (a[i]>b[j]) {
            c[k]=b[j];j++;
        }
        else
        {
            c[k]=a[i];i++;
        }
    }
    while (i<4) {
        c[k]=a[i];i++;k++;
    }
    while (j<3) {
        c[k]=b[j];j++;k++;
    }
    for (i=0; i<k; i++) {
        printf("%d\t",c[i]);
    }
}
void triangle(){
    int row,col,a[10]={1};
    printf("\n%6d\n",1);
    for (row=1; row<10; row++) {
        a[row]=1;
        for (col=row-1; col>0; col--)
            a[col]=a[col-1]+a[col];
        for (col=0; col<=row; col++)
            printf("%6d",a[col]);
        printf("\n");
    }
}
void fuzzy(){
    int a[3][3],i,j,n=3;
    for (i=0; i<3; i++)
        for (j=0; j<3; j++)
            a[i][j]=n++;
    for (i=0; i<3; i++) {
        for (j=0; j<=i; j++) {
            printf("%3d",a[i][j]);
            printf("\n");
        }
    }
}
void fuzzy1(){
    int a[20],c[5],i,n=0,x;
    scanf("%d",&x);
    while (x!=-1) {
        if (x>=0&&x<=4)
            a[n++]=x;
            scanf("%d",&x);
    }
    for (i=0; i<5; i++)
        c[i]=0;
        for (i=0; i<n;i++)
            c[a[i]]++;
        printf("The result is:\n");
    for (i=0; i<5; i++)
        printf("%4d",c[i]);
    printf("\n");

}
int main(int argc, const char * argv[]) {
    exchange();  //数组中插入字符
    printf("\n");
    exchange1();  //数组中插入数组
    printf("\n");
    circle_area(); //计算圆的面积
    printf("\n");
    exchange2();//数组中插入一个新的数字
    printf("\n");
    Bubble_sort();//利用冒泡排序对数组的值由大到小进行排序
    printf("\n");
    Descending_order();//对一个数组进行降序排序
    printf("\n");
    ascending();//把两个按升序排列的数组合并成一个按升序排列的数组
    printf("\n");
    triangle();//杨辉三角形
    printf("\n");
    fuzzy();//打印二维数组的下三角
    printf("\n");
    fuzzy1();
    return 0;
}

output:

y
acdeklmy

abcdefklmtx

6
周长:37.699081
面积:113.097237

input a number:6
  3  6  7  8 10 15 20 30

7,
6,
4,
2,
0,

2	3	6	7	8	9	10	

     1
     1     1
     1     2     1
     1     3     3     1
     1     4     6     4     1
     1     5    10    10     5     1
     1     6    15    20    15     6     1
     1     7    21    35    35    21     7     1
     1     8    28    56    70    56    28     8     1
     1     9    36    84   126   126    84    36     9     1

  3
  6
  7
  9
 10
 11

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GOD FOR JAVA

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值