c语言慕课第十周

1
数字字符串转换为整型数
题目内容:从键盘输入一串字符(假设字符数少于8个),以回车表示输入结束,编程将其中的数字部分转换为整型数并以整型的形式输出。 函数原型为 int Myatoi(char str[]);
其中,形参数组str[]对应用户输入的字符串,函数返回值为转换后的整型数。解题思路的关键是:1)判断字符串中的字符是否是数字字符;2)如何将数字字符转换为其对应的数字值;3)如何将每一个转换后的数字值加起来形成一个整型数。

#include
#include
int Myatoi(char str[])
{
 int i=0,b=0,c,sum=0;
 while(str[i]!='\0')
 {
  if(str[i]>='0'&&str[i]<='9')
   b++;
  i++;
 }
 if(b==0)
  return 0;
 else
 {
  i=0;
  while(str[i]!='\0')
  {
   if(str[i]>='0'&&str[i]<='9')
   {
    c=str[i]-48;
    sum=sum+c*pow(10,b-1);
    b--;
   }
   i++;
  }
  return sum;
 }
}
int main()
{
 char str[10];
 printf("Input a string:");
 scanf( "%7s",str);
 printf("%d\n",Myatoi(str));
 return 0;
}

第二题不知道为啥搞不上去

解题思路大概就是你要注意其中的循环变化
要有截取
这是函数的代码;

int SearchString(char s[], char d[])
{
 int slen, dlen, pos;
 int i=0, j=0, find;
 slen = strlen(s);
 dlen = strlen(d);
 for(i = 0;i < slen; i++)
 {
   pos = i;
   for(j = 0;j < dlen; j++)
   {
    if(s[pos + j] != d[j])
                    break;
   }
   if(j == dlen)
    return (pos + 1);
 }
 return -1;
}

3
统计重复

#include
int CountRepeatStr(char str[], int *tag)
{
 int i=0,j,k,count,max=0;
 while(str[i]!='\0')
  i++;
 for(j=0;j<i-1;j++)
 {
  count=1;
  for(k=j+1;k<i;k++)
   if(str[j]==str[k])
    count++;
   if(count>max)
   {
    max=count;
    *tag=j+1;
   }
 }
 return max;
}
int main()
{
 char str1[80];
 int b,c;
 printf("Input a string:\n");
 gets(str1);
 c=CountRepeatStr(str1,&b);
 printf("%c:%d\n",str1[b],c);
 return 0;
}

4
凯撒密码(4分) 题目内容:凯撒密码是罗马扩张时期朱利斯•凯撒(Julius Caesar)创造的,用于加密通过信使传递的作战命令,其原理很简单,就是通过将字母表中的字母移动一定位置而实现加密。例如,每个字母按字母表顺序向后移3位,如a加密后变成d,b加密后变成e,……x加密后变成a,y加密后变成b,z加密后变成c。请编写一个程序,将用户从键盘输入的文本字符串(只包含a~z的字符且长度小于100)进行加密后输出。函数原型:void Caesar(char c[]);函数功能:计算凯撒密码

#include
void Caesar(char c[])
{
 int i=0,j;
 while(c[i]!='\0')
  i++;
 for(j=0;j<i;j++)
 {
  c[j]=c[j]+3;
 }
 c[j]='\0';
 puts(c);
}
int main()
{
 char str[100];
 printf("Input a string:");
 gets(str);
 Caesar(str);
 return 0;
}

你可能感兴趣的:(c语言慕课第十周)