2014《C语言程序设计》专升本练习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《C语言程序设计》专升本练习题
(学习资料仅供练习)
目录
专升本《C语言》练习题一 (1)
专升本《C语言》练习题二 (9)
专升本《C语言》练习题三 (17)
专升本《C语言》练习题四 (24)
专升本《C语言》练习题五 (31)
专升本《C语言》练习题六 (42)
专升本《C语言》练习题七 (48)
专升本《C语言》练习题八 (58)
专升本《C语言》练习题九 (65)
专升本《C语言》练习题十 (72)
专升本《C语言》练习题一
6 10
专升本《C语言》练习题二
专升本《C语言》练习题三
一、单项选择题
1. C语言源程序文件经过编译连接之后生成一个后缀为__C__的文件。

A.”.c”
B.“.obj”
C.“.exe”
D.“.bas”
2. 以下选项中不正确的整型常量是_C____。

A. 12L
B. -10
C. 1,900
D. 123U
3. 表达式___C___的值是0。

A.3%5
B.3/5.0
C.3/5
D.3<5
4. 表达式!(x>0||y>0) 等价于__D___。

A.!x>0||!y>0
B.!(x>0)||!(y>0)
C.!x>0&&!y>0
D.!(x>0)&&!(y>0)
5. 若变量已正确定义并赋值,表达式__D____不符合C语言语法。

A.4&&3
B.+a
C.a=b=5
D.int(3.14)
6. 若变量已正确定义,执行语句scanf("%d%d%d ",&k1,&k2,&k3);时,___B___是正确的输入。

A.2030,40
B.20 30 40
C.20, 30 40
D.20, 30,40
7. 执行语句printf(”__D____”, 2); 将得到出错信息。

A.%d
B.%o
C.%x
D.%f
8. 设变量定义为“int s[ ]="hello\nworld\n";”,则数组s中有__B__个元素。

A.12
B.13
C.14
D.15
9. 设变量定义为“int a[2]={1,3}, *p=&a[0]+1;”,则*p的值是___B__。

A.2
B.3
C.4
D.&a[0]+1
10. 若变量已正确定义并赋值,表达式-k++ 等价于__A____。

A.-(k++)
B.(-k)++
C.-(k+1)
D.-(++k)
11.在C 语言程序中,在函数内部定义的变量称为__D____。

A.全局变量
B.全程变量
C.外部变量
D.内部变量
12. 若x是整型变量,表达式(x=10.0/4.0) 的值是__D___ 。

A.2.5
B. 2.0
C. 3
D.2
13. 对于以下的变量定义,表达式__A____是正确的。

struct node { char s[10]; int k; } p[4];
A.p->k=2
B.p[0].s=“abc”
C.p[0]->k=2
D.p->s=‘a’
14. 下列运算符中,优先级从高到低依次为__D___。

A.&&,!,||
B.||,&&,!
C.&&,||,!
D. !,&&,||
15. 下列程序段的输出结果是__B___。

int *p, *q, k = 1, j=10 ; p=&j; q = &k ; p = q ; (*p)++;
printf("%d",*q);
A.1
B.2
C.10
D.11
16.以下各选项企图说明一种新的类型名,其中正确的是水量(C)
A. typedef v1 int;
B. typedef v2=int;
C. typedefv1 int v3;
D. typedef v4: int;
17. 以下选项中,非法的字符常量是(C)
A. ‘\t’
B. ‘\17’C)“n” D. ‘\xaa’
18. 以下程序的输出结果是(C)
main()
{ int i, a[10];
for(i=9;i>=0;i--) a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
}
A. 258
B. 741
C. 852
D. 369
19. 以下程序的输出结果是(B)
main()
{ char st[20]= “hello\0\t\\\”;
printf(%d %d \n”,strlen(st),sizeof(st));
}
A. 9 9
B. 5 20
C. 13 20
D. 20 20
20. 以下程序的输出结果是(D)
main()
{ int a, b;
for(a=1, b=1; a<=100; a++)
{ if(b>=10) break;
if (b%3= =1)
{ b+=3; continue; }
}
printf(“%d\n”,a);
}
A. 101
B. 6
C. 5
D. 4
21. 以下程序的输出结果是(D)
union myun
{ struct
{ int x, y, z; } u; int k; } a;
main()
{ a.u.x=4; a.u.y=5; a.u.z=6;
a.k=0;
printf(%d\n”,a.u.x);
}
A. 4
B. 5
C. 6
D. 0
22. 以下程序段的输出结果是(A)
char s[]="\\141\141abc\t";printf ("%d\n",strlen(s));
A. 9
B. 12
C. 13
D. 14
23. 以下程序的输出结果是(B)
main()
{ char ch[3][5]={"AAAA","BBB","CC"};
printf("\"%s\"\n",ch[1]);
}
A. "AAAA"
B. "BBB"
C. "BBBCC"
D. "CC"
24. 不合法的main函数命令行参数表示形式是(C)
A. main(int a,char *c[])
B. main(int arc,char **arv)
C. main(int argc,char *argv)
D. main(int argv,char *argc[])
25. 有以下程序执行后输出结果是(C)
main()
{ char *s[]={"one","two","three"},*p; p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
A. n,two
B. t,one
C.w,one
D. o,two
26. 设有如下说明
typedef struct
{ int n; char c; double x;}STD;
则以下选项中,能正确定义结构体数组并赋初值的语句是(A)
A. STD tt[2]={{1,'A',62},{2, 'B',75}};
B. STD tt[2]={1,"A",62},2, "B",75};
C. struct tt[2]={{1,'A'},{2, 'B'}};
D. structtt[2]={{1,"A",62.5},{2, "B",75.0}};
27. 若变量c为char类型,则能正确判断出c为小写字母的表达式是( D )。

