海尔森普特嵌入式学习代码

 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;
}

#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" , &not);
    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;
}

  • 22
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值