c语言代码
第一天
1 hello world
#include<studio.h>
int main()
{
printf("hello world!\n")
return 0;
}
2菱形输出
#include<studio.h>
int main()
{ printf(" *\n ***\n*****\n ***\n *\n");
return 0;
}
第二天
3.7 China->Glmre
要将“China”译成密码,密码规律是:用原来的字母后面第4个字母代替原来的字母。例如,字母“A”后面第4个字母是“E”,用“E”代替“A”。因此,“China”应译为“Glmre”。请编一程序,用赋初值的方法使c1、c2、c3、c4、c5 这5个变量的值分别为‘C’、‘h’、‘i’、‘n’、‘a’,经过运算,使cl、c2、c3、c4、c5 分别变为‘G’、‘l’、‘m’、‘r’、‘e’,并输出。
#include<stdio.h>
int main()
{
char c1,c2,c3,c4,c5;
c1='C',c2='h',c3='i',c4='n',c5='a';
c1=c1+4;
c2=c2+4;
c3=c3+4;
c4=c4+4;
c5=c5+4;
printf("%c%c%c%c%c%C", c1,c2,c3,c4,c5);
return 0;
}
体验不同的数据类型及其加减
#include<stdio.h>
int main()
{
double m,q,f
m=-3.14e-1;
int n=124e2;
q=-3.25e2;
f=n+m-q;
pintf("q=%f\nn=%u\nm=%f\nf=n+m-q\nf=%f" , q,n,m,f);
return 0;
}
第三天
1.定义一个圆的半径,并赋初值,计算圆的周长和面积完成打印
#include <stdio.h>
int main()
{
int r=5,l,s;
l=2*r*3.141;
s=r*r*3.141;
printf("r=%d\nl=%d\ns=%d\n" , l , s);
return 0;
}
2.利用putchar和getchar实现从终端接收一个小写字母,转换成其对应的大写形式输出
#include<stdio.h>
int main()
{
char n ,N;
n=getchar();
N=n-32;
putchar(N);
return 0;
}
3.定义两个整形变量并对变量赋初值(初值为2位数),要求将两个数合并成一个新数并打印
新数的千位是第二个数的十位
新数的百位是第一个数的十位
新数的十位是第一个数的个位
新数的个位是第二个数的个位
注意:利用四则运算对数字拆分和拼接
Num1: 12
Num2: 34
NewNum: 3124
#include<stdio.h>
int main()
{
int a=65,b=37,c,d,e,f,Newnumber;
c=b/10;
d=a/10;
e=a%10;
f=b%10;
Newnum=c*1000+d*100+e*10+f;
printf("a=%d\nb=%d\nNewnum=%d" ,a ,b ,Newnum);
return 0;
}
4 比较3个数的大小,并求出最大值
#include<stuio.h>
int main()
{
int a=10,b=25,c=64,Maxnum;
Maxnum= a>b ? a : b ;
Maxnum= Maxnum>c ? Maxnum : c ;
printf("a=%d\nb=%d\nMaxnum=%d\n" , a, b ,Maxnum );
return 0;
}
第四天
1 练习使用 printf 的不同输出指令符
#include<stdio.h>
int main ()
{
int M=300,N=54;
printf("N=%d , N=%#o , N=%#x " ,N ,N ,N );
printf("M=%c , M=%d , M=%#o ,M=%#x ", M ,M ,M );
return 0;
}
2
#include<stdio.h>
int main()
{
int a=5.b=10;
float x=3.5,y=10.8;
char c1='A',c2='B';
printf("a=%d , b=%d , x+y=%.1f" ,a,b,x+y);
printf("x-y+%.1f , a-b=%d " , x-y ,a-b );
printf("c1='%c' or %d (ASCII) c2='%c' or %d (ASCII)" ,c1,c1,c2,c2);
return 0;
}
3.从终端接收一个数字作为圆的半径,输出圆的周长和面积
#include<studio.h>
#define pi 3.1415
int main()
{
double r;
scanf("%lf" , r);
printf("please enter anynum as r ");
l=r*2*pi;
s=r*r*pi;
printf("r=%lf\nl=%lf\ns=%lf\n" l ,s );
return 0;
}
4.从终端接收两个任意数,并输出他们的四则运算结果
#include<stdio.h>
int main()
{
double Num1,Num2;
scanf("%lf %lf", &Num1 ,&Num2);
printf(“Num1+Num2=%f\nNum1-Num2=%f\nNum1*Num2=%f\nNum1/Num2=%f” , Num1+Num2, Num1-Num2, Num1*Num2, Num1/Num2);
return 0;
}
5 输入两个数字,判断两个数字的大小
#include<stdio.h>
int main(void)
{
double Num1,Num2;
scanf("%lf%lf" , &Num1,&Num2);
if (Num1>Num2)
{
printf("Num1>Num2");
}
else
{
printf("Num1<Num2");
}
return 0;
}
6 从终端接受三角形三边的长,计算三角形的周长和面积
海伦公式
有一个三角形,边长分别为a、b、c,三角形的面积S可由以下公式求得:
S=√[p(p-a)(p-b)(p-c)]
而公式里的p为半周长:
sqrt函数
#include <math.h>
gcc filename.c -lm
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,p;
scanf("%lf%lf%lf", &a,&b,&c);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("l=%lf\ns=%lf\n" ,l,s);
return 0;
}
7 从终端输入一个数,利用if判断,打印出该为为奇数还是偶数
#include<stdio,h>
int main(void)
{
int a, b;
scanf("%d", &a);
if (a%2==0)
{
printf("even num");
}
else
{
print("odd num");
}
return 0;
}
8 从终端输入一个年份,打印出该年是闰年还是平年?
普通闰年: 4的倍数却不是100的倍数
世纪闰年: 400的倍数
#include<stude.h>
int main(void)
{
int a;
scanf("%d",a);
prinf("This year is a ");
if (a%400==0)
{
printf("Century leap year")
}
else
{
if(a%4==0&&a%100!=0)
{
printf("common leap year")
}
else
{
print("common year");
}
}
return 0;
}
第五天
1 比较两个数字的大小,赋值给Num1并输出
#include<stdio.h>
int main(void)
{
double Num1,Num2,tmp;
scanf("%lf%lf", &Num1,&Num2);
if (Num1<=Num2)
{
tmp=Num1;
Num1=Num2;
Num2=tmp;
}
printf("Num1=%lf , Num1")
return 0;
}
2 if 语句 输入一个成绩,并判断优秀,良好,中等,及格,不及格 评级
#include<stdio.h>
int main()
{
double a;
scanf("%lf", &a);
if(a>=90 &&a <=100)
{
printf("优秀");
}
else if (a>=80 && a<=89)
{
printf("良好");
}
else if (a>=70 && a<=79)
{
printf("中");
}
else if (a>=60 && a<=69)
{
printf("及格");
}
else if (a<60)
{
printf("不及格");
}
return 0;
}
3从终端接收一个字母,打印出该字母在字典中的下一个字母,
例如: 'a' -> 'b'
'A' -> 'B',如果是'z'或者'Z',打印'a'或者'A',如果输入的不是字母则打印
"input error"
#include<stdio.h>
int main(void)
{
char ch;
ch=getchar();
if(ch<'A'||(ch>'Z'&&ch<'a')||ch>'z')
{
printf("input error");
}
else if (ch='Z'||ch'z')
{
ch=ch-25;
printf("%c" , ch);
}
else
{
printf("%c" , ch+1);
}
return 0;
}
4 switch 语句 输入一个成绩,并判断优秀,良好,中等,及格,不及格 评级
#include<stdio.h>
int main (void)
{
int a;
scanf("%d",&a );
switch(a/10)
{
case 10:
case 9:printf("优秀");break;
case 8:printf("良好");break;
case 7:printf("中等");break;
case 6:printf("及格");break;
dafault: printf("不及格"):
}
return 0;
}
5 whlie循环语句 计算0-100的和
6 用while循环语句计算0-1000内被2或3或5整除的数的和
#include<stdio.h>
int main ()
{
int i=0,sum=0;
while(i<1001)
{
if(i%2==0 || i%3==0 || i%5==0 )
{
sum+=i;
printf("i=%d\n" , i);
}
i++;
}
printf("sum=%d\n" , sum);
return 0:
}
7 .从终端输入x的值根据公式获得y的值
1 + 2 + 3 + .. + x (0 < x <= 5)
y = 100 - x - (x-1) - (x-2) - ... - 1 (5 < x <= 10)
x^2 (x > 10)
#include<stdio.h>
int main()
{
int x=0,y=0;
scanf("%d",x);
if( 0<x && x<=5 )
{
while(x>0)
{
y+=(x--);
}
}
if( 5<x && x<=10)
{
for(y=100;x>0;x--)
{
y-=x;
}
}
if(x>10)
{
y=x*x;
}
printf("y=%d" ,y );
return 0;
}
8.打印出0 - 1000以内所有能同时被 2 3 5 整除余 1 的所有数字(每8个数字一行)及其个数
#include<stdio.h>
int main ()
{
int num=0,all=0;
while(num<1001)
{
num++;
if(num%30=1)
{
print("%d" , num);
all++;
if(all%8==0)
{
printf("\n");
}
}
}
printf("\nall=%d\n" ,all );
return 0 ;
}
第六天
1 鸡兔同笼
#include<stuio.h>
int main(void)
{
int j=0,t=50,foot=0;
while(foot!=140)
{
t--;
j++;
foot=j*2+t*4;
}
printf("j=%d t=%d " , j ,t);
return 0;
}
2 99乘法表
#include<stdio.h>
int main ()
{
int a=1,b=1;
for(a=1;a<=9;a++)
{
for(b=1;b<=a;b++)
{
printf("%d*%d=%d" , a,b,a*b);
}
printf("\n");
}
return 0;
]
3 计算平均数
#include<stdio.h>
int main()
{
int num=0,i=0,x=1;
while(x>0)
{
scanf("%d" ,&x);
if(x<0)
{
break:
}
if(x>0)
{
x++;
all+=x;
}
}
printf("average=%d\n" , all/i);
return 0;
}
4 利用数组,输入五个数,求平均值
输入五个数,得出最大值
include<stdio.h>
int main (void)
{
int a[5]={0};
int i=0 ;
double all=0;
for(i=0;i<5;i++)
{
scanf("%d" , & a[i] );
all+=a[i];
}
printf("average=%f" , all/5);
return 0;
}
5 输入十个数,去除最大值和最小值,计算平均值
include<stdio.h>
int main ()
{
int a[10]={0};
int i=0,min=0,max=0;
double all=0;
for(i=0;i<=10;i++)
{
scanf("%d" , &a[i]);
}
max=min=a[0];
for(i=1; i>0 && i<10 ;i++)
{
if(max<a[i])
{
max=a[i];
}
if(min>a[i])
{
min=a[i];
}
all+=a[i];
}
all=all-(min+max);
prinf("average=%f" ,all/8);
return 0;
}
6 输出0-1000内所有水仙花数
水仙花数:152
152=1*1*1+5*5*5+2*2*2
#include<stdio.h>
int main(void)
{
int a=0,i=100,h=0,t=0,o=0;
for(i=100;i<1000;i++)
{
h=i/100;
t=(i-(h*100))/10;
o=i-100*h-10*t;
if(i==h*h*h+t*t*t+o*o*o)
{
printf("%d" ,i);
}
}
return 0;
}
第七天
利用冒泡排序法,进行排序
#include<stdio.h>
#include<string.h>
int main(void)
{
int a[64]={0};
int i=0,l=0,len=0,tmp=0,j=0;
gets(a);
len=strlen(a);
for(j=0;j<len-1;j++)
{
for(i=0;i<len-1-j;i++)
{
if(a[i]>a[i+1])
{
tmp=a[i];
a[i+1]=a[i];
a[i]=tmp;
}
}
}
for(i=0;i<len;i++)
{
printf("%s " , a[i])
}
return 0;
}
利用二维数组求平均数
从终端接收一个字符串,不使用strlen,打印出字符串的长度
从终端接受一个字符串,根据字符串每个元素的ASCII码值完成对字符串的排序
第八天
不使用strlen实现strlen的功能
不使用strcpy实现strcpy的功能
不使用strcat实现strcat的功能
不使用strcmp实现strcmp的功能
2 封装三个函数:
函数1,传入年份,获得该年是闰年还是平年,闰年返回1.平年返回0
int IsLeapYear
函数2,传入年月日信息,打印出这一天是该年的第几天
int GetDayofYear
函数3,传入年月日信息,打印出该年剩余多少天
int GetLeftDayofYear
#include<stdio.h>
int IsLeapYear(int year)
{
if(year%400==0 || year%4==0 && year%100!=0)
{
return 1;
}
else
{
return 0;
}
}
int GetDayofYear(int year,int mon, int day)
{
int Mon[12]={31,0,31,30,31,30,31,31,30,31,30,31};
int mons=0,i=0;
int days=0;
if (IsLeapYear(year)==1)
{
Mon[1]=29;
}
else
{
Mon[1]=28;
}
for(i=0;i<mon;i++)
{
mons+=Mon[i-1];
}
days=mons+day;
return days;
}
int GetLeftDayofYear (int year,int mon, int day)
{
int leftdays=0,years=0,days=0;
if(IsLeapYear(year)==1)
{
years=366;
}
else
{
years=365;
}
GetDayofYear(year,mon,day);
leftdays=years-GetDayofYear(year,mon,day);
printf("\nleftdays=%d" ,leftdays);
return leftdays;
}
int main(void)
{
int year=0;
int mon=0;
int day=0;
int days=0;
scanf("%d" ,&year);
scanf("%d" ,&mon);
scanf("%d" ,&day);
if(IsLeapYear(year)==1)
{
printf("leap year");
}
else
{
printf("common year");
}
GetDayofYear(year,mon,day);
GetLeftDayofYear(year,mon,day);
printf("\ndays=%d" ,GetDayofYear(year,mon,day));
return 0;
}
第九天
封装一个函数,接收一个数并求各位相加的值
#include<stdio.h>
int weihezhi(int num)
{
int sum=0;
while(num>0)
{
sum+=num%10;
num=num/10;
}
printf("%d" , sum);
return 0;
}
int main(void)
{
int num=0,len=0;
scanf("%d" , &num);
weihezhi(num);
return 0;
}
封装一个函数判断是否为素数
#include<stdio.h>
int sushu(int n)
{
int i=0;
for(i=2;i<n;i++)
{
if((n%i!=0) && (i==n-1))
{
printf("Yes");
return 0;
}
if(n%i==0)
{
printf("No");
return 0;
}
}
}
int main(void)
{
int i=0,num=0;
scanf("%d" , &num);
sushu(num);
return 0;
}
汉诺塔
#include<stdio.h>
int hnt(int num, char now ,char tmp ,char gool )
{
if(num==1)
{
printf("%c -> %c\n" , now,gool);
}
else
{
hnt(num-1,now,gool,tmp);
printf("%c -> %c\n" , now ,gool);
hnt(num-1,tmp,now,gool);
}
return 0;
}
int main(void)
{
int not=0;
scanf("%d" , ¬);
hnt(not,'A' ,'B','C');
return 0;
}
斐波那契数列
#include<stdio.h>
int fbnq(int n)
{
int num=0;
if(n==1||n==2)
{
return 1;
}
else
{
num=fbnq(n-1)+fbnq(n-2);
return num;
}
}
int main(void)
{
int n=0,num=0;
scanf("%d" , &n);
num=fbnq(n);
printf("fbnq=%d" , num);
return 0;
}
第十天
练习在调用函数时使用指针
#include<stdio.h>
int getmaxmin(int a[],int len, int *max ,int *min)
{
int m=a[0],n=a[0];
for(int i=1;i<len;i++)
{
if(m<a[i]) m=a[i];
if(n>a[i]) n=a[i];
}
*max=m;
*min=n;
return 0;
}
int main(void)
{
int a[5]={52,57,46,38,95};
int maxnum=0,minnum=0;
getmaxmin(a,5,&maxnum,&minnum);
printf("minnum=%d maxnum=%d" , minnum,maxnum);
return 0;
}
封装一个函数,完成传入两个数字,获得这两个数的最小公倍数和最大公约数
#include<stdio.h>
int A(int a,int b, int *n ,int *m)
{
int gbs=0,tmp=0,gys=0,i=0;
if(a>b)
{
tmp=a;
a=b;
b=tmp;
}
for(i=2;i<=a;i++)
{
if(a%i==0 && b%i==0)
{
gys=i;
}
}
for(i=b;i<=a*b;i++)
{
if(i%a==0 && i%b==0)
{
gbs=i;
break;
}
}
*n=gys;
*m=gbs;
return 0;
}
int main()
{
int x,y;
scanf("%d%d" , &x,&y);
int gbs=0,gys=0;
A(x,y,&gys,&gbs);
printf("GBS=%d GYS=%d " , gbs,gys);
return 0;
}
*往年面试 求出数组a[N][N]中主对角线的最大值和辅对角线的最小值
#define N 5
#include<stdio.h>
int A(int a,int b, int *n ,int *m)
{
int gbs=0,tmp=0,gys=0,i=0;
if(a>b)
{
tmp=a;
a=b;
b=tmp;
}
for(i=2;i<=a;i++)
{
if(a%i==0 && b%i==0)
{
gys=i;
}
}
for(i=b;i<=a*b;i++)
{
if(i%a==0 && i%b==0)
{
gbs=i;
break;
}
}
*n=gys;
*m=gbs;
return 0;
}
int main()
{
int x,y;
scanf("%d%d" , &x,&y);
int gbs=0,gys=0;
A(x,y,&gys,&gbs);
printf("GBS=%d GYS=%d " , gbs,gys);
return 0;
}
第十一天
封装函数完成strlen,strcat,strcnp的实现
#include<stdio.h>
int Strcat(char *qian , char *back)
{
while(*qian!='\0')
{
qian++;
}
while(*back!='\0')
{
*qian=*back;
qian++;
back++;
}
*qian='\0';
return 0;
}
int Strcpy(char *gool ,char *str)
{
int i=0;
while(*str!=0)
{
*gool=*str;
str++;
gool++;
}
return 0;
}
int Strcnp (char *a,char*b)
{
while(a==b && a!=0)
{
a++;
b++;
}
printf("%d" , *a-*b);
return 0;
}
int main()
{
char a[128]={0};
char b[128]={0};
char c[128]={0};
gets(a);
gets(c);
//Strcpy(b,a);
//puts(b);
//Strcat(a,c);
//puts(a);
Strcnp(a,c);
return 0;
}
1.封装一个函数实现MyStrlen实现strlen的功能 2.封装一个函数实现MyStrcpy实现strcpy的功能 3.封装一个函数实现MyStrcat实现strcat的功能 4.封装一个函数实现MyStrcmp实现strcmp的功能
#include<stdio.h>
int Strcat(char *qian , char *back)
{
while(*qian!='\0')
{
qian++;
}
while(*back!='\0')
{
*qian=*back;
qian++;
back++;
}
*qian='\0';
return 0;
}
int Strcpy(char *gool ,char *str)
{
int i=0;
while(*str!=0)
{
*gool=*str;
str++;
gool++;
}
return 0;
}
int Strcmp (char *a,char*b)
{
while(a==b && a!=0)
{
a++;
b++;
}
printf("%d\n" , *a-*b);
return 0;
}
int Strlen(char *a , int *len)
{
int i=0;
while (*a!='\0')
{
i++;
a++;
}
*len=i;
printf("len=%d\n" , *len);
return 0;
}
int main()
{
char a[128]={0};
char b[128]={0};
char c[128]={0};
int len=0;
gets(a);
gets(c);
Strlen(a,&len);
Strcpy(b,a);
puts(b);
Strcmp(a,c);
Strcat(a,c);
puts(a);
return 0;
}
5.封装一个函数实现字符串的倒置(逆序) int InvertString(char *pstr);
#include<stdio.h>
#include<string.h>
int InvertString (char *p,int len)
{
char b[64]={0};
int i=0;
for(i=0;i<len;i++)
{
b[i]=p[len-1-i];
}
puts(b);
return 0;
}
int main(void)
{
char a[64]={0};
gets(a);
InvertString(a,strlen(a));
return 0;
}
6.从终端输入一个a和n封装函数按照如下公式获得结果
a:3
n:5
3+33+333+3333+33333 = 37035
#include<stdio.h>
int Fun(int a, int b)
{
int out=0;
int num[64]={a};
int i=0;
for(i=1;i<b;i++)
{
num[i]+=(a)+(10*num[i-1]);
}
printf("%d" , a);
for(i=1;i<b;i++)
{
printf("+%d" , num[i]);
}
for(i=0;i<b;i++)
{
out+=num[i];
}
printf("=%d" , out);
}
int main()
{
int x,y;
scanf("%d%d" , &x,&y);
Fun(x,y);
return 0;
}
第十三天
封装函数,利用指针实现正序比较,倒序比较,绝对值正序以及倒序比较
#include<stdio.h>
#include<stdlib.h>
int Input( int * parray,int len)
{
int i=0;
for(i=0;i<len;i++)
{
scanf("%d" , &parray[i]);
}
return 0;
}
int Output(int * parray , int len )
{
int i=0;
for(i=0;i<len;i++)
{
printf(" %d " , parray[i]);
}
printf("\n");
}
int Sortsaaay(int *parray , int len ,int (*phowcompare) (int, int ))
{
int i=0,j=0;
int tmp=0;
for(j=0;j<len-1;j++)
{
for(i=0;i<len-1-j;i++)
{
if(phowcompare(parray[i],parray[i+1]))
{
tmp=parray[i];
parray[i]=parray[i+1];
parray[i+1]=tmp;
}
}
}
}
int AscCompare(int x,int y)
{
if (x>y)
{
return 1;
}
return 0;
}
int DescCompare(int x, int y)
{
if(x<y)
{
return 1;
}
return 0;
}
int AbsAscCompare(int x,int y)
{
if (abs(x)>abs(y))
{
return 1;
}
return 0;
}
int AbsDescCompare(int x, int y)
{
if (abs(x)<abs(y))
{
return 1;
}
return 0;
}
int main()
{
int a[5]={0};
Input (a,5);
Sortsaaay(a,5,AscCompare);
Output(a,5);
Sortsaaay(a,5,DescCompare);
Output(a,5);
Sortsaaay(a,5,AbsAscCompare);
Output(a,5);
Sortsaaay(a,5,AbsDescCompare);
Output(a,5);
return 0;
}
第十四天
结构体成绩分析
有一个班的5个学生,有3门课程。
1、求第一门课的平均分;
2、找出有两门以上课程不及格的学生,输出他们的学号和全部课程成绩及平均分
3、找出平均分在90分以上或全部课程成绩在85分以上的学生。
分别编写三个函数来实现以上三个要求 struct student { char name[32]; int no; int score[3]; };
#include<stdio.h>
struct information
{
char name[32];
int no;
int s1;
int s2;
int s3;
};
int Average(struct information *ps)
{
double avg;
avg=((ps[0].s1)+(ps[1].s1)+(ps[2].s1))/3;
printf("avg=%lf\n" , avg);
return 0;
}
int AverageStudent(struct information *ps , int *pavg)
{
int i=0;
for(i=0;i<3;i++)
{
pavg[i]=(ps[i].s1+ps[i].s2+ps[i].s3)/3;
}
return 0;
}
int Warning(struct information *ps,int *pavg)
{
int i=0;
for(i=0;i<3;i++)
{
if( ( (ps[i].s1<60) && (ps[i].s2<60) ) || ( (ps[i].s1<60)&&(ps[i].s3<60)) || ( (ps[i].s3<60) && (ps[i].s2<60) ))
{
printf("Warning!!!Name:%s No:%d 1score:%d 2score:%d 3score:%d avg:%d" ,ps[i].name , ps[i].no,ps[i].s1,ps[i].s2,ps[i].s3,pavg[i]);
}
}
return 0;
}
int Great(struct information *ps ,int *pa)
{
int i=0;
for(i=0;i<3;i++)
{
if( (pa[i]>90) || ( (ps[i].s1>85)&&(ps[i].s2>85)&&(ps[3].s3>85) ) )
{
printf("\nGreat student Name:%s",ps[i].name );
}
}
return 0;
}
int main()
{
int Avg[3]={0};
struct information s[3]={
{"st",11111,55,59,58},{"aa",22222,96,99,54},{"bb",33333,92,95,96}};
Average(s);
AverageStudent(s,Avg);
Warning(s,Avg);
Great(s,Avg);
return 0;
}
第十五天
1,链表倒插
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct node
{
int Data;
struct node *pNext;
}LinkNode;
LinkNode *CreateLinkList(void)
{
LinkNode *pTmpNode=NULL;
pTmpNode=malloc(sizeof(LinkNode));
if(NULL==pTmpNode)
{
return NULL;
}
pTmpNode->pNext=NULL;
return pTmpNode;
}
int InstertTailLinkList(LinkNode *pHeadNode,int tmpdata)
{
LinkNode *pTmpNode=NULL;
pTmpNode=malloc(sizeof(LinkNode));
pTmpNode->Data=tmpdata;
while (pHeadNode->pNext!=NULL)
{
pHeadNode=pHeadNode->pNext;
}
pHeadNode->pNext=pTmpNode;
pTmpNode->pNext=NULL;
}
int ShowLinkList(LinkNode *pHeadNode)
{
LinkNode *pTmpNode=NULL;
pTmpNode=pHeadNode->pNext;
while(pTmpNode!=NULL)
{
printf("%d " ,pTmpNode->Data);
pTmpNode=pTmpNode->pNext;
}
printf("\n");
return 0;
}
int main()
{
LinkNode *linklist=NULL;
linklist=CreateLinkList();
InstertTailLinkList(linklist ,1);
InstertTailLinkList(linklist ,2);
InstertTailLinkList(linklist ,3);
InstertTailLinkList(linklist ,4);
InstertTailLinkList(linklist ,5);
ShowLinkList(linklist);
return 0;
}
2.翻转字符串的字母顺序
#include<stdio.h>
#include<string.h>
int FanZhuan(char *p,int len)
{
char b[64]={0};
int i=0;
for(i=0;i<len;i++)
{
b[i]=p[len-1-i];
}
for(i=0;i<len;i++)
{
p[i]=b[i];
}
return 0;
}
int Daozhi(char (*p),int len,int (*pl))
{
int i=0,a=0,j=0,tmplen=0;
char b[64]={0};
for(i=0;i<len+1;i++)
{
if(i+1==pl[a+1])
{
for(j=0;j<(pl[a+1]-pl[a]-1);j++)
{
b[j]=p[pl[a]+j];
}
tmplen=strlen(b);
FanZhuan(b,tmplen);
for(j=0;j<tmplen;j++)
{
p[pl[a]+j]=b[j];
}
a++;
for(j=0;j<tmplen;j++)
{
b[j]=0;
}
}
}
return 0;
}
int main()
{
int len=0,b=0,i=0;
char a[64]={0};
int place[64]={0};
gets(a);
len=strlen(a);
FanZhuan(a,len);
for(i=0;i<len;i++)
{
if(a[i]==' ')
{
place[b+1]=(i+1);
b++;
}
}
place[b+1]=len+1;
Daozhi(a,len,place);
puts(a);
return 0;
}