1.
编写程序利用数组实现将一个数插入到一个有序的数列中,要求插入后仍有序。
C语言代码
#include <stdio.h>
int main(){
int n = 0;
printf("请输入有序数组元素的个数:\n");
scanf("%d",&n);
//定义并输入数组
int num[n];
printf("请输入有序数组的元素:\n");
for (int i = 0; i < n; i++) {
scanf("%d",&num[i]);
}
//定义要插入的数
int sum = 0;
printf("请输入要插入的数\n");
scanf("%d",&sum);
// 找到要插入的位置并插入数字
int j = n - 1;
while (j >= 0 && num[j] > sum) {
num[j + 1] = num[j];
j--;
}
num[j + 1] = sum;
//打印插入后的元素
printf("插入后的数组元素为:\n");
for (int i = 0; i < n+1; ++i) {
printf("%d ",num[i]);
}
return 0;
}
2.
编写程序,输入一个 4 行 4 列的矩阵,分别求出主对角元素之和以及上三角元素之和。
C语言代码
#include <stdio.h>
int main(){
//定义一个4×4的数组
int nums[4][4];
//输入数组元素
printf("请输入数组元素:\n");
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) {
scanf("%d",&nums[i][j]);
}
}
//求主对角元素之和
int sum1 = 0;
for (int i = 0; i < 4; ++i) {
for (int j = 0; j < 4; ++j) {
if(i == j){
sum1 += nums[i][j];
}
}
}
//求上三角元素之和
int sum2 = 0;
for (int i = 0; i < 4; ++i) {
for (int j = i; j < 4; ++j) {
sum2 += nums[i][j];
}
}
printf("主对角元素之和为:%d\n",sum1);
printf("上三角元素之和为: %d\n",sum2);
return 0;
}
3.
编写程序,输入一行字符串,将该字符串中所有的大写字母改为小写字母后输出。
C语言代码
#include <stdio.h>
int main() {
char str[100];
printf("请输入一行字符串: ");
fgets(str, sizeof(str), stdin);
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] >= 'A' && str[i] <= 'Z') {
str[i] = str[i] + 32;
}
}
printf("转换后的字符串为: %s\n", str);
return 0;
4.
编写程序实现将十六进制字符串转换为十进制整数。输入一个正整数repeat (0<repeat<10),做repeat次下列运算:输入一个以回车结束的字符串(少于80个字符),滤去所有的非十六进制字符后,组成一个新字符串(十六进制形式),然后将其转换为十进制数后输出。
输入输出示例:括号内为说明
输入:
2 (repeat=2)
10
+A
输出:
Dec = 16
Dec = 10
C语言代码
#include <stdio.h>
#include <string.h>
#include <ctype.h>
// 函数声明
int hex_to_decimal(const char *hex_str);
int main() {
int repeat;
printf("请输入repeat的值(0<repeat<10):");
scanf("%d", &repeat);
getchar(); // 吸收换行符
// 循环repeat次
for (int i = 0; i < repeat; i++) {
char hex_str[81]; // 假设输入的字符串少于80个字符
printf("请输入十六进制字符串:");
fgets(hex_str, 81, stdin); // 使用fgets读取一行输入,包括空格
// 去除fgets读取的换行符
size_t len = strlen(hex_str);
if(len > 0 && hex_str[len - 1] == '\n') {
hex_str[len - 1] = '\0';
}
// 调用函数转换并输出结果
int dec = hex_to_decimal(hex_str);
printf("Dec = %d\n", dec);
}
return 0;
}
// 将十六进制字符串转换为十进制整数的函数
int hex_to_decimal(const char *hex_str) {
int decimal = 0;
while (*hex_str) {
// 检查字符是否为十六进制字符
if (isdigit(*hex_str)) {
decimal = decimal * 16 + (*hex_str - '0');
} else if (isxdigit(*hex_str)) {
decimal = decimal * 16 + tolower(*hex_str) - 'a' + 10;
} else {
// 如果遇到非十六进制字符,跳过该字符
hex_str++;
continue;
}
hex_str++;
}
return decimal;
}