我从简单到难,一起走上漫漫刷题路!
我会持续在我的博客中更新我每天刷题的内容!
相互交流!
大家一键三连,多多关注!
这是今天我给大家带来的题!以后难度逐渐加深!
1.交换数组
将数组A中的内容和数组B中的内容进行交换。(数组一样大)
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int i; int temp[4]; int str1[4] = { 1,2,3,4 }; int str2[4] = { 5,6,7,8 }; for (i = 0; i <= 3; i++) { temp[i] = str1[i]; str1[i] = str2[i]; str2[i] = temp[i]; } for (i = 0; i <= 3; i++) { printf("%d ", str1[i]); } printf("\n"); for (i = 0; i <= 3; i++) { printf("%d ", str2[i]); } return 0; }
2.数组操作
创建一个整形数组,完成对数组的操作
- 实现函数init() 初始化数组为全0
- 实现print() 打印数组的每个元素
- 实现reverse() 函数完成数组元素的逆置。
要求:自己设计以上函数的参数,返回值。
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void init(int arr[], int sz) { int i = 0; for (i = 0; i < sz; i++) { arr[i] = 0; } } void print(int arr[], int sz) { int i = 0; for (i = 0; i < sz; i++) { printf("%d ", arr[i]); } printf("\n"); } void reverse(int arr[], int sz) { int left = 0; int right = sz - 1; while (left < right) { int tmp = arr[left]; arr[left] = arr[right]; arr[right] = tmp; left++; right--; } } int main() { int arr[] = { 1,2,3,4,5,6,7,8,9,0 }; int sz = sizeof(arr) / sizeof(arr[0]); print(arr, sz); reverse(arr, sz); print(arr, sz); init(arr, sz); print(arr, sz); return 0; }
3.冒泡排序
实现一个对整形数组的冒泡排序
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void bubble_sort(int arr[], int sz) { int flag = 0; for (int i = 0; i < sz - 1; i++) { for (int j = 0; j < sz - 1 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; flag = 1; } } if (flag == 0) { break; } } } int main() { int arr[] = { 9,8,7,4,5,6,1,2,3,0 }; int sz = sizeof(arr) / sizeof(arr[0]); bubble_sort(arr, sz); for (int i = 0; i < 10; i++) { printf("%d ", arr[i]); } return 0; }
4.学生基本信息输入输出
描述
依次输入一个学生的学号,以及3科(C语言,数学,英语)成绩,在屏幕上输出该学生的学号,3科成绩(注:输出成绩时需进行四舍五入且保留2位小数)。
数据范围:学号满足 1≤n≤20000000 ,各科成绩使用百分制,且不可能出现负数
输入描述:
学号以及3科成绩,学号和成绩之间用英文分号隔开,成绩之间用英文逗号隔开。
输出描述:
学号,3科成绩,输出格式详见输出样例。
#include <stdio.h> int main() { double m,k,p; int d; scanf("%d;%lf,%lf,%lf",&d,&m,&k,&p); if(m>=0&&(int)m<m) m=m+0.001; printf("The each subject score of No. %d is %.2lf, %.2lf, %.2lf.",d,m,k,p); return 0; }
5.牛牛的空格分隔
描述
牛牛从键盘读入一个字符,一个整数,一个单精度浮点数,按顺序输出它们,并用空格分隔,浮点数保留 6 位小数。
输入描述:
读入一个字符,一个整数,一个单精度浮点数用换行符隔开,
输出描述:
按顺序输出字符、整数、单精度浮点数,用空格分隔,浮点数保留 6 位小数
#include <stdio.h> int main() { char a; int b; float c; scanf("%c%d%f",&a,&b,&c); printf("%c %d %.6f",a,b,c); return 0; }
6.交换两个变量(不创建临时变量)
不允许创建临时变量,交换两个整数的内容
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int a = 10; int b = 20; a = a ^ b; b = a ^ b; a = a ^ b; printf("a=%d b=%d\n", a, b); return 0; }
7.二进制中1的个数
输入一个整数 n ,输出该数32位二进制表示中1的个数。其中负数用补码表示。
数据范围:−231<=n<=231−1- 2^{31} <= n <= 2^{31}-1−231<=n<=231−1
即范围为:−2147483648<=n<=2147483647
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> int main() { int num = 0; int i = 0; int count = 0; scanf(" %d", &num); for (i = 0; i < 32; i++) { if (num & (1 << i)) count++; } printf("二进制中1的个数:%d", count); return 0; }
8.打印整数二进制的奇数位和偶数位
获取一个整数二进制序列中所有的偶数位和奇数位,分别打印出二进制序列
#include <stdio.h> int main() { int m = 0; scanf("%d", &m); int i = 0; for (i = 31; i >= 1; i -= 2) { printf("%d ", (m >> i) & 1); } printf("\n"); for (i = 30; i >= 0; i -= 2) { printf("%d ", (m >> i) & 1); } return 0; }
9.两个整数二进制位不同个数
输入两个整数,求两个整数二进制格式有多少个位不同
#include<stdio.h> int num(int m,int n) { int count=0; int t=m^n; while(t) { t=t&(t-1); count++; } return count; } int main() { int m=0; int n=0; scanf("%d %d",&m,&n); int ret=num(m,n); printf("%d\n",ret); return 0; }