C++——stack和queue

阅读 31

2024-10-08

         1.以下程序输出结果是()

int main() {
int a = 1, b = 2, c = 2, t;
while (a < b < c) {
t = a;
a = b;
b = t;
c--;
}
printf("%d %d %d", a, b, c);
}

2.以下程序输出结果是()

int main() {
char a[] = "morming", t;
int i, j = 0;
for (i = 1; i < 7; i++)
if (a[j] < a[i])
j = i;
t = a[j];
a[j] = a[7];
a[7] = a[j];
puts(a);
}

3.以下程序输出结果是()

int main() {
char ch[2][5] = { "693","825" }, * p[2];
int i, j, s = 0;
for (i = 0; i < 2; i++) p[i] = ch[i];
for (i = 0; i < 2; i++)
for (j = 0; p[i][j] >='0 ' && p[i][j] <= '9'; j += 2)
s = 10 * s + p[i][j] - '0';
printf("%d", s);

}

4.以下程序输出结果是()

#define P 3
#define S(a) P*a*a
int main() {
int ar;
ar = S(3 + 5);
printf("%d", ar);
}

5.以下程序输出结果是()

#define N 3
#define Y(n) ((N+1)*n)

int main() {
int z;
z = 2 * (N + Y(5 + 1));
printf("%d", z);
}

6.以下程序输出结果是()

int main() {
    int a = 2, b = -1, c = 2;
    if (a < b)
    if (b < 0) c = 0;
    else c++;
    printf("%d", c);

}

7.

#define SQR(X) X*X
main() { int a=16, k=2, m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n”,a); }

8.执行以下语句,输出结果是 C 。

int x=2;

printf(“%d”, ((x=4*5, x*5), x+20));

A) 120 B) 100 C) 40 D) 20

以下程序的输出结果是( )。 

int main() {
char*s="12134211"
 int v[4]=0000),k,i; 
for(k=0;s[k];k++) 
switch(s[k]) 
case1’:i=0
 case2’:i=1
 case3’:i=2
 case4’:i=3
 v[i]++: 
for(k=0;k<4;k++)printf("%d",v[k]);
}

 A.4 2 1 1B.0 0 0 8C.4 6 7 8D.8 8 8 8

9.

int w = 3;
int main() {
    int w = 10;
    printf("%d\n", fun(5) * w);
}
fun(int k)
{
    if (k == 0)
        return w;
    return(fun(k - 1) * k);
}
int main() {
    int x = 023;
    printf("%d", --x);
}

10.

int a[3][3] = { {2},{4},{6} };
int main() {
    int i, * p =
    for (i = 0; i < 2; i++) {
        if (i == 0)
            a[i][i + 1] = *p + 1;
        else
            ++p;
        printf("%d", *p);
    }
}
fun(int x)
{
    static int a = 3;
    a += x;
    return(a);
}
int main() {
    int k = 2, m = 1, n;
    n = fun(k);
    n = fun(m);
    printf("%d", n);

}

11.

f(int a)
{
    int b = 0; static c = 3;
    a = c++, b++;
    return(a);
}
int main() {
    int a = 2, i, k;
    for (i = 0; i < 2; i++)
        k = f(a++);
    printf("%d", k);
}

12.

fun(s, n1, n2) 
    int* s, n1, n2;
{
    int i, j, t;
    i = n1; j = n2;
    while (i<j)
    {
        t = *(s + i);
        *(s + i) = *(s + j);
        *(s + j) = t;
    }
}
int main() {
    int a[10] = { 1,2,3,4,5,6,7,8,9,0 }, i, * p = a;
    fun(p, 0, 3);
    fun(p, 4, 9);
    fun(p, 0, 9);
    for (i = 0; i < 10; i++)
    printf("%d", *(a + i));
    printf("\n");
}

13.

