admin 管理员组文章数量: 1086019
2024年4月21日发(作者:普通人怎么报考二建)
2022年湖南省常德市全国计算机等级考试
C语言程序设计模拟考试(含答案)
学校:________ 班级:________ 姓名:________ 考号:________
一、单选题(12题)
1. 有如下定义: struct person {char name[9];int age;} struct person
class[10]={ "John",17, "Paul",19, "Mary",18, "Adam",16};
能输出字母M的是( )
("%cn",class[3].name);
("%cn",class[3].name[1]);
("%cn",class[2].name[1]);
("%cn",class[2].name[0]);
2. 在以下一组运算中,优先级最高的运算符是 ( )
A.<= B.= C.% D.& &
3.
4.下列哪一种图的邻接矩阵是对称矩阵()。
A.有向图 B.无向图 网 网
5.有下列程序:
fun(int x,int y)
{ static int m=0,i=2;
i+=m+1;m=i+x+y;return m;
}
main( )
{ int j=1,m=1,k;
k=fun(j,m);print S(”%d,”,k);
k=fun(j,m);printf(”%d\n”,k);
)
执行后的输出结果是( )。
A.5,5 B.5,11 C.11,11 D.11,5
6.写出a*(b-c*d)+e-f/g*(h+i*j-k)的逆波兰表达式()。
A.a(b-c*d)*+e-(f/g(h+i*j-k)*)
B.a(b-(cd*))*+e-(fg/(h+ij*-k)*)
C.a(bcd*-)*+e-(fg/hij*+k-*)
*-*e+fg/hij*+k-*-
7.栈这种数据结构一般应用在()。
A.递归调用 B.子程序调用 C.表达式求值 D.A,B,C
8.算法的效率的分析主要包括两个方面()。
A.时间复杂度和空间复杂度 B.正确性和简单性 C.可读性和文档性 D.
数据复杂性和程序复杂性
9.若有下列定义(设int类型变量占2个字节):
int i=8;
则下列语句:
printf("i=%08d",i);
输出的结果是( )。
A.A.i=8 B.i=00000008 C.i=08 D.8
10.若有定义“double a; float b; short c;”,若想把1.2赋给变量a,3.4赋
给变量b,5678赋给变量c,程序运行时键盘输入:1.2 3.4 5678<回
车>则以下正确的读入语句是()。
("%If%If%d",&a,&b,&c) ;
("%If%If% hd",&a,&b,&c) ;
("%If%f%hd",&a,&b,&c) ;
("%f%f%d",&a,&b,&c);
11.
(x>0)y=1; else if(x==0)y=0; else y=-1;
B.y=0; if(x>0)y=1; else if(x<0)y=-1;
C.y=0; if(x>=0) if(x>0)y=1; e1se y=-1;
(x>=0) if(x>0)y=1; elsey=0: elsey=-1;
12.有下列程序:
main( )
{ char*P[]={"3697","2584");
int i,j;long num=0;
for(i=0;i<2;i++)
{j=0;
while(p[i][j]!=\0)
{if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;
j+=2;
}
}
printf("%d\n",num);
}
程序执行后的输出结果是( )。
A.35 B.37 C.39 D.3975
二、2.填空题(12题)
13. 设有char a,b;,若要通过a&b运算屏蔽掉a中的其他位,只保留第
2位和笫8位(右起为第1位),则b的二进制是【 】。
14. 设int a=5,b=6,表达式(++a==b--)?++a:--b的值是【 】。
15. 以下程序运行后的输出结果是______。
int a=5;
fun (int B)
{ static int a=10;
a+=b++;
printf("%d",A) ;
}
main()
{ int c=20;
fun(C) ,
a+=C++;
printf("%dn",A) ;
}
16. 以下程序的输出结果是【 】。
main()
{
int arr[]={30,25,20,15,10,5},*p=arr;
p++;
printf("%dn",*(p+3));
}
17. 以下程序的输出结果是【 】。
#include<stdlib.h>
main()
{ char *s1,*s2,m;
s1=s2=(char*)malloc(sizeof(char));
*s1=15; *s2=20; m=*s1+*s2;
printf("%dn",m);
}
18. 以下程序中,fun函数的功能是求3行4列二维数组每行元素中的
最大值。请填空。
#include <stdio, h>
void fun(int,int,int( * )[4] ,int* );
main ( )
{ int a[3] [4] = { { 12,41,36,28}, { 19,33,15,27}, {3,27,19,1 } } ,b[3] ,i;
fun(3,4,a,b);
for(i =0;i <3;i ++ ) printf( "%4d" ,b[i] );
prinff(" n" );
}
void fun(int m,int n,int ar[] [4] ,int* br)
{ int i,j,x;
for(i =0;i< m;i ++ )
{ x = ar[i] [0] ;'
for(j = 0;j < n;j ++ ) if(x < ar[i] [j] ) x = ar[i] [j];
【 】=x;
}
}
19. 下列程序的输出结果是______。
main()
{ int a[]={31,27,20,12,6,1),*p=a;
p++;
printf("%dn",*(p+2));
}
20. 以下函数把b字符串连接到a字符串的后面,并返回a中新字符串
的长度。请填空。
strcen(char a[],char b[])
{ int num=0,n=0;
while(*(a+num)!=【 】)num++;
while(b[n]){*(a+num)=b[n];num++;【 】;}
return(num);
}
21. 以下程序的输出是【 】。
main()
{
char strl[]]="How do you do",*p1=strl;
strcpy(strl+strlen(strl)/2,"es she");
printf("%sn",p1);
}
22. 在面向对象方法中,属性与操作相似的一组对象称为【 】。
23. 对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,
需平均移动元素的个数为【 】。
24. 以下程序运行后的输出结果是______。
fun(int x)
{ if(x/2>0) fun(x/2);
printf("%d " ,x);
}
main()
{ fun(6); }
三、3.程序设计题(10题)
25. 下列程序定义了NXN的二维数组,并在主函数中赋值。请编写函
数fun(),函数的功能是求出数组周边元素的平方和并作为函数值返回
给主函数中的S。例如:若a数组中的值为
a=0 1 2 7 9
1 11 21 5 5
2 21 6 11 1
9 7 9 10 2
5 4 1 4 1
则返回主程序后s的值应为310。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括
号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#define N 5
int fun (int w[][N])
{
}
main()
{
int a[N)[N]={0,1,2,7,9,1,1l,2l,5,5,2, 21,6,11,1,9,
7,9,10,2,5,4,1,4,1};
int i,j;
int S;
clrscr( );
printf("*****The array***+*n");
for (i=0; i<N; i++)
{for(j=0;j<N;i++)
{printf(“%4d”,a[i][j]);}
printf("n");
}
s=fun(a);
printf(“*****THE RESULT*****n”);
printf("The sum is:%dn",s);
}
26. 请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数
组中有n个整数,要求把下标从p到n-1(p≤n-1)的数组元素平移到数组
的前面。
例如,一维数组中的原始内容为1,2,3,4,5,6,7, 8,9,10,11,
12,13,14,15,p的值为6。移动后,一维数组中的内容应为7,8,
9,10, 11,12,13,14,15,1, 2, 3, 4, 5, 6。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括
号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#define N 80
void fun(int *w,int p,int n)
{
}
main()
{
int a[N]={1,2,3,4,5,6,7,8,9,10,11, 12,13,14,15};
int i,p,n=15;
printf("The original data:n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("nnEnter p:");
scanf("%d",&p);
fun(a,p,n);
printf("nThe data after moving:n");
for(i=0;i<n;i++)
printf("%3d",a[i]);
printf("nn");
}
27. 请编写函数fun( ),其功能是:将所有大于1小于整数m的素数存
入xx所指数组中,素数的个数通过k传回。
例如,输入25,则应输出2 3 5 7 11 13 17 19 23。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括
号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
void fun(int m,int *k,int xx[ ])
{
}
main( )
{
int m,n,zz[100];
clrscr( );
printf("/nPlease enter an integer number between 10 and 100:");
scanf("%d",&n);
fun(n,&m,zz);
printf("nnThere are%d prime numbers
less than %d:",m,n);
for(n=0;n<m;n++)
printf("n %4d",zz[n]);
}
28. 请编写函数fun(),它的功能是计算:
s=(ln(1)+ln(2)+ln(3)+…+ln(m))
0.5
在C语言中可调用log(n)函数求ln(n)。
例如,若m的值为20,则fun()函数值为6.506583。
注意:部分源程序给出如下。
请勿改动主函数main 和其他函数中的任何内容,仅在函数fun 的花括
号中填入所编写的若干语句。
试题程序:
#include <conio. h>
#include <stdio. h>
#include <math.h>
double fun(int m)
{
}
main ()
{
clrscr ();
printf ("%fn ", fun (20));
}
29. 请编写函数fun,其功能是将两个两位数的正整数a、b合并形成一
个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数
个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。
例如,当a=16,b=35,调用该函数后,c=5361。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括
号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
void fun(int a,int b/long*c)
{
}
main()
{
int a,b;
long c;
clrscr();
printf("Input a,b;");
scanf("%d%d",&a,&b);
fun(a,b,&c);
printf("The result is:%ldn",c);
}
30. 请编写一个函数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=%4dn",max,index);
}
31. 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入
结构体数组s中,请编写函数fun,它的功能是:把高于等于平均分的
学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n
传回,平均分通过函数值返回。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括
号中填入你编写的若干语句。
32. 函数fun的功能是:将s所指字符串中除了下标为偶数、同时ASCII
值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一含新
串放在t所指的数组中。
例如,若s所指字符串中的内容为:“ABCDEFGl23456”,其中字符A的
ASCII码值为奇数,因此应当删除:其中字符B的ASCII码值为偶数,
但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为
偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。
最后t所指的数组中的内容应是:“246”。
注意:部分源程序存在文件PROGl.C中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括
号中填入你编写的若干语句。
33. 请编写函数fun(),其功能是:将s所指字符串中下标为奇数的字符
删除,串中剩余字符形成的新串放在t所指数组中。
例如,当s所指字符串中的内容为siegAHdied,则在t所指数组中的内
容应是seAde。
注意:部分源程序给出如下。
请勿改动主函数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:%sn",t);
}
34. 请编写一个函数fun(),它的功能是:将ss所指字符串中所有下标为
偶数位置的字母转换为小写(若该位置上不是字母,则不转换)。
例如,若输入ABC4efG,则应输出aBc4efg。
注意:部分源程序给出如下。
请勿改动主函数miain和其他函数中的任何内容,仅在函数fun的花括
号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#include<string.h>
void fun(char *SS)
{
}
main()
{
char tt[81];
clrscr();
printf("nPlease enter an string within 80
characters:n");
gets(tt);
printf("nnAfter changing,the stringn
%s",tt);
fun(tt);
printf("nbecomesn %Sn",tt);
}
四、单选题(0题)
35.
五、单选题(0题)
36.有以下程序:
#include <stdio.h>
void fun(int * a,int * b)
{ for( ; ( *a<*B)||(getchar()!=‘@’);)
{( *a)++; (*b)--; }
}
main()
{int i=0, j=5;
fun(&i,&j);
printf(“%d,%dn”,i,j);
}
程序运行时在第1列开始输入ab@并按<Enter>键,则运行结果是
()。
A.7,1 B.3,2 C.0,5 D.5,0
六、单选题(0题)
37.C语言中,组成数据文件的成分是( )。
A.A.记录
B.数据行
C.数据块
D.字符(字节)序列
参考答案
1.D
2.C
3.C
4.B
5.B
子函数fun(int x,int y),将变量m和i声明为局部静态变量,因此第l
次调用主函数后,局部静态变量m和i的值为5和3,第l次函数调用
结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变
量m和i 的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,
因此最终m的值为11。
6.D
7.D
8.D
9.B
解析:本题考查printf函数的格式。“%08”格式符中的“0”表示在指定
数据输出宽度的同时,在数据前面的多余空格处加“0”;“8”表示指定数
据的输出宽度为8位。
10.C
scanf函数用于输入数据。第1个参数表示输入格式控制。本题变量a
是double类型,使用格式控制符%If;变量b是float类型,使用%If;
变量c是short类型,使用%hd,选项C正确。本题答案为C选项。
11.C解析:选项A的意思是:在x>O情况下,y为1,否则,在x=O
时,y为0,剩下x<O时,y为-1,满足本题中函数的要求。选项B描
述的意思是:初始化y的值为0,在x>O时,给y重新赋值为1,否
则,在x<O时,给y重新赋值为-1,满足本题中函数的要求。选项C
描述的意思是:在x>=0情况下,如果x>O,则y为1,否则,即x==0
时,y为-1;剩下的x<O时,y为0。可见答案C实现的结果不是给定
的表达式。选项D中描述的意思是:在x>=0的情况下,如果x>O,
就给y赋值为1,否则即x==0时给y赋值为0,在不是x>=0的其他情
况下,就给y赋值为-1,满足本题中函数的要求。所以4个选项中C为
所选。
12.D
执行第一次for循环时,用表达式p[i][J]!=\o来判断字符串数组指针
P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。
if语句表示(p[i][j]-\o)除2的余数不为0时,即字符串所有奇数,执行
后面的语句。所以退出第1次for的循环体时,输出为397,执行第2
次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结
果为3975。
13.1010 解析:运算“&”的,的规则是只有当两个相应的二
进制位都为1时,该位的结果才为1。要保留第2、8位,只要将其与二
进制数10000010相与。
14.77 解析:此表达式为三目运算符,++a的值为6,b --的值为6,则
整个表达式的值为++a的值,++a的值为7。请注意前缀++,--和后缀
++,--的区别。
15.30 2530 25 解析:本题考核的知识点是变量的存储属性和算术运算的
应用。本题涉及了自动变量、静态变量和外部变量。外部变量是定义在
所有函数之外的变量,本题中int a=5定义了一个外部变量a,它是一个
全局变量,即作用域是从定义的位置开始到本文件的结束;静态变量的
存储空间在程序的整个运行期间是固定的(static),本题函数fun()中
static int a=10定义个一个静态变量a,此静态变量a是个静态的局部变
量,即它的值只能在本函数中使用; 自动变量是C程序中使用最多的
一种变量,它的建立和撤消都是由系统在程序执行过程中自动进行的,
auto是自动变量的存储类别标识符,如果省略auto,系统隐含认为此变
量为auto,本题中main()中int c=20定义了一个自动变量c,此自动变
量c是个静态的局部变量.算术运算中 a+=b++相当于a=a+b,b=b+1.所
以,在第一个 ptine('%d',a)中 a=a+b=10+20=30, 第二个 printf('%d',
a)中a=a+c=5+20=25,即输出30 25。
16.1010 解析:整型指针最初被赋的值是数组arr的头指针,即指向数
组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,
在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为100。
17.40
40 解析:本题中指针s1和s2都指向同一个内存中的地址。因此语句
“*s2=20;”执行后,*u3000s1=*s2=20。所以m最后的值为40。
[i]或*(br+i)br[i]或*(br+i) 解析:程序中的数组a是一个3行4列的
二维数组,一维数组b用于存放每行的最大数。在函数fun中,通过二
重for循环求每行的最大数,外层for循环用于控制行数,内层for循环
用于控制列数,当外层循环执行一次时,内层循环则从一行的4个数中
找出最大数x,然后将最大值x赋给数组br,故空格处应填br[i]或*(br+i)。
19.1212 解析:本题考查如何用指针引用数组元素。分析程序,首先定
义了一个指向数组a的指针p,p指向数组的首地址,通过p++,将p指
向a[1],p+2是将指针后移2位指向a[3],*(p+2)即是取a[3]的值12。
20.0'或0或NULL n++或++n或n=n+1或n+=10'或0或NULLrnn++
或++n或n=n+1或n+=1
does sheHow does she 解析:strcpy(strl,s1):字符串拷贝函数,
作用是将字符串s1拷贝到字符数组strl中去。strlen(str):测试字符串str
的长度,函数的值为字符串中实际长度,不包括'0'在内。本题中
strlen(strl)的值为13,则strcpy(strl+strlen(strl)/2,'es she');相当于
strcpy(strl+6,'es she');,因此可得答案为How does she。
22.类类 解析:在面向对象方法中,类描述的是具有相似性质的一组对
象。所以,属性与操作相似的一组对象称为类。
23.n/2n/2 解析:删除一个元素,平均移动的元素个数为(n-1+n-
2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…
+1)/n=(n+1)/2;所以总体平均移动元素个数为n/2。
24.1 3 61 3 6 解析:本题考核的知识点是函数递归。主函数调用函数
fun(6),由于6/2>0为真递归调用fun(3),接着递归调用fun(1),输出
1,返回上一层输出3,在返回上一层输出6。故空格处应该填1 3 6。
fun(int w[])[N]) { int ijk=0; int s=0; for(i=0;i<N;i++) for(j=0;
j<N;j++) if(i==0||i==N-1||j==0||j==N-1) /*只要下标中有一个为0或N-
1则它一定是周边元素*/ {s=s+w[i][j]*w[i][j]; /*将周边元素求平方和*/ }
return s; /+返回周边元素的平方和*/ }int fun(int w[])[N])rn { rn int i,j,
k=0;rn int s=0;rn for(i=0;i<N;i++)rn for(j=0;j<N;j++)rn
if(i==0||i==N-1||j==0||j==N-1) /*只要下标中有一个为0或N-1,则它一定
是周边元素*/rn {s=s+w[i][j]*w[i][j]; /*将周边元素求平方和*/rn }rn
return s; /+返回周边元素的平方和*/rn } 解析:该题采用逐一判断的方
式,周边元素的下标一定有一个是0或N-1,且只要下标中有一个为0
或N-1,则它一定是周边元素。
fun(int *w int p int n) { int i.jt; for(i=p;i<=n-1;i++) /*循环右移
n-p次*/ {t=w[n-11; for(j=n-2;j>=0;j--) /*实现循环右移*/ w[j+1]=w[j];
w[0]=t; }void fun(int *w, int p, int n)rn {rn int i.j,t; rn for(i=p;i
<=n-1;i++) /*循环右移n-p次*/rn {t=w[n-11;rn for(j=n-2;j>=0;j--) /*
实现循环右移*/rn w[j+1]=w[j];rn w[0]=t;rn } 解析:本题采用“循
环右移”的算法。和我们在前面分析的稍有不同的是,—个是整型数组,
—个是字符型数组。
fun(int mint *kint XX[]) { int ijtn=0; for(i=2;i<m;i++) /*找出大
于1小于整数m的素数*/ { t=l; for(j=2;j<i;j++) if(i%j==0) { t=0;
break; } if(t==1) xx[n++]=i; } *k=n; /*返回素数的个数*/ }void fun(int
m,int *k,int XX[])rn {rn int i,j,t,n=0;rn for(i=2;i<m;i++) /*找
出大于1小于整数m的素数*/rn { rn t=l;rn for(j=2;j<i;j++) rn
if(i%j==0)rn {rn t=0; rn break;rn } rn if(t==1)rn xx[n++]=i;
rn }rn *k=n; /*返回素数的个数*/rn } 解析:这道题是考查一个数
是不是素数,只要掌握了判断素数的方法,问题便能顺利解决,请以此
题为例,掌握判断素数的方法。
fun(int m) { int i; double s=0.0; for(i=1;i<=m;i++) s=s+ log(i);
/*计算s=ln(1)+ln(2)+ln(3)+…+in(m)*/ return sort (s); /*对s求平方根并
返回*/ }double fun(int m)rn {rn int i;rn double s=0.0;rn for(i=1;i<
=m;i++)rn s=s+ log(i); /*计算s=ln(1)+ln(2)+ln(3)+…+in(m)*/rn return
sort (s); /*对s求平方根并返回*/rn } 解析:首先,题目要求计算从1
到m的对数的和,可用从1到m的循环,每次循环都累加求和。该题
需要注意之处是, log()函数的形式参数应当为double 型变量,而用于
循环的基数变量为整数,需要进行强制转换。在返回的时候求小平方根。
fun(int aint blong*c)
{ *c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10; }void fun(int a,int b,
long*c)rn {rn *c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;rn } 解
析:语句“*c=(b%10)*1000+(b/10)*100+(a%10)*10+a/10;”是将a数的十
位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在
c数的百位和千位上。注意“/”和“%”的用法。
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)rn {rn int i;rn *max=a[0];rn *d=0;rn
for(i=0;i<n;i++) /*将最大的元素放入指针max所指的单元,最大元
素的下标放入指针d所指的单元*/rn if(*max<a[i])rn {*max=a[i];
*d=i;}rn } 解析:该程序直接使用形参max和d,由于它们都是指针
变量,所以要引用它所指向的变量时要对它进行指针运算,也即*号运
算。
31. 解析:该程序功能是把
高于或等于平均分的学生数据放在b所指的数组中,高于等于平均分的
学生人数通过形参n传回,平均分通过函数返回值返回。解题过程首先
求得平均分,然后将所有成绩与平均分进行比较,如果大于或等于平均
分,存入指定数组。
32.
解析:该程序功能是将字符串中除了下标为偶数、ASCII值也为
偶数的字符外,其余的全都删除。解题过程利用if条件判断表达式选
择符合条件的字符,然后将符合条件的字符放入指定的字符串。
fun (char *Schar t[]) { int ij=0k=strlen(s); /*k为字符串的长度*/
for(i=0;i<k;i=i+2) /*将s所指字符串中下标为偶数的字符存入t所指
字符串中*/ t[j++]=s[i]; t[j]='0'; /*在字符串最后加上结束标志
*/ }void fun (char *S,char t[])rn { rn int i,j=0,k=strlen(s); /*k为
字符串的长度*/ rn for(i=0;i<k;i=i+2) /*将s所指字符串中下标为偶
数的字符存入t所指字符串中*/ rn t[j++]=s[i];rn t[j]='0'; /*在字
符串最后加上结束标志*/rn } 解析:本题使用了一种i永远是偶数的
循环方法,即for(i=0;i<k;i=i+2),因为开始时i的值为0,当i+2循
环时,此值永远是偶数。
fun(char *ss) { int i; for(i=0;ss[i]!='0'i++) /*将ss所指字符串
中所有下标为偶数位置的字母转换为小写*/ if(i%2==0&&ss[i]>
='A'&&ss[i]<='z') ss[i]=ss[i]+32; }void fun(char *ss)rn {rn int i;rn
for(i=0;ss[i]!='0'i++) /*将ss所指字符串中所有下标为偶数位置的字
母转换为小写*/rn if(i%2==0&&ss[i]>='A'&&ss[i]<='z')rn
ss[i]=ss[i]+32;rn } 解析:从C语言的学习中我们知道,只要将小写
字母减去32则转成大写字母,将大写字母加上32则转成小写字母。
该程序是用if语句实现该功能转化的。
35.D
函数接收两个整型指针变量a、b。for循环判断a、b指向的值
大小和getchar读入的字符是否为“@”来决定循环是否执行。循环体内
对a、b指向的值各自自增1、自减1。main函数定义并初始化实参i
的值为0,实参j的值为5,调用函数fun,传入i、j的地址。所以形
参a指向i,形参b指向j,*a的值为0,*b的值为5,*a<*b为真,
执行循环体;*a的值为1,*b的值为4,*a<*b为真,执行循环体;
*a的值为2,*b的值为3,*a<*b为真,执行循环体;*a的值为3,
*b的值为2,*a<*b为假,getchar读入字符“a”,执行循环体;*a的
值为4,*b的值为1,*a<*b为假,getchar读入字符“b”,执行循环
体;*a的值为5,*b的值为0,*a<*b为假,getchar读入字符“@”,
fun函数执行完毕,main函数输出5,0。故本题答案为D选项。
37.D解析:C语言中的文件是流式文件。流式文件是一种无结构文
件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节
为单位。
2022年湖南省常德市全国计算机等级
考试C语言程序设计模拟考试(含答案)
学校:________ 班级:________ 姓名:________ 考号:________
一、单选题(12题)
1. 有如下定义: struct person {char name[9];int age;} struct person
class[10]={ "John",17, "Paul",19, "Mary",18, "Adam",16};
能输出字母M的是( )
("%cn",class[3].name);
("%cn",class[3].name[1]);
("%cn",class[2].name[1]);
("%cn",class[2].name[0]);
2. 在以下一组运算中,优先级最高的运算符是 ( )
A.<= B.= C.% D.& &
3.
4.下列哪一种图的邻接矩阵是对称矩阵()。
版权声明:本文标题:2022年湖南省常德市全国计算机等级考试C语言程序设计模拟考试(含答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1713673725a646396.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论