A. 'a'<=c<= 'z'
B. (c>= 'a')||(c<= 'z')
C. ('a'<=c)and ('z'>=c)
D. (c>= 'a')&&(c<= 'z')
二.填空题
1. 设ch是字符型变量,判断ch为英文字母的表达式是:
(ch>=’A’&&ch,=’Z’)||(ch>=’a’&&ch<=’z’) __。

2. 计算下列分段函数的if 语句是_ if(x>0)y=1;else if(x=0)y=0;else y=-1;___。

1 x>0
y= 0 x=0
-1 x<0
3.表达式!!5的值是__1____。

4.下列程序段的输出结果是___12___。

printf("%xn", (0x19 <<1) & 0x17);
5.下列程序段的输出结果是__ k=4 s=6___。

int k, s;
for(k=0, s=0; k<10; k++)
if (s>k) break ;
else s += k;
printf("k=%d s=%d", k, s);
6.下列程序段的输出结果是__15___。

#define MIN(x,y) (x)<(y)?(x) : (y)
printf("%d",10*MIN(10,15));
7.下列程序在运行时可能会出错,原因是__指针变量s未赋初值____。

# include
void main( )
{ char *s; gets(s); puts(s); }
8.下列程序段的输出是___6 0__。

# include
int f(int m)
{ static int k=0; int s=0;
for(; k<=m; k++) s++;
return s;
}
void main( )
{ int s1, s2;
s1=f(5);
s2=f(3);
printf("%d %d\n", s1, s2);
}
9. 下列程序段的输出结果是__ fgh ___。

char *st[ ]={"abcd","efgh","ijkl","mnop"};
printf("%s", *(st+1)+1);
10. 用typedef定义一个含10个元素的整型数组ARR。

typedef int ARR[10];
11.以下程序调用findmax函数返回数组中的最大值,请填空。

