实验一:
/*strrindex: returns rightmost index of t in s,-1 if none*/
int strrindex(char s[],char t[])
{
int i,j,k,pos;
pos=-1;
for(i=0;s[i]!='/0';i++){
for(j=i,k=0;t[k]!='/0'&&s[j]==t[k];j++,k++)
;
if(k>0&&t[k]=='/0') //字符串t在字符串s中最后一次
pos=i; //(最右边)出现的位置
}
return pos;
}
#include<string.h>
/*strrindex:return rightmost index of t in s,-1 if none*/
int strrindex(char s[],char t[])
{
int i,j,k;
for(i=strlen(s)-strlen(t);i>=0;i--){
for(j=i,k=0;t[k]!='/0'&&s[j]==t[k];j++,k++)
;
if(k>0&&t[k]=='/0')
return i;
}
return -1;
}
方法二比方法一效率更高.
#include<ctype.h>
/* atof 函数:把字符串S转换为相应的双精度浮点数*/
double atof(char s[ ])
{
double val,power;
int i,sign;
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.0;
}
return sign*val/power;
}
#include<stdio.h>
#define MAXLINE 100
/*简单计数器程序*/
main()
{
double sum,atof(char [])
char line[MAXLINE];
int getline(char line[],int max);
sum=0;
while(getline(line,MAXLINE)>0)
printf("/t%g/n",sum+=atof(line));
return 0;
}