1、全国自考(高级语言程序设计)模拟试卷 2 及答案与解析一、单项选择题1 C 语言程序的三种基本结构是顺序结构、循环结构和( )(A)选择结构(B)递归结构(C)嵌套结构(D)转移结构2 下列符号中是正确的 C 标识符的是( )(A)a-2(B) x12(C) 2.78(D)3 假定有以下变量定义: int k=6,x=12 ; 则能使 x、k 值为 5、6 的表达式是( )(A)x%=+k%10(B) x%=k+k%5(C) x-=+k%5(D)x-=k+%54 表达式 if(!x)中的“!x“等效于( )(A)x=0(B) x=1(C) x!=0(D)x!=15 有以下程序,程序运行后的输出
2、结果是( ) main() int a10=1,2,3,4,5,6,7, 8,9,10),*p=a3 ,*q=p+2; printf(“%d11“,*p+*q); (A)16(B) 10(C) 8(D)66 有以下程序( ) main() char p=a,b,C ,q=“abc“; printf(“%d%d“,sizeof(p),sizeof(q) ; 程序运行后输出的结果是(A)4 4(B) 3 3(C) 3 4(D)4 37 要调用字符串长度测试函数 strlen()时,在#include 命令行中应包含( )(A)stdio h(B) stringh(C) mathh(D)ctypeh
3、8 有以下程序( ) main() int x=102,y=012; printf(“/0/02d,%2dn“ ,X ,y); 执行后输出结果是(A)10,01(B) 02,12(C) 102,10(D)02,109 有以下定义( ) #includestdioh char a10,*b=a; 不能给数组 a 输入字符串的语句是(A)gets(a)(B) gets(a0)(C) gets(a0);(D)gets(b);10 有以下程序( ) main() char *p10=“abc“,“aabdfg“,“dcdbe“,“abbd“,“cd“; printf(“%dn“,strlen(p4);
4、 执行后输出结果是(A)2(B) 3(C) 4(D)511 有以下程序( ) #includestdioh main() unsigned char a,b; a=43; b=43; printf(“%d%dn“ ,a ,b); 执行后输出结果是(A)7 0(B) 0 7(C) 1 1(D)43 012 下面程序的功能是输出以下形式的金字塔图案: #includestdioh main() int i,j; for(i=1;i=4;i+) for(j=1;j =4-i ;j+)printf(“); for(j=1;j=_;j+)printf(“*“) ; printf(“n“); 在下划线处应
5、填入的是( )(A)i(B) 2*i-1(C) 2*i+1(D)i+213 在 C 语言程序中,下列磁盘文件名错误的是( )(A)abc.dat(B) c:abc.dat(C) tcabc.dat(D)a:abc.dat14 包含用户类型符“FILE“的定义的头文件是( )(A)string.h(B) file.h(C) stdio.h(D)stdlib.h15 定义存储在内存堆栈区的变量的存储类型符是( )(A)extern(B) static(C) register(D)auto二、填空题16 一个 C 程序-般应由多个函数组成,但也可以由一个函数组成。这个函数是_。17 C 语言中整型常
6、量的书写形式包括:八进制,十进制和_。18 C 语言标识符的第一个字符只能字母或_19 文件定位函数包含在头文件_中。20 与标准错误输出设备相对应的文件型指针是_。21 将大写字母转换为小写字母的函数是_。22 外部函数的存储类型符是_。23 下的 findrnax 函数返 M 数组 s 中最大元素的下标。数组中元素的个数由 t 传入。findmax(int s,int t) int k,p; for(p=0,k=0;pt;p+) if(spsk)_ ; return k: 24 语句 printf(“abrehiyboun“);输出的结果是_。25 设 a、b、 c 为整型数,且 a=2、
7、b=3、c=4;则执行完下列语句后 a 的值是_。 a*=16+(b+)-(+c);三、程序分析题26 #includestdioh void main() int i; for(i=1;i 5;i+) printf(“%dt%cn“,i,(A+i) ; 27 #includestdioh void main() int i,j,a44; for(i=0;i 4;i+) for(j=0;j 4;j+) aij=1+i;-j; for(i=0;i 4;i+) for(j=0;j4;j+) if(aij0)printf(“%3 d“,aij); printf(“n“); 28 #includest
8、dioh int f(int n) static int s=1; while(n)s*=n-; return s; main() int i,j; i=f(3);j=f(5); printf(“The output is:n“); printf(“i=%d j=%dn“,i ,j); 29 #includestdioh int trans(int m,int n) int i; if(mn) i=m%n;trans(m,n); else i=m: if(i10)printf(“%dn“ ,i): else printf(“%c“,A+i-10): main() int i; printf(“
9、The output is:n“); printf(“n%dn“,-23) ; trans(21,3); printf(“n%dn“,123); trans(123,16); 四、程序填充题30 以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。 #includestdioh main() int i,a20,sum,count; sum=count=0: for(i=0;i 20;i+)scanf(“%d“,_);/*第一空*/ for(i=0;i 20;i+) if(_)/*第二空*/ count+; _;/*第三空*/ printf(“count=%d,sum=%dn“
10、,count,sum); 31 SumColumMin()的功能是:求出 M 行 N 列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。 #includestdioh #define M 2 #define N 4 void SumColumMin(_)/*第一空*/ int i,j,k,s=0; for(i=0;i N;i+) k=0; for(j=1;j M;j+) if(_)k=j;/*第二空*/ s+=aki; _;/*第三空*/ main() int xMN=3,2,5,1,4,1,8,3,s; SumColumMin(x,s); printf(“%dn“,
11、s); 32 求 f(x0,10) 的累加和,其中 f(x)=2x+1。 #includestdioh int F(int x) return_;)/* 第一空*/ int SumFun(int n) int x,s=0: for(x=0;xn;x+)_ ;/*第二空*/ return s; main() printf(“The sum=%dn“,_);/*第三空*/ 五、程序设计题33 从键盘上输入一个 3*5 的矩阵,将其转置后形成 5*3 的矩阵输出。34 输入 30 个学生的学号和 3 门课程的成绩(整数),统计并输出 3 门课程总分最高的学生的学号和总分。全国自考(高级语言程序设计)
12、模拟试卷 2 答案与解析一、单项选择题1 【正确答案】 A2 【正确答案】 B3 【正确答案】 B【试题解析】 在进行“x%=k+k%5“ 的计算时,根据运算符的优先级将先计算“k%5,k%5=1;再计算 “k+k%5“,k+k%5=7;最后计算“x%=k+k%5“,“x%=k+k%5“的含义是 x=x%(k+k%5),即 x=5。在整个运算过程中没有对 k 的赋值操作, k 的值不变,k=6。4 【正确答案】 A【试题解析】 表达式 if(!x)表示判定 x 是否为 0,即“ 如果 x=0“。5 【正确答案】 B【试题解析】 最后打印输出的是“*p+*q“的值,即数组 a 的第四个几豢及第六
13、个几元素的和。6 【正确答案】 C【试题解析】 赋值语句“q=“abc“ 中赋给字符数组 q 的是字符串“abc“,字符串串都包含一个“0“ 结束符。7 【正确答案】 B8 【正确答案】 C9 【正确答案】 B【试题解析】 字符串输入函数 gets()的参数只能是指针变量。10 【正确答案】 A【试题解析】 输出的数据是第五个字符串的字符个数。p4 传递给函数 strlen()的址第五个字符串的首地址。11 【正确答案】 A12 【正确答案】 B【试题解析】 应填入控制打印“*“的个数,其个数与行数 i 的关系是 2*i-1 的关系。13 【正确答案】 D14 【正确答案】 C15 【正确答案
14、】 D二、填空题16 【正确答案】 main()17 【正确答案】 十六进制18 【正确答案】 下划线19 【正确答案】 stdioh20 【正确答案】 stderr21 【正确答案】 tolower()22 【正确答案】 extern23 【正确答案】 k=P【试题解析】 比较数组中 sp和 sk两个元素的大小并用 k 记录下最大元素的下标。24 【正确答案】 rehiyou25 【正确答案】 28三、程序分析题26 【正确答案】 1 B 2 C 3 D 4 E【试题解析】 #include stdioh void main() int i; for(i=1;i 5;i+)/*限定循环次数为
15、 4 次*/ printf(“%dt%cn“,i,(A+i) ;,/* 输出的值并输出 ASC值为(A+i)“字符*/ 27 【正确答案】 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4【试题解析】 #include stdioh void main() int i,j,a44 ; for(i=0;i 4;i+)/*限定循环次数为 4 次*/ for(j=0;j 4;j+)aij=1+i;-j;/*限定循环次数为 4 次*/ for(i=0;i 4:i+) for(j=0;j4;j+) if(aij0)printf(“%3d“,aij);/*设置输出格式为 3 个字符的宽度,不
16、足的宽度以空格补齐*/ printf(“n“); 28 【正确答案】 The output is: i=6 j=720【试题解析】 #include stdioh int f(int n) static int s=1;/*s 被定义为静态变量,函数 f()退出时其值被保留,且再次进入该函数时不再被初始化,该变量所使用的值为最近一次凋函数 f()时所得到的值。*/ while(n)s*=n-; return s; main() int i,j; i=f(3);/*第次凋用 f(),s 被初始化为 1,运算过程中 s 的值被改变为 6,所以i=6*/ j=f(5);/*第二次调用 f(),s 不
17、再被初始化而是以值 6 参与本次运算,故 j 的值为654321=720*/ printf(“The output is:n“); printf(“i=%d j=%dn“,i,j) ; 29 【正确答案】 The output is: n-23【试题解析】 #include stdioh int trans(int m,int n) int i; if(mn) i=m%n;trans(m,n);/*如果 mn,则将 m 除以 n 的余数赋给 i,并再次调用函数 trans()*/ else i=m; if(i10)printf(“%dn“ , i);/*如果 i10,则打印输出 i 的值*/
18、else printf(“%c“,A+i-10); main() int i; printf(“The output is:n“); printf(“n%dn“,-23); trans(21,3); printf(“n%dkn“,123); trans(123,16) ; 四、程序填充题30 【正确答案】 a0/* 第一空。对数纰进行初始化 */ ai0/*第二空。判定数组元 ai是否大于 0*/ sum+=ai/*第三空。对大于 0 的数组元素求和 1*/31 【正确答案】 int aMN,int*sum/* 第一空。因和值通过形象传回主函数输出,故定义形参变量为指针变量*/ akiaji/
19、*第二空。比较每列各个元素的大小以获提最小值*/ * sum=s/*第三空。令形参变量 sum 所指向的内存单元获得和值以 s 传递回主函数*/32 【正确答案】 x*x+1/*笫一空。此为函数式“f(x)=2x+1 的 C 语言表达式*/ s+-=F(x)/*第二空。求函数式“f(x)“ 的累加*/ SumFum(10)/*第三空。调用函数 “StunFun()求累加值“*/五、程序设计题33 【正确答案】 #includestdioh main() int a35,b53,i,j; for(i=0;i 3;i+) for(j=0;j 5;j+) scanf(“%d,arij);/* 输入
20、3*5 矩阵*/ for(i=0;i 5;i+) for(j=0;j 3;j+) bij=aji;/*进行矩阵转置*/ for(i=0;i 5;i+) for(j=0;j3;j+) printf(“%dt“,bij); printf(“n“); /*输出转置后的矩阵*/ 34 【正确答案】 #includestdioh main() int s305imax , max_i; for(i=0;i 30;i+) printf(“Please input student NOand 3 score :n“); scanf(“%d,%d,%d ,%d“,si0,sj1,si2,si3); si4=si1+si2+si3; ,/*分别输入 30 个个学生的学号和 3 科成绩,并计箅这 30 个学生每人的总成绩*/ max=s04;max_i=0; for(i=0;i 30;i+) if(maxsi4)max=si4,max_i=i;/*求出总成绩的最高者并记录其位置 */ printf(“StudentNO=%d,total=%dn“,smax_i0 。smax_i4) ;/* 输出总成绩最高者的学号和总成绩*/
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1