求C语言的笔试题和编程题!!~ ~ ~谢谢~ ~!!
《程序设计基础-C》试卷
一、多项选择题
六五四三八+0。c语言程序可以注释,注释部分必须用符号_ _ _ _括起来。
a,' {and}' b,'[and]' c,'/* '和' */'d,' */'和'/* '
2.在下列运算符中,优先级最低的是_ _ _ _。
甲、乙、= C 、+ D 、=
3.如果变量定义正确,表达式(j=3,j++)的值就是_ _ _ _ _。
a、3 B、4 C、5 D、0
4.已知字符‘a’的ASCII码是97,下面语句的输出是_ _ _ _ _。
printf ("%d,%c ",' b ',' b '+1);
a,98,b B,非法陈述c,98,99 D,98,c
5.表达式strcmp ("box "," boss ")的值是一个_ _ _ _ _ _。
a,正数b,负数c,0 D,不定数
6.数组定义为int a[3][2]={1,2,3,4,5,6},数组元素_ _ _ _的值为6。
a、a[3][2] B、a[2][1] C、a[1][2] D、a[2][3]
7.调用数学函数时,_ _ _ _ _ _ _应该包含在#include命令行中。
a 、" stdio.h" B 、" string.h" C 、" math.h" D 、" ctype.h "
8.判断I和J中至少有一个非零值的表达式是_ _ _ _ _。
a、我!= 0 & amp& ampj!=0 B、i*j!= 0°C 、!(i==0 || j==0) D、i & amp& ampj
9.如果A是基本整型变量,C是单精度实型变量,则输入语句_ _ _ _ _是错误的。
a、scanf("%d,%f ",& amp一,& ampc);scanf("d=%d,c=%f ",& amp一,& ampc);
c、scanf("%d%f ",& amp一,& ampc);d、scanf("%d%f ",a,c);
10.如果变量定义正确,指针p指向变量X,(*p)++相当于_ _ _ _ _。
a、p++ B、x++ C 、*(p++) D 、& ampx++
11.如果p1和p2都是整数指针,那么p1已经指向了变量X,让p2也指向X _ _ _ _是正确的。
a、p2 = p 1;b、p2 = * * p 1;p2 = & ampp 1;d、p2 = * p 1;
12.下列程序段的输出是_ _ _ _ _。
int c[]={1,3,5 };
int * k = c+1;
printf("%d ",* ++ k);
a、3 B、5 C、4 D、6
13.不正确的赋值或初始值是_ _ _ _ _。
a、char str[]= " string ";
b、char str[7]={'s ',' t ',' r ',' I ',' n ',' g ' };
c、char str[10];str = " string
d、char str[7]={'s ',' t ',' r ',' I ',' n ',' \ 0 ' };
14.对于以下结构定义,++ p->;str中的++加到_ _ _ _。
结构{
int len
char * str
} * p;
指针str上的a,B,指针P上的C,str所指的D或以上。
15.对于下面的解释,语法和语义上正确的赋值是_ _ _ _ _。
int c,*s,a[]={1,3,5 };
a、c = * s;b、s[0]= a[0];c、s = & ampa[1];d、c = a;
第二,填空
1.写出下列程序段的输出结果。
浮点x1,x2;
x 1 = 3/2;
x2 = x 1/2;
printf("%d,%.1f ",(int)x1,x2);
2.表达式(7
3.写出下列程序段的输出结果。
#定义一个10
#定义B(A & lt;A+2)-2
printf("%d ",B * 2);
4.写一个表达式,判断字符变量C是英文字母。
5.写出下列程序段的输出结果。
int k,x;
for (k=0,x = 0;k & lt= 9 & amp& ampx!=10;k++)
x+= 2;
printf ("%d,%d ",k,x);
6.写出下列程序段的输出结果。
printf("%d,%d ",NULL,EOF);
7.对于下面的递归函数f,调用f (3)的返回值是_ _ _ _ _。
f(整数n)
{ return((n & gt;0) ?2 * f(n-1)+f(n-2):-1);}
8.写出下列程序段的输出结果。
char str[]= " hello \ t world \ n ";
printf("%d,%c\n ",sizeof(str),*(str+10));
9.输入12345#后,写出下面程序的输出结果。
void main()
{ char c;
for(c = getchar();getchar()!='#';c=getchar())
putchar(c);
}
10.执行程序find–nxouldtext . txt时,* +++argv[1]的值是_ _ _ _ _ _。
三,程序阅读题
1.如果输入3 1 23,下面程序的输出是_ _ _ _ _ _。
#包含“stdio.h”
void main()
{ int i,j,n,a[10];
scanf("%d ",& ampn);
for(I = 0;我& ltn;i++)
scanf("%d ",& ampa[I]);
for(I = 0;我& ltn;i++)
for(j = 0;j & ltn;j++)
printf("%d ",a[(I+j)% n]);
}
2.如果输入89 76 24 25 9 8 11 1635 4,下面这个程序的输出是_ _ _ _ _ _。
#包含“stdio.h”
#定义编号10
主()
{
int x[N],y1[N],y2[N];
int i,j,n1,n2,t,p;
n 1 = N2 = 0;
for(I = 0;我& ltn;i++){
scanf("%d ",& ampx[I]);
if(x[I]% 2 = = 0)y 1[n 1++]= x[I];
else y2[n2++]= x[I];
}
for(I = 1;我& ltn 1;i++)
for(j = 0;j & ltn 1-1;j++)
if(y 1[j]& gt;y1[j+1]){
t = y 1[j];y 1[j]= y 1[j+1];y 1[j+1]= t;
}
for(I = 0;我& ltN2-1;i++){
p = I;
for(j = I+1;j & ltN2;j++)
if(y2[p]& lt;y2[j])p = j;
如果(p!=i){
t = y2[I];y2[I]= y2[p];y2[p]= t;
}
}
for(I = 0;我& ltn 1;i++) printf("%d,",y 1[I]);
for(I = 0;我& ltN2;i++) printf("%d ",y2[I]);
}
3.下列程序的输出是_ _ _ _ _ _。
# include & ltstdio.h & gt
int z;
void p(int *x,int y)
{ ++ * x;
y-;
z = * x+y+z;
printf("%d,%d,%d# ",*x,y,z);
}
void main()
{ int x=1,y=5,z = 9;
p(& amp;x,y);
printf("%d,%d,%d# ",x,y,z);
}
4.如果-6+15 * 3/5 =,下列程序的输出是_ _ _ _ _ _。
# include & ltstdio.h & gt
void main()
{
int m=0,sum = 0;
char c,oldc = '+';
做{
c = getchar();
if(c & lt;= ' 9 ' & amp& ampc & gt= ' 0 ')m = 10 * m+c-' 0 ';
否则{
if(oldc = = '+')sum+= m;
else sum-= m;
m = 0;
oldc = c;
printf("%d ",sum);
}
} while(c!='=');
}
第四,程序填空
下面这个程序的功能是创建一个单向链表。
# include & ltstdio.h & gt
# include & ltalloc.h & gt
结构链接{
字符名称[10];
int标记;
struct link * next
};
void insert(char *,int);
struct link * head = NULL
主()
{
字符名称[10];
int标记;
struct link * t;
while ( 1 ) {
scanf("%s %d ",名称& amp马克);
if ( strcmp(name," # " = = 0)break;
______(1)_______;
}
for(t =头;______(2)_______)
printf(" & lt;% s & gt:%d\n ",t-& gt;名称,t-& gt;马克);
}
void insert(char * name,int mark)
{
struct link * p;
p = _ _ _ _ _ _(3)_ _ _ _ _ _ _ _;
strcpy(p-& gt;姓名、名称);
p->;马克=马克;
______(4)_______;
如果(头!= NULL)_ _ _ _ _ _ _(5)_ _ _ _ _ _ _ _;
head = p;
}
回答
2000~2001学年《C程序设计基础》参考答案
一、多项选择题
C D A D A B C B D B A B C A C
第二,填空
1 1, 0.5
2 1
3 -3
4c & gt;= ' a ' & amp& ampc & lt= ' z ' | | c & gt= ' A ' & amp& ampc & lt='Z '
5 5, 10
6 0, -1
7 -17
8 13,d
9 13
10 'n '
三,程序阅读题
1 1, 2, 3, 2, 3, 1, 3, 1, 2,
2 4, 8, 16, 24, 76, 89, 35, 25, 11, 9,
3 2, 4, 6#2, 5, 9#
4 0, -6, 9, 6, 1,
第四,程序填空
(1)插入(名称,标记)
(2) t!= NULLt = t-& gt;然后
(3)(struct link *)malloc(sizeof(struct link))
(4) p->next = NULL
(5) p->下一个=头
程序
在程序中填空,不要改动与输入输出有关的句子。
输入一个正整数重复(0
给定平面上任意两点的坐标(x1,y1)和(x2,y2),求这两点之间的距离(保留2位小数)。
需要定义并调用函数dist(x1,y1,x2,y2)来计算两点之间的距离。函数参数x1、y1、x2、y2的类型都是double,函数类型也是double。
输入和输出的例子:括号内为描述。
投入
1(重复=1)
10 10(x 1 = 10,y1=10)
200 100 (x2=200,y2=100)
输出
距离= 210.24
# include & ltstdio.h & gt
# include & ltmath.h & gt
double dist(double x1,double y1,double x2,double y2);
int main(void)
{
int重复,ri;
双倍距离,x1,y1,x2,y2;
scanf("%d ",& amp复读);
for(ri = 1;ri & lt=复读;ri++){
scanf("%lf%lf%lf%lf ",& ampx1。y1。x2,& ampy2);
/* - */
printf("Distance = %.2f\n ",距离);
}
}
/* - */
按程序填空。
求1~100中所有能被6整除的整数之和。
# include & ltstdio.h & gt
int main(void)
{
int i,sum = 0;
/* - */
printf("%d ",sum);
}
在程序中填空,不要改动与输入输出有关的句子。
输入一个正整数重复(0
读入1个实数x和正整数n (n
输入和输出的例子:括号内为描述。
投入
2(重复=2)
1.5 ^ 2(x = 1.5,n=2)
2 ^ 7(x = 2,n=7)
输出
2.25
128.00
# include & ltstdio.h & gt
int main(void)
{
int i,n;
int重复,ri;
double mypow,x;
scanf("%d ",& amp复读);
for(ri = 1;ri & lt=复读;ri++){
scanf("%lf%d ",& ampx & amp;n);
/* - */
printf("%.2f\n ",mypow);
}
}
.....编程问题很多~ ~有需要可以发给你~