杨辉三角

来源:互联网 发布:知乎搜索引擎 编辑:程序博客网 时间:2024/05/08 20:13

      1
      1  1
      1  2  1
      1  3  3  1
      1  4  6  4  1
      1  5  10 10 5  1                                    

int main(void){    int a[10][10],i,j;    for(i=0;i<10;i++)    {//          for(j=10;j>=i;j--)//            printf("%2c",'*');/*两个空格*/        for(j=0;j<=i;j++)       //打出直角三角形,        {            if(i==j||j==0)      //给对角线和第一列赋值为1            {                a[i][j]=1;            }            else                //剩下内面的值等于上一行的两数之和            {                a[i][j]=a[i-1][j]+a[i-1][j-1];            }            printf("%3d ",a[i][j]);     /*%3d后一个空格*/                        if(i==j)            //为对角线的时候换行            {                printf("\n");            }        }    }    return 0;}

2pingjiang

#include <stdio.h>#include <stdbool.h>#include <stdlib.h>#include <string.h>struct Stuinfo{    char ID[4];    char NAME[10];    int Score;};struct Stuinfo stuInfo[100];//结构体数组FILE *file;//文件指针,指向物理文件bool checkId(char Id[]);bool checkId(char Id[]){    bool s = false;    for (int i = 0; i < strlen(Id); i++)    {        if (Id[i] >= '0' && Id[i] <= '9')        {            s = true;        }        else        {            s = false;            break;   //        }    }    return s;}bool checkName(char name[]);bool checkName(char name[]){    bool s = false;    for (int i = 0; i < strlen(name); i++)    {        if ((name[i] >= 'a' && name[i] <= 'z') || (name[i] >= 'A' && name[i] <= 'Z'))        {            s = true;        }        else        {            s = false;            break;   //        }    }    return s;}void createDB();void createDB(){    int i = 0;//代表先在录入第i个学生    int m = 0;//录入了多少学生    bool success = 0;        while (1)    {        //学号        printf("请输入第%d个学生的信息\n",i+1);        do        {            printf("请输入学号\n");            char tempId[4];            scanf("%s",tempId);                        if (checkId(tempId))            {                success = 1;                strcpy(stuInfo[i].ID, tempId);            }            else            {                success = 0;                printf("输入的学号有错误\n");            }        } while (!success);        //姓名        do        {            printf("请输入姓名\n");            char tempName[10];            scanf("%s",tempName);                        if (checkName(tempName))            {                success = 1;                strcpy(stuInfo[i].NAME, tempName);            }            else            {                success = 0;            }        } while (!success);                //成绩        do        {            printf("请输入成绩\n");            int score = 0;            scanf("%d",&score);                        if (score >= 0 && score <=100)            {                success = 1;                stuInfo[i].Score = score;            }            else            {                success = 0;            }        } while (!success);                i++;        m++;                //跳出循环的条件        printf("是继续录入信息请按y或Y\n");        getchar();//截取\n        char ch;        scanf("%c",&ch);        if (ch == 'Y' || ch == 'y')        {            continue;        }        else        {            break;        }    }        //把数据记录到文件    if ((file = fopen("/Users/3022/Desktop/code_C/评讲/stuInfo/stu.txt","w+")) == NULL)    {        printf("打开文件失败\n");    }    for (int i = 0 ; i < m; i++)    {        fwrite(&stuInfo[i], sizeof(struct Stuinfo), 1, file);//只是写到缓冲区    }        fclose(file);//写到文件上}void printStuInfo();void printStuInfo(){    if ((file = fopen("/Users/3022/Desktop/code_C/评讲/stuInfo/stu.txt","r")) == NULL)    {        printf("打开文件失败\n");    }    int n = 0;                            //代表文件中几条记录    for(int i = 0;fread(&stuInfo[i],sizeof(struct Stuinfo), 1, file);i++ )    {        n++;    }    printf("学号--------姓名-------成绩-----\n");    for(int j = 0;j < n ;j++)    {        printf("%-10s %-10s %-10d\n",stuInfo[j].ID,stuInfo[j].NAME,stuInfo[j].Score);    }    printf("------------------------------\n");    fclose(file);}void searchByName();void searchByName(){    int n = 0;//记录文件中有几条记录    if ((file = fopen("/Users/3022/Desktop/code_C/评讲/stuInfo/stu.txt","r")) == NULL)    {        printf("打开文件失败\n");    }        for (int i = 0;fread(&stuInfo[i],sizeof(struct Stuinfo), 1, file);i++)    {        n++;    }        while(1)    {        printf("请输入你想查找学生的姓名\n");        char temp[10];        scanf("%s",temp);                int flag = 0 ;        printf("学号--------姓名-------成绩-----\n");        for(int i = 0 ;i < n; i++)        {            if(strcmp(temp, stuInfo[i].NAME) == 0)            {                    printf("%-10s %-10s %-10d\n",stuInfo[i].ID,stuInfo[i].NAME,stuInfo[i].Score);            }            else            {                flag++;            }        }                if(flag == n)        {            printf("对不起,没查到你需要找到学生\n");        }        printf("------------------------------\n");                //        printf("按Y或y继续查找\n");        getchar();        char ch;        scanf("%c",&ch);        if(ch == 'Y' || ch == 'y')        {            continue;        }        else        {            break;        }    }}void insertInfo();void insertInfo(){        int n = 0;//记录文件中有几条记录    if ((file = fopen("/Users/3022/Desktop/code_C/评讲/stuInfo/stu.txt","r")) == NULL)    {        printf("打开文件失败\n");    }        for (int i = 0;fread(&stuInfo[i],sizeof(struct Stuinfo), 1, file);i++)    {        n++;    }        //    int i = 0;//代表先在录入第i个学生    int m = 0;//录入了多少学生    bool success = 0;        while (1)    {        //学号        printf("请输入第%d个学生的信息\n",n+i+1);        do        {            printf("请输入学号\n");            char tempId[4];            scanf("%s",tempId);                        if (checkId(tempId))            {                success = 1;                strcpy(stuInfo[i].ID, tempId);            }            else            {                success = 0;                printf("输入的学号有错误\n");            }        } while (!success);        //姓名        do        {            printf("请输入姓名\n");            char tempName[10];            scanf("%s",tempName);                        if (checkName(tempName))            {                success = 1;                strcpy(stuInfo[i].NAME, tempName);            }            else            {                success = 0;            }        } while (!success);                //成绩        do        {            printf("请输入成绩\n");            int score = 0;            scanf("%d",&score);                        if (score >= 0 && score <=100)            {                success = 1;                stuInfo[i].Score = score;            }            else            {                success = 0;            }        } while (!success);                i++;        m++;                //跳出循环的条件        printf("是继续录入信息请按y或Y\n");        getchar();//截取\n        char ch;        scanf("%c",&ch);        if (ch == 'Y' || ch == 'y')        {            continue;        }        else        {            break;        }    }        //把数据记录到文件    if ((file = fopen("/Users/3022/Desktop/code_C/评讲/stuInfo/stu.txt","a+")) == NULL)//追加    {        printf("打开文件失败\n");    }    for (int i = 0 ; i < m; i++)    {        fwrite(&stuInfo[i], sizeof(struct Stuinfo), 1, file);//只是写到缓冲区    }        fclose(file);//写到文件上}void deleteByName();void deleteByName(){    int n = 0;    if ((file = fopen("/Users/3022/Desktop/code_C/评讲/stuInfo/stu.txt", "r")) == NULL)    {        printf("打开文件失败\n");    }        for (int i = 0;fread(&stuInfo[i],sizeof(struct Stuinfo), 1, file);i++)    {        n++;    }    //    char temp[10];    int i = 0;    while(1)    {        printf("请输入要删除学生的名字\n");        scanf("%s",temp);        printf("学号--------姓名-------成绩-----\n");        for (; i < n ; i++)        {            if (strcmp(stuInfo[i].NAME, temp) == 0)            {                printf("%-10s %-10s %-10d\n",stuInfo[i].ID,stuInfo[i].NAME,stuInfo[i].Score);                                           if (i == n - 1)//删除最后1个                {                                }                else//删除中间                {                    for(int j = i;j < n -1;j++)                    {                        stuInfo[j] = stuInfo[j+1];                    }                }                n--;                            i = -1; //找到删除了i 又从0开始遍历,没找到i不用从0开始            }        }        printf("------------------------------\n");                        //        printf("按y或Y继续删除\n");        getchar();        char ch;        scanf("%c",&ch);        if(ch == 'Y' || ch == 'y')        {            continue;        }        else        {            break;        }    }    //把数据记录到文件    if ((file = fopen("/Users/3022/Desktop/code_C/评讲/stuInfo/stu.txt","w")) == NULL)    {        printf("打开文件失败\n");    }        for (int i = 0 ; i < n; i++)    {        fwrite(&stuInfo[i], sizeof(struct Stuinfo), 1, file);//只是写到缓冲区    }        fclose(file);//写到文件上}void sortByScore();void sortByScore(){    int n = 0;    if ((file = fopen("/Users/3022/Desktop/code_C/评讲/stuInfo/stu.txt", "r")) == NULL)    {        printf("打开失败\n");    }    for (int i = 0 ; fread(&stuInfo[i],sizeof(struct Stuinfo), 1, file); i++)    {        n++;    }        struct Stuinfo temp;    for (int j = 0; j < n -1; j++)    {        for (int i = 0; i < n - j - 1; i++)        {            if (stuInfo[i].Score < stuInfo[i+1].Score)            {                temp = stuInfo[i+1];                stuInfo[i+1] = stuInfo[i];                stuInfo[i] = temp;            }        }    }        //把数据记录到文件    if ((file = fopen("/Users/3022/Desktop/code_C/评讲/stuInfo/stu.txt","w")) == NULL)    {        printf("打开文件失败\n");    }        for (int i = 0 ; i < n; i++)    {        fwrite(&stuInfo[i], sizeof(struct Stuinfo), 1, file);//只是写到缓冲区    }        fclose(file);//写到文件上}int main(int argc, const char * argv[]){    printf("1.创建2.输出3.查找4.插入5.删除6.排序\n");    int w;    scanf("%d",&w);        while (1)    {                switch (w)        {            case 1:            {                createDB();                break;            }            case 2:            {                printStuInfo();                break;            }            case 3:            {                searchByName();                break;            }            case 4:            {                insertInfo();                break;            }            case 5:            {                deleteByName();                break;            }            case 6:            {                sortByScore();                break;            }            default:                break;        }                printf("1~6继续操作:\n1.创建2.输出3.查找4.插入5.删除6.排序\n");        scanf("%d",&w);        if(w <=6 && w > 0)        {            continue;        }        else        {            break;        }    }                return 0;}

 

 

 

 

 

 

0 0