一,先来个小题热热身:
输入一个整数m,求这个整数m的每一位之和,并打印。
//输入一个整数m,求这个整数m的每一位之和,并打印。
#include <stdio.h>
int calculate(int m)
{
int count=0;
while(m)//m!=0
{
count=count+m%10;
m=m/10;
}
return count;
}
int main()
{
int m=0;
scanf("%d",&m);
int result=calculate(m);
printf("%d",result);
}
二,输入一个字符串,写一个函数将一个字符串的内容逆序过来。
两个思路:
1,可以分类讨论,当长度为奇数时,中间数不变,为偶数时,所有数两两交换
2,左右一直交换,知道左大于右
//输入一个字符串,写一个函数将一个字符串的内容逆序过来。
#include <stdio.h>
#include <string.h>
void reverse(char* str)
{
int tmp=0,i=0;
int n=strlen(str);
if(n%2==0)
{
for(i=0;i<n/2;i++)
{
tmp=*(str+i);
*(str+i)=*(str+n-1-i);
*(str+n-1-i)=tmp;
}
}
else
{
for(i=0;i<(n+1)/2;i++)
{
tmp=*(str+i);
*(str+i)=*(str+n-1-i);
*(str+n-1-i)=tmp;
}
}
}
//{
// int len = strlen(str);
// 定义两个字符串指针分别指向字符串首位和末位
// char* left = str;
// char* right = str + len - 1;
// 当左指针在右指针左边时,进行交换
// while (left < right)
// {
// char tmp = *left;
// *left = *right;
// *right = tmp;
// 两个指针相向移动⼀位
// left++;
// right--;
// }
//}
int main()
{
char arr[31];
scanf("%[^\n]s",arr);
reverse(arr);
puts(arr);
}