2022年安徽省合肥市全国计算机等级考试C语言程序设计测试卷一(含答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2022年安徽省合肥市全国计算机等级考试C语言程序设计测试卷一(含答案) 学校:________ 班级:________ 姓名:________ 考号:________
一、单选题(12题)
1.交换两个变量的值,不允许用临时变量,应该使用下列()位运算符。
A.&.
B.^
C.||
D.~
2.下面C程序段中count++语句执行的次数为()
A.15
B.16
C.31
D.32
3.下列程序段的时间复杂度为()。
A.O(n)
B.O(log2n)
C.O(n3)
D.O(n2)
4.下列关系表达式中,结果为“假”的是()。
A.(3+4)>6
B.(3!=4)>2
C.3<=4||
D.(3<4)=1
5.有以下程序:
#include <stdio.h>
int f1(int a)
{return a*3;}
int f2(int * b)
{return *b *5;}
main()
{
int x=3, y=5;
printf(“%d ,%d\n”,f1(x),f2(&y));
}
程序的运行结果是()。
A.9 ,125
B.9,25
C.3,15
D.3,45
6. 有以下程序#include<stdio.h>main(){int a[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序运行后的输出结果是______。
A.运行后报错
B.6 6
C.611
D.510
7.有以下程序:
#include <stdio.h>
#include <string.h>
main()
{
printf(“%d\n”, strlen(“0\t\n\0C011\1”));
}
程序运行后的输出结果是()。
A.3
B.13
C.1
D.0
8.sizeof(float)是()。
A.一个双精度型表达式
B.一个整型表达式
C.一种函数调用
D.一个不合法的表达式
9.需求分析的主要任务是()。
A.确定软件系统的功能
B.确定软件开发方法
C.确定软件开发工具
D.确定软件开发入员
10.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的()倍。
A.A.1/2
B.1
C.2
D.4
11. 在一个C程序中
A.main函数必须出现在所有函数之前
B.main函数可以在任何地方出现
C.main函数必须出现在所有函数之后
D.main函数必须出现在固定位置
12.向一个栈顶指针为HS的链式栈中插入一个s所指的结点时,则执行()。
A.HS->next=s
B.S->next=HS->nextHS->next=s
C.s->next=HSHS=s
D.S->next=HSHS=HS->next
二、2.填空题(12题)
13. 下列程序的运行结果是______。
#include<stdio.h>
long func(int x)
{ long p;
if(x==0‖x==1)
return(1);
p=x*func(x-1);
return(p);
}
main()
{ printf("%d\n", func(4));
}
14. 已有定义:char c=‘ ’;int a=1,b;(此处c的初值为空格字符),执行b=!c &&a;后b的值为( )。
15. 软件危机出现于60年代末,为了解决软件危机,人们提出了【】的原理来设计软件,这就是软件工程诞生的基础。
16. 下面程序的输出结果是【】。
char b[]="ABCD";
main()
{ char *p=b;
for(;*p;p++)
printf("%s",p);
printf("\n");
}
17. 类是一个支持集成的抽象数据类型,而对象是类的【】。
18. 数据的逻辑结构有线性结构和______两大类。
19. 若按功能划分,软件测试的方法通常分为白盒测试方法和【】测试方法。
20. 实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。
如果一个学校有许多学生,而一个学生只归属于一个学校,则实体集学校与实体集学生之间的联系属于【】的联系。
21. 以下程序运行后的输出结果是【】。
main()
{ int a,b,c;
a=10;b=20;c=(a%b<1)||(a/b>1);
printf("%d%d%d\n",a,b,c) ;
}
22. 有以下程序
int fa(int x){return x*x;}
int fb(int x){retum x*x*x;}
int f(int(*fl)int(*12)(),intx)
{return f2(x)-f1(x);}
main()
{int i;i=f(fa,fb,2);printf("%d\n",i);}
程序运行后,输出结果是【】
23. 下面程序的运行结果是______。
typedef union student
{
char name[10];
long sno;
char sex;
float score[4];
}STU;
main()
{
STU a[5];
printf("%d\n",sizeof(A) );
}
24. 已有定义:double *p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元______。
三、3.程序设计题(10题)
25. 请编写函数fun,其功能是:计算并输出3到n之间(含3和n)所有素数的平方根之和。
例如,在主函数中从键盘给n输入100后,输出为:sum=148.874270。
注意:要求n的值大于2但不大于100。
部分源程序给出如下。
清勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
[试题源程序]
#include<math.h>
#include<stdio.h>
double fun(int n)
{
}
main()
{
int n;
double sum;
printf("\n\nInput n:");
scanf("%d",&n);
sum=fun(n);
printf("\n\nsum=%f\n\n",sum);
}
26. 编写程序,实现矩阵(3行3列)的转置(即行列互换)
例如,输入下面的矩阵:
100 200 300
400 500 600
700 800 900
程序输出:
100 400 700
200 500 800
300 600 900
注意:部分源程序在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
27. 请编写一个函数fun(),它的功能是计算并输出给定整数n的所有因子(不包括1与自身)的平方和(规定n的值不大于100)。
例如:主函数从键盘给输入n的值为56,则输出为sum=1113。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
long fun(int n)
{
}
main()
{
int n;
long sum;
printf("Input n:");
scanf("%d",&n);
sum=fun(n);
printf("sum=%ld\n",sum);
}
28. N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。
请编写函数fun(),它的功能是:找出学生的最低分,由函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <stdio.h>
#include <Stdlib.h>
#define N 8
Struct Slist
{ double s;
Struct Slist *next;
};
tyPedef Struct Slist STREC;
double fun(STREC *h)
{
}
STREC * Creat (double *S)
{
STREC *h,*p,*q;
int i=0;
h=p={STREC*)malloc(sizeof(STREC));
p->S=0;
while(i<N)
/*产生8个节点的链表,各分数存入链表中*/
{q=(STREC*) malloc(sizeOf(STREC));
p->S=S[i];i++;p->next=q;p=q;
}
p->next=NULL;
return h;
/*返回链表的首地址*/
}
outlist(STREC *h)
{
STREC *p;
p=h;
printf("head");
do
{printf("->%2.of ",p->s);p=p->next;}
/*输/出各分数*/
while(p!=NULL);
printf("\n\n ");
}
main()
{
double s[N]={56,89,76,95,91,68,75,85},min;
STREC *h;
h=creat(S);
outlist(h);
min=fun(h);
printf("min=%6.If\n ",min);
}
29. 请编写函数fun(),该函数的功能是:统计一行字符串中单词的个数,作为函数值返回。
一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间有若干个空格隔开,一行的开始没有空格。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<string. h>
# include<stdio, h>
#define N 80
int fun (char *s)
{
}
main ( )
{
char line [N];
int num=0;
printf ("Enter a string: \n ");
gets (line);
num=fun (line);
printf ("The number of word is: %d\n\n ",
num);
}
30. 函数fun的功能是:将a、b中的两个两位正整数合并形成一个新的整数放在c中。
合并的方式是:将a中的十位和个位数依次放在变量c 的百位和个位上,b中的十位和个位数依次放在变量c的千位和十位上。
例如,当a=45,b=12。
调用该函数后,c=1425。
注意:部分源程序存在文件PROGl.C中。
数据文件in.dat中的数据
不得修改。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
31. 假定输入的字符串中只包含字母和*号。
请编写函数fun,它的功能是:只删除字符串前导和尾部的*号,串中字母之间的*号都不删除。
形参n给出了字符串的长度,形参h给出了字符串中前导*号的个数,形
参e给出了字符串中最后*号的个数。
在编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为:****A*BC*DEF*G*******,删除后,字符串中的内容应当是:A*BC*DEF*G。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
32. 请编写一个函数void fun(char *tt,int pp[]),统计在tt字符串中“a”到“ z”26个字母各自出现的次数,并依次放在pp所指数组中。
例如:当输入字符串abcdefghabcdeabc后,程序的输出结果应该是:33322110000000000000000000
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include <conio.h>
#include <stdio.h>
void fun (char*tt, int pp[])
{
}
main()
{
char aa[1000];
int bb[26], k, n;
clrscr();
printf("\nPlease enter a char string: ") ;
scanf("%s",aa);
fun(aa,bb);
for (k=0 ;k<26 ; k++)
printf("%d ",bb[k]) ;
printf("\n ");
}
33. 请编写一个函数fun(),它的功能是:找出一维数组元素中最大的值和它所在的下标,最大值和它所在的下标通过形参传回。
数组元素中的值已在主函数中赋予。
主函数中x是数组名,n是x中的数据个数,max存放最大值,index存放最大值所在元素的下标。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdlib.h>
#include<stdio.h>
void fun(int a[],int n, int *max,int *d)
{
}
main()
{
int i, x[20], max, index, n=10;
randomize();
for(i=0; i<=n; i++)
{
x[i]=rand()%50;
printf("%4d",x[i]);
/*输出一个随机数组*/
}
printf("\n");
fun(x,n,&max,&index);
printf("Max=%5d,Index=%4d\n",max,index);
}
34. 请编写函数fun(),其功能是:将s所指字符串中除了下标为偶数、同时ASCII码值为奇数的字符之外,其余的所有字符都删除,串中剩余字符所形成的一个新串放在t所指的数组中。
例如,若s所指字符串中的内容为ABCDEFG12345,其中字符B的ASCII码值为偶数,所在元素的下标为奇数,因此必须删除;而字符A 的ASCII码值为奇数,所在数组中的下标为偶数,因此不应当删除,其他依次类推。
最后t所指的数组中的内容应是ACEG。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h)
void fun(char *s, char t[])
{
}
main()
{
char s[100],t[100];
clrscr();
printf("\nPlease enter string s:");
scanf("%s",s);
fun(s,t);
printf("\nThe result is:%s\n",t);
}
四、单选题(0题)
35.下列叙述中错误的是()。
A.C程序可以由多个程序文件组成
B.—个C语言程序只能实现一种算法
C.C程序可以由一个或多个函数组成
D.—个C语言函数可以单独作为一个C语言程序文件存在
五、单选题(0题)
36. 已知字母A的ASCII代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是
A.kk>=′A′&& kk<=′Z′
B.!(kk>=′A′||kk<=′Z′)
C.(kk+32)>=′a′&&(kk+32)<=′Z′
D.isalpha(kk)&&(kk<91)
六、单选题(0题)
37.若有下列定义(设int类型变量占2个字节):
int i=8;
则下列语句:
printf("i=%08d",i);
输出的结果是( )。
A.A.i=8
B.i=00000008
C.i=08
D.8
参考答案
1.B按逻辑位运算特点:①用按位与运算将特定位清为0或保留特定位;
②用按位或运算将特定的位置为1;③用按位异或运算将某个变量的特定位翻转或交换两个变量的值。
2.A
3.A
4.B
在一个表达式中,括号的优先级高,先计算3 !=4,为真即是l,1>2为假。
5.Bf1函数接收整型数a,将a的值乘以3,结果作为函数返回值返回;f2接收整型变量的地址,将地址中的值取出后乘以5,结果作为返回值返回;main函数定义两个变量x、y,初值分别是3和5,所以调用f1(x)返回值为9,调用f2(&y)返回值为25。
故本题答案为B选项。
6.A解析:本题考核的知识点是通过指针引用数组的元素的方法.本题中首先定义了一个一维数组a并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。
数组名a 代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。
所以,4个选项中选项A符合题意。
7.AC语言中的转义字符也是一个字符。
字符串“0\\t\\n\\0C011\\1”,共有字符‘0’、‘\\t’、‘\\n’3个字符。
strlen遇到‘\\0’字符计数结束,因此计数为
3。
故本题答案为A选项。
8.B
该函数用于数据类型和变量。
注意: sizeof操作符不能用于函数、不完全类型或位字段。
不完全类型指具有未知存储大小的数据类型,如未知存储大小的数组类型、void类型等。
9.A需求分析是软件开发之前必须要做的准备工作之一。
需求是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。
故需求分析的主要任务是确定软件系统的功能。
本题答案为A选项。
10.B
11.B解析:一个完整的C语言程序有且仅有一个主函数(main()函数)。
程序总从main()函数的第一条语句开始执行,到main()函数的最后一条语句结束,其他函数都是在执行main()函数时,通过函数调用或嵌套调用而得以执行的。
C语言规定,main()函数在程序中的位置是任意的,故选项A、选项C和选项D均不正确。
所以,B选项为所选。
12.C
13.2424 解析:本题考查函数的循环调用。
p=x*func(x-1),当x=4时,不满足if语句的条件,p=4* func(3),x=3也不满足条件,则func(3)=3*func (2),func(2)=2*func(1),x=1满足条件return(1),则输出结果为4*3*2*1-24。
14.00 解析:空格字符的ASCⅡ码值为32,所以!c—o,那么0与任何值相与的结果都为0,可得b的值为0。
15.软件工程学软件工程学
16.ABCDBCDCDD
17.实例将属性、操作相似的对象归为类,也就是说,类是具有共同属性、
共同方法的对象的集合。
所以,类是对象的抽象,对象则是其对应类的一个实例。
18.非线性结构非线性结构
19.黑盒软件测试的方法有三种:动态测试、静态测试和正确性证明。
设计测试实例的方法一般有两类:黑盒测试法和白盒测试法。
在使用黑盒法设计测试实例时,测试人员将程序看成一个“黑盒”,即不关心程序内部是如何实现的,只是检查程序是否符合它的“功能说明”,所以使用黑盒法设计的测试用例完全是根据程序的功能说明来设计的。
20.—对多—对多解析:实体之间的联系可以归结为一对一、一对多与多对多。
如果一个学校有许多学生,而一个教师只归属于一个学生,则实体集学校与实体集学生之间的联系属于一对多的联系。
21.10 20 010 20 0 解析:本题考查算术运算符,关系运算符和逻辑运算符的使用和优先级关系。
程序中,a=10,b=20,c=(10%20<1)| |(10/20>1)=(10<1)| |(0>1)=0| |0=0。
22.44 解析:在主函数中调用函数f,函数f有三个参数,形参n与C分别是两个指向函数的指针。
在f中执行nf2(x),实际上是执行了fo(2)-fa(2),故执行i=(fa,fb,2)后i的值为2^3-2^2=4。
23.8080 解析:本题考查的知识点是共用体数组变量所占内存的长度。
数组a是共用体变量,共用体类型变量所占的内存长度为最大成员的长度,即单精度数组的长度,为4×4=16,因此,数组a所占的内存长度为5×16=80,所以最后输出的s的值为80。
24.p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);
p=(double*)malloc(sizeof(double)):或p=(double*)malloc(8);解析:malloc()函数只有一个参数,该参数指定了需要分配多少字节的内存。
然后将分配好的内存块的首地址作为void*(未知类型指针)返回.故标准的调用形式应该写成:
p (double*)malloc(sizeof(double));
25.double fun(int n) { int ij=0;double s=0;for(i=3;i<=n;i++) { for(j=2;j<i;j++) if(i%j==0) break;if(j == i) s=s+sqrt(i);} return s;} double fun(int n)\r\n {\r\n int i,j=0;\r\n double s=0;\r\n for(i=3;i<
=n;i++)\r\n {\r\n for(j=2;j<i;j++)\r\n if(i%j==0)\r\n break;\r\n if(j == i)\r\n s=s+sqrt(i);\r\n }\r\n return s;\r\n }
26.解析:该程序功能是实现矩阵的转置。
其中,矩阵的转置就是实现矩阵行列元素的互换。
例如,array[1][2]和array[2][1]进行交换。
27.long fun(int n) { int i;long s=0;for(i=2;i<=n-1;i++) /*从2~n-1中找n的所有因子*/ if(n%i==0) s+=i*i;/*将所有因子求平方加*/ return s;/将平方和返回*/ }long fun(int n)\r\n {\r\n int i;\r\n long s=0;\r\n for(i=2;i<=n-1;i++) /*从2~n-1中找n的所有因子*/\r\n if(n%i==0)\r\n s+=i*i;/*将所有因子求平方加*/\r\n return s;/将平方和返回*/\r\n } 解析:本题的解题思路是用n逐个去除以2到n-1之间的所有数,如果n能被除尽,则把所得到的一个因子的平方累加到s中去。
28.double fun(STREC*h) { double min=h->s;while(h!=NULL) /*通过
循环找到最低分数*/ {if(min>h->s) min=h->s;h=h->next;} return min;}double fun(STREC\u3000*h)\r\n {\r\n double min=h->s;\r\n
while(h!=NULL) /*通过循环找到最低分数*/\r\n {if(min>h->s)\r\n
min=h->s;\r\n h=h->next;\r\n }\r\n return min;\r\n } 解析:在本题中,
h为—个指向结构体的指针变量,若要引用它所指向的结构体中的某一
成员时,要用指向运算符“->”。
由于是链表,所以要使h逐一往后移动,
使用的是h=h->next。
29.int fun(char *s) { int i j=0; for (i=0;s [i]!='\0' ;i++) if(s[i] !=' '&&(s[i+l]==' '||s[i+1]=='\O')) /*如果一个字母的下一个字符为空格或者结束标记则表
示一个单词结束*/ j++; return j; /*返回单词个数*/ }int fun(char *s)\r\n {\r\n int i, j=0;\r\n for (i=0;s [i]!=\'\\0\' ;i++)\r\n if(s[i] !=\' \'&&(s[i+l]==\' \'||s[i+1]==\'\\O\')) /*如果一个字母的下一个字符为空格或者结束标记,则
表示一个单词结束*/\r\n j++;\r\n return j; /*返回单词个数*/\r\n } 解析:
判断单词的个数,我们首先想到的是程序怎样识别是一个单词,也即循
环语句中的fir(i=0;s[i]!='\\0';i++),本题重点是if句中的条件表达方
式。
30.*c=(b/10)*1000+(a/10)*100+(b%10)*10+(a%10);*c=(b/
10)*1000+(a/10)*100+(b%10)*10+(a%10);解析:该程序功能是将
正整数a、b合并形成一个新整数。
本题类型首先要考虑整数的位数分
离,然后要进行位数合成。
也就是先将数字的各位数拆开,改变排列顺
序后,再组合成新的数字。
31.解析:该程序功能是删除字符串前导和尾部的“*”号。
解题过程是根据主函数中求出的前导和尾部的“*”数目,作为for循环条件,并且在循环过程中第一个非“*'号开始前移,实现函数功能。
32.void fun(char*ttint pp[] ) { int i; fori=0;i<26;i++) pp[i]=0; /*初始化pp 数组各元素为0*/ for(;*tt!='\0';tt++) if(*tt>='a'&&*tt<='z') pp[*tt-'a']++; /*将tt字符串中'a'到'z'26个字母各自出现的次数依次放在pp数组中任一个小写字母减去'a'后所得结果正好是它对应的下标*/ }void fun(char*tt,int pp[] )\r\n {\r\n int i;\r\n fori=0;i<26;i++)\r\n pp[i]=0; /*初始化pp数组各元素为0*/\r\n for(;*tt!='\\0';tt++)\r\n if(*tt>='a'&&*tt<='z')\r\n pp[*tt-'a']++; /*将tt字符串中'a'到'z'26个字母各自出现的次数,依次放在pp数组中,任一个小写字\r\n 母减去'a'后所得结果正好是它对应的下标*/\r\n } 解析:第1个循环的作用是初始化数组pp,未经赋值变量的量为一个不确定数字。
由于它要将'a'到'z'26个字母的个数依次放到数组pp中。
即'a'的个数存于pp[0]中,'b'的个数存于pp[1]中,'c'的个数存于pp[2]中,…,依次类推。
而'a'-'a'的值正好为0,'b'-'a'的值为1,'c'-'a'的值为2,…,依此类推。
即任一个小写字母减去'a'后所得结果正好是它对应的下标,所以就有了pp[*tt-'a']++。
但*tt必须是小写字母即if()不应省略。
33.void fun(int a[]int nint *maxint *d) { int i;*max=a[0];*d=0;for(i=0;i<n;i++) /*将最大的元素放入指针max所指的单元最大元素的下标放入指针d所指的单元*/ if(*max<a[i]) {*max=a[i];*d=i;} }void fun(int a[],int n,int *max,int *d)\r\n {\r\n int i;\r\n *max=a[0];\r\n *d=0;\r\n for(i=0;i<n;i++) /*将最大的元素放入指针max所指的单元,最大元素的下标放入指针d所指的单元*/\r\n if(*max<a[i])\r\n {*max=a[i];*d=i;}\r\n } 解析:该程序直接使用形参max和d,由于它们都是指针变量,所以要引用它所指向的变量时要对它进行指针运算,也即*号运算。
34.void fun(char *s/char t[]) {int ij=0;for(i=0;s[i]!='\0';i++) {if(i%2==0 && s[i]%2!=0) t[j++]=s[i];} /*将下标为偶数同时ASCII码值为奇数的字符放入数组t中*/ t[j]='\0';/*在字符串最后加上结束标志位*/ }void fun(char *s/char t[])\r\n {int i,j=0;\r\n for(i=0;s[i]!='\\0';i++)\r\n {if(i%2==0 && s[i]%2!=0)\r\n t[j++]=s[i];} /*将下标为偶数同时ASCII 码值为奇数的字符放入数组t中*/\r\n t[j]='\\0';/*在字符串最后加上结束标志位*/\r\n } 解析:本题要求除了下标为偶数同时ASCII码值为奇数的字符之外,其他字符都删除。
即要留下下标为偶数同时ASCII码值为奇数的字符。
所以,在if的条件语句中应使用if(i%2==0&&s[i]%2!=0)。
35.B在一个C语言程序中可以实现多种算法,所以B选项错误。
故本题答案为B选项。
36.B解析:C语言的字符以其ASCII码的形式存在,所以要确定某个字符是大写字母,只要确定它的ASCII码在'A'和'Z'之间就可以了,选项A)和
C)符合要求。
函数isalpha用来确定一个字符是否为字母,大写字母的ASCII码值的范围为65到90,所以如果一个字母的ASCII码小于91,那么就能确定它是大写字母。
37.B
解析:本题考查printf函数的格式。
“%08”格式符中的“0”表示在指定数据输出宽度的同时,在数据前面的多余空格处加“0”;“8”表示指定数据的输出宽度为8位。