int main() {
int a[] = { 1,2,3,4 }, i;
int x = 0;
for (i = 0; i < 4; i++) {
sub(a, x);
printf("%d", x);
printf("\n");
}


}
sub(int* s, int y)
{
static int t = 3;
y = s[t]; t--;

}

14.

#include <stdlib.h>
#include <stddef.h>
void fun(float* p1, float* p2, float* s)
{
s = (float*)malloc(1, sizeof(float));
*s = *p1 + *(p2++);
}
int main() {
float a[2] = { 1.1,2.2 }, b[2] = { 10.0,20.0 }, * s = a;
fun(a, b, s);
printf("%f", *s);
}

15.假设a和b为int型变量,则执行以下语句后,b的值为 __D____。

a=1;b=10; do {b-=a;a++; }while(b--<0); A.9B.-2C.-1D.8 

16.当运行以下程序时,从键盘输入:AhaMA  Aha

int main() {
    char s[80]; // 定义字符数组 s
    char c = 'a'; // 小写字母
    int i = 0; // 索引初始化

    // 输入字符串
    scanf("%s", s);

    // 遍历字符串
    while (s[i] != '\0') {
        if (s[i] == c) {
            s[i] = s[i] - 32; // 将小写字母转换为大写
        }
        else if (s[i] == c - 32) {
            s[i] = s[i] + 32; // 将大写字母转换为小写
        }
        i++; // 增加索引
    }

    // 输出结果
    puts(s);
    return 0;
}

17 以下程序输出什么?

int main() {
    struct p
    {
        char name[9];
        int age;
    };

    struct p class[10] = { "John",17,"Paul",19,"Marry",18,"Adam",16 };
    printf("%c", class[2].name[0]);

}

18.假定下列程序的可执行文件名为prg . exe,则在该程序所在的子目录下输入命令行: prg hello good<回车〉后,程序的输出结果是()

19.下列程序输出结果是 15

#define MIN(x,y) (x)<(y)?(x):(y)
int main() {

int i, j, k;
i = 10; j = 15;
k = 10 * MIN(i, j);
printf("%d", k);
}

20.以下语句定义正确的是 D

int main() {
int a[1][4] = { 1,2,3,4,5 };
float x[2][] = { {1},{2},{3} };
long b[2][3] = { {1},{1,2},{1,2,3} };
double y[][3] = { 0 };
}

21.

22.下列程序段不是死循环的是________。

A.  int s=36; while(s); --s;

B.  int i=100; while(1) {i=i%100+1; if(i>100) break;}

C.  int k=0; do{++k;}while(k>=0);

D.  for( ; ; );

23.A正确

 24.以下程序输出的结果是:

int main() {
    char* p1, * p2, str[50] = "xyz";
    p1 = "abcd";
    p2 = "ABCD";
    strcpy(str + 2, strcat(p1 + 2, p2 + 1));
    printf("%s", str);
}

25.以下输出结果是: 6

struct abc
{
int a, b, c;
};
int main() {
struct abc s[2] = { {1,2,3},{4,5,6,} }; int t;
t = s[0].a + s[1].b;
printf("%d", t);
}

26.

void fun(int* a, int* b)
{
int* k;
k = a; a = b; b = k;
}
int main() {
int a = 3, b = 6, * x = &a, * y =
fun(x, y);
printf("%d %d", a, b);
}

27.下面程序的输出结果为( )。

struct st {int x;int *y;}*p; int dt[4]={10,20,30,40);

struct st aa[4]={50,&dt[0],60,&dt[1],70,&dt[2],80,

 int main( ) {

p=aa;

printf(“%d\n”,++p->x);

printf(“%d|n”,(++p)->x);

printf(“%d\n”,++(*p->y));

}

A.  10 20 20

B.  50 60 21

C.  51 60 21

D.  60 70 31

28.以下程序输出的结果为:

main()
{int a[6],i;
for(i=1;i<6;i++)
{ a[i]=9*(i-2+4*(i>3))%5;
printf("%2d",a[i]);
}
}


A)-4 0 4 0 4 B)-4 0 4 0 3 C)-4 0 4 4 3 D)-4 0 4 4 0

