三级网络技术上机C语言题库52-60
三级网络技术上机C语言题库52-60
【试题类型】字符串替换
第52题
【题目】下列程序的功能是:计算出自然数SiX和NINE的个数cnt,它们满足的条件是SiX+SiX+SiX=NINE+NINE,并计算满足此条件的所有SiX与NINE的和SUM。请编写函数countvalue()实现程序的要求,最后调用函数weiteDat()把结果cnt和sum输出到文件out.dat中。其中S、i、X、N、E各代表一个十进制数字。
注意:部分源程序己给出。请勿改动主函数main()的内容。
【参考答案】
#include
int cnt,sum;
void countvalue()
{
int s,i,x,n,e,six,nine;
for(s=1;s<10;s++)
for(i=0;i<10;i++)
for(x=0;x<10;x++)
for(n=1;n<10;n++)
for(e=0;e<10;e++)
{ six=s*100+i*10+x;
nine=n*1000+i*100+n*10+e;
if(3*six==2*nine)
{ cnt++;sum+=six+nine;}
}
}
void main()
{
cnt=sum=0;
countvalue();
printf("满足条件的个数=%d\n",cnt);
printf("满足条件所有的SiX与NINE的和=%d\n",sum);
writeDat();
}
writeDat()
{
FILE *fp;
fp=fopen("OUT.DAT","w");
fprintf(fp,"%d\n%d\n",cnt,sum);
fclose(fp);
}
第53题
【题目】函数ReadDat()的功能是实现从文件IN.DAT中读取一篇英文文章,存入到字符串数组xx中。请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,结果仍存入数组xx对应的位置上,最后调用函数writeDat()把结果xx输出到文件out.dat中。
替代关系:f (p)=p*11 mod 256(p是数组xx中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)的值小于等于32或f(p)对应的字符是小写字母,则该字符不变,否则将f(p)所对应的字符进行替代。
注意:部分源程序己给出。原始数据文件存放的格式是:每行的宽度均小于80个字符。请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
【参考答案】
#include
#include
#include
#include
#include
unsigned char xx[50][80] ;
int maxline = 0 ;/* 文章的总行数 */
int ReadDat(void) ;
void WriteDat(void) ;
void encryptChar()
{
int i,j;
for(i=0;i
for(j=0;j
if(xx[i][j]*11%256<=32||xx[i][j]*11%256>='a'&&xx[i][j]*11%256<='z') continue;
else xx[i][j]=xx[i][j]*11%256;
}
main()
{
system("cls");
if(ReadDat())
{ printf("数据文件c:\\test\\IN.DAT不能打开!\n\007") ; return ; }
encryptChar() ;
WriteDat() ;
}
int ReadDat(void)
{
FILE *fp;
int i = 0 ;
unsigned char *p ;
if((fp = fopen("c:\\test\\IN.DAT", "r")) ==NULL) return 1 ;
while(fgets(xx[i], 80, fp) !=NULL)
{
p = strchr(xx[i], '\n ') ;
if(p) *p = 0;
i++ ;
}
maxline = i ;
fcl