【C语言】初阶习题

目录

1.图案问题

2、时分秒转换

3、打印1-100之间所有3的倍数的数字

4、打印100~200之间的素数

 5、给定两个数,求这两个数的最大公约数

6、在屏幕上输出9*9乘法口诀表

7、计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果

8、二分查找

9、交换两个整数

10、strlen的模拟(递归实现)

11、递归方式实现打印一个整数的每一位

12、计算斐波那契数

13、字符串逆序(递归/非递归实现)

14、冒泡排序

15、交换两个变量(不创建临时变量)

16、统计二进制中1的个数

17、打印整数二进制的奇数位和偶数位

18、求两个数二进制中不同位的个数

19、矩阵元素

 20、进制转换​编辑

21、矩阵转置

22、序列中删除指定数字

23、使用指针打印数组内容

24、字符串逆序(多组输入) 

25、打印菱形 

26、打印水仙花数 

27、计算求和 

 28、喝汽水问题

29、上三角矩阵判定

30、矩阵相等判断 

31、调整奇数偶数顺序 

32、有序序列合并 

33、有序序列判断

34、strcpy实现

36、strlen实现 

37、逆置字符串的变种 


1.图案问题

#include <stdio.h>
int main()
{
	int n = 0;
	while (scanf("%d",&n) != EOF)
	{
		for (int i = 0; i < n; i++)
		{
			printf("*");
		}
		printf("\n");
	}
	return 0;
}

2、时分秒转换

#include <stdio.h>
int main()
{
	int sec = 0, s, m, h;
	scanf("%d", &sec);
	h = sec / 60 / 60;
	m = sec / 60 % 60;
	s = sec % 60;
	printf("%d %d %d\n", h, m, s);
	return 0;
}

3、打印1-100之间所有3的倍数的数字

#include <stdio.h>
int main()
{
	for (int i = 1; i <= 100; i++)
	{
		if (i % 3 == 0)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

4、打印100~200之间的素数

#include <stdio.h>
int main()
{
	for (int i = 100; i <= 200; i++)
	{
		for (int j = 2; j < i; j++)
		{
			if (i % j == 0)
			{
				break;
			}
			if (j == i-1)
			{
				printf("%d ", i);
			}

		}
		
	}
	return 0;
}

 5、给定两个数,求这两个数的最大公约数

#include <stdio.h>
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	int c = a % b;
	while (c)
	{
		a = b;
		b = c;
		c = a % b;
	}
	printf("%d\n", b);
	return 0;
}

6、在屏幕上输出9*9乘法口诀表

#include <stdio.h>
int main()
{
	for (int i = 1; i <= 9; i++)
	{
		for (int j = 1; j <= i; j++)
		{
			printf("%d*%d=%d\t", j, i, i * j);
		}
		printf("\n");
	}
	return 0;
}

7、计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值,打印出结果

#include <stdio.h>

int main()
{
	int flag = 1;
	double sum = 0.0;
	for (int i = 1; i <= 100; i++)
	{
		sum += flag * 1.0 / i;
		flag *= -1;
	}
	printf("%.2f\n", sum);
	return 0;
}


8、二分查找

#include <stdio.h>
int binary_search(int* arr, int sz,int key)
{
	int left = 0;
	int right = sz - 1;
	
	while (left<=right)
	{
		int mid = left + (right - left) / 2;
		if (arr[mid] > key)
		{
			right = mid - 1;
		}
		else if (arr[mid] < key)
		{
			left = mid + 1;
		}
		else
		{
			return mid;
		}
	}
}
int main()
{
	int arr[] = { 1,2,3,4,5,6,7 };
	int key = 5;
	int sz = sizeof(arr) / sizeof(arr[0]);
	int ret = binary_search(arr, sz,key);
	printf("下标为%d\n", ret);
	return 0;
}

9、交换两个整数

#include <stdio.h>
void swap(int* pa, int* pb)
{
	int tmp = *pa;
	*pa = *pb;
	*pb = tmp;
}
int main()
{
	int a, b;
	scanf("%d %d", &a, &b);
	swap(&a, &b);
	printf("%d %d\n", a, b);
	return 0;
}


10、strlen的模拟(递归实现)

#include <stdio.h>
int my_strlen(char* str)
{
	if (*str == '\0')
		return 0;
	else
		return 1 + my_strlen(str + 1);
}
int main()
{
	char arr[] = "abcdef";
	printf("%d\n", my_strlen(arr));
	return 0;
}


11、递归方式实现打印一个整数的每一位

#include <stdio.h>
Print(int a)
{
	if (a > 9)
	{
		Print(a/10);
	}
	printf("%d ", a%10);
}
int main()
{
	int a = 1234;
	Print(a);
	return 0;
}

12、计算斐波那契数

#include <stdio.h>
int fib(int a)
{
	if (a == 1 || a == 2)
	{
		return 1;
	}
	return fib(a - 1) + fib(a - 2);
}
int main()
{
	int a = 0;
	scanf("%d", &a);
	printf("%d\n", fib(a));
	return 0;
}


13、字符串逆序(递归/非递归实现)

递归:

#include <stdio.h>
#include <string.h>
void reverse(char* arr)
{
	int len = strlen(arr);
	char* tmp = *arr;
	*arr = *(arr + len - 1);
	
	*(arr + len - 1) = '\0';
	if (strlen(arr + 1) >= 2)
	{
		reverse(arr + 1);
	}
	*(arr + len - 1) = tmp;

}

int main()
{
	char arr[] = "abcdef";
	reverse(arr);
	printf("%s\n", arr);
	return 0;
}<
  • 18
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值