29.以下程序输出的结果为:

union myun {
struct {
int x, y, z;
} u;
int k;
} a;

int main() {
a.u.x = 4;
a.u.y = 5;
a.u.z = 6;
a.k = 0;

printf("%d", a.u.x);
}

30.以下程序输出什么

#include <stdio.h>
void main()
{
union
{
unsigned char c;
unsigned int i[4];
}z;
z.i[0]=0x39;
z.i[1]=0x36;
printf("%c\n",z.c);
}

31.正确的答案是()

若有代数式3ae/bc,则不正确的c语言表达式是()

A.a/b/c*e*3 B.3*a*e/b/c C.3*a*e/b*c D.a*e/c/b*3  

32.已有如下定义和输入语句,若要求a1,a2,c1,c2的值分别为10,20,A和B,当从第一列开始输入数据时,正确的输入方式是( D )。(代表空格,↙代表Enter)

int a1,a2; char c1,c2;

scanf("%d%d",&a1,&a2);

scanf("%c%c",&c1,&c2);

A.  1020AB↙

B.  1020↙

C.  1020AB↙

D.  10 20AB↙

33.下面四个选项中,均是不合法的整型常量的选项是(    )。
   A.--0f1   -oxffff  0011
   B.-0xcdf 017 12,456
   C.-018  999  5e2
   D.-0x48e  -068  03f

34.以下程序输出的结果为 D

main()

{ int x,i;

for(i=1;i<=100;i++)

{ x=i;

if(++x%2==0)

    if(++x%3==0)

        if(++x%7==0)

            printf("%d ",x);

} }

A)39   81        B)42   84        C)26   68                D)28   70             

35.程序输出的结果是 k=8 b=-2

#include <stdio.h>

int main() {
int i, b, k = 0;
for (i = 1; i <= 5; i++) {
b = i % 2; // b = 0 (偶数) 或 1 (奇数)
while (b-- >= 0) { // 当 b 为 0 或 1 时,循环体执行
k++; // 计数器加 1
}
}
printf("%d, %d", k, b); // 打印 k 和 b 的值
return 0;
}

36.输入3.6 2.4回车,则结果为(1.6)

