求定积分
#include <math.h> float integral(float(*fun)(float x),float a,float b,int,n) {float s,h,y; int i; s=(fun(a)+fun(b))/2; h=(b-a)/n; /*积分步长*/ for(i=1;i<n;i++) s=s+fun(a+i*h); y=s*h; return y;/*返回积分值*/ } float fun(float x) {return(x*sinx) /*修改此处可以改变被积函数*/ } main() {float y; y=integral(f,1.0,2.0,150);/*修改此处可以改变积分上下限和步长*/ printf("y=%f\n",y); }
IP地址转为数字
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
//从字串p中获取ip整数到整数数组a,成功返回0,失败返回1
int
getipaddress(
char
*pp,
int
*a){
int
d[5]={-1},di=1,ai=0;
int
i,j,m;
char
*p;
p=(
char
*)
malloc
(
sizeof
(
char
)*
strlen
(pp));
strcpy
(p,pp);
//把来源的pp地址复制下来,要不然pp的内容可能是常数,将无法修改
//删除p中非数字,非小数点的字符
for
(i=
strlen
(p)-1;i>=0;i--)
if
(p[i]!=
'.'
&& (p[i]<
'0'
|| p[i]>
'9'
))
for
(j=i;j<
strlen
(p);j++)
p[j]=p[j+1];
//检查获取小数点所在的位置
if
(p[0]==
'.'
)
return
1;
//小数点在第一位,错误
for
(i=0;i<
strlen
(p);i++)
if
(p[i]==
'.'
) {
d[di++]=i;
if
(di>4)
return
1;
//小数点数量超过3个,错误
}
if
(di!=4)
return
1;
//小数点数量少于3个,错误
d[4]=
strlen
(p);
//计算各ip的分段值
for
(i=0;i<4;i++){
m=0;
for
(j=d[i]+1;j<=d[i+1]-1;j++)
m=m*10+p[j]-
'0'
;
if
(m<0 || m>255)
return
1;
//整数的数值过大
a[i]=m;
}
free
(p);
return
0;
}
int
main(){
int
address[4];
char
*p=
"192.168.0.1"
;
int
i,k;
k=getipaddress(p,address);
if
(k==0)
for
(i=0;i<4;i++)
printf
(
"%d "
,address[i]);
else
printf
(
"错误的ip地址\n"
);
}
文件操作
读取
- #include <stdio.h>
- int main() {
- char s[24], m[20];
- int i;
- FILE *fp;
- fp=fopen("test.dat", "r"); /*打开文字文件只读*/
- fgets(s, 24, fp); /*从文件中读取23个字符*/
- printf("%s", s);
- fscanf(fp, "%d", &i); /*读取整型数*/
- printf("%d", i);
- putchar(fgetc(fp)); /*读取一个字符同时输出*/
- fgets(m, 17, fp); /*读取16个字符*/
- puts(m); /*输出所读字符串*/
- fclose(fp);
- }
写入
将字符串的大写改成小写,小写改成大写
- #include <stdio.h>
- #include <stdlib.h>
- int main() {
- char *s="That's good news";
- int i=617;
- FILE *fp;
- fp=fopen("test.dat", "w"); /*建立一个文字文件只写*/
- fputs("Your score of TOEFL is",fp); /*向所建文件写入一串字符*/
- fputc(':', fp); /*向所建文件写冒号:*/
- fprintf(fp, "%d/n", i); /*向所建文件写一整型数*/
- fprintf(fp, "%s", s); /*向所建文件写一字符串*/
- fclose(fp);
- }
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
链表逆序
Node * ReverseList(Node *head) //链表逆序 |
链表的反转
Link Reverse(Link Head)
{Link Pointer;
Link Back;
Link Next;
Back = Head;
Pinter = Back->next;
Back->next = NULL;
Next = Pointer->next;
Pointer->next = Back;
Back = Pointer;
Pointer = Next;
while (Pointer->next !=NULL)
{Next = Pointer->next;
Pointer->next = Back;
Back = Pointer;
Pointer = Next;
}
Pointer->next = Back;
Head = Pointer;
return Head;
}
冒泡法排序
void bubble(int a[],int n)
{
int i,j,k;
int tag = false ; // 设置是否需要继续冒泡的标志位
for(i=0,i<n;i++)
{
for(j=0;j<n-i-1;j++)
if(a[j]>a[j+1])
{
tag=true;
k=a[j];
a[j]=a[j+1];
a[j+1]=k;
}
}
if(tag==false)
break;
}
选择法排序
void sort(int a[],int n)
{
int i,j,k,t;
for(i=0,i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(a[k]<a[j])k=j;
if(k!=i)
{
t=a[i];
a[i]=a[k];
a[k]=t;
}
}
}
折半查找
void search(int a[],int n,int x)
{
int left=0,right=n-1,mid,flag=0;
while((flag==0)&&(left<=right))
{
mid=(left+right)/2;
if(x==a[mid])
{
printf("%d%d",x,mid);
flag =1;
}
else if(x<a[mid])
right=mid-1;
else left=mid+1;
}
}