将字符串转化为整形,相信小伙伴都见过类似的题目。今天我给大家提供一个简单的方法,供大家参考。
代码解释,假设有字符串123456,则先将 "1" 拿出 减去 48,得到 1 ,然后使用for循环进行累乘,因为"123456" 最后要转化为 123456。
代码演示:
#include <stdio.h>
void add(char *str,int len)
{
int sum=0;
int num[len];
for(int i=0;i<len;i++)
{
num[i]=str[i]-48; //将字符串的第一位-48
for(int j=0;j<len-1-i;j++)
{
num[i]*=10; //循环乘10
}
sum+=num[i];
}
printf("%d",sum);
}
int main(void)
{
char str[20];
char ch;
int i=0;
printf("输入一个字符串:\n");
while((ch=getchar())!='\n')
{
str[i]=ch;
i++;
}
add(str,i);
}
现有字符串 "hello",字符串向右移动任意移动,如右移动 2 ,移动后的字符 "lohel"
从题目中可知道,需要两个字符串进行操作。
先计算有多少个字符串,将数组p 完全赋值给 数组 ch
输入要右移动多少位, n=n%len ,是假设"hello",向右移动5位,位置保持不变。
两个for循环的解释,假设有字符串 "hello",向右移动2位,先将前两位移动。ch=hello p=hello
第一次移动完后 ch=hehel p=hello ,第二次移动完后 ch=lohel p=hello。
代码演示:
代码如下:
#include<stdio.h>
int fun(char p[],int len)
{ int n;
char ch[20];
for(int i=0;i<len;i++)
{
ch[i]=p[i]; //定义两个一模一样的数组
}
printf("你需要字符串循环右移多少个\n");
scanf("%d",&n);
n=n%len; //循环是一个规律
for(int i=0;i<len-n;i++) //以len-n为结点,先将len-n之前的移动
{
ch[n+i]=p[i];
}
for(int i=0;i<n;i++)
{
ch[i]=p[len-n+i]; //将len-n之后移动
}
printf("%s",ch);
}
int main()
{ char ch,p[20];
int i=0;
printf("请输入字符串:\n");
while((ch=getchar())!='\n')
{
p[i]=ch;
i++;
}
fun(p,i);
}