findmax(int *a,int n)
{ int *p,*s;
for(p=a,s=a; p-a
if ( *p>*s ) s=p;
return(*s);
}
void main()
{ int x[5]={12,21,13,6,18};
printf("%d\n",findmax(x,5));
}
三.程序(段)填空题
1.设变量x, y, z已正确定义和赋值,请仔细阅读程序段A,然后在程序段B中填入正确的内容,使程序段A和程序段B有相同的功能。

程序段A 程序段B
x=x+y; y=x-y;
x=x-y; z=x+y;
z=x ; x=y ;
y=z; z=x+y;
2.请仔细阅读函数f1,然后在函数f2中填入正确的内容,使函数f1和函数f2有相同的功能。

char *f1(char s[ ], char t[])
{ int k;
for(k=0; t[k]!=' '; k++)
s[k]=t[k];
s[k]=' ';
return s;
}
专升本《C语言》练习题四
一、填空題(每空1分,共20分)
1. 是C程序的基本单位,一个C程序总是从开始执行。

2.C语言规定标识符只能由字母、和3种字符组成,且第一个字符必须为字母或。

3.著名计算机科学家沃思提出的一个公式:数据结构+=程序
4.Turbo C++中,若有语句:unsigned int a;则a的范围是0~
5.C中的转义符“\r”表示:。

6.表达式21 / 4 的值为。

7.C语言中没有专门的字符串变量,如果想将一个字符串存放在变量中以便保存,必须使用。

8.已知a=12.789,则表达式(int)a 的值为。

9.表达式3 | 2 的值是。

10.若a=5,经a-=3;后a= 。

11.已知ch='a',则表达式【(ch>='A ' && ch<='Z')? (ch+32):ch 】的值为。

12.C中定义符号常量E为2.71828的宏命令是。

13.函数形参和调用的实参是数组名时,参数按方式进行传递。

14.C中按位与运算符是、按位异或运算符是、按位或运算符是。

15.定义一个结构变量,共三个成员分别是字符型、整形和浮点型,则该结构体变量所占内存长度为个字节。

二、单项选择题(每题2分,共40分)
1.下列C语言标识符中,不合法的是()
A. myname
B. Wend
C. sum
D. student
2.欲从键盘给整型变量a赋值3,b赋值2,则对应语句
scanf("a=%d,b=%d",%a,&b);的输入格式是()
A. 3 2
B. a=3 b=2
C. a=3,b=2
D.a=b=3,2
3.C语言源程序文件后缀名是()
A. .exe
B. .obj
C. .bat
D. .c
4.结构化程序设计的三种基本结构是(B )
A. 顺序结构、复杂结构、循环结构
B. 顺序结构、分支结构、循环结构
C. 顺序结构、分支结构、选择结构
D. 顺序结构、复杂结构、分支结构
5.以下表达式中,值为0的是()
A.15%5
B.15/5.0
C.15/5
D.15>5
6.设下列表达式中所涉及的变量均已正确定义,则不符合C语言语法的是()
A.4||3
B.a+=4
C.a=3,b=5
D.char(65)
7.设变量定义为【int a[3]={1,3,5}, *p=a+1; 】,则*p的值是()
A. 2
B. 3
C. 4
D. a+1
8.在C 语言程序中,在函数内部定义的变量称为()
A. 全局变量
B. 外部变量
C. 全程变量
D. 局部变量
9.经过以下的变量定义后,正确的表达式是(A )
struct node { char s[10]; int k; } p[4];
A. p->k=21
B. p[0]->k=21
C. p(0)->k=21
D. p->s="Mary"
10.若变量c为char类型,则能正确判断出c为大写字母的表达式是()
A. (c>= 'A')||(c<= 'Z')
B. 'A'<=c<= 'Z'
C. (c>= 'A')&&(c<= 'Z')
D. ('A'<=c)and ('Z'>=c)
11.C语言中以“只写”方式打开文件,应选择的参数是()
A. o
B. w
C. a
D. r
12.变量定义为【int a[2][3]={1,2,3,4,5,6}, *p=&a[1][0]; 】,则p的值是)
A. 数组a的首地址
B. 数组a的第1个元素的地址
C.数组a的第“1”行第“0”列的地址
D. 数组a的第“1”列的首地址
13.用链表表示线性表的优点是()
A. 便于插入和删除操作
B. 花费的存储空间较顺序存储少
C. 便于随机存取
D. 数据元素的物理顺序与逻辑顺序相同
14.结构化程序设计主要强调的是(C )
A. 程序的规模
B. 程序设计语言的先进性
C. 程序结构的规范化
D. 程序的效率
15.以下表达式中,不正确的浮点数常量是( C )
A. 2e2
B. 2.2
C. 2c2
D. 2E2
16. 若int x=12,*p=x;则正确的赋值表达式是()
A. p=*&x
B. *p=&x
C. &p=x
D. *p=x
17.设有如下程序段:int i=15; for(;i>=10;)i--; 执行完这段程序后,i的值是(D)
A. 5
B. 4
C. 10
D. 9
18.设有如下程序段:int i=15; while(i<15)i--; 则以下描述中正确的是( C )
A.循环体语句执行15次
B. 这是一个死循环
C. 循环体语句一次也不执行
D. 循环体语句只执行一次
19.设有如下程序段:{char a[2][6]={"abcde","uvwxy"},*p=&a[0][2];
printf("\n%s",p);这段程序执行后,屏幕输出的结果是(B )
A. wxy
B. cde
C. w
D. c
20.设有如下程序段:union{ int i; char c; }a; a.c='A'; a.i=12;
printf("\n%d",a.i);这段程序执行后,屏幕输出的结果是(C )
A. A
B. 97
C. 12
D. 65
三、程序填空(每空3分,共15分)
1.以下程序的功能是输出杨辉三角形前10行,请在下划线处填上正确的内容,使程序能正确运行。

#include <stdio.h>
#define N 11
main()
{int i,j,a[N][N];
for(i=1;i<N;i++)
{a[i][1]= ;
a[i][i]= ;
}
for(i=3;i<N;i++)
for(j=2;j<=i-1;j++)
a[i][j]= ;
for(i=1;i<N;i++)
{for(j=1;j<=i;j++)
printf("%6d", a[i][j] );
printf("\n");
}
}
2.以下程序的功能是利用函数求100-200间素数(质数)的个数,请在下划线处填上正确的语句,使程序能正确运行。

#include <stdio.h>
int isprime(int n)
{
int i,f;
f=1;
for(i=2;i<n/2;i++)
if( )
{f=0; i=n; }
return(f);
}
main()
{int i=100,n=0;
for(;i<200;i++)
if( )n++;
printf("Numbers of prime:%d",n);

四、写出以下程序运行结果(每题4分,共12分)
1.以下程序输出的结果是:
#include "stdio.h"
void main()
{ char s[]="\"hello\""; printf("%s",s); }
2.以下程序输出的结果是:
#include "stdio.h"
void main()
{int a=12,b=13;
a=a+b; b=a-b; a=a-b; printf("%d,%d",a,b);
}
3.以下程序输出的结果是:
#include "stdio.h"
void main()
{ char ch[]="I love Great Wall of China!"; printf("%c",*(ch+5)); }
五、编程题(第1题5分,第2题8分,共13分)
1.百钱百鸡问题:公元前5世纪,我国古代数学家张丘建在《算经》一书中提出了百鸡问题:鸡翁一值钱五、鸡母一值钱三、鸡雏三值钱一,百钱买百鸡,问鸡翁、母、雏各几何? 试编程输出所有的买法。

注意:每一种鸡至少要一只。

2.编程输出所有"玫瑰花数"。

(一个四位数等于它每一位数字的4次方之和.那么我们称这个四位数为"玫瑰花数")
专升本《C语言》练习题四参考答案
一、填空題(每空1分,共20分)
二、单项选择题(每题2分,共40分)
三、程序填空(每空3分,共15分)
四、写出以下程序运行结果(每题4分,共12分)
1.运行结果:"hello"
2.运行结果:13,12
3. 运行结果: e
五、编程题(第1题5分,第2题8分,共13分)
1.参考程序:
#include "stdio.h"
void main()
{int cock,hen,chick;
for(cock=1;cock<20;cock++)
for(hen=1;hen<33;hen++)
{chick=100-cock-hen;
if(cock*5+hen*3+chick/3==100)
printf("cock:%d hen:%d chick:%d\n",cock,hen,chick); }}
评分标准:程序结构正确得3分,算法正确得2分
2. 参考程序:
#include "stdio.h"
void main()
{
int i,g,s,b,q,m;
for(i=1000;i<=9999;i++)
{g=i%10;
s=i/10%10;
b=i/100%10;
q=i/1000;
m=g*g*g*g+s*s*s*s+b*b*b*b+q*q*q*q;
if(i==m)printf("\n%d",i);
}
}
专升本《C语言》练习题五
一.单项选择题
1.以下定义语句中正确的是(C)
A. char a='A'b='B';
B. float a=b=10.0;
C. int a=10,*b=&a;
D. float *a,b=&a;
2.下列运算符中,优先级最高的是(A) 。

A. ->
B. ++
C. &&
D. =
3.表达式!(x>0&&y>0)等价于(A) 。

A. ! (x>0) || ! (y>0)
B. !x>0 || !y>0
C. !x>0 && !y>0
D. !(x>0) && ! (y>0)
4. 有以下程序运行后的输出结果是(B)
main()
{ int a=666,b=888; printf("%d\n",a,b); }
A.错误信息
B.666
C.888
D.666,888
5. 有以下程序运行后的输出结果是(C)
main()
{ int i;
for(i=0;i<3;i++)
switch(i) {
case 0:printf("%d",i); case 2:printf("%d",i); default:printf("%d",i); }
} A.022111 B.021021 C.000122 D.012
6. 若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是(C)
A.abs(x-y)<10
B.x-y>-10&& x-y<10
C.!(x-y)<-10||!(y-x)>10
D.(x-y)*(x-y)<100
7. 数组定义为,int a[11][11]; 则数组a 的元素个数为( D )
A. 12
B. 144
C. 100
D. 121
8. 对于以下的变量定义,不正确的表达式是(D)。

struct node { int j , k ; }x,*p=&x;
A. p->k=2;
B. (*p).k=2;
C. x . k=2
D. x->k=2
9. 不正确的赋值或赋初值的方式是(B)。

A. char str[ ]=”string”;
B.char str[10]; str=”string”;
C. char *p=”string”;
D.char *p; p=”string”;
10. 设程序中不再定义新的变量,写出以下程序中可以使用的所有变量(B )
#include <stdio.h>
int z;
int p(int x)
{ static int y; return (x+y); }
void main( )
{ int a,b; printf(“%dn”, p(a)); ………}
A. a,b
B. a,b,z
C. a,b,y,z
D. a,b,x,y,z
11.有以下程序运行后的输出结果是(D)
main()
{ int i=0,x=0;
for (;;)
{ if(i==3||i==5) continue; if (i==6) break; i++; s+=i; };
printf("%d\n",s);
} A.10 B.13 C.21 D.程序进入死循环
12.以下程序若运行时从键盘上输入:6,5,65,66<回车>。

则输出结果是( A )
main()
{ char a,b,c,d; scanf("%c,%c,%d,%d",&a,&b,&c,&d);
printf("c,%c,%c,%c\n",a,b,c,d);
}
A.6,5,A,B
B.6,5,65,66
C.6,5,6,5
D.6,5,6,6
13.s1和s2已正确定义并分别指向两个字符串。

若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是(D)
A. if(s1>s2)S;
B. if(strcmp(s1,s2))S;
C. if(strcmp(s2,s1)>0)S;
D. if(strcmp(s1,s2)>0)S;
14.有以下定义和语句int a[3][2]={1,2,3,4,5,6,},*p[3]; p[0]=a[1];则*(p[0]+1)
所代表的数组元素是(C)
A. a[0][1]
B. a[1][0]
C. a[1][1]
D. a[1][2]
15.程序中对fun函数有如下说明void *fun();此说明的含义是:(C)
A. fun了数无返回值
B. fun函数的返回值可以是任意的数据类型
C. fun函数的返回值是无值型的指针类型
D.针fun指向一个函数,该函数无返回值
16.有以下程序运行后的输出结果是( C )
void fun(int *a,int i,int j)
{ int t;
if(i<J)
{ t=a;a=a[j];a[j]=t; i++; j--; fun(a,i,j); }
}
main()
{ int x[]={2,6,18},i;
fun(x,0,3);
for(i=0;i<4;i++) printf("%2d",x);
printf("\n");
}
A. 1 2 6 8
B. 8 6 2 1
C. 8 1 6 2
D.8 6 1 2
17.有以下说明和定义语句
struct student
{ int age; char num[8];};
struct student stu[3]={{20,"200401"},{21,"200402"},{10\9,"200403"}};
struct student *p=stu;
以下选项中引用结构体变量成员的表达式错误的是( D )
A. (p++)->num
B.p->num
C.(*p).num
D.stu[3].age
18.已定义ch为字符型变量,以下赋值语句中错误的是(A)
A.ch='\';
B.ch=62+3;
C.ch=NULL;
D.ch='\xaa';
19.以下选项中不能正确把cl定义成结构体变量的是(B)
A)typedef struct B)struct color cl
{ int red; { int red;
int green; int green;
int blue; int blue;
} COLOR; };
COLOR cl;
C)struct color D)struct
{ int red; { int red;
int green; int green;
int blue; int blue;
} cl; } cl;
20.有以下程序
fun(int a, int b)
{ if(a>b) return(a);
else return(b);
}
main()
{ int x=3, y=8, z=6, r;
r=fun(fun(x,y), 2*z);
printf("%d\n", r);
}
程序运行后的输出结果是(D)
A.3
B.6
C.8
D.12
21.有以下程序段
main()
{ int a=5,*b,**c;
c=&b; b=&a;
……
}
程序在执行了c=&b;b=&a;语句后,表达式:**c的值是(C)
A.变量a的地址
B.变量b中的值
C.变量a中的值
D.变量b的地址
22. 设有int x=11; 则表达式(x++ * 1/3) 的值是(A)
A. 3
B. 4
C. 11
D. 12
23. 下列程序的输出结果是(C)
A. 3
B. 3.2
C. 0
D. 3.07
main()
{ double d=3.2; int x,y;
x=1.2; y=(x+3.8)/5.0;
printf("%d \n", d*y);
}
24. 下列变量定义中合法的是(A)
A. short _a=1-.le-1;
B. double b=1+5e2.5;
C. long do=0xfdaL;
D. float 2_and=1-e-3;
25. 以下循环体的执行次数是(C)
A. 3
B. 2
C. 1
D. 0
main()
{ int i,j;
for(i=0,j=1; i<=j+1; i+=2, j--)printf("%d \n",i);
}
26. 以下叙述正确的是(D)
A. do-while语句构成的循环不能用其它语句构成的循环来代替。

