C语言入门练习(2022.7.27)

1.任意输入两个数和一个运算符, 输出运算结果。

在这里插入图片描述
void mySwitchTest()
{
printf("请输入±/其中一个字符\n");
char operator = getchar();// 运算符
int s1 = 0;
int s2 = 0;
printf(“请输入两个数:”);
scanf(“%d %d”, &s1, &s2);
int y;
int flag = 1;//执行±
/
switch (operator)
{
case ‘+’:
y = s1 + s2;
break;
case ‘-’:
y = s1 - s2;
break;
case ‘*’:
y = s1 * s2;
break;
case ‘/’:
y = s1 / s2;
break;
printf(“结果为:%d”, y);
default:
flag = 0;
}
if (flag)
{
printf(“结果为:%d”, y);
}
else
{
printf(“error!”);
}
}

2.switch case练习

void test727()
{
// 1.看程序,写结果。
int x = 1;
int y = 0;
switch (x)
{
case 1:
switch (y)
{
case 0:
printf(“1”);
break;
case 1:
printf(“2”);
break;
}
case 2:
printf(“3”);
break;
}
}

3.while与++

int x = 0;
while (x++ < 10000)
{}
printf(“x=%d”, x);

//结果为:10001,判断时候执行了

// n!
int product = 1;// 乘积
int num = 0;
printf(“请输入一个数,我将对该数求阶乘”);
scanf(“%d”,&num);
int i = 1;
while(i<=num)
{
product*=i;
++i;
}
printf(“阶乘为:%d”,product);

4.冒泡

void bubbling()
{

int arr[8] = {8, 7, 6, 5, 4, 3, 2, 1};
int len = sizeof(arr) / sizeof(arr[0]);// 个数

// //交换
// for (int i = 0; i < len - 1; ++i)
// {
//     for (int j = 0; j < len - i - 1; ++j)
//     {
//         if (arr[j] > arr[j + 1])
//         {
//             int temp = arr[j];
//             arr[j] = arr[j + 1];
//             arr[j + 1] = temp;
//         }
//     }
// }

//优化交换(当发现其中某次没有进行过一次交换,则证明顺序已排好,直接跳出去)

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

    for (int j = 0; j < len - i - 1; ++j)
    {
        if (arr[j] > arr[j + 1])
        {
            int temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
            flag = 0;
        }
    }

    if (flag)
    {
        break;//证明没有进入过交换,即顺序已经好了。
    }
}
printf("改变后数组为:");
for (int i = 0; i < len; ++i)
{
    printf("%d ", arr[i]);
}

}

5.七上八下,十五月亮十六⚪,颠三倒四。

// 7输出⬆,8输出⬇,15输出月亮16输出⚪,3输出4,4输出3
void sevenUPEightDown()
{
for (int i = 1; i <= 16; ++i)
{
if (3 == i)
{
printf("%d “, i + 1);
}
else if (4 == i)
{
printf(”%d ", i - 1);
}
else if (15 == i)
{
printf("月亮! “);
}
else if (16 == i)
{
// printf(”%c ",9);
printf("⚪ “);
}
else if (7 == i)
{
// printf(”%c ",24);
printf("⬆ “);
}
else if (8 == i)
{
// printf(”%c ",25);
printf("⬇ “);
}
else
{
printf(”%d ", i);
}
}
}

6.逢七过

void everySevenJump()
{
for (int i = 1; i < 101; ++i)
{
int j = i;

    if (0 == j % 7 || 7 == j % 10 || 7 == j / 10)// 七的倍数 || 尾数是7 || 十位是7
        //if ((7 == j % 10) || ((0 == j / 7) && j > 7) || (j % 7 == 0) || j / 10 ==7)// 第一次做,正确但乱
    {
        printf("过!\t");
        //多了个continue;导致70行没有换行。

    }
    else
    {
        printf("%d\t", i);
    }
    if (0 == i % 10)
    {
        printf("\n");
    }
}

}

7.给定一个数组int nums[6]={1,2,4,5,3},请输入插入的位置和值,将值插入到指定位置之前.

void test727Down()
{
// int nums[5] = {1, 2, 4, 5, 3};
// printf(“请输入插入位置和对应的值:”);
// int place = 0; // 位置
// int number = 0; // 值
// scanf(“%d %d”, &place, &number);
//
// // 创建一个比原数组长度大1的数组
// int arr[sizeof(nums) / sizeof(nums[0]) ] = {0};
//
//
// // 把原数组值存放进去
// for (int i = 0; i < sizeof(nums) / sizeof(nums[0]); ++i)
// {
// arr[i] = nums[i];
// }
//
// //后推并插入
// for (int i = sizeof(nums) / sizeof(nums[0]); i > place-1; --i)
// {
// if (i == place - 1)
// {
// arr[i] == number;
// }
// arr[i] = arr[i - 1];
// }
//
// // 打印新数组
// printf(“打印新数组”);
// for (int i = 0; i < sizeof(nums) / sizeof(nums[0]) + 1; ++i)
// {
// printf("%d ",arr[i]);
// }

int nums[6] = {1, 2, 4, 5, 3, 0};
printf("请输入插入位置和对应的值:");
int place = 0; // 位置
int number = 0; // 值
scanf("%d %d", &place, &number);

int len = sizeof(nums) / sizeof(nums[0]);
for (int i = len - 1; i > place - 1; --i)
{
    nums[i] = nums[i - 1];
}
nums[place - 1] = number;

// 打印新数组
printf("打印新数组");
for (int i = 0; i < len; ++i)
{
    printf("%d ", nums[i]);
}

}

8.给定一个数组 int nums[5]={1,2,4,5,3},请输入要删除的位置,

// 将数组中对应位置的值删除后,其余元素前移。

void deleteArray()
{
int nums[5] = {1, 2, 4, 5, 3};

printf("请输入删除位置:");
int place = 0; // 位置

scanf("%d", &place);

int len = sizeof(nums) / sizeof(nums[0]);// 5
for (int i = place - 1; i < len - 1; ++i)// // 错误:i<len-2
{
    nums[i] = nums[i + 1];
}


// 打印新数组
printf("打印新数组");
for (int i = 0; i < len - 1; ++i)
{
    printf("%d ", nums[i]);
}

}

9.输入一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那两个整数,并输出它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

void arraySum()
{
int arr[10] = {0};

int num = 0;
int target = 0;
printf("\n请输入目标值:");
scanf("%d", &target);
printf("请输入十位数");
// 9 1 11 12 13 14 15 16 17 18
// 7 3 2 8 11 12 13 14 15 16
for (int i = 0; i < 10; ++i)
{
    scanf("%d", &arr[i]);// 错误:arr[i] = scanf("%d",&num);
}

//打印
printf("打印:");
for (int i = 0; i < 10; ++i)
{
    printf("%d ", arr[i]);
}

int flag = 0;
for (int i = 0; i < 10 - 2; ++i)
{
    for (int j = i + 1; j < 10 - 1; ++j)
    {
        if (arr[i] + arr[j] == target)
        {
            printf("\n[%d,%d]\n", i, j);
            flag = 1;
        }
    }
}

if (flag == 0)
{
    printf("没找到!");
}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

爱宝07

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

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

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

打赏作者

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

抵扣说明:

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

余额充值