2008-C试卷

  • 格式:doc
  • 大小:58.50 KB
  • 文档页数:10
A.该函数中不可以用return语句
B.该函数中可以用return语句,但必须是最后一个语句
C.该函数中可以用return语句,但return后面不能跟任何表达式
D.该函数可以返回一个任意类型的值,也可以没有返回值
5.执行以下程序后,
char a[]="ABC\\XYZ\007\xFF";
int n;
{
a[row][col]=x;
x++;
done = 0;
do
{
switch(d)
{
case 1: col--;
if(col<left) {col=left; d=2; continue;}
else {done=ቤተ መጻሕፍቲ ባይዱ; break;}
case 2: row--;
if(row<up) {row=up; d=3; continue;}
#include <stdio.h>
#define N 4
void main()
{
static int a[N+1][N+1]={1};
int i, j;
for(i=1; i<=N; i++)
for(j=1; j<=i; j++)
a[i][j] = a[i-1][j-1] + a[i-1][j];
for(i=1; i<=N; i++)
case '-': return x-calc();
case '*': return x*calc();
case '/': return x/calc();
}
}
void main()
{
printf("%d", calc());
}
5.以下程序的输出结果是___________________。
注意:本题输出结果中的空格请用标出,一个空格用一个代替。
3+4*5-3/2=
则程序的输出结果是___________________。
#include <stdio.h>
int calc(void)
{int x;char p;
scanf("%d %c", &x, &p);
if(p == '=')
return x;
switch(p)
{
case '+': return x+calc();
9.假定有如下定义,
struct st {
char name[10];
int score;
} a[3], *p=a;
请问哪个用法是正确的?
A. p->name="Tom";
B. *[0]='B';
C. (*p)->name[0]='C';
D. *(*p).name='D';
10.执行以下语句后,
#include <stdio.h>
#define N5
void main()
{
static int a[N][N], i, j;
int left=0, right=N-1, up=0, down=N-1;
int x=1, row=right, col=down, d=1, done;
while(x<=N*N)
{
int i;
for(i=0; i<3; i++)
p[strlen(p)] = 'A';
return (AP)p + 1;
}
void main()
{
char a[]="FROG\ØSEAL\ØLION\ØLAMB";
puts( defy(a)[1]+2 );
}
2.以下程序的输出结果是_________________。
int x=3, y=2, z=1, max;
if(x>=y && x>=z)
max=x;
if(y>=x && y>=z)
max=y;
else
max=z;
9.执行以下代码后,将输出________________。
char a[][5]={"ABCD", "1234", "BOMB"};
printf("%s,%c", *a+1, *a[2]+1);
n = sizeof(a);
变量n的值等于多少?
A. 10B. 14C. 9D. 17
6.用scanf()输入一个double类型的变量的值,则输入格式要用
A. "%f"
B. "%lf"
C. "%f"或"%lf"
D. "%ld"
7.假定有以下变量定义语句,
float * p,q;
请问哪个说法是正确的?
10.若定义函数时省略该函数的返回值类型,则它的实际返回值类型是____。
三、程序阅读题(每题5分,共30分)
1.以下程序的输出结果是_________________。
#include <stdio.h>
#include <string.h>
typedef char (*AP)[5];
AP defy(char *p)
注意:答题内容必须写在答题卷上,写在本试题卷上无效。
一、单选题(每题1分,共10分)
1.假定以下表达式中所有变量均已定义为int类型并已赋值,请问其中哪个表达式没有语法错误?
A. x = 3.14%2;
B. y = 2a+b;
C. m = a<b<c;
D. n = (-x)++;
2.表达式'A'+'B'的类型为:
row=down; d=1; continue;}
else {done=1; break;}
}/* end of switch */
} while(!done);
}/* end of while(x<=N*N) */
for(i=0; i<N; i++)
{
for(j=0; j<N; j++)
printf("%-3d", a[i][j]);
#include <stdio.h>
void main()
{
int a[5], i, j, n;
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &a[i]);
for(i=0; i<=n-2; i++)
{
for((1); j<=n-1; j++)
{
if(a[i] == a[j])
int a=-10, b=0, c=20, d;
d = a > b ? -3.14 : b > c ? 2.68 : 4.99;
4.执行以下代码后,变量x的值=__________。
int a=3, b=4, c=3, x;
x = a != (b = c);
5.执行以下代码后,将输出_______________。
7.执行以下代码后,将输出_______________。
long int a[5]={10, 20, 30, 40, 50};
long int *p = a+1;
long int *q = &a[3];
printf("q-p=%d", q-p);
8.执行以下代码后,变量max的值=_________。
#include <stdio.h>
void main()
{
int i, j, sum=0;
for(i=1; i<=3; i++)
{
if(i==2)
continue;
for(j=1; j<=6; j++)
{
sum += j;
if(sum >= 6)
break;
}
sum += i*10;
}
printf("sum=%d", sum);
A. p和q的类型均为(float *)
B. p的类型为(float *),q的类型为float
C. p的类型为float,q的类型为(float *)
D.此变量定义语句有语法错误
8.执行以下程序后,
char a = '0';
printf("%X", a);
将输出什么结果?
A. 30B. 0x30C. 0X30D. 0
#include <stdio.h>
void main()
{
char a[9];
int n;
unsignedlong int x;
scanf("%lu", &x);
n = hex(x, a);
(5);
puts(a);
}
int hex((6))