前言:
在此之前我们已经讲解了许多的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;
}