• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
三级C语言程序设计上机考试习题集(61-70)
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
三级C语言程序设计上机考试习题集(61-70)
软件发布 三级C语言程序设计上机考试习题集(61-70)
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 认证考试 >> 计算机等级考试 >> 计算机三级考试 >> 三级C语言程序设计上机考试习题集(61-70)

三级C语言程序设计上机考试习题集(61-70)

添加时间: 2007-4-19 5:53:47  作者: 计算机等级考试认证参考  阅读次数:46   来源: http://www.d9soft.com

       

*****************************************************************************************
题目61(无忧id 19结构体运算题)

已知在文件IN.DAT中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量sl(整型),金额je(长整型)五部分组成。其中:金额=单价*数量计算得出。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相同,则按产品代码从大到小进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat()把结果输出到文件OUT2.DAT中。
     部分源程序存在文件prog1.c中。
  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include <stdio.h>
#include <mem.h>
#include <string.h>
#include <conio.h>
#include <stdlib.h>
#define MAX 100
typedef struct{
  char dm[5];  /*产品代码*/
  char mc[11]; /*产品名称*/
  int dj;      /*单价*/
  int sl;      /*数量*/
  long je;     /*金额*/
}PRO;
PRO sell[MAX];
void ReadDat();
void WriteDat();
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].jesell[i].je==sell[j].je&&strcmp(sell[i].dm,sell[j].dm)<0)
       {xy=sell[i]; sell[i]=sell[j]; sell[j]=xy;}
}

void main()
 {
 memset(sell,0,sizeof(sell));
 ReadDat();
 SortDat();
 WriteDat();
 }

void ReadDat()
{
 FILE *fp;
 char str[80],ch[11];
 int i;
fp=fopen("IN.DAT","r");
 for(i=0;i<100;i++){
   fgets(str,80,fp);
   memcpy(sell[i].dm,str,4);
   memcpy(sell[i].mc,str+4,10);
   memcpy(ch,str+14,4);ch[4]=0;
   sell[i].dj=atoi(ch);
   memcpy(ch,str+18,5);ch[5]=0;
   sell[i].sl=atoi(ch);
   sell[i].je=(long)sell[i].dj*sell[i].sl;
  }
 fclose(fp);
}

void WriteDat(void)
{
 FILE *fp;
 int i;
fp=fopen("OUT2.DAT","w");
 for(i=0;i<100;i++){
  printf("%s %s %4d %5d %5d ", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
 fprintf(fp,"%s %s %4d %5d %5d ", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je);
 }
 fclose(fp);
}


****************************************************************************************

题目62(无忧id 9 字符替换题)
无忧id  9 题条件微有不同,解法在后面给出

函数ReadDat()实现从文件ENG.IN中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx的对应的位置上,最后调用函数WriteDat()把结果xx输出到文件PS2.DAT中。
  替代关系:f(p)=p*13 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。
  部分源程序存在文件prog1.c中。原始数据文件存放的格式是:每行的宽度均小于80个字符。
  请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <ctype.h>
unsigned char xx[50][80];
int maxline=0;/*文章的总行数*/
int ReadDat(void);
void WriteDat(void);
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;
}

void main()
 {
 clrscr();
 if(ReadDat()){
  printf("数据文件ENG.IN不能打开! 07");
  return;
 }
 encryptChar();
 WriteDat();
}

int ReadDat(void)
{
 FILE *fp;
 int i=0;
 unsigned char *p;
 if((fp=fopen("eng.in","r"))==NULL) return 1;
 while(fgets(xx[i],80,fp)!=NULL){
   p=strchr(xx[i],' ');
   if(p)*p=0;
   i++;
}
maxline=i;
fclose(fp);
return 0;
}

void WriteDat(void)
{
 FILE *fp;
 int i;
fp=fopen("ps2.dat","w");
 for(i=0;i<maxline;i++){
 printf("%s ",xx[i]);
 fprintf(fp,"%s ",xx[i]);
 }
 fclose(fp);
}

