C语言练习题带答案Word下载.docx
《C语言练习题带答案Word下载.docx》由会员分享,可在线阅读,更多相关《C语言练习题带答案Word下载.docx(50页珍藏版)》请在冰豆网上搜索。
D)char a[3]={‘a’,'
b'
'
c’};
18、以下能对一维数组a进行初始化的语句是:
( C )
A、 inta[5]=(0,1,2,3,4,) B、int a(5)={}
C、 int a[3]={0,1,2} D、int a{5}={10*1}
19、在C语言中对一维整型数组的正确定义为 D、
A)inta(10);
B)intn=10,a[n];
C)intn;
a[n];
D)#defineN 10
int a[N];
20、已知:
inta[10];
则对a数组元素的正确引用是( D )、
A、a[10] B、a[3、5] C、a(5) D、a[0]
21、若有以下数组讲明,则i=10;
a[a[i]]元素数值是( B)。
inta[12]={1,4,7,10,2,5,8,11,3,6,9,12};
A、10 B、9 C、6 D、5
22、若有讲明:
inta[][3]={{1,2,3},{4,5},{6,7}};
则数组a的第一维的大小为:
(B )
A、 2 B、 3 C、4 D、无确定值
5 7 D)369
23、对二维数组的正确定义是(C)
A、inta[][]={1,2,3,4,5,6};
B、inta[2][]={1,2,3,4,5,6};
C、int a[][3]={1,2,3,4,5,6};
D、inta[2,3]={1,2,3,4,5,6};
24、已知inta[3][4];
则对数组元素引用正确的是__C___
A)a[2][4] B)a[1,3] C)a[2][0] D)a
(2)
(1)
25、C语言中函数返回值的类型是由 A 决定的、
A)函数定义时指定的类型 B)return语句中的表达式类型
C)调用该函数时的实参的数据类型D)形参的数据类型
26、在C语言中,函数的数据类型是指( A)
A 函数返回值的数据类型 B、函数形参的数据类型
C调用该函数时的实参的数据类型 D、任意指定的数据类型
27、 在函数调用时,以下讲法正确的是(B)
A、函数调用后必须带回返回值
B、实际参数与形式参数能够同名
C、函数间的数据传递不能够使用全局变量
D、主调函数与被调函数总是在同一个文件里
28、 在C语言中,表示静态存储类不的关键字是:
( C)
A)auto B) registerﻩC) static D)extern
29、未指定存储类不的变量,其隐含的存储类不为(A )、
A)auto B)staticC)externD)register
30、 若有以下讲明语句:
struct student
{ int num;
charname[ ];
floatscore;
}stu;
则下面的叙述不正确的是:
( D )
A、struct是结构体类型的关键字
B、structstudent是用户定义的结构体类型
C、num, score都是结构体成员名
D、 stu是用户定义的结构体类型名
31、若有以下讲明语句:
struct date
{intyear;
intmonth;
intday;
}brithday;
则下面的叙述不正确的是__C___、
A) struct是声明结构体类型时用的关键字
B) structdate 是用户定义的结构体类型名
C)brithday是用户定义的结构体类型名
D)year,day都是结构体成员名
32、以下对结构变量stul中成员age的非法引用是 B
struct student
{intage;
intnum;
}stu1,*p;
p=&stu1;
A) stu1、age B)student、ageC)p—>
ageD)(*p)、age
33、设有如下定义:
strucksk
{ inta;
float b;
}data;
int*p;
若要使P指向data中的a域,正确的赋值语句是C
A)p=&
a;
B)p=data、a;
ﻩC)p=&data、a;
ﻩD)*p=data、a;
34、设有以下讲明语句:
typedefstruct stu
{ int a;
floatb;
} stutype;
则下面叙述中错误的是(D )、
A、struct是结构类型的关键字
B、structstu是用户定义的结构类型
C、a与b都是结构成员名
D、stutype是用户定义的结构体变量名
35、 语句int*p;
讲明了 C 、
A)p是指向一维数组的指针
B)p是指向函数的指针,该函数返回一int型数据
C)p是指向int型数据的指针
D)p是函数名,该函数返回一指向int型数据的指针
36、下列不正确的定义是( A )、
A.int*p=&
i,i;
B、int*p,i;
C、inti,*p=&i;
D、int i,*p;
37、 若有讲明:
intn=2,*p=&n,*q=p,则以下非法的赋值语句是:
(D )
A)p=q B)*p=*q C)n=*q D)p=n
38、有语句:
inta[10],;
则B 是对指针变量p的正确定义与初始化、
A)intp=*a;
B)int *p=a;
C)int p=&
D)int*p=&a;
39、若有讲明语句“int a[5],*p=a;
”,则对数组元素的正确引用是(C )。
A、a[p] B、p[a] C、*(p+2) D、p+2
40、有如下程序
inta[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
41、在C语言中,以D 作为字符串结束标志
A)’\n’ B)' '
C) '
0'
D)’\0'
42、下列数据中属于“字符串常量”的是(A)。
A、“a” B、{ABC} C、‘abc\0'
D、‘a’
43、已知charx[]="hello”, y[]={'
h'
e’,'a’,'b’,’e’};
则关于两个数组长度的正确描述是B、
A)相同 B)x大于y C)x小于y D)以上答案都不对
44、 下面各函数中能实现打开文件功能的是 A
A)fopen B)fgetcﻩ C)fputcﻩﻩD)fclose
45、下列语句中,把变量fp讲明为一个文件型指针的是(A)。
A) FILE*fp;
B) FILEfp;
C)file *fp;
D)filefp;
46、以读写方式打开一个已有的文本文件file1,同时FILE*fp,下面fopen函数正确的调用方式是(B)。
A、fp=fopen(“file1”,“r”)
B、fp=fopen(“file1",“r+”)
C、fp=fopen(“file1”,“rb")
D、fp=fopen(“file1”,“w”)
二、读程序
基本输入输出及流程控制
1、
#include 〈stdio、h〉
main()
{ int a=1,b=3,c=5;
if (c==a+b)
printf(”yes\n");
else
printf(”no\n”);
}
运行结果为:
no
2、
#include 〈stdio、h〉
main()
{inta=12,b=—34,c=56,min=0;
min=a;
if(min〉b)
min=b;
if(min>
c)
min=c;
printf(”min=%d”,min);
min=-34
3、
#include〈stdio、h〉
main()
{intx=2,y= -1,z=5;
if(x<y)
if(y〈0)
z=0;
else
z=z+1;
printf(“%d\n”,z);
}
5
4、
#include<
stdio、h>
main()
{ floata,b,c,t;
a=3;
b=7;
c=1;
if(a>
b)
{t=a;
a=b;
b=t;
if(a〉c)
{t=a;
a=c;
c=t;
if(b>
c)
{t=b;
b=c;
c=t;
printf("
%5、2f,%5、2f,%5、2f”,a,b,c);
}
运行结果为:
1、00, 2、00, 7、00
5、
#include <
stdio、h >
main( )
{floatc=3、0,d=4、0;
if( c>d) c=5、0;
else
if(c==d) c=6、0;
else c=7、0;
printf( “%、1f\n”,c);
7、0
6、
#include〈stdio、h〉
main()
{ﻩint m;
ﻩscanf(”%d", &
m);
ﻩ
ﻩif(m>=0)ﻩﻩﻩﻩ
ﻩ {ﻩif (m%2 == 0)ﻩprintf("
%d isapositiveeven\n”,m);
ﻩelseﻩﻩprintf("
%disa positiveodd\n",m);
ﻩ}
ﻩelse
{ﻩif(m % 2== 0) printf(”%dis anegativeeven\n”, m);
ﻩelseﻩ printf(”%d isa negativeodd\n”,m);
若键入-9,则运行结果为:
-9 isanegative odd
7、
#include〈stdio、h>
{ intnum=0;
while(num〈=2){ num++;
printf(”%d\n"
num);
1
2
3
8、
#include〈stdio、h>
main()
{int sum=10,n=1;
while(n<
3){sum=sum-n;
n++;
}
printf(“%d,%d"
n,sum);
}
3,7
9、
#include<stdio、h〉
main()
{ intnum,c;
scanf(”%d"
&
num);
do{c=num%10;
printf(”%d”,c);
}while((num/=10)>0);
printf("
\n”);
从键盘输入23,则运行结果为:
32
10
#include〈stdio、h>
{ints=0,a=5,n;
scanf(”%d"
&n);
do{s+=1;
a=a-2;
}while(a!
=n);
printf(”%d,%d\n",s,a);
}
若输入的值1,运行结果为:
2,1
11、
#include"
stdio、h”
main()
{char c;
c=getchar();
while(c!
=’?
'
) {putchar(c);
c=getchar();
}
假如从键盘输入abcde?
fgh(回车)
abcde
12、
#include〈stdio、h>
main()
{charc;
while((c=getchar())!
='
$'
)
{ if(‘A'
〈=c&&c〈=‘Z’) putchar(c);
elseif(‘a’〈=c&
&c<
=‘z’) putchar(c—32);
}
}
当输入为ab*AB%cd#CD$时,运行结果为:
ABABCDCD
13、
#include〈stdio、h〉
{ int x, y=0;
for(x=1;
x<=10;
x++)
{ if(y>=10)
break;
y=y+x;
}
printf(“%d %d”,y,x);
10 5
14、
#include<
stdio、h>
main()
{charch;
ch=getchar();
switch(ch)
{case‘A’:
printf(“%c”,’A’);
case ‘B’ :
printf(“%c"
B’);
break;
default:
printf(“%s\n”,"
other”);
}}
当从键盘输入字母A时,运行结果为:
AB
15、
#include <stdio、h〉
main()
{ inta=1,b=0;
scanf(“%d"
a);
switch(a)
{case1:
b=1;
break;
case2:
b=2;
break;
default :
b=10;
printf(”%d"
b);
若键盘输入5,运行结果为:
10
16、
#include 〈stdio、h>
main()_
{chargrade=’C’;
switch(grade)
{ case‘A'
:
printf(“90—100\n”);
case ‘B’:
printf(“80-90\n”);
case‘C'
printf(“70-80\n"
);
case‘D’:
printf(“60—70\n”);
break;
case‘E'
printf(“〈60\n”);
default :
printf(“error!
\n");
}
}
70-80
60-70
17、
#include〈stdio、h>
main()
{inty=9;
for(;
y〉0;
y- —)
if(y%3==0)
{printf(%d"
- —y);
continue;
852
18、
#include<
stdio、h〉
{int i,sum=0;
i=1;
do{sum=sum+i;
i++;
}while(i<
=10);
printf(“%d"
sum);
55
19、
#include<
stdio、h>
#defineN 4
{ int i;
intx1=1,x2=2;
printf(”\n”);
for(i=1;
i〈=N;
i++)
{printf(”%4d%4d",x1,x2);
if(i%2==0)
printf(”\n”);
x1=x1+x2;
x2=x2+x1;
12 35
8 13 21 34
20
#include〈stdio、h>
{ intx,y;
for(x=30,y=0;
x〉=10,y〈10;
x——,y++)
x/=2,y+=2;
printf(“x=%d,y=%d\n",x,y);
x=0,y=12
21、
#include〈stdio、h>
#defineN 4
main( )
{inti,j;
for(i=1;
i<=N;
i++)
{ for(j=1;
j<
i;
j++)
printf("
"
printf("
*”);
printf("
\n"
}}
*
*
*
数组
#include〈stdio、h〉
{inti,a[10];
for(i=9;
i>
=0;
i-—)
a[i]=10-i;
printf(“%d%d%d”,a[2],a[5],a[8]);
852
2、
#include<
stdio、h>
{inti,a[6];
for (i=0;
i<6;
i++)
a[i]=i;
for(i=5;
i>
=0 ;
i-—)
printf("
%3d"
a[i]);
5 4 3 21 0
3、
#include〈stdio、h〉
{ int i,k,a[10],p[3];
k=5;
for(i=0;
i<10;
i++)
a[i]=i;
for(i=0;
i〈3;
p[i]=a[i*(i+1)];
for(i=0;
i<
3;
k+=p[i]*2;
printf(”%d\n",k);
21
4、
#include〈stdio、h〉
int m[3][3]={{1},{2},{3}};
int n[3][3]={1,2 ,3};
main()
{ printf(“%d,”, m[1][0]+n[0][0]);
printf(“%d\n”,m[0][1]+n[1][0]);
3,0
#include〈stdio、h>
{int i;
intx[3][3]={1,2,3,4,5,6,7,8,9};
for(i=1;
i<
3;
i++)
printf("%d ",x[i][3-i]);
}
68
6、
#include〈stdio、h〉
main()
{intn[3][3], i,j;
for(i=0;
i〈3;
i++ )
{for(j=0;
j〈3;
j++ )
{n[i][j]=i+j;
printf(“%d ",n[i][j]);
printf(“\n"
01 2
12 3
234
7、
#include 〈stdio、h>
{
chardiamond[][5]={{‘_'
_’,’*'
},{‘_‘,'
*’,’_’,’*'
},
{‘*’,'
_’,’_‘,’_‘,’*’},{‘_’,'
*’,'
_’,’*’},{‘_','
_'
’*’}};
inti,j;
i<5;
i+