求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);

}

}

.....编程问题很多~ ~有需要可以发给你~