C语言简单编程题(思路+源码)

C语言简单编程题(思路+源码)【一】

题目一:
1.字符串的逆序(如abcdef–>fedcba)
思路:
首先我们用strlen()函数来获得字符串的长度,用left来表示下标为零的元素,用right来表示最后一个字符的下标,创建第三个变量,交换第一个和最后一个的元素,再left++,right–,后面的依次类推。
在这里插入图片描述
2.代码实现:

#include <stdio.h>
#include <string.h>
//题目1:
字符串的逆序(如abcdef-->fedcba)
void test(char* str)
{
	int len = strlen(str);
	char* left = str;
	char* right =str+len - 1;
	while(left<right)
	{
		char tmp;
		tmp = *left;
		*left = *right;
		*right = tmp;
		left++; right--;
	}
}

int main()
{
	char a[100] = { 0 };
	//scanf("%s", a);
	gets(a);
	test(a);
	printf("%s", a);


	return 0;
}

题目二:

**1. 计算求和:输入一个a和n的值,求a的前n项和。(Su=a+aa+aaa+aaaa+........)的前n项和)**

思路:假设a=2;则Su=2+22+222+2222+…,(22=2*10+2、222=22*10+2。)以此类推,后一项等于前一项乘10再加上2。
2.代码实现:

int main()
{
	int a = 0;
	int n = 0;
	int i = 0;
	int sum = 0;
	int ret = 0;
	scanf("%d%d", &a, &n);
	for (i = 0; i < n; i++)
	{
		ret = ret * 10 + a;
		sum += ret;
	}
	printf("%d\n", sum);
}

题目三

水仙花数:计算0-10000中的水仙花数并打印出来,如(153=1\^3+5\^3+3\^3)

1.思路:因为本题求的是0–10000的水仙花数,所以我们要先求出这个数的宽度(几位数)。
第一步:先确定一个数(i)的位数为多少位(n)。
第二步:计算i的各位数的n次方的和。
第三步:比较i和sum的值是否相等。

2.代码实现:

#include <math.h>
//计算0-10000中的水仙花数并打印出来,如(153=1^3+5^3+3^3)
int main()
{
	//计算水仙花数
	//1.先确定一个数(i)的位数为多少位(n)
	int i = 0;
	for (i = 0; i <= 10000; i++)
	{	
		int n = 1;
		int sum = 0;
		int tmp = i;
		while (tmp/= 10)
		{
			n++;
		}

	//2.计算i的各位数的n次方的和
		tmp = i;
		while (tmp)
		{
		sum += pow(tmp % 10, n);
		tmp/=10;
		}
	//3.比较i和sum的值是否相等
		if (i == sum)
		{
			printf("%d ", i);
		}
	}
}

题目四

输入一个整形数组,使得该数组的奇数都在数组的前半部分,偶数都在数组的后半部分,最后打印出该数组。

1.思路
第一步:从左边找偶数。
第二步:从右边找奇数。
第三步:元素交换。
2.代码实现

//  输入一个整形数组,使得该数组的奇数都在数组的前半部分,偶数都在数组的后半部分,最后打印出该数组。

void print(int a[], int sz)
{
	int i = 0;
	for (i = 0; i < sz; i++)
	{
		printf("%d ", a[i]);
	}
	printf("\n");
}

void test(int a[],int sz)
{
	int left = 0;
	int right = sz - 1;
	
	while(left<right)
	{
	//1、从左边找偶数
	while ( a[left]% 2 == 1)
	{
		left++;
	}
	//2、从右边找奇数
	while (a[right] % 2 == 0)
	{
		right--;
	}
	if(left<right)
	{ 
	//3、元素交换
	int tmp = a[left];
	a[left] = a[right];
	a[right] = tmp;
	}
	}
}
int main()
{
	int a[] = { 1,2,3,4,5,6,7,8,9,10 };
	int sz = sizeof(a) / sizeof(a[0]);
	
	test(a,sz);
	print(a, sz);
	return 0;
}

题目五

判断一个数是否为素数(素数的定义:只能被一和他本身整除的数)

代码实现

int main()
{
	int i = 0;
	int n;
	scanf("%d", &n);
	for (i = 2; i < n; i++)
	{
		if (n % i == 0)
			break;
	}
	if (i < n)
		printf("输入的值不是素数。");
	else
		printf("输入的值是素数。");
	return 0;
}

代码都是本人自己写的,如果有错误或者更好的方法欢迎指正!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值