已有一个已正序排好的9个元素的数组,今输入一个数要求按原来排序的规律将它插入数组中。
第一行,原始数列。 第二行,需要插入的数字。
排序后的数列
1 7 8 17 23 24 59 62 101
50
1
7
8
17
23
24
50
59
62
101
#define _CRT_SECURE_NO_WARNINGS
#include
void insert_sort(int arr[], int cr) {
//for (int i = 0; i <= 9; i++) {
// if (arr[i]
// for (int j = 9; j > i+1; j--) {
// arr[j]=arr[j-1];
// //printf("%d ", arr[j]);
// }
// arr[i+1] = cr;
// }
//}
int i;
for (i = 9 - 1; (i >= 0 && arr[i] > cr); i--) {
arr[i + 1] = arr[i]; // 向后移动元素
}
arr[i + 1] = cr;
}
void print_arr(int arr[], int n) {
for (int i = 0; i <= 9; i++) {
printf("%d\n", arr[i]);
}
}
int main() {
int arr[10000];
int n = 9;
int cr;
for (int i = 0; i < 9; i++) { // 输入 9 个排好序的整数
scanf("%d", &arr[i]);
}
scanf("\n%d", &cr);
insert_sort(arr, cr);
print_arr(arr, n);
return 0;
}
时间限制: 2s 内存限制: 192MB 提交: 62472 解决: 40002
输入10个数字,然后逆序输出。
十个整数
逆序输出,空格分开
1 2 3 4 5 6 7 8 9 0
0 9 8 7 6 5 4 3 2 1
#define _CRT_SECURE_NO_WARNINGS
#include
int main(){
int a[10];
int i;
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
for (i = 9; i >= 0; i--) {
printf("%d ", a[i]);
}
return 0;
}
求方程 的根,用三个函数分别求当b^2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。
a b c
x1=? x2=?
4 1 1
x1=-0.125+0.484i x2=-0.125-0.484i
#define _CRT_SECURE_NO_WARNINGS // 禁用安全警告
#include // 包含标准输入输出库
#include // 包含数学函数库
void two(double a, double b, double delta, double* x1, double* x2) {// 两个实数根
*x1 = (-b + sqrt(delta)) / (2 * a);
*x2 = (-b - sqrt(delta)) / (2 * a);
}
void one(double a, double b, double* x1) {// 一个实数根
*x1 = (-b) / (2 * a);
}
void none(double a, double b, double delta, double* x1, double* x2) {// 两个虚数根
*x1 = -b / (2 * a); // 计算实部
*x2 = (sqrt(-delta)) / (2 * a); // 计算虚部
}
int main() {
double delta; // 判别式
double a, b, c; // 方程系数
double x1, x2; // 根
scanf("%lf %lf %lf", &a, &b, &c);
delta = b * b - 4 * a * c;// 计算判别式
if (delta > 0) {
two(a, b, delta, &x1, &x2);
printf("x1=%.3lf x2=%.3lf", x1, x2);
}
if (delta == 0) {
one(a, b, &x1);
printf("x1=%.3lf x2=%.3lf", x1, x1);
}
if (delta < 0) {
none(a, b, delta, &x1, &x2);
printf("x1=%.3lf+%.3lfi ", x1, x2);
printf("x2=%.3lf-%.3lfi \n", x1, x2);
}
return 0;
}
①分别求出它是几位数;
②分别输出每一位数字;
③按逆序输出各位数字,例如原数为321,应输出123。
#define _CRT_SECURE_NO_WARNINGS
#include
int main() {
int num, temp;
printf("请输入一个不多于5位的正整数: ");
scanf("%d", &num);
// 判断位数
int digits = 0;
temp = num;
while (temp > 0) {
temp /= 10;
digits++;
}
printf("它是%d位数\n", digits);
// 输出每一位数字
int divisor = 1;
for (int i = 0; i < digits - 1; i++) {
divisor *= 10;
}
printf("每位数字为: ");
int temp1 = num;
for (int i = 0; i < digits; i++) {
int digit = temp1 / divisor;
printf("%d ", digit);
temp1 %= divisor;
divisor /= 10;
}
printf("\n");
// 按逆序输出各位数字
printf("逆序输出为: ");
/*while (digits > 0) {
printf("%d", num % 10);
num /= 10;
digits--;
}*/
for (int i = 0; i < digits; i++){
printf("%d", num % 10);
num /= 10;
}
printf("\n");
return 0;
}
用选择法对10个整数从小到大排序。
输入10个无序的数字
排序好的10个整数
4 85 3 234 45 345 345 122 30 12
3
4
12
30
45
85
122
234
345
345
#define _CRT_SECURE_NO_WARNINGS
#include
void selection_sort(int arr[], int n) {
int i, j, minIndex, temp;
// 遍历整个数组
for (i = 0; i < n - 1; i++) {
minIndex = i; // 假设当前元素是最小的
// 在未排序部分中找到最小元素
for (j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j; // 更新最小元素的索引
}
}
// 如果 minIndex 发生变化,则交换最小元素与当前元素
if (minIndex != i) {
temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
void print_array(int arr[], int n) {
for (int i = 0; i < n; i++) {
printf("%d\n", arr[i]);
}
printf("\n");
}
int main() {
int arr[10];
int n = 10;
for (int i = 0; i < n; i++) { // 输入 10 个整数
scanf("%d", &arr[i]);
}
selection_sort(arr, n); // 使用选择排序进行排序
print_array(arr, n); // 输出排序后的数组
return 0;
}
功能:对输入的整数数组使用选择排序法进行从小到大排序。
#define _CRT_SECURE_NO_WARNINGS
#include
// 选择排序函数
void selectionSort(int arr[], int n) {
for (int i = 0; i < n - 1; i++) {
int minIndex = i; // 假设当前元素是最小值
// 在未排序部分查找最小值,也就是 和自己后面的数据进行比较
for (int j = i + 1; j < n; j++) {
if (arr[j] < arr[minIndex]) {
minIndex = j; // 更新最小值的位置
}
}
// 交换最小值到已排序部分的末尾
if (minIndex != i) { //检查i是否改变,改变的就交换
int temp = arr[i];
arr[i] = arr[minIndex];
arr[minIndex] = temp;
}
}
}
int main() {
int n;
printf("请输入要排序的整数个数:");
scanf("%d", &n);
int arr[100];
printf("请输入 %d 个整数:\n", n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 调用选择排序
selectionSort(arr, n);
printf("排序后的结果:\n");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
写一个函数,使给定的一个二维数组(3×3)转置,即行列互换。
一个3x3的矩阵
无
1 2 3
4 5 6
7 8 9
1 4 7
2 5 8
3 6 9
#define _CRT_SECURE_NO_WARNINGS
#include
void transpose(int arr[3][3]) {
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
printf("%d ", arr[j][i]);
}
printf("\n");
}
}
int main() {
int arr[3][3];
for(int i=0;i<3;i++){ //输入数据
for (int j = 0; j < 3; j++) {
scanf("%d", &arr[i][j]);
}
}
transpose(arr);
return 0;
}
写一函数,使输入的一个字符串按反序存放,在主函数中输入并输出反序后的字符串(不包含空格)。
一行字符
逆序后的字符串
123456abcdef
fedcba654321
#define _CRT_SECURE_NO_WARNINGS
#include
#include
// 定义一个函数来反转字符串
void reverseString(char str[]) {
int length = strlen(str);
int start = 0;
int end = length - 1;
char temp;
//while (start < end) {
// // 交换字符
// temp = str[start];
// str[start] = str[end];
// str[end] = temp;
// start++;
// end--;
//}
for (int i = length-1; i >=0; i--) {
printf("%c", str[i]);
}
}
int main() {
char str[100]; // 假设输入字符串的最大长度为99
printf("请输入一个字符串(不包含空格):");
scanf("%s", str); // 读取输入字符串
reverseString(str); // 调用反转函数
//printf("%s\n", str); // 输出反序后的字符串
return 0;
}
#include
#include
int main() {
int number = 12345;
char str[20]; // 确保数组足够大以容纳整数和终止符
// 将整数转换为字符串
sprintf(str, "%d", number);
// 计算字符串的长度
int length = strlen(str);
printf("The length of the integer %d is: %d\n", number, length);
return 0;
}
sprintf(str, "%d", number);
这句代码的作用是将整数 number
转换为字符串,并将结果存储在字符数组 str
中。
具体来说:
sprintf
是一个标准库函数,定义在
头文件中。它用于将格式化的数据写入字符串。str
是目标字符数组,用于存储转换后的字符串。"%d"
是格式说明符,表示将一个整数以十进制形式输出。number
是要被转换的整数。举个例子,如果 number
的值是 12345
,那么执行完这句代码后,str
的内容将是 "12345"
。