B. do-while语句构成的循环只能用break语句退出。

C. 用do-while语句构成的循环,在while后的表达式为非零时结束循环。

D. 用do-while语句构成的循环,在while后的表达式为零时结束循环。

27. 下列程序执行后的输出结果是(A)
A. G
B. H
C. I
D. J
main()
{ int x='f'; printf("%c \n",'A'+(x-'a'+1)); }
28. 下列程序执行后的输出结果是(A)
A. 6
B. 7
C. 8
D. 9
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]);
}
29. 下列程序的运行结果是(B)
A. a=%2,b=%5
B. a=2,b=5
C. a=d, b=d
D. a=%d,b=%d
#include
main()
{ int a=2,c=5;
printf("a=%d,b=%d\n",a,c); }
30. 设有数组定义: char array [ ]="China"; 则数组array所占的空间为(C)
A.4个字节
B. 5个字节
C.6个字节
D. 7个字节
31. 下列程序的输出结果是(B)
A. 5
B. 6
C. 7
D. 8
struct abc
{ int a, b, c; };
main()
{ struct abc s[2]={{1,2,3},{4,5,6}}; int t;
t=s[0],a+s[1],b;
printf("%d \n",t);
}
32. 若有以下调用语句,则不正确的fun函数的首部是(C)
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)
main()
{ …int a[50],n;…fun(n, &a[9]); …}
33. 设已有定义: 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);
34. 下列程序执行后的输出结果是(A)
A. you&ne
B. you
C. me
D. err
mai()
{ char arr[2][4];
strcpy(arr,"you"); strcpy(arr[1],"me");
arr[0][3]='&';
printf("%s \n",arr);
}
35. 下列程序执行后的输出结果是(B)
A. 6
B. 8
C. 10
D. 12
#define MA(x) x*(x-1)
main()
{ int a=1,b=2; printf("%d \n",MA(1+a+b));}
36. 变量a所占内存字节数是(C)
A. 4
B. 5
C. 6
D. 8
union U
{ char st[4]; int i;long l; };
struct A
{ int c;union U u;}a;
二、填空题
1. 表达式1<0<5的值是 1 。

