c语言作业day7

题一、 

1、定义一个一维数组 int a= [1,2,3,4,5,6,7,8]

(1) 求一维数组的长度

(2) 并将所有奇数下标元素自乘 3,偶数下标元素自增 输出变化后的数组

#include <stdio.h>

int main()
{
    int a[] = { 1,2,3,4,5,6,7,8 };
    int i, sz = sizeof(a) / sizeof(int);
    printf("长度%d\n", sz);
    for (i = 0;i < sz;i++)
    {
        if (i % 2 != 0)
        {
            a[i] += a[i];
            
        }
        else
        {
            a[i] *= a[i];
        }
    }
    printf("变化后的数组:");
    for (i=0;i<sz;i++)
    {
        printf("%d ",a[i]);
    }
}

 题二、

 定义一个整形数组,容量5,终端输入五个数存在数组中,然后在到终端输入一个数a,判断a是否存在于我的这个数组,存在打印存在,不存在打印不存在,并计数。

#include <stdio.h>

int main()
{
    int nums[5], i, num, j=0;
    printf("输入五个数:");
    while (1)
    {
        scanf("%d", &nums[i]);
        i++;
        if (getchar() == '\n')
        {
            break;
        }
    }
    printf("输入一个数:");
    scanf("%d", &num);
    for (i = 0;i < 5;i++)
    {
        if (num == nums[i])
        {
            j = 1;
        }
    }
    if (j)
    {
        printf("存在");
    }
    else
    {
        printf("不存在");
    }
}

 for循环

题三、

 整形数组逆置,用指针实现。

#include <stdio.h>
void main()
{
    int* p;
    int nums[] = { 0,1,2,3,4,5,6,7,8,9 };
    int i, j, t;
    int sz = sizeof(nums) / sizeof(int);
    for (i = 0;i < sz / 2;i++)
    {
        t = *(nums + i);
        *(nums + i) = *(nums + sz - 1 - i);
        *(nums + sz - 1 - i) = t;
    }
    for (p = nums;p < nums + sz;p++)
    {
        printf("%d ", *p);
    }
}

 通过中间变量进行倒置。

题四、

 求[3,100]中的质数

#include<stdio.h>
int main() {
    int i, j;
    int k, l;
    int nums[100] = { 0 };
    for (i = 3;i <= 100;i++)
    {
        for (j = 2;j < i;j++)
        {
            if (i % j == 0)
            {
                break;
            }
        }
        if (i == j)
        {
            for (k = 0;k < sizeof(nums) / sizeof(int);k++)
            {
                if (nums[k] == 0)
                {
                    nums[k] = i;
                    break;
                }
            }
        }
    }
    printf("[3,100]中的质数有:\n");
    for (i = 0;i < sizeof(nums) / sizeof(int); i++)
    {
        if (nums[i] != 0)
        {
            printf("%d ", nums[i]);
        }
    }
}

 因为存储,代码长度较长。

题五、

删除字符串中的重复字符,只使用一个数组,尝试用指针实现。

#include <stdio.h>
#include <string.h>

int main()
{
    int i, j;
    int flag = 0;
    char original_str[] = "aabbccdd";
    char* p = original_str;
    int sz = strlen(original_str);
    for (i = 0;i < sz;i++)
    {
        for (j = 0;j < sz;j++)
        {
            if (*(p + i) == *(p + j) && i!=j)
            {
                for (int k = i;k < sz;k++)
                {
                    *(p+k)=*(p+k+1);
                }
            }
        }
    }
    printf(original_str);
}

 通过后面的不同字符替换前面的字符,实现删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值