1、写一个函数,可以逆序一个字符串的内容。
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
void reverse(char* str)
{
int sz = 0;
sz = strlen(str);
char* left = str;
char* right = str+sz-1;
for (; left <= right;)
{
char temp = 0;
temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
int main()
{
char arr[256] = { 0 };
//scanf("%s", arr);//读取到空格停止
gets(arr);//读取输入一行的数组,不关注有无空格
//逆序函数
reverse(arr);
printf("arr:%s\n", arr);
return 0;
}
2、求sn = a+aa+aaa+aaaa+aaaaa的5项之和,其中a是一个数字。
int main()
{
int a = 0;
int n = 0;
scanf("%d%d", &a,&n);
int i = 0;
int ret = 0;
int sn = 0;
for (i = 0; i < n; i++)
{
ret = ret * 10 + a;
sn += ret;
}
printf("%d", sn);
return 0;
}
3、打印1—10000之间的自幂数(自幂数:它的每个位上的字的 n(位数)次幂之和等于它本身)。
#include <math.h>
int main()
{
int i = 0;
for (i = 0; i <= 10000; i++)
{
//判断是不是自幂数
//1.判断位数
int n = 1;
int tmp = i;
int sum = 0;
while (tmp /= 10)
{
n++;
}
//2.计算i的每位数的n次方之和
tmp = i;
while (tmp)
{
sum += pow(tmp % 10,n);
tmp /= 10;
}
//3.比较
if (i == sum)
{
printf("%d ", i);
}
}
return 0;
}
4.打印菱形。
int main()
{
int line = 0;
scanf("%d", &line);
//打印上半部分
int i = 0;
for (i = 0; i < line; i++)
{
int j = 0;
int tmp = line;
for (j = 0; j < tmp-1-i; j++)
{
printf(" ");
}
for (j = 0; j <(2*i+1) ; j++)
{
printf("*");
}
printf("\n");
}
//打印下半部分
for (i = 0; i < line-1; i++)
{
int j = 0;
int tmp = line;
for (j = 0; j <( i + 1 ); j++)
{
printf(" ");
}
for (j = 0; j < (2*(line-i))-3 ; j++)
{
printf("*");
}
printf("\n");
}
return 0;
}
5.题目内容:
实现一个函数, 可以左旋字符中的x个字符。
例如:
ABCD 左旋一一个字符得到BCDA
ABCD 左旋两个字符得到CDAB
旋转字符串
void left_move(char* arr, int x)
{
int i = 0;
int len = strlen(arr);
for (i = 0; i < x; i++)
{
char tmp = *arr;
int j = 0;
for (j = 0; j < len-1; j++)
{
*(arr + j) = *(arr + j + 1);
}
*(arr + len - 1) = tmp;
}
}
int main()
{
char arr[] = "abcdef";
//char tmp = 0;
//scanf("%d", &tmp);
left_move(arr, 2);
printf("%s\n" , arr);
return 0;
}
6.写一个函数,判断一个字符串是否为另外一个字符串旋转之后的字符串。
例如:给定s1=AABCD和s2 = BCDAA, 返回1
给定s1= abcd和s2= ACBD ,返回0。
AABCD 左旋一个字符得到ABCDA
AABCD 左旋两个字符得到BCDAA
AABCD 右旋一个字符得到DAABC
#include <string.h>
#include <string.h>
#include<stdio.h>
void left_move(char* arr, int x)
{
int i = 0;
int len = strlen(arr);
for (i = 0; i < x; i++)
{
char tmp = *arr;
int j = 0;
for (j = 0; j < len-1; j++)
{
*(arr + j) = *(arr + j + 1);
}
*(arr + len - 1) = tmp;
}
}
int compre(char* s1,char* s2)
{
int len = strlen(s1);
int i = 0;
for (i = 0; i < len; i++)
{
left_move(s1, 1);
int ret = strcmp(s1, s2);
if (ret == 0)
return 1;
}
return 0;
}
int main()
{
char arr[] = "abcdef";
char arrs[] = "cdefab";
int ret = compre(arr, arrs);
if (ret = 1)
printf("yes\n");
else
printf("no\n");
}
7.5位运动员参加
了10米台跳水比赛,有人让他们预测比赛结果。
A选手说:B第二,我第三
B选手说:我第二,E第四
C选手说:我第一,D第二
D选手说:C最后,我第三
E选手说:我第四,A第一
比赛结束后,每位选手都说对了一半,请编程确定比赛的名次
int main()
{
int a = 0;
int b = 0;
int c = 0;
int d = 0;
int e = 0;
for (a = 0; a <= 5; a++)
{
for (b = 0; b <= 5; b++)
{
for (c = 0; c <= 5; c++)
{
for(d = 0; d <= 5; d++)
{
for (e = 0; e <= 5; e++)
{
if (((b == 2) + (a == 3) == 1)
&& ((b == 2) + (e == 4) == 1)
&& ((c == 1) + (d == 2) == 1)
&& ((c == 5) + (d == 3) == 1)
&& ((e == 4) + (a == 1) == 1))
{
if(a*b*c*d*e==120)
printf("a=%d,b=%d,c=%d,d=%d,e=%d\n", a, b, c, d, e);
}
}
}
}
}
}
return 0;
}