【C语言】习题练手套餐

前言:

在此之前我们已经讲解了许多的C语言知识了,

在本章节为大家提供一些C语言的基础习题,在最后会给大家习题网址。

题目会由简到难

习题一

 

#include <stdio.h>

int main()
{
    int n;
    int sum = 0;
    int num_square = 0;  // 存储平方和部分 
    int num_linear = 0;   // 存储线性求和部分

    scanf("%d", &n);

    // 计算平方和部分 (注意这里应该是累加不是平方和)
    for (int i = 1; i <= (n * n); i++)
    {
        num_square += i;
    }

    // 计算线性求和部分 
    for (int i = 1; i <= n; i++)
    {
        num_linear += i;
    }

    sum = num_square + num_linear;
    printf("%d\n", sum);
    return 0;
}

 

习题二

 

#include<stdio.h>
int main()
{
	int n, m;
	scanf("%d %d", &n, &m);
    int max_product = -1; // 初始化最大乘积为-1

    for (int i = 0; i < n; i++)
    {
        int num;
        scanf("%d", &num); // 逐个读取数字

        int product = num * m; // 计算乘积

        if (product > max_product || max_product == -1)
        {
            max_product = product; // 更新最大值
        }
    }
        printf("%d", max_product);

        return 0;
}

 

习题三

 

#include <stdio.h>
#define MAX_SIZE 10000

int main() {
    int n, pos, val;
    int arr[MAX_SIZE +1]; // +1防止越界

    scanf("%d", &n);//可以输入几个整数
    for (int i=0; i<n; i++)
    {
        scanf("%d", &arr[i]);//输入整数
    }

    scanf("%d %d", &pos, &val);//输入位置,和要插入的数字

    if (n == MAX_SIZE)//判断是否越边界
    {
        printf("错误:表满不能插入。\n");
    } 

    else if (pos <1 || pos >n+1) 
    {
        printf("错误:插入位置不合法。\n");
    } 

    else
 {
        for (int j=n; j>=pos; j--) 
        {
            arr[j] = arr[j-1];//将每个位置的元素移动到其后一个位置,从而为 pos 位置腾出空间。
        }
        arr[pos-1] = val;
        n++;
 }

    for (int j=0; j<n; j++) 
    {
        printf("%d ", arr[j]);//输出结果
    }
    printf("\n");

    return 0;
}

 

 习题四

本题目与习题三的方法类似。

大家可以先自行计算。

 

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	int arr[10000];
	for (int i = 0;i < n;i++)
	{
		scanf("%d ", &arr[i]);
	}
	int x;
	scanf("%d", &x);
	if (x < 1 || x > n)
	{
		printf("错误:不存在这个元素。\n");
	}
	else 
	{
		// 执行删除操作(将后面的元素前移)
		for (int i = x - 1; i < n - 1; i++) 
		{
			arr[i] = arr[i + 1];
		}
		n--; // 数组长度减1
	}
	for (int i = 0; i < n; i++) 
	{
		printf("%d ", arr[i]);
	}

	return 0;


}

 

习题五

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

#define MAX_LENGTH 1000

int main() {
    char s[MAX_LENGTH + MAX_LENGTH + 1]; // s最多1000字符,t最多1000字符,再加结束符
    char t[MAX_LENGTH + MAX_LENGTH + 1];
    int pos;
    
    // 读取输入
    fgets(s, sizeof(s), stdin);
    s[strcspn(s, "\n")] = '\0'; // 去除换行符
    
    fgets(t, sizeof(t), stdin);
    t[strcspn(t, "\n")] = '\0'; // 去除换行符
    
    scanf("%d", &pos);
    
    int len_s = strlen(s);
    int len_t = strlen(t);
    
    // pos从1开始计数,转换为从0开始的下标
    int insert_pos = pos - 1;
    
    // (1)先检查长度是否超限
    if (len_s + len_t > MAX_LENGTH) {
        printf("错误:插入将导致字符串长度超限。\n");
        printf("%s\n", s);
        return 0;
    }
    
    // (2)检查pos是否有效
    if (insert_pos < 0 || insert_pos > len_s) {
        printf("错误:无效的插入位置。\n");
        printf("%s\n", s);
        return 0;
    }
    
    // (3)执行插入操作
    memmove(s + insert_pos + len_t, s + insert_pos, len_s - insert_pos + 1); // +1包含结束符
    memcpy(s + insert_pos, t, len_t);
    
    printf("%s\n", s);
    
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值