3. 表达式~(10>>1^~5) 的值是0 。

2. 设变量已正确定义,在程序段B中填入正确的内容,使程序段A 和程序段B 等价。

程序段A
for(k=s=0;k<=10;s+=a[k++])
if(a[k]<0) break;
程序段B
for(k=0,s=0; ; s+=a[k++])
if( a[k]<0 || k>10 ) break;
3. 下列程序的输出结果是100 。

#define T 10
#define MD 3*T
printf(“%d”,30/MD);
4. 下列程序的输出结果是k=5, s=15 。

int k,s; for(k=s=0;k<10&&s<=10;s+=k) k++;
printf(“k=%d,s=%d”,k,s);
5. 下列程序的输出结果是5,9 。

#include <stdio.h>
int f(int m)
{ static int k=2;
k++;
return k+m;
}
void main( )
{ int s;
s=f(2);
printf(“%d,%dn”,s,f(s));
}
6. 对于以下递归函数f,条用f(3)的返回值是-2。

f(int n)
{
return((n<=0)?n:f(n-1)+f(n-2));
}
7. 下列程序的输出结果是-10 。

int c[ ]={10,0,-10}; int *k=c+2; printf(“%d”,*k--);
8. 下列程序的输出结果是 2 1 。

int k=1,j=2,*p=&k,*q=p; p=&j;
printf(“%d %d”,*p,*q);
9. 下列程序的输出结果是un, g 。

