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 \nfile2:%s\n",str1,str2);
break;
}
if(strcmp(str1,str2) != 0)
{
printf("file1:%s \nfile2:%s\n",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\n",stu1[index1].name,stu1[index1].score);
index1++;
}
fclose(fp1);
while(!feof(fp2))
{
fscanf(fp2,"%s %d\n",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\n",
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 !\n");
return 0;
}
}
}
printf("Ok !\n");
return 0;
}
以上课程设计主要是一个同学找我来帮忙的。没有直接进行编译,仅供大家參考。希望没有太多的错误,大家多多关照。
如今还是告诉一些学弟。好好学习编程。这是你们以后找工作的本事,不要浪费时间,多花些时间在敲代码上。希望你们能像编程!
版权声明:本文博主原创文章,博客,未经同意不得转载。