一、 素数题:
题目1.请编写一个函数jsValue(int m,int
k,int xx[]),该函数的功能是:将大于
整数m且紧靠m的k个素数存入数组xx
传回。
例 如 : 若 输 入 17 5 则 应 输 出 :
19,23,29,31,37。
int isP(int m)
{
int i;
for(i=2;i<m;i++)
if(m % i==0)return 0;
return 1;
}
void num(int m,int k,int xx[])
{ int s=0;
for(m=m+1;k>0;m++)
if(isP(m)) { xx[s++]=m; k--;}
}
题目34.程序prog1.c的功能是:选出100
以上1000之内所有个位数字与十位数
字之和被10除所得余数恰是百位数字
的素数(如293)。计算并输出上述这
些素数的个数cnt以及这些素数值的和
sum。 请考生编写函数countValue( )实
现程序要求
void countValue()
{ int i,j,bw,sw,gw;
for(i=100;i<1000;i++)
{bw=i/100; sw=i%100/10; gw=i%10;
for(j=2;j<i;j++)
if(i%j==0) break;
if((i==j) &&(gw+sw)%10==bw)
{ cnt++; sum+=i;}
}
}
55、已知数据文件in.dat中存有300个四
位数,并已调用读函数 ReadDat()把这
些 数 存 入 数 组 a 中 , 请 编 制 一 函 数
jsValue(),其功能是:求出所有这些四
位数是素数的个数cnt,再把所有满足
此条件的四位数依次存入数组b中,然
后对数组b的四位数按从小到大的顺序
进行排序,最后调用写函数writeDat()
把结果输出到out.dat文件。
例如:5591是素数,则该数满足条
件 存 入 数 组 b 中 , 且 个 数
cnt=cnt+1。9812是非素数,则该数不
满足条件忽略。
#include <stdio.h>
int a[300],b[300],cnt=0;
int isP(int m){
int i;
for(i=2;i<m;i++)
if(m%i==0)return 0;
return 1;
}
jsValue()
{int i,j,value;
for(i=0;i<300;i++)
if(isP(a[i])) b[cnt++]=a[i];
for(i=0;i<cnt-1;i++)
for(j=i+1;j<cnt;j++)
if(b[i]>b[j]) {value=b[i]; b[i]=b[j];
b[j]=value;}
}
题目64下列程序的功能是:找出所有
100以内(含100)满足I,I+4,I+10都
是素数的整数I(I+10也在100以内)的
个数cnt以及这些I之和sum。请编写函
数countValue()实现程序要求的功能
int isPrime(int number)
{int i,tag=1;
for(i=2;tag&& i<=number / 2; i++)
if(number % i ==0) tag =0;
return tag;
}
void countValue()
{int i;
for(i=2;i<=90;i++)
if(isPrime(i)&&isPrime(i+4)&&isPrim
e(i+10))
{cnt++;sum+=i;}
}
题目66、下列程序prog1.c的功能是:
计算500-800区间内素数的个数cnt,并
按所求素数的值从大到小的顺序,再
计算其间隔加、减之和,即第1个素数
-第2个素数+第3个素数-第4个素数+第
5 个 素 数 ... 的 值 sum 。 请 编 写 函 数
countValue()实现程序的要求
void countValue()
{int i,j,k=1;
for(i=800;i>500;i--)
{ for(j=2;j<i;j++)
if(i%j==0) break;
if(j==i){cnt++; sum=sum+k*i; k=k*(-
1); }
}
}
题目82.已知数据文件in.dat中存有300
个四位数,请编制一函数jsValue(),其
功能是:求出所有这些四位数是素数
的个数cnt,再求出所有满足此条件的
四位数平均值pjz1,以及不满足此条件
的四位数平均值pjz2。
例如:5591是素数,则该数满
足 条 件 计 算 平 均 值 pjz1 , 且 个 数
cnt=cnt+1。 9812是非素数,则该数不
满足条件计算平均值pjz2。
程序中已定义数组:a[300],已
定义变量:cnt,pjz1,pjz2。
#include <stdio.h>
int a[300],cnt=0;
double pjz1=0.0,pjz2=0.0;
int isP(int m)
{int i;
for(i=2;i<m;i++)
if(m%i==0)return 0;
return 1;
}
jsValue()
{int i;
for(i=0;i<300;i++)
if(isP(a[i])) {pjz1+=a[i];cnt++;}
else pjz2+=a[i];
if(cnt==0) pjz1=0;
else pjz1/=cnt;
if(300-cnt==0) pjz2=0;
else pjz2/=(300-cnt);
}
二、 结构体
题目7已知在文件IN.DAT中存有100个
产品销售记录,每个产品销售记录由
产品代码dm(字符型4位),产品名称
mc(字符型10位),单价dj(整型),数量
sl(整型),金额je(长整型)五部分组成。
其中:金额=单价*数量计算得出。请
编制函数SortDat(),其功能要求:按产
品代码从大到小进行排列,若产品代
码相同,则按金额从大到小进行排列
,最终排列结果仍存入结构数组sell中
void SortDat()
{int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].dm,sell[j].dm)<0||
strcmp(sell[i].dm,sell[j].dm)==0&&sell[i
].je<sell[j].je)
{xy=sell[i];
sell [i]=sell[j]; sell[j]=xy;} }
题目13每个产品销售记录由产品代码
dm(字符型4位),产品名称mc(字符型
10位),单价dj(整型),数量sl(整型),
金额je(长整型)五部分组成。其中:金
额= 单 价 * 数 量计算得 出 。 编制函数
SortDat(),其功能要求:按产品代码从
小到大进行排列,若产品代码相等,
则按金额从大到小进行排列,最终排
列结果仍存入结构数组sell中:
void SortDat()
{int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].dm,sell[j].dm)>0||
strcmp(sell[i].dm,sell[j].dm)==0&&sell[i
].je<sell[j].je)
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}
}
题目38编制函数SortDat(),其功能要求
:按产品代码从小到大进行排列,若
产品代码相同,则按金额从小到大进
行排列,最终排列结果仍存入结构数
组sell中
void SortDat()
{int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].dm,sell[j].dm)>0||
strcmp(sell[i].dm,sell[j].dm)==0&&sell[i
].je>sell[j].je)
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}
}
题目12编制函数SortDat(),其功能要求
:
按产品名称从小到大进行排列,若产
品名称相等,则按金额从小到大进行
排列,最终排列结果仍存入结构数组
sell中
void SortDat()
{int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].mc,sell[j].mc)>0||
strcmp(sell[i].mc,sell[j].mc)==0&&sell[i]
.je>sell[j].je)
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}
}
题目32 SortDat(),其功能要求:按产
品名称从大到小进行排列,若产品名
称相等,则按金额从小到大进行排列
,最终排列结果仍存入结构数组sell中
void SortDat()
{int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].mc,sell[j].mc)<0||
strcmp(sell[i].mc,sell[j].mc)==0&&sell[i]
.je>sell[j].je)
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}
}
题目42 SortDat(),其功能要求:按产
品名称从大到小进行排列,若产品名
称相等,则按金额从大到小进行排列
,最终排列结果仍存入结构数组sell中
void SortDat()
{int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(strcmp(sell[i].mc,sell[j].mc)<0||
strcmp(sell[i].mc,sell[j].mc)==0&&sell[i]
.je<sell[j].je)
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}}
题目31函数SortDat(),其功能要求:按
金额从大到小进行排列,若金额相同
,则按产品代码从大到小进行排列,
最终排列结果仍存入结构数组sell中
void SortDat()
{int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(sell[i].je<sell[j].je||
sell[i].je==sell[j].je&&strcmp(sell[i].dm,
sell[j].dm)<0)
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}}
题目47函数SortDat(),其功能要求:按
金额从大到小进行排列,若金额相等
,则按产品代码从小到大进行排列,
最终排列结果仍存入结构数组sell中,
最后调用函数WriteDat()把结果输出到
文件OUT3.DAT中。
void SortDat()
{int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(sell[i].je<sell[j].je||
sell[i].je==sell[j].je&&strcmp(sell[i].dm,
sell[j].dm)>0)
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}
}
题目61函数SortDat(),其功能要求:按
金额从小到大进行排列,若金额相同
,则按产品代码从大到小进行排列,
最终排列结果仍存入结构数组sell中
void SortDat()
{int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(sell[i].je>sell[j].je||
sell[i].je==sell[j].je&&strcmp(sell[i].dm,
sell[j].dm)<0)
{xy=sell[i]; sell[i]=sell[j];
sell[j]=xy;}
}
题目99函数SortDat(),其功能要求:按
金额从小到大进行排列,若金额相等
,则按产品代码从小到大进行排列,
最终排列结果仍存入结构数组 sell中
void SortDat()
{int i,j;
PRO xy;
for(i=0;i<99;i++)
for(j=i+1;j<100;j++)
if(sell[i].je>sell[j].je||
sell[i].je==sell[j].je&&strcmp(sell[i].dm,
sell[j].dm)>0)
{xy=sell[i];sell[i]=sell[j];sell[j]=xy;}
}
三、字符替换与移位
题目8请编制函数encryptChar(),按给
定的替代关系对数组xx中的所有字符
进行替代,仍存入数组xx的对应的位
置上, 替代关系:f(p)=p*11 mod
256(p是数组中某一个字符的ASCII值
,f(p)是计算后新字符的ASCII值),
如果计算后f(p)值小于等于32或大于
130,则该字符不变,否则将 f(p)所对
应的字符进行替代。
void encryptChar()
{ int i,j;
for(i=0;i<maxline;i++)
for(j=0;j<strlen(xx[i]);j++)
if(xx[i][j]*11%256<=32||xx[i]
[j]*11%256>130) continue;
else xx[i][j]=xx[i][j]*11%256;
}
题目36
函 数 encryptChar() , 替 代 关 系 :
f(p)=p*11 mod 256(p是数组中某一个
字符的ASCII值,f(p)是计算后新字符
的ASCII值),如果计算后f(p)值小于
等于32或f(p)对应的字符是数字0至9,
则该字符不变,否则将f(p)所对应的字
符进行替代。
void encryptChar()
{ int i,j;
for(i=0;i<maxline;i++)
for(j=0;j<strlen(xx[i]);j++)
if(xx[i][j]*11%256<=32||xx[i]
[j]*11%256>='0'&&xx[i]
[j]*11%256<='9') continue;
else xx[i][j]=xx[i][j]*11%256;
}
题目56
encryptChar() , 替 代 关 系 :
f(p)=p*11mod 256 (p是数组中某一个
字符的ASCII值,f(p)是计算后新字符
的ASCII值),如果计算后f(p)值小于
等于32或f(p)对应的字符是小写字母,
则该字符不变,否则将f(p)所对应的字
符进行替代。
void encryptChar()
{ int i,j;
for(i=0;i<maxline;i++)
for(j=0;j<strlen(xx[i]);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;
}
题目62(字符替换题)
编制函数encryptChar(),
替代关系:f(p)=p*13 mod 256(p
是数组中某一个字符的ASCII值,f(p)
是计算后新字符的ASCII值),如果计
算后f(p)值小于等于32或其 ASCII 值是
偶数,则该字符不变,否则将f(p)所对
应的字符进行替代。
void encryptChar()
{ int i,j;
for(i=0;i<maxline;i++)
for(j=0;j<strlen(xx[i]);j++)
if(xx[i][j]*13%256<=32||(xx[i]
[j]*13%256)%2==0) continue;
else xx[i][j]=xx[i][j]*13%256;
}
题目95