程序设计基础课程设计Word文档下载推荐.docx
- 文档编号:20535976
- 上传时间:2023-01-23
- 格式:DOCX
- 页数:16
- 大小:18.89KB
程序设计基础课程设计Word文档下载推荐.docx
《程序设计基础课程设计Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《程序设计基础课程设计Word文档下载推荐.docx(16页珍藏版)》请在冰豆网上搜索。
"
exit(0);
}
for(i=0;
i<
N;
i++)//输入字符并写入文件
gets(str1[i]);
fputs(str1[i],fp1);
fputs("
fp1);
PleaseenterthesecondtextB:
if(fp2=fopen("
num2.text"
)==0)//
i++)
gets(str2[i]);
fputs(str2[i],fp2);
fp2);
fclose(fp1);
fclose(fp2);
fp1=fopen("
r"
//打开文件
fp2=fopen("
i++)//对两个文件中的字符进行行比较
fgets(str1[i],80,fp1);
fgets(str2[i],80,fp2);
if(strcmp(str1[i],str2[i])!
=0)
k=i;
flag=1;
break;
if(flag)//如果存在不同行
\nThefirstdifferentrowbetweenAandB:
//分别输出不同行
A:
%s\n"
str1[k]);
B:
str2[k]);
else
Thetwotexthavethesamecontents!
!
//关闭文件
return0;
}
测试数据:
第1_3题:
现有两个文本文件db1.txt和db2.txt。
db1.txt中第一列为姓名,第二列为英语成绩;
db2.txt中第一列为姓名,第二列为数学成绩。
通过姓名字段将db1.txt文件关联到db2.txt文件生成db3.txt文件。
db3.txt文件第一列为姓名,第二列为英语成绩,第三列为数学成绩,第四列为平均成绩
算法描述:
定义三个文件指针,输入数据分别存在两个文件文本,输入时用结构存储数字和字符的混合输入;
打开文件,对文件中的结构体存储的字符比较遇到两个文件中相同的name,将两个文件对应该name的内容整合,写到第三个文件中,并在屏幕输出文件内容。
no1_3.c
#defineN1
structStudent//定义前两个文件内容的结构体,结构体元素是姓名和分数
charname[10];
doublescore;
};
structStudent1//定义第三个文件内容的结构体,元素是姓名和分数数组(含三个元素)
doublescore[3];
FILE*fp1,*fp2,*fp3;
structStudentstu[2][N];
//定义二维结构体数组
structStudent1stu1[N];
inti,j,k=0;
intflag=0;
//输入
Pleaseinputdb1.txt:
db1.txt"
scanf("
%s%lf"
stu[0][i].name,&
stu[0][i].score);
fwrite(&
stu[0][i],sizeof(structStudent),1,fp1);
//读取结构体中的一元素存入文件
\nPleaseinputdb2.txt:
db2"
stu[1][i].name,&
stu[1][i].score);
stu[1][i],sizeof(structStudent),1,fp2);
//打开文件,只写
db2,txt"
fread(&
for(j=0;
j<
j++)
stu[1][j],sizeof(structStudent),1,fp2);
if(strcmp(stu[0][i].name,stu[1][j].name)==0)
strcpy(stu1[k].name,stu[1][i].name);
stu1[k].score[0]=stu[0][i].score;
stu1[k].score[1]=stu[1][j].score;
stu1[k].score[2]=(stu1[k].score[0]+stu1[k].score[1])/2;
k++;
//输出
if(flag)
fp3=fopen("
db3.txt"
NamesMathsEnglishAverage\n"
k;
stu1[i],sizeof(structStudent1),1,fp3);
%s"
stu1[i].name);
3;
%10.2f"
stu1[i].score[j]);
fclose(fp3);
else
Maybethelistsaretakenbymistake!
第2_2题:
统计一个英文文本文件中26个英文字母出现次数并按英文字母序输出统计结果,查找并替换此英文文本文件中某字符串。
建立文本文件并输入数据(二维字符数组的形式),存储于文件,打开文件读出字符!
!
用
个英文字符与从文件读出的文件比较,建立累加器对每个字母出现的次数赋值!
no2_2.c
#include<
ctype.h>
#defineN2
inti,j,k,cout;
charstr[N][80],ch,c;
Pleaseinput:
num1"
//建立文件并写入数据
gets(str[i]);
fputs(str[i],fp1);
//打开文件并读出数据
i++);
fgets(str[i],80,fp2);
Theshowingtimesofletters:
for(ch='
a'
k=1;
ch<
='
z'
;
ch++)
cout=0;
strlen(str[i]);
if(isalpha(str[i][j]))
c=tolower(str[i][j]);
//大写转化小写
if(ch==c)
cout++;
if(cout)
%c:
%2d"
ch,cout);
if(k%4==0)
//查找并替换字符串my->
my
\nTheadvertedarticle:
if(str[i][j]=='
m'
&
str[i][j+1]=='
y'
)
str[i][j+1]='
e'
%s\n"
str[i]);
第3_1题:
将输入的2进制字符串转换为10进制数输出。
输入二进制的字符串,每个字符减去0字符就是他们的十进制数值,在乘以2的n-1次方,再加和!
no3_1.c
//为strlen函数提供原型
math.h>
//为pow函数提供原型
charstr[10];
inti,sum=0;
Pleaseinputbinarynumber:
gets(str);
i<
strlen(str);
i++)
sum+=(str[i]-'
0'
)*pow(2,i);
//计算每个位上的字符再加和
Thedecimalnumberis:
\n"
%d\n"
sum);
//输出所对应的十进制数
第3_2题:
设计一个复数类型,输入实部和虚部生成一个复数,可进行两个复数求和、两个复数求差、两个复数求积运算。
复数分为实部和虚部,因此一个复数的输入是要分两部分的,输出也是,输出时在虚部后加i.
no3_2.c
inta,b,c,d;
charch;
Pleaseentertwocomplexnumbers:
%d%d%d%d"
&
a,&
b,&
c,&
d);
\n1)calculatethesum\n2)calculatethediff\n3)calculatetheproduct\n"
Pleasechoose1,2or3:
(qtoquit):
//选择模式
getchar();
while((ch=getchar())!
q'
)//循环
while(getchar()!
\n'
switch(ch)
case'
1'
:
%d+%di\n"
a+c,b+d);
2'
if(b-d>
a-c,b-d);
%d%di\n"
3'
a*c-b*d,a*d+b*c);
default:
第3_3题:
用一个整型数组表示10进制大整数,数组的每个元素存储大整数的一位数字,将这个大整数转换为2进制数输出。
存入大整数时,将数值的各个位上的数分离存到数组中。
因为整数数值大,一定注意了溢出,,在计算时,再用数组下标与数值各个位上的关系,整合再输出所对应的二进制数!
No3_3.c
#defineN20
voidto_base_n(longlongn,unsignedintbase);
inta[N],i=0,j,k,m;
longlongn=0;
请输入数字(#结束):
while(scanf("
%d"
a[i])==1)
i++;
j=i-1;
=j;
for(k=j;
k>
=0;
k--)
n+=a[i]*pow(10,k);
\n转换过后的等值二进制数:
to_base_n(n,2);
voidto_base_n(longlongn,unsignedintbase)//进制转换超级函数
intr;
r=n%base;
if(n>
=base)
to_base_n(n/base,base);
putchar('
+r);
return;
第3_4题:
根据输入的数字N,计算N以内(包括N)数据链并统计数据链末尾数字是1的数据个数。
例如N=44,则数字链为:
44->
32->
13->
10->
1,其规则为:
4*4+4*4=32,3*3+2*2=13,1*1+3*3=10,1*1+0*0=1。
对输入数字进行各个位拆分并计算各个位上数字的平方和,每计算一次的和与1进行比较,
知道等于1时程序结束。
no3_4.c
intn,sum,a[10];
inti,cout=0;
请输入数字N:
"
n);
\n数据链:
while(n!
=1)
%d->
n);
sum=0;
i=0;
while(n>
0)//对每次的各位数字平方和再拆
a[i]=n%10;
if(a[0]==1)
//统计末尾数字为1的计数器
sum+=a[i]*a[i];
n=n/10;
n=sum;
1);
\n数据链末尾数字为1的数字个数:
cout);
第5_1题:
程序自动生成一个位于99内的随机数,要求用户猜这个数。
用户输入一个数后,程序有三种应答:
toobig,toosmall,youwin。
播下产生随机数的种子,随时间不同每次生成的随机数不同,用户根据提示进行猜数游戏。
no5_1.c
//为rand函数提供原型
time.h>
//为种子提供原型
intn,m;
Ready?
Let'
sgo!
\nInputthecorrectnumberyouthought:
srand(time(NULL));
//种子
m=rand()%100;
=m)//猜数进行时的提示
if(n>
m)
Toobig!
Comeon,do'
tgiveup!
Toosmall!
Whyareyousosilly!
Tryagain:
%c%cYouwin!
Youaresosmart!
1,1);
第5_2题:
产生一组随机数,要求每个数字不能重复。
例如:
1,20,3,17,80,4,35,88符合要求,3,20,1,17,80,3,35,88不符合要求
Rand函数一次只能产生一个随机数,于是使用循环结构让其多产生几个随机数,为了对随机数是否重复进行判断,将产生的随机数存放在数组中。
no5_2.c
#defineN10
inta[N],n,i,j,k;
intflag=1;
n=N;
while(flag)
n;
i++)//多次产生随机数并存到数组
a[i]=rand()%100;
if(a[i]==a[j]&
i!
=j)//判断的数组中是否有重复数字,若有,就重新产生
flag=0;
if(!
flag)
产生的不重复的随机数:
for(i=0,k=1;
i++,k++)
%-4d"
a[i]);
if(k%10==0)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 基础 课程设计