我从简单到难,一起走上漫漫刷题路!
我会持续在我的博客中更新我每天刷题的内容!
相互交流!
大家一键三连,多多关注!
这是今天我给大家带来的题!以后难度逐渐加深!
1.有序序列插入一个整数
描述
有一个有序数字序列,从小到大排序,将一个新输入的数插入到序列中,保证插入新数后,序列仍然是升序。
输入描述:
第一行输入一个整数N(0≤N≤50)。
第二行输入N个升序排列的整数,输入用空格分隔的N个整数。
第三行输入想要进行插入的一个整数。
输出描述:
输出为一行,N+1个有序排列的整数。
#include <stdio.h> #include <string.h> int main() { int n,i; scanf("%d",&n); int arr[n+1]; for(int i=0;i<n+1;i++) { scanf("%d",&arr[i]); } int num = arr[n]; i = n-1; while(arr[i]>num&&i>=0) { arr[i+1]=arr[i]; i--; } arr[i+1] = num; for(i=0;i<n+1;i++) { printf("%d ",arr[i]); } }
2.乘法口诀表
实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定
如:输入9,输出9*9口诀表,输出12,输出12*12的乘法口诀表。
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<math.h> int main() { int n = 0, m = 0, i = 0; scanf("%d", &i); for (n = 1; n <= i; n++) { for (m = 1; m <= n; m++) { printf("%d*%d=%d\t", m, n, m * n); } printf("\n"); } }
3.交换两个整数
实现一个函数来交换两个整数的内容。
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void exchange(int x, int y) { int temp = x; x = y; y = temp; printf("%d %d", x, y); } int main() { int a = 0, b = 0,x,y; scanf("%d%d", &a, &b); exchange(a, b); return 0; }
4.函数判断闰年
实现函数判断year是不是闰年。
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void panduan(int n) { if ((n % 4 == 0 && n % 100 != 0) || n % 400 == 0) printf("%d是闰年", n); else printf("%d不是闰年", n); } int main() { int n = 0; scanf("%d", &n); panduan(n); return 0; }
5.函数判断素数
实现一个函数,判断一个数是不是素数。
利用上面实现的函数打印100到200之间的素数。
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<math.h> int panduan(int n) { int i = 0; for (i = 2; i <= sqrt(n); i++) { if (n % i == 0) return 0; } return 1; } int main() { int n = 0, i = 0; scanf("%d", &n); if (panduan(n) == 0) printf("%d不是素数",n); else if(panduan(n) ==1) printf("%d是素数",n); return 0; }
6.序列中删除指定数字
描述
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。
数据范围:序列长度和序列中的值都满足 1≤n≤50
输入描述:
第一行输入一个整数(0≤N≤50)。
第二行输入N个整数,输入用空格分隔的N个整数。
第三行输入想要进行删除的一个整数。
输出描述:
输出为一行,删除指定数字之后的序列。
#include <stdio.h> int main() { int n = 0, x = 0; int arr[56] = {0}; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &arr[i]); scanf("%d", &x); for (int i = 0; i < n; i++) { if (arr[i] == x) { continue; } printf("%d ", arr[i]); } return 0; }
7.序列中整数去重
描述
输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。
输入描述:
输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数(范围1~5000),用空格分隔。
输出描述:
输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。
#include <stdio.h> int main() { int n = 0, num; scanf("%d", &n); int a[n], b[n]; int flag; int i, j; for (int i = 0; i < n; i++) { scanf("%d", &a[i]); } for (i = 0; i < n; i++) { flag = 1; for (j = 0; j <= num; j++) { if (a[i] == b[j]) { flag = 0; } } if (flag == 1) { b[num] = a[i]; num++; } } for (i = 0; i < num; i++) { printf("%d ", b[i]); } return 0; }
8.有序序列合并
描述
输入两个升序排列的序列,将两个序列合并为一个有序序列并输出。
数据范围:1≤n,m≤1000 , 序列中的值满足 0≤val≤30000
输入描述:
输入包含三行,
第一行包含两个正整数n, m,用空格分隔。n表示第二行第一个升序序列中数字的个数,m表示第三行第二个升序序列中数字的个数。
第二行包含n个整数,用空格分隔。
第三行包含m个整数,用空格分隔。
输出描述:
输出为一行,输出长度为n+m的升序序列,即长度为n的升序序列和长度为m的升序序列中的元素重新进行升序序列排列合并。
#include <stdio.h> void swap(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } int main() { int n, m; scanf("%d%d", &n, &m); int c = m + n; int a[c]; for (int i = 0; i < c; i++) { scanf("%d", &a[i]); } //排序 for (int i = 0; i < c - 1; i++) { for (int j = 0; j < c - 1 - i; j++) { if (a[j] > a[j + 1]) { swap(&a[j], &a[j + 1]); } } } for (int i = 0; i < c; i++) { printf("%d ", a[i]); } return 0; }