#include <stdio.h>
char *f(char *str)
{ return str=”fun”; }
void main( )
{ char *str=”one”;
printf(“%s,%cn”, f(str)+1,*f(str)+1);
}
10. 下列程序的输出结果是1,3 。

#include <stdio.h>
void p(int *x,int y)
{ ++*x; y--; }
void main( )
{ int x=0,y=3;
p(&x,y);
printf(“%d,%d”x,y);
}
11. 下列程序的输出结果是 1 0 0 1 。

#include <stdio.h>
{ int j,k,a[2][2];
for(k=1;k<3;k++)
for(j=1;j<3;j++)
a[k-1][j-1]=(k/j)*(j/k);
for(k=0;k<2;k++)
for(j=0;j<2;j++)
printf(”%d”,a[k][j]);
}
12. 下面程序的功能是:计算1到10之间奇数之和及偶数之和,请填空。

#include
main()
{ int a, b, c, i;
a=c=0;
for(i=0;i<10;i+=2)
{ a+=i;
b = i + 1 ;
c+=b;
}
printf("偶数之和=%d\n",a);
printf("奇数之和=%d\n",c-11);
}
13. 下面程序的功能是:输出100以内能被3整除且个位数为6的所有整数,请填空。

#include
main()
{ int i, j;
for(i=0; i<10 ; i++)
{ j=i*10+6;
if( i % 3 != 0 ) continue;
printf("%d",j);
}
}
专升本《C语言》练习题六
一、选择题(本题共20小题,每题2分,共40分)
1.以下不合法的用户标识符是()。

