四川省计算机二级考试培训讲义(内部资料)
main()
{
struct date { int year,month,day;
}today; union {
long i; int k; char c;
}mix;
printf(\ //date=6 printf(\ //mix=4
}
10.读下面程序,程序命名为MyCopy.c /*----MyCopy.c------*/ #include
void main(int argc,char *argv[]) {
if(argc!=3)
printf(\else {
FILE *source,*destin;
source=fopen(argv[1],\destin=fopen(argv[2],\
if(source==NULL)
printf(\else if(destin==NULL)
printf(\else {
while(!feof(source)) fputc(fgetc(source),destin); }
fclose(source); fclose(destin);
} }
程序功能:将磁盘文件的信息显示在屏幕上
- 29 -
四川省计算机二级考试培训讲义(内部资料)
当键入:MyCopy FILE1 FILE2 则程序将实现将一个FILE1复制到FILE2中
三、程序填空
1.以下程序的功能是将磁盘文件a.dat中的10个整数读入并进行升序排序 #include “stdio.h” void sort(int *p,int n) {
int i,j,t;
for(i=0;i int a[10],i,j,t; FILE *fp; for(i=0;i<10;i++) fscanf(fp,”%d”,&a[i]); fclose(fp); for(i=0;i<10;i++) printf(“%d”,a[i]); printf(“\\n”); sort(a,10); for(i=0;i<10;i++) printf(“%d”,a[i]); printf(“\\n”); } 2.下列程序用递归算法实现,输入任意一个整数,在各数位之间插入空格后输出. #include long int n; void func(long); scanf(“%ld”,&n); fun(n); } void func(long int m) { if(m>=10) func(m/10); printf(“ %d”,m); - 30 - 四川省计算机二级考试培训讲义(内部资料) } 3.程序功能:有10个数按升序放在一个数组中,输入一个数,要求用折半查找该数是数组中的第几个元素,如果该数不在数组中,打印出”NO”.折半查找法:设数组长度为n,则将输入的数m与a[n/2]比较,若ma[n/2],则将a[n/2]到a[n]的数继续折半进行查找. #include int a[10]={12,32,45,62,71,76,80,85,90,95}; int num,bott,top,mid; printf(“Input a number:\\n”); scanf(“%d”,&num); bott=0; top=9; while(bott<=top) { mid=(bott+top)/2; if(num= =a[mid]) {printf(“%d is the %d number\\n”,num,mid+1);break;} else if(num if(bott>top) printf(“N0\\n”); } 4有两个字符串str1和str2,将str1和str2对应字符中ASCII码值较大者存入字符数组str3的对应位置,若str1和str2长度不一致,则将较长字符串中剩余字符直接连接到str3的末尾.例如:str1存放字符串”abaxef”,str2存放字符串”bac”,则str3中的字符串为”bbcxef”. #include int i; char str1[80],str2[80],str3[80]=” ”; char *p1,*p2; p1=str1; p2=str2; gets(str1);gets(str2); for(i=0;*(p1+i)!=’\\0’&&*(p2+i)!=’\\0’;i++)//str[i]!=’\\0’&&str2[i]!=’\\0’ { if(*(p1+i)>*(p2+i)) str3[i]=*(p1+i); else str3[i]=*(p2+i); - 31 - 四川省计算机二级考试培训讲义(内部资料) } if(*(p1+i)!=’\\0’) strcat(str3,p1+i);//str[i]!=’\\0’ else strcat(str3,p2+i);//strcat(str3,str2+j) printf(“Result:%s\\n”,str3); } 5.下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5 #include int i,s,k,count=0; for(i=100;i<=1000;i++) { s=0; k=i; while(k) { s=s+k; k=k/10; } if(s!=5) continue; else count++; } cout< 真题三 第一部分 软件技术基础 (共15分) 一、是非判断题(每小题1分,共10分) (判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B) 1、数据在计算机内存中的表示是指数据的存储结构。A 2、能影响中断响应次序的技术是中断优先级和中断屏蔽。A 3、链表可以随机访问任意一个结点,而顺序表则不能。B 4、作业与进程的主要区别是前者是由用户提交,后者是由系统自动生成。B - 32 - 四川省计算机二级考试培训讲义(内部资料) 5、Windows、OS/2,Linux微机操作系统都是多用户多任务操作系统。B 6、数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储结构无关,是独立于计算机的。A 7、流式文件和记录式文件都以字符为基本单位进行存取。B 8、不定长文件是指字段的长度不固定。B 9、软件工程的三要素包括方法、工具和环境。B 10、软件结构是以指令为基础而组成的一种控制层次结构。B 二、选择题(每小题1分,共5分) 1、若进栈序列为1,2,3,4,且进栈过程中可以出栈,则不可能出栈的序列是(C A、1,4,3,2 B、2,3,4,1 C、3,1,4,2 D、3,4,2,1 2、任何两个并发进程之间(D ) A、一定存在互斥关系 B、一定存在同步关系 C、一定彼此独立无关 D、可能存在同步或互斥关系 3、以下哪个特征不是分时操作系统的主要特征( C ) A、中断管理 B、独立性 C、交互性 D、多路性 4、以下的准则中哪个不是面向对象软件设计应遵循的( B ) A、抽象准则 B、独立性准则 C、信息屏蔽准则 D、模块化准则 5、需求分析中开发人员主要从用户那里了解( A ) A、软件做什么 B、软件的结构 C、输入的信息 C、软件的测试 第二部分 C与C++语言程序设计 (共85分) 一、单项选择题(每小题1分,共10分) 1、若变量已定义并赋值,下列符合C语法的表达式是:( B ) A、a:=b+1 B、a=b=c+2 C、int 18.5%3 D、a=a+7=c+b 2、以下程序输出的结果是( A) void main() { char s[]=\ s[5]=0; puts(s); } A、Hello B、China C、Hello China D、0 3、有以下程序 #include - 33 - )