2013年计算机二级考试C语言课后模拟题九及答案
1.以下程序的输出结果是( B)。
main( )
{char a[10]={'1','2','3','4','5','6','7','8','9',0},*p;
int i;
i=8;
p=a+i;
printf("%s\n",p-3);
}
A) 6
B) 6789
C) ‘6’
D) 789
2.以下程序的运行结果是( A )。
#include "stdio.h"
main( )
{int a[ ]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p=a+5,*q=NULL;
*q=*(p+5);
printf("%d %d\n", *p, *q);
}
A) 运行后报错
B) 6 6
C) 6 11
D) 5 5
3.若有以下的说明和语句,则在执行for语句后,*(*(pt+l)+2)表示的数组元素是( C )。
int t[3][3],*pt[3],k;
for(k=0; k<3; k++) pt[k]=&t[k][0];
A) t[2][0]
B) t[2][2]
C) t[l][2]
D) t[2][l]
4.下面程序把数组元素中的最大值放入a[0]中,则在if语句中的条件表达式应该是( B )。
main( )
{int a[10]={6,7,2,9,1,10,5,8,4,3}, *p=a, i;
for(i=0; i<10; i++, p++)
if(________) *a=*p;
printf("%d",*a);
}
A) p>a
B) *p>a[0]
C) *p>*a[0]
D) *p[0]> *a[0]
5.以下程序的输出结果是( A )。
#include<stdio.h>
#include<string.h>
main( )
{char *a="abcdefghi";
int k;
fun (a); puts(a);
}
fun(char *s)
{int x, y;
char c;
for(x=0, y=strlen(s)-1; x<y; x++, y--)
{c=s[y]; s[y]=s[x]; s[x]=c;}
}
A) ihgfedcba
B) abcdefghi
C) abcdedeba
D) ihgfefghi
6.以下程序的输出结果是( B )。
main( )
{char *s="12134211";int v[4]={0,0,0,0},k,i;
for(k=0;s[k];k++)
{switch(s[k])
{case '1':i=0;
case '2':i=1;
case '3':i=2;
case '4':i=3;
}
v[i]++;
}
for(k=0;k<4;k++) printf("%d ",v[k]);
}
A) 4 2 1 1
B) 0 0 0 8
C) 4 6 7 8
D) 8 8 8 8
7.以下程序的输出结果是( D )。
#include<string.h>
main( )
{char *p1,*p2,str[50]="ABCDEFG";
p1="abcd";p2="efgh";
strcpy(str+1,p2+1);strcpy(str+3,p1+3);
printf("%s",str);str+1表示数组第二个数据B,p2+1指向f,即把fgh复制到BCD的位置,同时复制‘\0’
}
A) AfghdEFG
B) Abfhd
C) Afghd
D) Afgd
8.若有以下定义和语句:
double r=99,*p=&r;
*p=r;
则以下正确的叙述是( D )。
A) 以上两处的*p含义相同,都说明给指针变量p赋值
B) 在"double r=99,*p=&r; "中,把r的地址赋给了p所指的存储单元
C) 语句"*p=r; "把变量r的值赋给指针变量p
D) 语句"*p=r; "取变量r的值放回r中
9.若已定义:
int a[ ]={0,1,2,3,4,5,6,7,8,9}, *p=a, i;
其中0≤ i ≤9, 则对a数组元素不正确的引用是( D )。
A) a[p-a]
B) *(&a[i])
C) p[i]
D) *(*(a+i))=*a[i]
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
10.下列程序执行后的输出结果是( A )。void func(int *a, int b[ ])
{b[0]=*a+6;}
main()
{int a, b[5];
a=0; b[0]=3;
func(&a, B);
printf("%d\n", b[0]);
}
A) 6
B) 3
C) 8
D) 9
11.下列程序执行后的输出结果是( B )。
main()
{int a[3][3], *p, i;
p=&a[0][0];
for(i=0; i<9; i++) p[i]=i+1;
printf("%d\n", a[1][2]);
}
A) 3
B) 6
C) 9
D) 随机数
12.请选出正确的程序段( C )。
A) int *p;
B) int *s, k;
C) int *s, k;
D) int *s, k;
scanf("%d", p); *s=100; char *p, c; char *p, c;
s=&k; s=&k;
p=&c; p=&c;
*p='a'; s=p;
*s=1;
13.已知指针p的指向如下图所示,则执行语句 *- -p; 后*p的值是( B )。
a[0] a[1] a[2] a[3] a[4]
10 | 20 | 30 | 40 | 50 |
B) 20
C) 19
D) 29
14.设已有定义: char *st="how are you";下列程序段中正确的是( A )。
A) char a[11], *p; strcpy(p=a+1, &st[4]);
B) char a[11]; strcpy(++a, st);
C) char a[11]; strcpy(a, st);
D) char a[ ], *p; strcpy(p=&a[1], st+2);
15.以下程序的输出结果是( C )。
main( )
{int i, x[3][3]={9, 8, 7, 6, 5, 4, 3, 2, 1}, *p=&x[1][1];
for(i=0; i<4; i+=2) printf("%d ", p[i]);
}
A) 5 2
B) 5 1
C) 5 3
D) 9 7
16.若有说明:int i, j=2,*p=&i;,则能完成i=j赋值功能的语句是( B )。
A) i=*p;
B) *p=*&j;
C) i=&j;
D) i=**p;
17.以下定义语句中,错误的是(D )。
A) int a[ ]={1,2};
B) char *a[3];
C) char s[10]="test";
D) int n=5,a[n];
18.下列程序段的输出结果是(A )。
void fun(int *x, int *y)
{printf("%d %d", *x, *y); *x=3; *y=4;}
main()
{int x=1,y=2;
fun(&y, &x);
printf("%d %d", x, y);
}
A) 2 1 4 3
B) 1 2 1 2
C) 1 2 3 4
D) 2 1 1 2
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
19.下列程序的输出结果是( C )。main()
{char a[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
printf("%d",*--p);
}
A) 非法
B) a[4]的地址
C) 5
D) 3
20.下列程序的运行结果是( B )。
void fun(int *a, int *B)
{int *k;
k=a; a=b; b=k;
}
main()
{int a=3, b=6, *x=&a, *y=&b;
fun(x, y);
printf("%d %d", a, B);
}
A) 6 3
B) 3 6
C) 编译出错
D) 0 0
21.下面程序的输出结果是( C )。
main()
{int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf("%d\n",*p+9);
}
A) 0
B) 1
C) 10
D) 9
22.假定以下程序经编译和连接后生成可执行文件PROG . EXE,如果在此可执行文件所在目录的DOS提示符下键入:PROG ABCD EFGH IJKL<回车>,则输出结果为( D )。
main( int argc, char *argv[ ])
{while(--argc>0) printf("%s", argv[argc]);
printf("\n");
} 来源:考试大
A) ABCDEFGH
B) IJHL
C) ABCDEFGHIJKL
D) IJKLEFGHABCD
23.对于基类型相同的两个指针变量之间,不能进行的运算是( C )。
A) <
B) =
C) +
D) -
24.有以下函数:
char * fun (char *p)
{return p;}
该函数的返回值是( B )。
A) 无确切的值 B) 形参p中存放的地址值
C) 一个临时存储单元的地址
D) 形参p自身的地址值
25.若有以下说明和定义
fun(int *C){…}
main()
{int (*a)()=fun,*b(),w[10],c;
┆
}
在必要的赋值之后,对fun函数的正确调用语句是( B )。
A) a=a(w);
B) (*a)(&C);
C) b=*b(w);
D) fun (B);
26.有如下说明
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是( B )。
A) *p+9
B) *(p+8)
C) *p+=9
D) p+8
27.有如下程序:
main()
{char ch[2][5]={“6937”,“8254”},*p[2];
int i,j,s=0;
for(i=0;i<2;i++) p[i]=ch[i];
for(i=0;i<2;i++)
for(j=0;p[i][j]>‘\0’;j+=2)
s=10*s+p[i][j]-‘0’;
printf(“%d\n”,s);
}
该程序的输出结果是( C )。
A) 69825
B 63825
C) 6385
D) 693825
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
28.若有以下定义和语句:char *s1=“12345”,*s2=“1234”;
printf(“%d\n”, strlen(strcpy (s1, s2)));
则输出结果是( A )。
A) 4
B) 5
C) 9
D) 10
29.下面程序的输出结果是( C )。
main( )
{char *s=“121”;
int k=0, a=0, b=0;
do
{k++;
if(k%2= =0) {a=a+s[k]-‘0’; continue;}
b=b+s[k]-‘0’; a=a+s[k]-‘0’;
}
while(s[k+1]);
printf(“k=%d a=%d b=%d\n”, k, a, B);
}
A) k=3 a=2 b=3
B) k=3 a=3 b=2
C) k=2 a=3 b=2
D) k=2 a=2 b=3
30.若有以下的定义:
int a[ ]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p=a;
则值为3的表达式是( A )。
A) p+=2,*(p++)
B) p+=2,*++p
C) p+=3,*p++
D) p+=2,++*p
31.以下程序的输出结果是( A )。
#include<stdio.h>
sub1(char a, char B) {char c; c=a; a=b; b=c;}
sub2(char *a, char B) {char c; c=*a; *a=b; b=c;}
sub3(char *a, char *B) {char c; c=*a; *a=*b; *b=c;}
main()
{char a, b;
a=‘A’; b=‘B’; sub3 (&a, &B); putchar(a); putchar(B);
a=‘A’; b=‘B’; sub2 (&a, B); putchar(a); putchar(B);
a=‘A’; b=‘B’; sub1 (a, B); putchar(a); putchar(B);
}
A) BABBAB
B) ABBBBA
C) BABABA
D) BAABBA
32.设p1和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( B )。
A) k=*p1+*p2;
B) p2=k;
C) p1=p2;
D) k=*p1*(*p2);
33.设有如下定义:
int arr[ ]={6, 7, 8, 9, 10}; int *ptr;
则下列程序段的输出结果是( D )。
ptr=arr;
*(ptr+2)+=2;
printf(“%d, %d\n”, *ptr, *(ptr+2));
A) 8,10
B) 6,8
C) 7,9
D) 6,10
34.以下程序的输出结果是( D )。
main()
{char a[ ]=“programming”, b[ ]= “language”;
char *p1, *p2;
int i;
p1=a; p2=b;
for(i=0; i<7; i++)
if(*(p1+i)= =*(p2+i)) printf(“%c”, *(p1+i));
}
A) gm
B) rg
C) or
D) ga
35.以下程序运行后,输出结果是( C )。
main()
{char *s=“abcde”;
s+=2;
printf(“%ld\n”, s);
}
A) cde
B) 字符c的ASCII码值
C) 字符c的地址
D) 出错
36.以下程序运行后,如果从键盘上输入ABCDE<回车>,则输出结果为( D )。
#include<stdio.h>
#include<string.h>
func(char str[ ])
{int num=0;
while(*(str+num)!=’\0’) num++;
return(num);
}
main()
{char str[10], *p=str;
gets (p);
printf(“%d\n”, func (p));
}
A) 8
B) 7
C) 6
D) 5
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
37.以下程序执行后,a的值是( C )。main()
{int a, k=4, m=6, *p1=&k, *p2=&m;
a=p1= =&m;(等于运算符==优先级高于赋值运算符=,即为a=(p1==&m))
printf(“%d\n”, a);
}
A) 4
B) 1
C) 0
D) 运行时出错,a无定值
38.以下程序运行后,如果从键盘上输入:
book<回车>
book<空格><回车>
则输出结果是( B )。
#include<string.h>
main()
{char a1[80], a2[80], *s1=a1, *s2=a2;
gets(s1); gets(s2);
if(!strcmp(s1, s2)) printf(“*”);
else printf(“#”);
printf(“%d\n”, strlen(strcat(s1, s2)));
}
A) *8
B) #9
C) #6
D) *9
39.若有以下调用语句,则不正确的fun函数的首部是( D )。
main()
{ …
int a[50], n;
…
fun (n, &a[9]);
…
}
A) void fun(int m,int x[ ])
B) void fun(int s,int h[41])
C) void fun(int p,int *s) D) void fun(int n,int a)
40.假定下列程序的可执行文件名为prg . exe,则在该程序所在的子目录下输入命令行:
prg hello good<回车>后,程序的输出结果是( B )。
main(int argc, char *argv[ ])
{int i;
if(argc<=0) return;
for(i=1; i<argc; i++) printf(“%c”, *argv[i]);
}
A) hello good
B) hg
C) hel
D) hellogood
41.以下程序的输出结果是( D )。
main( )
{char s[ ]=”ABCD”, *p;
for(p=s+1; p<s+4; p++) printf(“%s ”, p);
}
A) ABCD BCD CD D
B) A B C D
C) B C D
D) BCD CD D
42.若已定义:int a[9], *p=a; 并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是( C )。
A) p+1
B) a+1
C) a++
D) ++p
43.执行以下程序后,y的值是( C )。
main( )
{int a[ ]={2, 4, 6, 8, 10};
int y=1, x, *p;
p=&a[1];
for(x=0;x<3;x++)
y+=*(p+x);
printf(“%d\n”, y);
}
A) 17
B) 18
C) 19
D) 20
44.下列程序的输出结果是( C )。
main( )
{int a[5]={2, 4, 6, 8, 10}, *p, **k;
p=a;
k=&p;
printf(“%d ”, *(p++));
printf(“%d\n”, **k);
}
A) 4 4
B) 2 2
C) 2 4
D) 4 6
45.下列程序的输出结果是( D )。
#include<string.h>
main( )
{char *p1,*p2,str[50]="xyz";
p1="abcd";p2="ABCD";
strcpy(str+2, strcat(p1+2,p2+1));
printf("%s",str);
}
A) xyabcAB
B) abcABz
C) ABabcz
D) xycdBCD
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
46.设有以下定义:int a[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
int (*prt)[3]=a, *p=a[0];
则下列能够正确表示数组元素a[1][2]的表达式是( D )。
A) *((*prt+1)[2])
B) *(*(p+5))
C) (*prt+1)+2 D) *(*(a+1)+2)
47.阅读程序:
main( )
{int a[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p;
p=a;
printf("%x\n",p);
printf("%x\n",p+9);
}
该程序有两个printf语句,如果第一个printf语句输出的是194,则第二个printf语句的输出结果是( D )。
A) 203
B) 204
C) 1a4
D) 1a6
48.以下程序的输出结果是( C )。
#include<string.h>
#include<stdio.h>
void fun(char *w, int m)
{char s, *p1, *p2;
p1=w; p2=w+m-1;
while(p1<p2)
{s=*p1++; *p1=*p2--; *p2=s;}
}
main( )
{char a[ ]="ABCDEFG";
fun(a, strlen(a));
puts(a);
}
A) GEFDCBA
B) AGADAGA
C) AGAAGAG
D) GAGGAGA
49.以下程序的输出结果是( C )。
#include<stdio.h>
void fun(int *s)
{static int j=0; www.Examda.CoM
do
s[j]+=s[j+1];
while (++j<2);
}
main( )
{int k, a[10]={1, 2, 3, 4, 5};
for(k=1; k<3; k++) fun (a);
for(k=0; k<5; k++) printf (“%d”, a[k]);
}
A) 34756
B) 23445
C) 35745
D) 12345
50.请读程序:
#include<stdio.h>
char fun(char *C)
{if(*c<=‘Z’&&*c>=‘A’) *c-=‘A’-‘a’;
return *c;
}
main( )
{char s[81], *p=s;
gets (s);
while(*p)
{*p=fun(p); putchar(*p); p++;}
putchar(‘\n’);
}
若运行时从键盘上输入OPEN THE DOOR<回车>,则上面程序的输出结果为(B )。
A) oPEN tHE dOOR
B) open the door
C) OPEN THE DOOR
D) Open The Door
51.以下程序的输出结果是( B )。
#include<string.h>
main( )
{char *s1="AbCdEf",*s2="aB";
s1++;s2++;
printf("%d\n",strcmp(s1, s2));
}
A) 正数
B) 负数
C) 零
D) 不确定的值
52.下面各语句行中,能正确进行赋字符串操作的语句行是( C )。
A) char st[4][5]={“ABCDE”};
B) char s[5]={‘A’, ‘B’, ‘C’, ‘D’, ‘E’};
C) char *s; s= “ABCDE”;
D) char *s; scanf(“%s”,s);
53.以下程序的输出结果是( C )。
fun(int *s, int n1, int n2)
{int i, j, t;
i=n1; j=n2;
while(i<j)
{t=*(s+i); *(s+i)=*(s+j); *(s+j)=t;
i++; j--;
}
}
main( )
{int a[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, i, *p=a;
fun (p, 0, 3); fun (p, 4, 9); fun (p, 0, 9);
for(i=0; i<10; i++) printf("%d ", *(a+i));
printf(“\n”);
}
A) 0 9 8 7 6 5 4 3 2 1
B) 4 3 2 1 0 9 8 7 6 5
C) 5 6 7 8 9 0 1 2 3 4
D) 0 9 8 7 6 5 1 2 3 4
54.下面函数的功能是( B )。
sss (char *s, char *t)
{while((*s)&&(*t)&&(*t= =*s)) s++, t++;
return(*s-*t);
}
A) 求字符串的长度
B) 比较两个字符串的大小
C) 将字符串s复制到字符串t中
D) 将字符串s连接到字符串t中
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
55.以下程序段给数组所有的元素输入数据,则以下正确答案为( A )。main()
{int a[10], i=0;
while (i<10) scanf(“%d”, );
…
}
A) a+(i++)
B) &a[i+1]
C) a+i
D) &a[++i]
56.在下列叙述中,正确的一条是( B )。
A) 语句int *pt中的*pt是指针变量名
B) 语句int *p=a;等价于int *p; p=&a[0];
C) 运算符*和&都是取变量地址的运算符
D) 已知指针变量p指向变量a,则&a和*p值相同,都是变量a的值
57.下列语句执行后的结果是( A )。
y=5; p=&y; x=*p++;
A) x=5,y=5
B) x=5,y=6
C) x=6, y=5
D) x=6, y=6
58.在下列语句中,其含义为“p为带回一个指针的函数,该指针指向整型数据”的定义语句是( A )。
A) int *p();
B) int **p;
C) int (*p)();
D) int *p;
59.在下面关于指针的说法中,错误的一条是( B )。
A) 变量的指针就是变量的地址
B) 可以将一个整型量或任何其他非地址类型的数据赋给一个指针变量
C) 一个指针变量只能指向同一个类型的变量
D) 指针变量中只能存放地址
60.在下列程序中,输出结果与其它程序不同的是( D )。
A) main()
{int a[10];
int i;
for(i=0;i<10;i++) scanf(“%d”,&a[i]);
printf(“\n”);
for(i=0;i<10;i++) printf(“%d”,a[i]);
}
B) main()
{int a[10];
int i;
for(i=0;i<10;i++) scanf(“%d”,&a[i]);
printf(“\n”);
for(i=0;i<10;i++) printf(“%d”,*(a+i));
}
C) main()
{int a[10];
int i, *p;
for(i=0;i<10;i++) scanf(“%d”,&a[i]);
printf(“\n”);
for(p=a;p<(a+10);p++) printf(“%d”,*p);
}
D) main()
{int a[10];
int i, *p;
for(i=0;i<10;i++) scanf(“%d”,&a[i]);
printf(“\n”);
for(i=0;i<10;i++) printf(“%d”,*(p+i));
}
61.以下程序的输出结果是( D )。
sub(int *s, int y)
{static int t=3;
y=s[t]; t--;
}
main()
{int a[ ]={1, 2, 3, 4}, n;
int x=4;
for(n=0; n<4; n++)
{sub(a, x); printf(“%d”, x); }
printf(“\n”);
}
A) 1234
B) 3333
C) 4321
D) 4444
62.以下程序的输出结果为( B )。
#idefine FORMAT “%u, %u”
main()
{int a[3][4]={1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23};
printf(“\n”);
printf(FORMAT, **a, *a[0]);
printf(FORMAT, *(a[0]+1), *&a[0][1]);
printf(FORMAT, a[1][1], *(*(a+1)+1));
}
A) 3,3 5,5 9,9
B) 1,1 3,3 9,9
C) 1,1 3,3 5,5
D) 5,5 7,7 9,9
63.以下程序的输出结果为(D )。
f(char *s)
{char *p=s;
while(*p!=‘\0’) p++;
return(p-s);
}
main()
{ printf(“%d\n”, f(“12345678”)); }
A) 12345678
B) 7
C) 1
D) 8
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
64.以下程序的输出结果为( C )。move(int array[6], int n, int m)
{int *p, array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
*p=*(p-1);
*array=array_end;
m--;
if(m>0) move (array, n, m);
}
main()
{static int number[6]={1, 2, 3, 4, 5, 6};
int m=4, j;
move(number, 6, m);
for(j=0;j<5;j++)
printf(“%d,”, number[i]);
printf(“%d”, number[5]);
}
A) 1,2,3,4,5,6
B) 6,5,4,3,2,1
C) 3,4,5,6,1,2
D) 6,1,2,3,4,5
65.在下列叙述中,正确的一条是( B )。
A) 以下程序运行结果为Computer and c:
main()
{char str[4];
str=“Computer and c”;
printf(“%s\n”, str);
}
B) 下面两种表示方式等价
(1) int fun(int x,int y)
(2) int fun(x,y)
int x,y;
C) 若输入1、2,以下程序的运行结果为12
main()
{int *p,i,a[2];
p=a;
for(i=0;i<2;i++) scanf(“%d”,p++);
for(i=0;i<2;i++,p++) printf(“%d”,*p);
}
D) 以下程序的运行结果为3
main()
{int *p,a[5]={1,3,4,5,6};
p=a;
printf(“%d”,*p++);
}
66.以下程序的输出结果是( A )。
point(char *pt);
main()
{char b[4]={‘a’, ‘c’, ‘s’, ‘f’}, *pt=b;
point(pt);
printf(“%c\n”, *pt);
}
point(char *p)
{p+=3;
}
A) a
B) c www.Examda.CoM
C) s
D) f
67.以下程序的输出结果为( A )。
void move(int *pointer)
{int i, j, t;
for(i=0; i<3; i++)
for(j=i; j<3; j++)
{t=*(pointer+3*i+j);
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t;
}
}
main()
{int a[3][3]={1, 2, 3, 4, 5, 6, 7, 8, 9}, *p, i;
p=&a[0][0];
move(p);
for(i=0; i<3; i++)
printf(“%d%d%d”, a[i][0], a[i][1], a[i][2]);
}
A) 147258369
B) 123456789
C) 987654321
D) 127485639
68.以下程序的输出结果是( A )。
sub(int x, int y, int *z)
{*z=y-x+2;}
main()
{int a, b, c;
sub(16, 7, &a); sub(9, a, &B); sub(a, b, &C);
printf(“%d, %d, %d\n”, a, b, C);
}
A) –7,-14,-5
B) –7,-16,-9
C) –7,-12,-9
D) –9,-14,-5
69.变量p为指针变量,若p=&a,下列说法不正确的是( D )。
A) &*p==&a
B) *&a==a C) (*p)++==a++
D) *(p++)==a++
70.若输入10,以下程序的输出结果是( B )。
#define MAX 50
main()
{int i, k, m, n, num[MAX], *p;
scanf(“%d”, &n);
p=num;
for(i=0; i<n; i++)
*(p+i)=i+1;
i=0; k=0; m=0;
while(m<n-1)
{if(*(p+i)!=0) k++;
if(k= =3)
{*(p+i)=0; k=0; m++;}
i++;
if(i= =n) i=0;
}
while(*p= =0) p++;
printf(“%d\n”, *p);
}
A) 10
B) 4
C) 50
D) 60
71.以下程序的输出结果是( B )。
main()
{char *alpha[5]={“a”, “bc”, “def”, “1”, “23”}, **p;
int i;
p=alpha;
for(i=0; i<3; i++, p++) printf(“%s”, *p);
printf(“\t”);
p=p-3;
for(i=0; i<3; i++, p++) printf(“%c\t”,**p);
}
A) abcdef d e f
B) abcdef a b d
C) abcdef 1 23
D) defabc 1 23
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
二、填空题1.下列程序的输出结果是 GDABC 。
#include<string.h>
main( )
{char b[30],*chp;
strcpy(&b[0],"GH");
strcpy(&b[1],"DEF");
strcpy(&b[2],"ABC");
printf("%s\n",B);
}
2.下列程序的字符串中各单词之间有一个空格,则程序的输出结果是 How does she 。
#include<string.h>
main( )
{char strl[ ]="How do you do",*p1=strl;
strcpy (strl+strlen(strl)/2,"es she");
printf("%s\n",pl);
}
3.若有如下图所示五个连续的int类型的存储单元并赋值如下图,a[0]的地址小于a[4]的地址。p和s是基类型为int的指针变量。请对以下问题进行填空。
a[0] a[1] a[2] a[3] a[4]
22 | 33 | 44 | 55 | 66 |
(2)若指针s指向存储单元a[2],p指向存储单元a[0],表达式s-p的值是 2 。
4.以下程序的功能是:将无符号八进制数字构成的字符串转换为十进制整数。例如,输入的字符串为:556,则输出十进制整数366。请填空。
#include<stdio.h>
main()
{char *p, s[6];
int n;
p=s;
gets (p);
n=*p-'0';
while( *(++p) !='\0') n=n*8+*p-'0';
printf("%d\n", n);
}
5.设有以下程序:
main()
{int a, b, k=4, m=6, *p1=&k, *p2=&m;
a=(pl= =&m);
b=(*p1)/(*p2)+7;
printf("a=%d\n", a);
printf("b=%d\n",
B);
}
执行该程序后,a的值为 0 ,b的值为 7 。
6.下列程序的输出结果是 0 。
void fun(int *n)
{while((*n)--);
printf("%d", ++(*n));
}
main()
{int a=100;
fun (&a);
}
7.以下程序的输出结果是 10 。
main()
{int arr[ ]={30, 25, 20, 15, 10, 5}, *p=arr;
p++;
printf("%d\n", *(p+3));
}
8.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是 *(p+5) 。
int w[10]={23,54,10,33,47,98,72,80,61}, *p=w;
9.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。
strlen (char a[ ], char b[ ])
{int num=0, n=0;
while (*(a+num)!= '\0' ) num++;
while (b[n]){*(a+num)=b[n]; num++; n++ ;}
return(num);
}
10.函数void fun(float *sn,int n)的功能是:根据以下公式计算S,计算结果通过形参指针sn传回;n通过形参传入,n的值大于等于0。请填空。
void fun(float *sn, int n)
{float s=0.0, w, f= -1.0;
int i=0;
for(i=0; i<=n; i++)
{f= -1 *f;
w=f/ (2*i+1);
s+=w;
}
*sn = s;
}
11.下面函数用来求出两个整数之和,并通过形参传回两数相加之和值,请填空。
int add(int x,int y, int * z)
{ *z =x+y;}
12.以下fun函数的功能是:累加数组元素中的值。n为数组中元素的个数。累加的和值放入x所指的存储单元中。请填空。
fun(int b[ ],int n,int *x)
{int k,r=0;
for(k=0;k<n;k++) r= r+b[k] ;
*x =r;
}
13.以下函数的功能是:把两个整型指针变量所指的存储单元中的内容进行交换。请填空。
exchange(int *x,int *y)
{int t;
t=*y; *y= *x ; *x= t ;
}
14.以下程序的输出是 49 。
main()
{int a[10]={19,23,44,17,37,28,49,36},*p;
p=a;
printf(“%d\n”,(p+=3)[3]);
}
15.下面程序的输出结果是 024 。
#define MAX 3
int a[MAX];
main()
{fun1();fun2(a);printf(“\n”);}
fun1()
{int k,t=0;
for(k=0;k<MAX;k++,t++) a[k]=t+t;
}
fun2(int b[])
{int k;
for(k=0;k<MAX;k++) printf(“%d”,*(b+k));
}
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!
16.下面程序的输出结果是 ABCDCD 。
char b[]=“ABCD”;
main()
{char *chp;
for(chp=b; *chp; chp+=2) printf(“%s”, chp);
printf(“\n”);
}
17.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。
#include<stdio.h>
main()
{char str[81],*sptr;
int i;
for(i=0;i<80;i++)
{str[i]=getchar();
if(str[i]==‘\n’) break;
}
str[i]= '\0' ;
sptr=str;
while(*sptr) putchar( *sptr++ );
}
18.fun1函数的调用语句为:fun1(&a,&b,&C);它将三个整数按由大到小的顺序调整后依次放入a、b、c三个变量中,a中放最大数。请填空。
void fun2(int *x, int *y)
{int t;
t=*x; *x=*y; *y=t;
}
void fun1(int *pa,int *pb,int *pC)
{if(*pc>*pB) fun2( pc,pb );
if(*pa<*pC) fun2( pa,pb );
if(*pa<*pB) fun2( pa,pc );
}
19.以下函数用来在w数组中插入数x,w数组中的数已按由小到大的顺序存放,n所指存储单元中存放数组中数据的个数,x插入后数组中的数仍有序。请填空。
void fun(char *w,char x,int *n)
{int i,p;
p=0;
w[*n]=x;
while(x>w[p]) p++ ;
for(i=*n;i>p;i--) w[i]= w[i-1] ;
w[p]=x;
++*n;
}
20.阅读程序:
main()
{char str1[]=“how do you do”, str2[10];
char *p1=str1, *p2=str2;
scanf(“%s”, p2);
printf(“%s ”, p2);
printf(“%s\n”, p1);
}
运行上面的程序,输入字符串HOW DO YOU DO,则程序的输出结果是 HOW how do you do 。
21.下面程序的输出结果是 SO 。
main()
{char *p[]={“BOOL”, “OPK”, “H”, “SP”};
int i;
for(i=3;i>=0;i--,i--) printf(“%c”,*p[i]);
printf(“\n”);
}
22.下面程序的输出结果是 17 。
funa(int a,int B)
{return a+b;}
funb(int a,int B)
{return a-b;}
sub(int(*t)(),int x,int y)
{return((*t)(x,y));}
main()
{int x,(*p)();
p=funa;
x=sub(p,9,3);
x+=sub(funb,8,3);
printf(“%d\n”, x);
}
23.下面程序的输出结果是 XYZA 。
#include<stdio.h>
void fun(char *a1,char *a2,int n)
{int k;
for(k=0;k<n;k++)
a2[k]=(a1[k]-‘A’-3+26)%26+‘A’;
a2[n]=‘\0’;
}
main()
{char s1[5]=“ABCD”, s2[5];
fun (s1, s2, 4);
puts(s2);
}
24.下面程序的输出结果是 7 1 。
void as(int x,int y,int *cp,int *dp)
{*cp=x+y;
*dp=x-y;
}
main()
{int a=4,b=3,c,d;
as(a,b,&c,&D);
printf(“%d %d\n”,c,D);
}
25.下面程序的输出结果是 eybdooG 。
#include<stdio.h>
main()
{static char b[]=“Goodbye”;
char *chp=&b[7];
while(--chp>=&b[0]) putchar(*chp);
putchar(‘\n’);
}
26.若输入:this test terminal,以下程序的输出结果为:terminal test this。填空补充以下程序。
#include<string.h>
#define MAXLINE 20
main()
{int i;
char *pstr[3],str[3][MAXLINE];
for(i=0;i<3;i++) pstr[i]=str[i];
for(i=0;i<3;i++) scanf(“%s”,pstr[i]);
sort(pstr);
for(i=0;i<3;i++) printf(“%s\n”,pstr[i]);
}
sort( char *pstr [3] )
{int i,j;
char *p;
for(i=0;i<3;i++)
{for(j=i+1;j<3;j++)
{if(strcmp(*(pstr+i),*(pstr+j))>0)
{p=*(pstr+i);
*(pstr+i)= *(patr+j) ;
*(pstr+j)=p;
}
}
}
}
27.以下程序利用指针法将两个数按从小到大的顺序输出来。
main()
{int a,b, *p1,*p2 , p ;
printf(“input a, b:”);
scanf(“%d%d”, &a,&B);
p1=&a ;
p2=&b;
if(a<B)
{p=p1; p1=p2; p2=p;}
printf(“a=%d b=%d\n”,a,B);
printf(“max=%d min=%d\n”, *p1,*p2 );
}
28.以下程序的输出结果是 8 。
fun(int n,int *s)
{int f1,f2;
if(n==1||n==2) *s=1;
else
{fun(n-1,&f1);
fun(n-2,&f2);
*s=f1+f2;
}
}
main()
{int x;
fun(6,&x);
printf(“%d\n”,x);
}
29.下面的程序通过函数average计算数组中各元素的平均值,请填空。
float average(int *pa,int n)
{int i;
float avg=0.0;
for(i=0;i<n;i++)
avg=avg+ *(pa+i) ;
avg= avg/n ;
return avg;
}
main()
{int i,a[5]={2,4,6,8,10};
float mean;
mean=average(a,5);
printf(“mean=%f\n”,mean);
}
30.以下程序将字符串s1中的所有与字符串str1相同的子串替换成字符串str2,并将替换后的新串存于字符数组s2中。
#include<stdio.h>
void replace(char *s1,char *s2,char *str1,char *str2)
{char *t0,*t1,*t2;
while( *s1 )
{for(t0=s1,t1=str1;(*t1!=‘\0’&& *t0=*t1 );t0++,t1++);
if(*t1!=‘\0’) *s2++ = *s1++ ;
else
{for(t1=str2;*t1!=‘\0’;) *s2++ = *t1++ ;
s1=t0 ;
}
}
*s2=‘\0’;
}
main()
{static char s1[]=“abcef ababcd abab.”, s2[25];
replace (s1, s2, “abc”, “XYZ”);
printf(“%s\n”, s2);
}
31.以下语句的输出结果是 hELLO! 。
char s[80],*sp=“HELLO!”;
sp=strcpy (s, sp); s[0]=‘h’; puts(s);
推荐新闻:2013年计算机二级考试C语言课后题及答案汇总 C语言章节练习在线测试
冲刺专题:2013年计算机二级考试冲刺※考前注意事项※考试试题首发※悬赏等考真题
欢迎进入:233网校“计算机二级C语言在线估分”,助大家参考练习!