void encryptChar()   /*如果计算后f(p)值小于等于32或原字符ASCII值是偶数*/
{ int i,j;
  for(i=0;i<maxline;i++)
    for(j=0;j<strlen(xx[i]);j++)
      if(xx[i][j]*13%256<=32xx[i][j]%2==0) continue;
      else xx[i][j]=xx[i][j]*13%256;
}

此题还有许多解法,方法可看题8


*****************************************************************************************#p#
★☆题目63(无忧id  67、94 字符串移位题)

程序prog1.c的功能是:把 s 字符串中的所有字符左移一个位置,串中的第一个字符移到最后。请考生编写函数chg(char *s)实现程序要求,最后调用函数readwriteDAT( )把结果输出到bc2.out文件中。
     例如:s字符串中原有内容为:Mn.123xyZ,则调用该函数后,结果为:n.123xyZM。
     注意:部分源程序存在文件prog1.c文件中。
     请勿改动主函数main( )和输出数据函数readwriteDAT()的内容。
#include <conio.h>
#include <stdio.h>
#define  N 81
void readwriteDAT();
void chg(char *s)
{ int i;
  char ch=*s;
  for(i=0;i<strlen(s)-1;i++)
    s[i]=s[i+1];
  s[strlen(s)-1]=ch;
}

main()
{
  char a[ N ] ;
  clrscr();
  printf("Enter a string : "); gets(a);
  printf("The original string is : "); puts(a);
  chg(a);
  printf("The string after modified : ");
  puts(a);
  readwriteDAT();
}

void readwriteDAT()
{
  int i ;
  char a[N] ;
  FILE *rf, *wf ;
rf = fopen("bc2.in", "r") ;
  wf = fopen("bc2.out", "w") ;
  for(i = 0 ; i < 50 ; i++) {
    fscanf(rf, "%s", a) ;
    chg(a) ;
    fprintf(wf, "%s ", a) ;
  }
  fclose(rf) ;
  fclose(wf) ;
}


*****************************************************************************************#p#
★题目64(无忧id 22  素数题)

下列程序的功能是:找出所有100以内(含100)满足I,I+4,I+10都是素数的整数I(I+10也在100以内)的个数cnt以及这些I之和sum。请编写函数countValue()实现程序要求的功能,最后调用函数writeDat()把结果cnt和sum输出到文件out.dat中。
     部分源程序存在文件prog1.c中。
     请勿改动主函数main()和输出数据函数writeDat()的内容。
#include <stdio.h>
int cnt,sum;
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)&&isPrime(i+10))
     {cnt++;sum+=i;}
}

void main()
{
 cnt=sum=0;
 countValue();
 printf("满足条件的整数的个数=%d ",cnt);
 printf("满足条件的整数的和值=%d ",sum);
 writeDat();
}

writeDat()
{
 FILE *fp;
 fp=fopen("out.dat","w");
 fprintf(fp,"%d %d ",cnt,sum);
 fclose(fp);
}
运行结果为:
满足条件的整数的个数=7
满足条件的整数的和值=201


*****************************************************************************************#p#
★☆题目65(无忧id 45  整数统计运算题)

已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数中的各位数字之和是奇数的数的个数totCnt,以及满足此条件的这些数的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。
     部分源程序存在文件prog1.c中。
     请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include <stdio.h>
#include <conio.h>
#define MAXNUM 200

int xx[MAXNUM];
int totNum=0; /*文件IN.DAT中共有多少个正整数*/
int totCnt=0; /*符合条件的正整数的个数*/
double totPjz=0.0;   /*平均值*/
int ReadDat(void);
void writeDat(void);
void CalValue(void)
{ int i ,qw,bw,sw,gw;
  for(i=0;i<MAXNUM;i++)
if(xx[i]>0)
{  totNum++;
        qw=xx[i]/1000;   bw=xx[i]/100%10;
        sw=xx[i]%100/10; gw=xx[i]%10;
        if((qw+bw+sw+gw)%2) { totCnt++; totPjz+=xx[i];}
     }
  if(totCnt==0) totPjz=0;
  else totPjz/=totCnt;
}