A)S2_KEY B)Int C) 4s D)_char 2.设有 int x=11; 则表达式 (++x)%3 的值是()。

A)0 B)1 C)2 D)3 3.C语言源程序名的后缀是()。

A).exe B).cp C).obj
D).c
4.若在定义语句:int a,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。

A)scanf("%d",a,b,c); B)scanf("%d%d%d",a,b,c); C)scanf("%d",p); D)scanf("%d",&p);
5.C语言中运算对象必须是整型的运算符是()。

A) %= B)/ C) = D) 〈=
6.若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a数组的第10个元素是()。

A)a[0][4] B)a[0][3] C)a[1][4] D)a[1][3] 7.若要求定义具有10个int型元素的一维数组a,则以下定义语句中错误的是A)#define N 10 Int a[N] B)#define n 5 Int a[2*n]
C)int a[5+5] D)int n=10,a[n]
8.语句printf("a\bre\'hi\'y\\\bou\n");的输出结果是()。

(说明:'\b'是退格符)
A)re'hi'you B)abre'hi'y\bou
C)a\bre\'hi\'y\bou D)a\bre\'hi\'y\\\bou
9.下列程序执行后的输出结果是()。

A)A B) B C) F D) G
void main()
{ int x='f'; printf("%c \n",'A'+(x-'a'+1)); }
10.若变量已正确定义,有以下程序段
i=0;
do
{printf("%d,",i);}while(i++);
printf("%d\n",i)
其输出结果是()。

A)0,0 B)0,1 C)1,1 D)程序进入无限循环
11. 有以下程序
#include <stdio.h>
void main()
{ int i,j,m=55;
for(i=1;i<=3;i++)
for(j=3;j<=i;j++) m=m%j;
printf("%d\n",m);
}程序的运行结果是( )。

A)0 B)1 C)2 D)3 12. 已定义以下函数
fun(int *p)
{ return *p; }
该函数的返回值是()。

A)不确定的值B)形参p所指存储单元中的值
C)形参p中存放的值D)形参p的地址值
13. 执行下面的程序段后,变量k中的值为()。

A)10 B) 3 C)不定值D) 0
int k=3, s[2];
s[0]=k; k=s[1]*10;
14. 有以下函数
int aaa(char *s)
{ char *t=s;
while(*t++);
t--;
return(t-s);
}
以下关于aaa函数的功能叙述正确的是()。

A)求字符串s的长度 B)比较两个串的大小
C)将串s复制到串t D)求字符串s所占字节数15. 有以下程序
void main()
{ char s[ ]={ "aeiou"},*ps;
ps=s; printf("%c\n",(*ps)+4);
} 程序运行后的输出结果是________。

A)a B)o C)u D)e
16. 有以下程序
#include
#define F(X,Y) X*Y
main()
{ int a=3, b=4;
printf("%d\n", F(a+b, a-b));
} 程序运行后的输出结果是()。

A)12 B)7 C)-7 D)11
17. 有以下程序
main()
{ int m[][3]={1,4,7,2,5,8,3,6,9};
int i,j,k=2;
for(i=0;i<3;i++)
{ printf("%d",m[k][i]); }
}
执行后输出结果是()。

A) 2 5 8 B) 3 6 9 C) 4 5 6 D) 7 8 9
18. 以下关于typedef的叙述错误的是
A)用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名 B)用typedef为类型说明一个新名,通常可以增加程序的可读性
C)typedef只是将已存在的类型用一个新的名字来代表
D)用typedef可以增加新类型
19. 有以下程序
#include <stdio.h>
void main()
{ FILE *fp; int i;
char ch[]=”abcd”,t;
fp=fopen(“abc.dat”,”wb+”);
for(i=0;i<4;i++)
fwrite(&ch[i],1,1,fp);
fseek(fp,-2L,SEEK_END);// 说明:SEEK_END为文件尾
fread(&t,1,1,fp);
fclose(fp);
printf(“%c\n”,t);
}
程序执行后的输出结果是________。

A)c B)d C)a D)b
20.已知指针p的指向如下图所示,则执行语句 *--p;后*p的值是()。

