1.17学习日报

4.1 习题

 

<code>

#include "stdafx.h"
#include<stdio.h>
#include<iostream>
#include<string.h>
using namespace std;

//返回字符串t在s中最右边出现的位置
int strindex(char s[] , char t[]);
int _tmain(int argc, _TCHAR* argv[])
{


 char s[] = "would you like it?";
 char t[] = "you";
 int index ;
 index = strindex(s,t);

 cout<<index<<endl;
 getchar();
 getchar();
 return 0;
}

int strindex(char s[] , char t[])
{
 int i , j , k , pos ;
 //用来控制源字符串
 for(i = 0 ; i < strlen(s) ; i++)
 {
  //匹配查找串与源字符串,只有判断条件成立的时候才进入循环体中,循环体并不做任何操作,只是用来控制循环
  for(j = i, k = 0 ; t[k]!='\0' && s[j] == t[k] ; j++, k++ )
   ;
  if(k > 0 && t[k] == '\0')
  {
   //i的坐标是查找串的起始位置
   pos = i ;
   return pos+strlen(t)-1;
  }
   
 }
 return -1 ;
}

</code>

 

4.2 习题

<code>

#include "stdafx.h"
#include<stdlib.h>
#include<iostream>
#include<ctype.h>
using namespace std;

//将字符串转化成数字
double atof(char s[]);
int _tmain(int argc, _TCHAR* argv[])
{
 //定义固定的数字字符串
 char str[]="123.45e2";
 
 double str_dou ;
 str_dou = atof(str);

 cout<<str_dou<<endl;
 getchar();
 getchar();
 return 0;
}

double atof(char s[])
{
 //需要判断一些非法字符
 //分别计算整数与小数分值
 double val , power ;
 int val_e;
 int i ,sign ,sign_e;
 //字符前面去掉空格
 for(i = 0 ; isspace(s[i]) ; i++)
  ;
 //记录符号
 sign = (s[i] == '-') ? -1 : 1 ;
 if(s[i] == '+' || s[i]=='-')
  i++ ;
 for(val = 0.0 ; isdigit(s[i]) ; i++)
  val = 10.0 * val + (s[i] - '0');
 if(s[i] == '.')
  i++ ;
 for(power = 1.0 ; isdigit(s[i]) ; i++)
 {
  //控制小数点后面的位数
  val = 10.0 * val + (s[i] - '0');
  power *= 10 ;
 }
 //遇到‘e’或‘E’的情况
 if(s[i] == 'e' || s[i] == 'E')
  i++ ;
 sign_e = (s[i] == '-') ? -1 : 1 ;
 if(s[i] == '+' || s[i] == '-')
  i++;
  
 for(val_e = 0 ; isdigit(s[i]) ; i++)
  val_e = 10 * val_e + (s[i] - '0') ;

 val_e *= sign_e ;


 //e后面的数为正数时,小数点向右移动;为负数时,小数点向左移动
 if(val_e > 0 )
  return sign*val/power*pow(10,val_e);
 else
  return sign*val/power*(pow(10,val_e));

 
}

 

</code>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值