void main()
{
 int i;
 clrscr();
 for(i=0;i<MAXNUM;i++)xx[i]=0;
 if(ReadDat()){
   printf("数据文件IN.DAT不能打开!07 ");
   return;
 }
 CalValue();
 printf("文件IN.DAT中共有正整数=%d个 ",totNum);
 printf("符合条件的正整数的个数=%d个 ",totCnt);
 printf("平均值=%.2f ",totPjz);
 writeDat();
}

int  ReadDat(void)
{
 FILE *fp;
 int i=0;

 if((fp=fopen("IN.DAT","r"))==NULL) return 1;
 while(!feof(fp)){
   fscanf(fp,"%d,",&xx[i++]);
  }
 fclose(fp);
 return 0;
}

void writeDat(void)
{
 FILE *fp;
 fp=fopen("OUT.DAT","w");
 fprintf(fp,"%d %d %6.2f ",totNum,totCnt,totPjz);
fclose(fp);
}

*****************************************************************************************#p#
★☆题目66(无忧id  47 素数题)

下列程序prog1.c的功能是:计算500-800区间内素数的个数cnt,并按所求素数的值从大到小的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数...的值sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum,输出到文件OUT11.DAT中。
     部分源程序已给出。
     请勿改动主函数main()和输出数据函数writeDat()的内容。
#include <stdio.h>
int cnt,sum;
 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); }
  }
}

void main()
{
 cnt=sum=0;
  countValue();
 printf("素数的个数=%d ",cnt);
 printf("按要求计算的值=%d ",sum);
 writeDat();
}

writeDat()
{
 FILE *fp;
 fp=fopen("OUT11.DAT","w");
 fprintf(fp,"%d %d ",cnt,sum);
 fclose(fp);
}


*****************************************************************************************#p#
题目67(无忧id 49 整数各位数字运算题)

下列程序的功能是:选出5000以下符合条件的自然数。条件是:千位数字与百位数字之和等于十位数字与个位数字之和,且千位数字与百位数字之和等于个位数字与千位数字之差的10倍。计算并输出这些四位自然数的个数cnt以及这些数的和sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum,输出到文件OUT13.DAT中。
     部分源程序存在文件prog1.c中。
     请勿改动主函数main()和输出数据函数writeDat()的内容。
#include <stdio.h>
int cnt,sum;
 void countValue()
{int i,thou,hun,ten,data;
 for(i=1000;i<5000;i++)
 { thou=i/1000;    hun=i%1000/100;
   ten=i%100/10;  data=i%10;
  if(thou+hun==ten+data&&thou+hun==(data-thou)*10) {cnt++;sum+=i;}
  }
}

void main()
{
 cnt=sum=0;
  countValue();
 printf("满足条件的自然数的个数=%d ",cnt);
 printf("满足条件的自然数的个数之和=%d ",sum);
 writeDat();
}

writeDat()
{
 FILE *fp;
fp=fopen("OUT13.DAT","w");
 fprintf(fp,"%d %d ",cnt,sum);
 fclose(fp);
}


*****************************************************************************************#p#
★☆题目68(无忧id 142  整数各位数字统计运算题)

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:如果四位数各位上的数字均是奇数,则统计出满足此条件的个数cnt并把这些四位数按从大到小的顺序存入数组b中。最后main()函数调用写函数writeDat( )把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
     注意:部分源程序存在文件prog1.c中。
     程序中已定义数组:a[200],b[200],已定义变量:cnt
     请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
#include <stdio.h>
#define MAX  200
int a[MAX], b[MAX], cnt = 0 ;

void jsVal()
{int i,j,thou,hun,ten,data;
 for(i=0;i<200;i++)
   {thou=a[i]/1000;  hun=a[i]%1000/100;
    ten=a[i]%100/10; data=a[i]%10;
    if(thou&&thou%2&&hun%2&&ten%2&&data%2)  b[cnt++]=a[i];
   }
 for(i=0;i<cnt-1;i++)
  for(j=i+1;j<cnt;j++)
    if(b[i]<b[j]) {thou=b[i]; b[i]=b[j];b[j]=thou;}
}

