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;
}
代码都是本人自己写的,如果有错误或者更好的方法欢迎指正!