2021年安徽省宣城市全国计算机等级考试C语言程序设计预测试题(含答案)
学校:________ 班级:________ 姓名:________ 考号:________
一、单选题(12题)
1.有以下程序:
#include<stdiO.h>
main(  )
{ FILE*fp;
 int k,n,i,a[6]={1,2,3,4,5,6};
 fp=fopen("d2.dat","w");
 for(i=0;i<6;i++) fprintf(fp,"%d\n",a[i]);
 fclose(fp);
 fp(i=0;i<3;i++) fscanf(fp,"%d%d",&k,&n);
 fclose(fp);
 printf("%d\n,%d\n,k,n);
}
程序运行后的输出结果是(  )。A.1, 2 B.3,4 C.5,6 D.123,456 
2.有以下程序:
#include <stdio.h>
int add(int a,int b) { return (a+b); }
main()
{int k, (*f)( ), a=5, b=10;
f=add;
}
则以下函数调用语句错误的是()。
A.k=f(a,b); B.k=add(a,b); C.k=(*f)(a,b); D.k=*f(a,b); 
3.已知大写字母A的ASCII码是65,小写字母a的ACSII码是97。下列能将变量C中的大写字母转换为对应小写字母的语句是( )。
A.c=(c-'A')%26+'A' B.c=c+32 C.c=c-'A'+'A' D.c=('A'+C)%26-'a' 
4.若有定义:int*p[3];,则以下叙述中正确的是()。
A.定义了一个基类型为int的指针变量p,该变量具有三个指针 
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针 
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素 
D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素 
5.以下关于链式存储结构说法错误的是()
A.比顺序存储结构的存储密度小 
B.每个节点是由数据域和指针域组成 
C.查结点时链式存储比顺序存储快 
D.逻辑上不相邻的节点物理上可能相邻 
6. 有定义语句:int a=1,b=2,c=3,x;,则以下选项中各程序段执行后,x的值不为3的是
A.if(c<a) x=1; else if(b<a) x=1; else x=3; 
B.if(a<3)x=3; else if(a<2)x=2; else x=1; 
C.if(a<3)x=3; if(a<2)x=2; if(a<1)x=1; 
D.if(a<b) x=b; if(b<c) x=c; if(c<a) x=a; 
7. 若有定义:“int a,b;”,通过语句“scan[("%d;%d".,&a,&b);”,能把整数3赋给变量a,5赋给变量b的输入数据是(  )。 
A.3 5 B.3,5 C.3;5 D.35 
8. fgetc函数的作用是从指定文件读入—个字符,该文件的打开方式必须是______。
关于printf函数正确的是A.只读 B.追加 C.读或读写 D.以上均正确 
9. 设有以下程序段 int x=0,s=0; while(!x!=0)s+=++x; printf("%d",s); 则
A.运行程序段后输出0 B.运行程序段后输出1 C.程序段中的控制表达式是非法的 D.程序段执行无限次 
10. 有以下程序: 
 
程序执行后的输出结果是(  )。 
A.45 B.50 C.60 D.55 
11.具有n个结点的连通图至少有()条边。
A.n-1 B.n C.n(n-1)/2 D.2n 
12.
二、2.填空题(12题)
13. 以下程序运行后的输出结果是______。
fun(int a)
{ int b=0; static int c=3;
b++; c++;
return(a+b+c);
}
main()
{ int i,a=5;
for(i=0;i<3;i++) printf("%d %d",i,fun(a));
printf("\n");
}
14. x、y、x均为int型变量,描述“x、y和z中至少有两个为正数”的表达式是______。
15. 以下程序的输出结果是【 】。 
#include <string.h> 
main() 
{printf("%d\n",strlen("IBM\n012\1\\"));}
16. mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。
int mystrlen(char *str)
{ int i;
for(i=0;【 】!='\0';i++);
return(【 】);
}
17. 以下程序通过函数SunFun 求。这里f(x) =x2+l, 由F函数实现。请填空。
main()
{
printf("The sum=%d\n", SunFun(10));
}
SunFun(int n)
{
int x, s = 0;
for (x = 0; x <= n; x++)
S += F(______);
return s;
}
F(int x)
{
return (______);
}
18. 下面的程序可对指定字符串进行从大到小排序,请将程序填完整。 (注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{ char*str="ABCDabcd",temp;
int n,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{ temp=【 】;
str[i]=str[i+1];
【 】=temp;
}
printf(【 】);
}
19. 有以下程序:
#include <stdio.h>
main()
{ char ch1,ch2;int n1,n2;