void readDat()
{
  int i ;
  FILE *fp ;
  fp = fopen("in.dat", "r") ;
  for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ;
  fclose(fp) ;
}

void main()
{
  int i ;
  readDat() ;
  jsVal() ;
  printf("满足条件的数=%d ", cnt) ;
  for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;
  printf(" ") ;
  writeDat() ;
}
writeDat()
{
  FILE *fp ;
  int i ;
  fp = fopen("out.dat", "w") ;
  fprintf(fp, "%d ", cnt) ;
  for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d ", b[i]) ;
  fclose(fp) ;
}


*****************************************************************************************#p#
☆题目69(无忧id  145 整数统计运算题)

已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中,请考生编制一函数jsVal(),其功能是:把一个四位数的千位数字上的值减去百位数字上的值再减去十位数字上的值最后减去个位数字上的值,如果得出的值大于等于零且原四位数是奇数,则统计出满足此条件的个数cnt并把这些四位数按从小到大的顺序存入数组b中,最后调用写函数writeDat()把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。
     注意:部分源程序存在文件prog1.c中。
     程序中已定义数组:a[200],b[200],已定义变量:cnt
     请勿改动数据文件IN.DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。
#include <stdio.h>
#define MAX  200
int a[MAX], b[MAX], cnt = 0 ;

void jsVal()
{int i,j,thou,hun,ten,data;
 for(i=0;i<200;i++)
   {thou=a[i]/1000;  hun=a[i]%1000/100;
    ten=a[i]%100/10; data=a[i]%10;
    if(thou-hun-ten-data>=0&&a[i]%2)  b[cnt++]=a[i];
   }
 for(i=0;i<cnt-1;i++)
  for(j=i+1;j<cnt;j++)
    if(b[i]>b[j]) {thou=b[i]; b[i]=b[j];b[j]=thou;}
}

void readDat()
{
  int i ;
  FILE *fp ;
  fp = fopen("in.dat", "r") ;
  for(i = 0 ; i < MAX ; i++) fscanf(fp, "%d", &a[i]) ;
  fclose(fp) ;
}

void main()
{
  int i ;
  readDat() ;
  jsVal() ;
  printf("满足条件的数=%d ", cnt) ;
  for(i = 0 ; i < cnt ; i++) printf("%d ", b[i]) ;
  printf(" ") ;
  writeDat() ;
}

writeDat()
{
  FILE *fp ;
  int i ;
  fp = fopen("out.dat", "w") ;
  fprintf(fp, "%d ", cnt) ;
  for(i = 0 ; i < cnt ; i++) fprintf(fp, "%d ", b[i]) ;
  fclose(fp) ;
}


*****************************************************************************************#p#
★题目70(无忧id 41  整数统计运算题)

已知在文件IN.DAT中存有若干个(个数<200)四位数字的正整数,函数ReadDat()读取这若干个正整数并存入数组xx中。请编制函数CalValue(),其功能要求:1、求出这文件中共有多少个正整数totNum;2、求这些数右移1位后,产生的新数是奇数的数的个数totCnt,以及满足此条件的这些数(右移前的值)的算术平均值totPjz,最后调用函数writeDat()把所求的结果输出到文件OUT.DAT中。
    部分源程序存在文件prog1.c中。
    请勿改动主函数main()、读函数ReadDat()和写函数writeDat()的内容。
#include <stdio.h>
#include <conio.h>
#define MAXNUM 200

int xx[MAXNUM];
int totNum=0; /*文件IN.DAT中共有多少个正整数*/
int totCnt=0; /*符合条件的正整数的个数*/
double totPjz=0.0;   /*平均值*/
int ReadDat(void);
void writeDat(void);
void CalValue(void)
{int i,data;
for(i=0;i<MAXNUM;i++)
   if(xx[i]>0)
{ totNum++;
      data=xx[i]>>1;
      if(data%2){totCnt++;totPjz+=xx[i];}
     }
 if(totCnt==0) totPjz=0;
 else totPjz/=totCnt;
}

