C++

一、选择题:(本题共10小题,每小题2分,共20分)

https://pan.quark.cn/s/125645d9d895

  1. 以下关于C程序错误的是( C )。

A.语句最后必须是分号

B.基本组成单位是函数

C.注释可以用\\开始

D.一条语句可以分成多行来写

2.C语言中,使用strcmp函数需要包含的头文件是(  A  )。

A.string.h

得分

 

B.math.h

C.stdlib.h

D.stdio.h

3.下面程序输出结果为(  B  )。

int a=1,b=0;

printf("%d",b=a+b);

printf("%d",a=2*b);

A.1,0

B.1,2

C.3,2

D.0,0

4.表达式10!=9的值是(  B  )。

A.0

B.1

C.8

D.非0

5.表达式的值为3的是(  D  )。

A.2+3/2

B.17-14%10

C.13/3-2

D.(3+6)/(13-9)

6.下列可用作C语言字符串常量的是(  C  )。

A.X

B.$ABC

C."Horse"

D.¥abe

7.执行代码int a=205,b=206:printf("%d",(a,b));输出结果为(  B  )。

A.205

B.206

C.205,206

D.206,206

8.以下程序段的功能是什么?(  A  )。

int temp,x,y;temp=x,x=y,y=temp;

A.交换x和y的值

B.交换x和temp的值

C.交换x和z的值

D.x和y从大到小排序

9.执行语句int a=1;while(a<4) printf("%d",a++);的输出结果为(  D  )。

A.1

B.12

C.1234

D.123

10.C语言结构体类型变量在程序执行期间(  A  )。

A.所有成员一直驻留在内存中

B.只有一个成员驻留在内存中

C.部分成员驻留在内存中

D.没有成员驻留在内存中

 

二、判断题:(本题共5小题,每小题2分,共10分) 

 

11.可以用结构体变量.成员名来引用结构体变量中成员的值。( √   )          

12.引用数组元素时,下标必须是整型常量。( ×   )

13.一个函数内的复合语句中定义的变量,只在函数内部有效。(  ×  )

14.在不同函数中可以使用相同名称的变量。( √   )

15.while循环只能用break语句退出。( ×   )

 

 

 

 

 

 

 

 

 

 

 

 

 

得分

 

 

  • 填空题:(本题共2小题,每小题5分,共10分)

 

16.补全以下代码,使得函数能求出两个整数的和,并通过形参将结果返回。

void add(int x,int y,  int *z )

{z=x+y;}

17.若有char s1[5]="abed",s2[]="xyz";则strlen(strcpy(s1,s2))的值为__3__。

 

得分

 

 

四、简答题:(本题共2小题,每小题5分,共10分)    

 

18.请说明以下程序段的功能,以及最后i的值是多少?

int x,avg=0,i;

for(i=0;i<10:i++)

{scanf("%d",&x);avg+=x;}

avg/=10;

printf("%d",avg);

 

 

答:

通过 for 循环实现输入 10 个整数,累加后求平均值并输出,

循环结束后 i 的值变为 10。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

19.请说明以下程序段的功能,以及最后输出结果是多少?

#include  <stdio.h>

void f(int *p,int *q);int main( )

{int m=1,n=2,*r=&m;f(r,&n);

printf("%d,%d",m,n);return 0;}

void f(int*p,int *q)

{p=p+1;*q=*q+1;}

 

 

答:功能是在函数 f 中,

将指针 p 指向的地址向后移动一个单位(这里对程序逻辑有一定影响,因为 p 是函数形参,

这种操作不会改变 main 函数中 r 的指向),并将指针 q 指向的变量的值加 1。

最后输出结果为 1,3。

 

 

 

 

 

得分

 

 

五、计算题:(本题共2小题,每小题10分,共20分)    

 

20.分析下列程序,回答下列问题。若输入的值为75,则:

#include  <stdio.h>

void main( )

{

int score,n=0;

scanf("%d",&score);switch(score/60)

case 1:

printf("%d",score):

n++;

break;

case 0:

printf("%d",score);

}

(1)程序结束时,n的值是多少?

(2)输出结果是多少?

 

 

答:输入 75,score / 60 的值为 1,执行 case 1 分支,

输出 75 并将 n 加 1,然后 break 跳出 switch 语句,

所以(1) n 为:1;(2)输出结果: 75

 

 

 

 

 

21.分析下列程序,回答下列问题。

#include<stdio.h>

int main()

int i,a,b,c;for(i=100;i<=999;i++)

a=i%10;

b=(i%100)/10;c=i/100;if(i==a*a*a+b*b*b+c*c*c)

if(i==153)

printf("i=%d,a=%d,b=%d",i,e,b);

retum 0;

若i=153,则:

(1)变量a的值是多少?

(2)变量b的值是多少?

 

 

 

答:当 i = 153 时,a = i % 10 = 3,b = (i % 100) / 10 = 5,c = i / 100 = 1,

满足条件 i == a * a * a + b * b * b + c * c * c,

所以(1):变量 a 的值为 3;(2):变量 b 的值为 5。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

得分

 

 

六、应用题:(本题共2小题,每小题15分,共30分)

 

22.请编写程序,实现以下功能:把201~209自然数按次序(按行存储)赋值给二维数组a[3][3],并在屏幕上输出。

 

#include <stdio.h>int main() {    int a[3][3];    int i, j, num = 201;    for (i = 0; i < 3; i++) {        for (j = 0; j < 3; j++) {            a[i][j] = num++;            printf("%d ", a[i][j]);        }        printf("\n");    }    return 0;}

 

23.某专业共有30名学生,现需要统计某门课程成绩,要求从键盘上输人这30名学生该门课程的成绩。并且输出最高分。编写程序,实现上述功能。

#include <stdio.h>

int main() {

    int scores[30];

    int i, max;

    // 输入成绩

    for (i = 0; i < 30; i++) {

        scanf("%d", &scores[i]);

    }

    // 初始化最大值为第一个成绩

    max = scores[0];

    // 找出最大值

    for (i = 1; i < 30; i++) {

        if (scores[i] > max) {

            max = scores[i];

        }

    }

    printf("最高分:%d\n", max);

    return 0;

}

posted @ 2024-12-27 13:32  CYHMS  阅读(69)  评论(0)    收藏  举报