zoukankan      html  css  js  c++  java
  • 字符串处理

    1. 比较两个文本文件,并先打印出来是不一样的行(每行的字符文件数是不超过80)。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void)
    {
        FILE * fp1 = NULL;
        FILE * fp2 = NULL;
        char str1[100],str2[100];
        fp1 = fopen("test1.txt","r");
        fp2 = fopen("test2.txt","r");
        while(!feof(fp1) && !feof(fp2))
        {
            fgets(str1,99,fp1);
            fgets(str2,99,fp2);
            if(strlen(str1) != strlen(str2))
            {
                printf("file1:%s 
    file2:%s
    ",str1,str2);
                break;
            }
            if(strcmp(str1,str2) != 0)
            {
                printf("file1:%s 
    file2:%s
    ",str1,str2);
                break;
            }
        }
        fclose(fp1);
        fclose(fp2);
        return 0;
    }
    


     

    2. 文本文件num1.txt和num2.txt中各有一组用空格分隔的整数。将num1.txt和num2.txt联合排序,并将结果保存在num3.txt中,比如图3.1所看到的。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    void MySort(int num[],int len)
    {
        int i,j,temp;
        for(i=0;i<len;i++)
        {
            for (j=0;j<len-i;j++)
            {
                if (num[j]>num[j+1])
                {
                    temp=num[j+1];
                    num[j+1]=num[j];
                    num[j]=temp;
                }
            }
        }
    }
    
    int main(void)
    {
        FILE * fp1 = NULL;
        FILE * fp2 = NULL;
        FILE * fp3 = NULL;
    
        int num[200];
        int temp=0,index=0;
    
        fp1 = fopen("test1.txt","r");
        fp2 = fopen("test2.txt","r");
        fp3 = fopen("test3.txt","w");
    
        while(!feof(fp1))
        {
            fread(&temp,sizeof(int),1,fp1);
            num[index++]=temp;
        }
        fclose(fp1);
        while(!feof(fp2))
        {
            fread(&temp,sizeof(int),1,fp2);
            num[index++]=temp;
        }
        fclose(fp2);
    
        MySort(num,index);
        fwrite(num,sizeof(int),index,fp3);
        fclose(fp3);
    
        return 0;
    }

     

    3.现有两个文本文件db1.txt和db2.txt。db1.txt中第一列为姓名,第二列为英语成绩;db2.txt中第一列为姓名,第二列为数学成绩。通过姓名字段将db1.txt文件关联到db2.txt文件生成db3.txt文件。db3.txt文件第一列为姓名。第二列为英语成绩。第三列为数学成绩,第四列为平均成绩.

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    struct StuGrade
    {
        char* name;
        int score;
    };
    
    int main(void)
    {
        FILE* fp1;
        FILE* fp2;
        FILE* fp3;
    
        struct StuGrade stu1[100];
        struct StuGrade stu2[100];
        int index1=0,index2=0;
        int i=0,j=0;
    
        fp1 = fopen("db1.txt","r");
        fp2 = fopen("db2.txt","r");
        fp3 = fopen("db3.txt","w");
    
        while(!feof(fp1))
        {
            fscanf(fp1,"%s %d
    ",stu1[index1].name,stu1[index1].score);
            index1++;
        }
        fclose(fp1);
    
        while(!feof(fp2))
        {
            fscanf(fp2,"%s %d
    ",stu2[index2].name,stu2[index2].score);
            index2++;
        }
        fclose(fp2);
    
        for(i=0;i<index1;i++)
        {
            for(j=0;j<index2;j++)
            {
                if(strcmp(stu1[i].name,stu2[j].name) == 0)
                {
                    fprintf(fp3,"%s %d %d %f
    ",
                            stu1[i].name,
                            stu1[i].score,
                            stu2[j].score,
                            (stu1[i].score+stu2[j].score)*0.5);
                }
            }
        }
        fclose(fp3);
        return 0;
    }


     

    4. 检查C源程序的圆括号和大括号是否匹配。正确的样例如:({((…)(…))}()),不对的样例如:{(})。

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    int main(void)
    {
        char* str;
        int len=0,start=0;
        scanf("%s",str);
        len = strlen(str);
        if(len % 2 != 0)
        {
            printf("error !");
            return 0;
        }
        len--;
        while(start != len)
        {
            if(str[start] == '{' && str[len] == '}')
            {
                start++;
                len--;
            }
            else
            {
                if(str[start] == '(' && str[len] == ')')
                {
                    start++;
                    len--;
                }
                else
                {
                    printf("error !
    ");
                    return 0;
                }
            }
        }
        printf("Ok !
    ");
        return 0;
    }


           以上课程设计主要是一个同学找我来帮忙的。没有直接进行编译,仅供大家參考。希望没有太多的错误,大家多多关照。

           如今还是告诉一些学弟。好好学习编程。这是你们以后找工作的本事,不要浪费时间,多花些时间在敲代码上。希望你们能像编程!

     

    版权声明:本文博主原创文章,博客,未经同意不得转载。

  • 相关阅读:
    【第36题】2019年OCP认证12C题库062考试最新考试原题
    004 基本命令 touch cp mv 命令
    003 基本指令 mkdir rm -rf(暴力删除)
    002 文件目录类的指令 cd ls
    001 指定运行级别
    005 抽象工厂模式
    006 使用类加载器加载资源文件
    004 方法反射
    003 属性反射
    003 工厂方法模式
  • 原文地址:https://www.cnblogs.com/mengfanrong/p/4842597.html
Copyright © 2011-2022 走看看