2015年7月22日笔记

20150722

1、关于求解一元二次方程函数的根的函数设计(不涉及虚数)

//一元二次方程的根

#include<stdio.h>

#include<math.h>

float *gen(float a,float b,float c)

{

float x[2]={0};

float drt=b*b-4*a*c;  //b^2-4ac

//printf("%lf\n",a);

if(drt>=0)//实根

{

x[0]=(-b+sqrt(drt))/(2*a);

x[1]=(-b-sqrt(drt))/(2*a);

return x;

}

if(drt>=0)//实根

{

return NULL;

}

/*if(drt<0)

{

x[0]=(-b);

x[1]=sqrt(drt)/(2*a);

x[2]=i;

x[3]=(-sqrt(drt))/(2*a);

}*/

}

/*int main()//非命令行输入

{

float a=4.0,b=-4.0,c=1.0;

float *r=gen(a,b,c);

printf("%f\n",*r);

return 0;

}*/

int main(int argc,char **argv)//命令行输入

{

double a=atoi(argv[1]);

double b=atoi(argv[2]);

double c=atoi(argv[3]);

float *r=gen(a,b,c);

if(gen(a,b,c)==NULL)

printf("No Result!\n");

else

printf("x1=%.2lf,x2=%.2lf\n",*r,*(r+1));

}

 

2、使用冒泡法字符串排序(此处未考虑映射)

#include<stdio.h>

#include<string.h>

 

char *set( char *str)

{

int i,j,tmp;

char *s=str;

for(i=0;i<strlen(s)-1;i++)

for(j=0;j<strlen(s)-i-1;j++)

if(s[j]>s[j+1])

{

tmp=s[j];

s[j]=s[j+1];

s[j+1]=tmp;

}

return s;

}

 

int main(int argc,char **argv )

{

char *str=argv[1];

char *p=set(str);//*

while(*p)

{

printf("%c\n",*p);

p++;

}

}

 

 

 

 

 

 

3、实现atoi函数

#include<stdio.h>

 

int myatoi(const char *p)

{

int sum=0;

while(*p)

{

sum=sum*10+(*p-'0');

p++;

}

return sum;

}

int main (int argc,char**argv)

{

char str[50]={0};

char*p=str;

if(argc==1)

{

printf("Please input a string by the keyboard!\n");

gets(str);

}

else

{

p=argv[1];

}

int x=myatoi(p);

printf("%d\n",x);

}

4、使用命令行输入的方式实现加减乘除

#include<stdio.h>

int main(int argc , char **argv)

{

if(4!=argc)

{

printf("error!\nTry to input as <num><op><num>.");

return -1;

}

int x=atoi(argv[1]);

int y=atoi(argv[3]);

if(*(argv[2])=='+')

printf("%d\n",x+y);

if(*(argv[2])=='-')

printf("%d\n",x-y);

if(*(argv[2])=='*')

printf("%d\n",x*y);

if(*(argv[2])=='/')

printf("%.4lf\n",((double)x)/((double)y));

}

5、游程编码

//游程编码程序,输入需要输入数字的个数,之后输入需要编码的数字,并以‘,’分隔

 

#include<stdio.h>

 

#include<string.h>

 

#define NA 100

 

#define NB 50

 

int main()

 

{

 

char a[NA]={0};

 

char b[NB]={0};

 

int i=0,j=1,m=0,num=0;//i is a[];j is count;m is b[]

 

printf("How much number do you want to input:)\n");

 

scanf("%d",&num);

 

printf("Please input the numbers.Please use Enter between then.\n");

 

for(i=0;i<num;i++)

 

scanf("%d,",&a[i]);

 

b[m]=a[0];

 

for(i=1;i<strlen(a);i++)

 

{

 

 

if(b[m]==a[i])

 

{

 

j++;

 

if(i==strlen(a)-1)

 

b[++m]=j;

 

}

 

else

 

{

 

if(i==strlen(a)-1)

 

{

 

++m;

 

b[m]=j;

 

++m;

 

b[m]=a[i];

 

 

b[++m]=1;

 

}

 

else

 

{

 

++m;

 

b[m]=j;

 

++m;

 

b[m]=a[i];

 

j=1;

 

}

 

}

 

}

 

//printf("%d,%d\n",i,strlen(b));//for test!

 

for(i=0;i<strlen(b);i++)

 

{

 

printf("%-3hd",b[i]);

 

if((i+1)%4==0)

 

printf("\n");

 

if(i==(strlen(b)-1))

 

printf("\n");

 

}

 

return 0;

 

}

6、实现strlen函数

#include<stdio.h>

char mystrlen(const char *ptr);

int main()

{

char a[]="asdfghjkl";

char *ch=a;

printf("%d\n",mystrlen(ch));

return 0;

}

char mystrlen(const char *ptr)

{

/*int i=0;//plan 1

char *p=ptr;

while(*p!='\0')

{

i++;

p++;

}

return (i);

/*char *p=ptr;//plan 2

while(*p++ !='\0');

return(p-ptr-1);*/

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值