计算机三级数据库上机试题100道.docx
《计算机三级数据库上机试题100道.docx》由会员分享,可在线阅读,更多相关《计算机三级数据库上机试题100道.docx(203页珍藏版)》请在冰豆网上搜索。
计算机三级数据库上机试题100道
计算机三级数据库上机试题100道
目录
一、20行数据问题2
一、200个四位数9
二、200个整数43
三、200组数据47
四、300个四位数51
五、1000个十进制数56
六、1000-9999排序62
七、产品销售65
八、个数小于20077
九、混乱计算86
十、素数101
十一、选票106
十二、字符112
一、20行数据问题
1.奇数从小到大
函数readDat()的功能是从文件in74.dat中读取20行数据存放到字符串数组xx中(每行字符串的长度均小于80)。
请编制函数jsSort(),该函数的功能是:
以行为单位对字符串变量的下标为奇数位置上的字符按其ASCII值从小到大的顺序进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件out74.dat中。
例如:
位置 0 1 2 3 4 5 6 7
源字符串 h g f e d c b a
则处理后字符串 h a f c d e b g。
注意:
部分源程序已给出。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include
#include
#include
charxx[20][80];
voidreadDat();
voidwriteDat();
voidjsSort()
{
inti,j,k;/*定义循环控制变量*/
intstr;/*定义存储字符串长度的变量*/
chartemp;/*定义数据交换时的暂存变量*/
for(i=0;i<20;i++)/*逐行对数据进行处理*/
{
str=strlen(xx[i]);/*求各行字符串的长度*/
for(j=1;jfor(k=j+2;kif(xx[i][j]>xx[i][k])
{
temp=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=temp;
}
}
}
voidmain()
{
readDat();
jsSort();
writeDat();
}
voidreadDat()
{
FILE*in;
inti=0;
char*p;
in=fopen("in74.dat","r");
while(i<20&&fgets(xx[i],80,in)!
=NULL)
{
p=strchr(xx[i],'\n');
if(p)*p=0;
i++;
}
fclose(in);
}
voidwriteDat()
{
FILE*out;
inti;
out=fopen("out74.dat","w");
system("CLS");
for(i=0;i<20;i++)
{
printf("%s\n",xx[i]);
fprintf(out,"%s\n",xx[i]);
}
fclose(out);
}
2.左降与右换
函数readDat()的功能是从文件IN75.DAT中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。
请编制函数jsSort(),该函数的功能是:
以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT75.DAT中。
条件:
从字符串中间一分为二,左边部分按字符的ASCII值降序排序,排序后,左边部分与右边部分按例子所示进行交换。
如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。
例如, 位置 012345678
源字符串 abcdhgfe
23498765
则处理后字符串hgfedcba
87659432
注意:
部分源程序已给出。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include
#include
#include
charxx[20][80];
voidreadDat();
voidwriteDat();
voidjsSort()
{
inti,j,k;/*定义计数器变量*/
intstr,half;/*定义存储字符串长度的变量*/
chartemp;/*定义数据交换时的暂存变量*/
for(i=0;i<20;i++)/*逐行对数据进行处理*/
{
str=strlen(xx[i]);/*求字符串的长度*/
half=str/2;/*通过half将字符串分为左右两部分*/
for(j=0;jfor(k=j+1;kif(xx[i][j]{
temp=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=temp;
}
for(j=half-1,k=str-1;j>=0;j--,k--)/*将左边部分和右边部分的对应字符交换*/
{
temp=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=temp;
}
}
}
voidmain()
{
readDat();
jsSort();
writeDat();
}
voidreadDat()
{
FILE*in;
inti=0;
char*p;
in=fopen("IN75.DAT","r");
while(i<20&&fgets(xx[i],80,in)!
=NULL)
{
p=strchr(xx[i],'\n');
if(p)*p=0;
i++;
}
fclose(in);
}
voidwriteDat()
{
FILE*out;
inti;
system("CLS");
out=fopen("OUT75.DAT","w");
for(i=0;i<20;i++)
{
printf("%s\n",xx[i]);
fprintf(out,"%s\n",xx[i]);}
fclose(out);
}
3.左降与右升
函数readDat()是从文件in77.dat中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。
请编制函数jsSort(),其功能是:
以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中。
最后调用函数writeDat()把结果xx输出到文件out77.dat中。
条件:
从字符串中间一分为二,左边部分按字符的ASCII值降序排序,右边部分按字符的ASCII值升序排序。
如果原字符串长度为奇数,则最中间的字符不参加排序,字符仍放在原位置上。
例如:
位置012345678
源字符串abcdhgfe
123498765
处理后的字符串dcbaefgh
432195678
注意:
部分源程序已给出。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include
#include
#include
charxx[20][80];
voidreadDat();
voidwriteDat();
voidjsSort()
{
inti,j,k;/*定义循环控制变量*/
intstr,half;/*定义存储字符串长度的变量*/
chartemp;/*定义数据交换时的暂存变量*/
for(i=0;i<20;i++)/*逐行对数据进行处理*/
{
str=strlen(xx[i]);/*求各行字符串的总长度*/
half=str/2;/*求总长度的一半*/
for(j=0;jfor(k=j+1;kif(xx[i][j]{
temp=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=temp;
}
if(str%2==1)/*如果原字符串长度为奇数,则跳过最中间的字符,使之不参加排序*/
half++;
for(j=half;jfor(k=j+1;kif(xx[i][j]>xx[i][k])
{
temp=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=temp;
}
}
}
voidmain()
{
readDat();
jsSort();
writeDat();
}
voidreadDat()
{
FILE*in;
inti=0;
char*p;
in=fopen("in77.dat","r");
while(i<20&&fgets(xx[i],80,in)!
=NULL)
{
p=strchr(xx[i],'\n');
if(p)
*p=0;
i++;
}
fclose(in);
}
voidwriteDat()
{
FILE*out;
inti;
system("CLS");
out=fopen("out77.dat","w");
for(i=0;i<20;i++)
{
printf("%s\n",xx[i]);
fprintf(out,"%s\n",xx[i]);
}
fclose(out);
}
4.左升与右换
读函数readDat()的功能是从文件IN76.DAT中读取20行数据存放到字符串数组xx中(每行字符串长度均小于80)。
请编制函数jsSort(),该函数的功能是:
以行为单位对字符串按下面给定的条件进行排序,排序后的结果仍按行重新存入字符串数组xx中,最后调用写函数writeDat()把结果xx输出到文件OUT76.DAT中。
条件:
从字符串中间一分为二,左边部分按字符的ASCII值升序排序,排序后,左边部分与右边部分按例子所示进行交换。
如果原字符串长度为奇数,则最中间的字符不参加处理,字符仍放在原位置上。
例如:
位置 012345678
源字符串 dcbahgfe
43219876
处理后字符串hgfeabcd
98761234
注意:
部分源程序已给出。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include
#include
#include
charxx[20][80];
voidreadDat();
voidwriteDat();
voidjsSort()
{
inti,j,k;/*定义计数器变量*/
intstr,half;/*定义存储字符串长度的变量*/
chartemp;/*定义数据交换时的暂存变量*/
for(i=0;i<20;i++)/*逐行对数据进行处理*/
{
str=strlen(xx[i]);/*求字符串的长度*/
half=str/2;/*确定各行中字符串的中间位置*/
for(j=0;jfor(k=j+1;kif(xx[i][j]>xx[i][k])
{
temp=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=temp;
}
for(j=half-1,k=str-1;j>=0;j--,k--)/*将左边部分与右边部分对应的字符进行交换*/
{
temp=xx[i][j];
xx[i][j]=xx[i][k];
xx[i][k]=temp;
}
}
}
voidmain()
{
readDat();
jsSort();
writeDat();
}
voidreadDat()
{
FILE*in;
inti=0;
char*p;
in=fopen("IN76.DAT","r");
while(i<20&&fgets(xx[i],80,in)!
=NULL)
{
p=strchr(xx[i],'\n');
if(p)*p=0;
i++;
}
fclose(in);
}
voidwriteDat()
{
FILE*out;
inti;
system("CLS");
out=fopen("OUT76.DAT","w");
for(i=0;i<20;i++)
{
printf("%s\n",xx[i]);
fprintf(out,"%s\n",xx[i]);
}
fclose(out);
}
一、200个四位数
5.连续大于后5个数
已知IN2.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:
依次从数组a中取出一个数,如果该4位数连续大于该4位数以后的5个数且该数是奇数,则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT2.DAT文件中。
注意:
部分源程序已给出。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include
#defineMAX200
inta[MAX],b[MAX],cnt=0;
voidwriteDat();
voidjsVal()
{
inti,j;/*定义循环控制变量*/
inttemp;/*定义数据交换是的暂存变量*/
for(i=0;iif(a[i]%2!
=0)/*如果当前数是奇数*/
for(j=i+1;j<=i+5;j++)/*取该数后面的5个数进行比较*/
{
if(a[i]break;/*如果当前数不满足比后面5个数都大的条件,则跳出循环*/
elseif(j==i+5)/*如果当前数比后面的5个数都大*/
{
b[cnt]=a[i];/*将满足条件的数存入数组b中*/
cnt++;/*并统计满足条件的数的个数*/
}
}
for(i=0;ifor(j=i+1;jif(b[i]>b[j])
{
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
voidreadDat()
{
inti;
FILE*fp;
fp=fopen("IN2.DAT","r");
for(i=0;ifclose(fp);
}
voidmain()
{
inti;
readDat();
jsVal();
printf("满足条件的数=%d\n",cnt);
for(i=0;iprintf("\n");
writeDat();
}
voidwriteDat()
{
FILE*fp;
inti;
fp=fopen("OUT2.DAT","w");
fprintf(fp,"%d\n",cnt);
for(i=0;ifclose(fp);
}
6.连续小于后5个数
已知数据文件IN36.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中。
请编制函数jsVal(),其功能是:
依次从数组a中取出一个4位数,如果该4位数连续小于该4位数以后的5个数且该数是偶数(该4位数以后不满5个数,则不统计),则统计出满足此条件的数的个数cnt,并把这些4位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到OUT36.DAT文件中。
注意:
部分源程序已给出。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include
#defineMAX200
inta[MAX],b[MAX],cnt=0;
voidreadDat();
voidwriteDat();
voidjsVal()
{
inti,j;/*定义循环控制变量*/
inttemp;/*定义数据交换是的暂存变量*/
for(i=0;iif(a[i]%2==0)/*如果当前数是偶数*/
for(j=i+1;j<=i+5;j++)/*取该数后面的5个数进行比较*/
{
if(a[i]>a[j])
break;/*如果当前数不满足比后面5个数都小的条件,则跳出循环*/
elseif(j==i+5)/*如果当前数比后面的五个数都小*/
{
b[cnt]=a[i];/*将满足条件的数存入数组b中*/
cnt++;/*并统计满足条件的数的个数*/
}
}
for(i=0;ifor(j=i+1;jif(b[i]>b[j])
{
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
voidreadDat()
{
inti;
FILE*fp;
fp=fopen("IN36.DAT","r");
for(i=0;ifscanf(fp,"%d",&a[i]);
fclose(fp);
}
voidmain()
{
inti;
readDat();
jsVal();
printf("满足条件的数=%d\n",cnt);
for(i=0;iprintf("%d",b[i]);
printf("\n");
writeDat();
}
voidwriteDat()
{
FILE*fp;
inti;
fp=fopen("OUT36.DAT","w");
fprintf(fp,"%d\n",cnt);
for(i=0;ifprintf(fp,"%d\n",b[i]);
fclose(fp);
}
7.偶数
已知数据文件IN37.DAT中存有200个4位数,并已调用读函数readDat()把这些数存入数组a中,请编制一函数jsVal(),其功能是:
依次从数组a中取出一个4位数,如果该4位数连续大于该4位数以前的5个数且该数是偶数(该4位数以前不满5个数,则不统计),则统计出满足此条件的数个数cnt并把这些4位数按从大到小的顺序存入数组b中,最后调用写函数writeDat()把结果cnt及数组b中符合条件的4位数输出到文件OUT37.DAT中。
注意:
部分源程序已给出。
程序中已定义数组:
a[200],b[200],已定义变量:
cnt。
请勿改动主函数main()、读函数readDat()和写函数writeDat()的内容。
试题程序:
#include
#defineMAX200
inta[MAX],b[MAX],cnt=0;
voidwriteDat();
voidjsVal()
{
inti,j;/*定义循环控制变量*/
inttemp;/*定义数据交换是的暂存变量*/
for(i=5;iif(a[i]%2==0)/*如果当前数是偶数*/
for(j=i-5;j<=i-1;j++)/*取该数前面的5个数进行比较*/
{
if(a[i]break;/*如果当前数不满足比前面5个数都大的条件,则跳出循环*/
elseif(j==i-1)/*如果当前数比前面的5个数都大*/
{
b[cnt]=a[i];/*将满足条件的数存入数组b中*/
cnt++;/*并统计满足条件的数的个数*/
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{
temp=b[i];
b[i]=b[j];
b[j]=temp;
}
}
voidreadDat()
{
inti;
FILE*fp;
fp=fopen("in37.dat","r");
for(i=0;ifscanf(fp,"%d",&a[i]);
fclose(fp);
}
voidmain()
{