void main()
{
 int i;
 clrscr();
 for(i=0;i<MAXNUM;i++)xx[i]=0;
 if(ReadDat()){
   printf("数据文件IN.DAT不能打开!07 ");
   return;
 }
 CalValue();
 printf("文件IN.DAT中共有正整数=%d个 ",totNum);
 printf("符合条件的正整数的个数=%d个 ",totCnt);
 printf("平均值=%.2f ",totPjz);
 writeDat();
}

int  ReadDat(void)
{
 FILE *fp;
 int i=0;
 if((fp=fopen("IN.DAT","r"))==NULL) return 1;
 while(!feof(fp)){
   fscanf(fp,"%d,",&xx[i++]);
  }
 fclose(fp);
 return 0;
}

void writeDat(void)
{
 FILE *fp;
 fp=fopen("OUT.DAT","w");
 fprintf(fp,"%d %d %6.2f ",totNum,totCnt,totPjz);
fclose(fp);
}


*****************************************************************************************

 

上下文章:

 

上一篇文章: 三级C语言程序设计上机考试习题集(71-80) 下一篇文章: 三级C语言程序设计上机考试习题集(51-60)

相关文章:

  • ORACLE OCP认证的各门考试科目
  • Oracle认证专家考试科目一览表
  • Oracle10g认证考试途径详解
  • 官方公布Oracle10gOCA考试已经开始
  • 官方消息:Oracle 10g OCP DBA的考试科目减少到两门

相关软件:

  • 全国计算机等级考试模拟软件(2006年全年使用)二级Visual Basic V9.0
  • 围棋死活习题集移动版之PocketPC 2003版 1.0
  • 围棋死活习题集移动版之Palm版 1.0
  • 围棋死活习题集移动版之Symbian(S90)版 1.00
  • 围棋死活习题集移动版之PocketPC (ARM)版 1.00
  • 围棋死活习题集移动版之Symbian(s80)版 1.00

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

计算机等级考试分类导航

  • 计算机等级考试动态
  • 计算机一级考试
  • 计算机二级考试
  • 计算机三级考试
  • 计算机四级考试

本类经典文章推荐

  • 三级PC技术寻址方式的复习 (4)
  • 三级PC技术寻址方式的复习 (3)
  • 三级PC技术寻址方式的复习
  • 三级PC技术寻址方式的复习 (2)
  • 三级网络技术全真标准预测试卷(二...
  • 全国计算机等级考试三级笔试试卷数...
  • 全国计算机等级考试三级笔试试卷数...
  • 2005年计算机等级考试三级上机题库...
  • 2003年4月全国计算机等级考试三级...
  • 2005年计算机等级考试三级上机题库...

计算机三级考试阅读排行

  • SQL数据库触发器实例讲解
  • 三级网络技术全真标准预测试卷(二...
  • 全国计算机等级考试三级笔试试卷数...
  • 南开计算机等级考试上机100题(三...
  • 全国计算机等级考试三级笔试试卷数...
  • 2005年计算机等级考试三级上机题库...
  • 三级C语言程序设计上机考试习题集...
  • 数据结构第10章例题与答案
  • 三级PC技术寻址方式的复习 (4)
  • 全国计算机等级考试三级A笔试试卷

计算机等级考试阅读总排行

  • 全国计算机等级考试一级模拟试题01
  • 全国计算机等级考试一级模拟试题10
  • 全国计算机等级考试一级模拟试题08
  • 全国计算机等级考试一级考试最新模...
  • 全国计算机等级考试一级模拟试题07
  • 全国计算机等级考试一级模拟试题02
  • 全国计算机等级考试一级模拟试题06
  • 全国计算机等级考试一级模拟试题03
  • 一级(WINDOWS)试题解析-Word篇
  • 全国计算机等级考试上机考试应试技...

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有