A) 20 B)30 C) 19 D) 29
二、填空题(本题共10小题,每题1分,共10分)
ASCII码是65,小写字母a的ASCII码是97,将变量c 中大写字母转换为对应小写字母的语句是 _____ 。

2.C语言中用于结构化程序设计的三种基本结构是顺序结构、选择结构、__________ 。

3.设有数组定义: char array [ ]="Student."; 则数组 array所占的空间为________ 。

4.若输入字符串:abcde<回车>,则以下while循环体将执行______次。

while((ch=getchar())==’b’) printf(“*”);
5.若有定义:int *p[4];请说明它含义:定义了一个________。

6.表示“整数x的绝对值不大于10”的C语言表达式是 _________。

7.已知字符A的ACSII码值为65,以下语句的输出结果是_________。

char ch=’B’;printf(“%c%d\n”,ch,ch);
8.若指针s指向存储单元a[8],p指向存储单元a[0],表达式s-p的值是_________。

9.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。

st=(char*) __________ ;
10. 设 int b=2;表达式(b<<1)&5的值是__________。

三、程序阅读题(本题共6小题,每小题5分,共
30分)
________。

void main()
{
int n=0,m=1,x=0;
if (!n) x=1;
if (m) x=2;
if (x) x=3;
printf(“%d\n”,x);
}
2. 有以下程序执行后的结果是________。

void main()
{ int i;
for(i=1;i<=40;i++)
{ if(i++%5=0)
if (++i%8=0) printf("%d",i)
}
printf("\n")
}
3. 以下程序执行后的结果是________。

void main()
{ char s[]="6789";
s[1]=‘\0';
printf("%s\n",s);
}
4. 有以下程序执行后的结果是________。

void main()
{ int a=4,b=3,c=2,t=0;
if(b>a&&a<c) t=a;a=c;c=t;
printf("%d ",c);
}
5. 有以下程序执行后的结果是________。

void main()
{ char s[ ]= "abcde";
s+=2;
printf("%d\n",s[0]);
}
6. 有以下程序执行后的结果是________。

void main()
{ int a=1,b=3,c=5;
int *p1=&a,*p2=&b,*p=&c;
*p=*p1*(*p2);
printf("%d\n",c);
}
四、编程题(本题共3小题,共20分)
的和。

2.求100—200间的全部素数。

3.有一3行4列的矩阵,编程求其中最大元素的值以及所在的行号和列号。

专升本《C语言》练习题七
一、单项选择题
1. ___D___是合法的用户自定义标识符。

A、 b-b
B、float
C、<fr>
D、 _isw
2. 若变量已正确定义并赋值,表达式___B___不符合C语言语法。

A、a*b/c;
B、3.14%2
C、2, b
D、a/b/c
3. ___C__是不正确的字符常量。

A、'n'
B、'1'
C、"a"
D、'101'
4. 在 C 程序中,用___B__表示逻辑值“真”。

A、1
B、非 0 的数
C、非 1 的数
D、大于 0 的数
5. __C____把x、y定义成float类型变量,并赋同一初值3.14。

A、float x, y=3.14;
B、float x, y=2*3.14;
C、float x=3.14, y=x=3.14;
D、float x=y=3.14;
6. 若变量已正确定义,表达式___C___的值是2。

A、2&3
B、1<<1
C、a==2
D、1^3
7. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和__C____等价。

A、k=(a>b)?1:0;
B、k=a>b;
C、k=a<=b;
D、a<=b ? 0 : 1;
8. 设变量定义为“int a, b;”,执行下列语句时,输入_D____,则a和b 的值都是10。

scanf("a=%d, b=%d",&a, &b);
A、10 10
B、10, 10
C、a=10 b=10
D、a=10, b=10
9. 下列程序的输出结果是__D___。

fun(int a, int b, int c)
{ c =a*b; }
void main( )
{ int c;
fun(2,3,c);
printf(”%dn”,c);
}
A、0
B、1
C、6
D、无法确定
10. 在C程序中,若对函数类型未加说明,则函数的隐含类型为__A___。

A、int
B、double
C、void
D、char
11. 表达式 strlen(”hello”) 的值是___B____。

A、 4
B、 5
C、 6
D、 7
12. 设变量定义为“int a[4];”,则表达式__D____不符合C语言语法。

A、*a
B、a[0]
C、a
D、a++
13. 设变量定义为“int x, *p=&x;”,则&*p相当于__A___。

A、p
B、*p
C、x
D、*&x
14. 若变量已正确定义,_A___不能使指针p成为空指针。

相关文档
最新文档