main()
{
float x,y,z;
scanf("%f%f",
z=x/y;
while(1)
{
if (fabs(z)>1.0)
{
x=y; y=z; z=x/y;
}
else break;
}
printf("%f\n",y);
}

37.以下程序输出的结果是()

int main() {
    int a, b;
    for (a = 1, b = 1; a <= 100; a++) {
        if (b >= 20) break;  // 如果 b >= 20,退出循环
        if (b % 3 == 1) {    // 如果 b 除以 3 的余数为 1
           b += 3;          // 将 b 增加 3
        continue;       // 跳过当前迭代,继续下一次循环
        }
        b -= 5;             // 否则,b 减去 5
    }

    printf("%d\n", a);      // 打印 a 的值
    return 0;
}

若二维数组a有m列,则计算任一元素a[i][j]在数组中位置的公式为:[ i*m+j-1 ]。(假设a[0][0]位于数组的第一个位置上。)

若二维数组a有m列 则a[i][j]前的元素个数为 i*m+j'

38.下面程序运行结果是( )

#include <stdio.h>

int main() {
char ch[7] = "12ab56";
int i, s = 0;
for (i = 0; ch[i] >= '0' && ch[i] <= '9'; i += 2) {
s = 10 * s + (ch[i] - '0');
}
printf("%d\n", s);
return 0;
}

A.1

B.1256

C.12ab56

D.1

   2

   5

   6

39.以下程序输出的结果是什么()

#include "stdio.h"

int main() {
char a1[5], a2[5], a3[5], a4[5];
scanf("%s%s", a1, a2);
gets(a3);
gets(a4);
puts(a1);
puts(a2);
puts(a3);
puts(a4);
}

40.以下程序输出的结果是()

执行时输入:1234567

int main()

{

int x,y;

scanf("%2d%*2d%ld",

printf("%d",x+y);

}

41.以下程序输出的结果是

#include <stdio.h>

void fun(int k) {
if (k > 0) fun(k - 1);
printf("%d", k);
}

int main() {
int w = 5;
fun(w);
printf("\n");
}

A.5 4 3 2 1

B.0 1 2 3 4 5

C.1 2 3 4 5

D.5 4 3 2 1 0

42.输出结果是

long fun(int n) {
long s;
if (n == 1 || n == 2)
s = 2;
else
s = n + fun(n - 1);
return s;
}
int main() {
printf("%ld", fun(4));
}

43下列程序输出结果是()

#include <stdio.h>

void add() {
int x = 0;
static int y = 0;
printf("%d %d\n", x, y);
x++;
y = y + 2;
}

int main() {
int i;
for (i = 0; i < 2; i++)
add();
return 0;
}

44.下列程序输出结果是()

#include <stdio.h>

long fib(int n) {
if (n > 2)
return (fib(n - 1) + fib(n - 2)); // 应该是加号
else
return 2;
}

int main() {
printf("%ld\n", fib(3)); // 使用 %ld 来打印 long 类型
return 0;
}

45.要求函数的功能是交换x 和y 中的值,且通过正确调用返回交换结果.能正确执行能的函数是 。

46.分析下面函数,以下说法正确的是__D____。

swap(int *p1,int *p2) { int *p; *p=*p1; *p1=*p2; *p2=*p; }

A. 交换 *p1 和 *p2 的值 B. 正确,但无法改变 *p1 和 *p2 的值 C. 交换 *p1 和 *p2 的地址 D. 可能造成系统故障,因为使用了空指针

47.若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是______。 A.*p=&a;scanf("%ld",p); B.p=&a;scanf("%ld",p); C.scanf("%ld",p=&a); D.scanf("%ld",&a);

48.若已定义:int a[9],*p=a;并在以后的语句中未改变p的值,不能表示a[1]地址的表达式是 _______。 A.p+1  B.a+1  C.a++D.++p

49.设P1和P2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确执行的语句是( )

A. P2=k; B. P1=P2; C. k=*P1+*P2; D. k=*P1*(*P2);

50.程序输出数组中的最大值,由s指针指向该元素,则划线处条件应该是___B____。
 

int main(void) { int a[ 10] ={67291105843,}, *p,*S;

for(p=a,s=a; p-a<10; p )

if(___)s=p;

printf( "The max:%d",* S);

return 0;

A. p>s B. *p>*S C. a[p]>a[ s] D. p-a>p-s

51.若有说明int i,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。

A.i=*p

B.*p=*&j

C.i=&j

D.i=**p;

52.以下函数的功能是()

sss(char*s,char*t)

{while((*s)&&(*t)=*s ));

return(*s-*t);

}

A.求字符串的长度

B.比较两个字符串的大小

C.将字符串s复制到字符串t中

D.将字符串s接续到字符串t中

53.函数的功能是______。

int fun1(char *x)
{
char *y=x;
while(*y++);
return(y-x-1);
}


A.  求字符串的长度
B.  比较两个字符串的大小
C.  将字符串x复制到字符串y
D.  将字符串x连接到字符串y后面

54.输出的结果是(10)

int fun(int a, int b) {
    int c;
    c = a + b;
    return c;
}
int main() {
    int x = 5, z;
    z = fun(++x, --x);
    printf("%d", z);
}

55.

int main() {
    int i, a[10] = { 1,3,5,7,9,2,4,6,8,0 }, temp;
    temp = a[9];
    for (i = 9; i; i--)
        a[i] = a[i - 1];
    a[0] = temp;
    printf("a:");
    for (i = 0; i < 10; i++)
        printf("%d", a[i]);
}

精彩评论(0)

0 0 举报