九色国产,午夜在线视频,新黄色网址,九九色综合,天天做夜夜做久久做狠狠,天天躁夜夜躁狠狠躁2021a,久久不卡一区二区三区

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
2023年計(jì)算機(jī)C語言專升本測(cè)試卷(共八卷)及答案

2023年計(jì)算機(jī)C語言專升本測(cè)試卷(一)

一、單項(xiàng)選擇題(共20題,每小題2 分,共 40分)

1、若已有定義語句:inta,b, c; 且變量已正確賦初值,則以下選項(xiàng)中正確的賦值語句是________。

    A、a = (b = c) + 8;

    B、(a = b) = c = 9;

    C、a = (b == c) = 'A';

    D、a + b = c + 1;

2、下列四組選項(xiàng)中,均不是c語言關(guān)鍵字的選項(xiàng)是________。

    A、define  IF  type

    B、getc  char   printf

    C、include  scanf  case

    D、while  go  pow

3、下列敘述中正確的是________。

    A、程序執(zhí)行的效率與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)密切相關(guān)

    B、程序執(zhí)行的效率只取決于程序的控制結(jié)構(gòu)

    C、程序執(zhí)行的效率只取決于所處理的數(shù)據(jù)量

    D、以上三種說法都不對(duì)

4、有以下程序
main()
{
    int i, j;
    for(i=1;i<4;i++)
    {
        for(j=i;j<4;j++) printf("%d*%d=%d ",i,j,i*j);
        printf("\n");
    }
}
程序運(yùn)行后的輸出結(jié)果是______。

    A、1*1=1  1*2=2  1*3=3
2*1=2  2*2=4  2*3=6
3*1=3  3*2=6  3*3=9

    B、1*1=1 1*2=2 1*3=3
2*2=4 2*3=6
3*3=9

    C、1*1=1

    D、1*1=1  1*2=2                 
2*1=2  2*2=4    
3*3=9

5、下面關(guān)于編譯預(yù)處理命令,正確的是________。

    A、#define char CHAR

    B、#Define E 0.0000034

    C、##define FALSE 0

    D、#define DIM 26

6、整型變量x=1,y=3,經(jīng)下列計(jì)算后,x的值不等于6的是________。

    A、x=(x=1+2,x*2)

    B、x=y>2?6:5

    C、x=9-(--y)-(y--)

    D、x=y*4/2

7、關(guān)于數(shù)組的定義與初始化,下列哪一項(xiàng)是錯(cuò)誤的( )

    A、int arr[5] = {1,2,3,4,5};

    B、int arr[] = {1,2,3,4,5};

    C、int arr[5] = { 1,2,3};

    D、int arr[5] = {1,2,3,4,5,6};

8、下面正確的字符常量是 ?

    A、“c”

    B、'\\’’

    C、'’

    D、'K’

9、字符串"xyz"在內(nèi)存占用的字節(jié)數(shù)是______。

    A、3

    B、4

    C、6

    D、8

10、定義如下變量和數(shù)組: int i, x[3][3]={1,2,3,4,5,6,7,8,9
};則下面語句for(i=0;i<3;i++) printf("%d",x[i][2-i]);的輸出結(jié)果是________。

    A、1 5 9

    B、1 4 7

    C、3 5 7

    D、3 6 9

11、當(dāng)全局變量與局部變量重名時(shí),那么在調(diào)用時(shí)( )

    A、局部變量會(huì)被屏蔽

    B、全局變量會(huì)被屏蔽

    C、都不會(huì)調(diào)用,系統(tǒng)會(huì)報(bào)錯(cuò)

    D、會(huì)調(diào)用兩次,先調(diào)用局部變量,再調(diào)用全局變量

12、c 語言共用體類型變量在程序運(yùn)行期間 。

    A、所有成員一直駐留在內(nèi)存中

    B、只有一個(gè)成員駐留在內(nèi)存中

    C、部分成員駐留在在內(nèi)存中

    D、沒有成員駐留在內(nèi)存中

13、下列選項(xiàng)中,能夠滿足"若字符串s1等于字符串s2,則執(zhí)行st"要求的是________。

    A、if(strcmp(s2,s1)==0)ST;

    B、if(sl==s2)ST;

    C、if(strcpy(s l ,s2)==1)ST;

    D、if(sl-s2==0)ST;

14、在16位pc機(jī)上使用c語言,若有如下定義 
struct data {
  int i;
  char ch;
  double f;
} b;
則結(jié)構(gòu)變量b占用內(nèi)存的字節(jié)數(shù)是________。

    A、1

    B、2

    C、7

    D、11

15、有以下程序:
main()
{
    int x=0,y=5,z=3;
    while(z-->0&&++x<5)y=y-l;
    printf("%d,%d,%d\n",x,y,z);
}
程序執(zhí)行后的輸出結(jié)果是________。

    A、3,2,0

    B、3。2. 1

    C、4,3,-1

    D、5,2.-5

16、已知:int a,b; 下列switch語句中,( )是正確的。

    A、switch (a)
  case a: a++;break;
  case b: b++;break;

    B、switch(a+b)
  case 1:a+b;break;
  case 1:a-b

    C、switch(a*a)
  case 1,2:++a;
  case 3, 4:++b:

    D、switch(a/10+b)
  case 5:a/5:break:
  default:a+b;

17、static struct
{
    int a1;
    float a2;
    char a3;
}
a[10]={1,3.5,'a'};
說明數(shù)組a是地址常量,它有10個(gè)結(jié)構(gòu)體型的下標(biāo)變量,采用靜態(tài)存 儲(chǔ)方式,其中被初始化的下標(biāo)變量是________。

    A、a[1]

    B、a[-1]

    C、a[0]

    D、a[10]

18、有以下程序
#include <stdio.h>
void fun(int *s,int nl,int n2)
{
    int i,j,t;
    i=nl;
    j=n2;
    while(i<j)
    {
        t=s[i];
        s[i]=s[j];
        s[j]=t;
        i++;
        j--;
    }
}
main()
{
    int a[10]={1,2,3,4,5,6,7,8,9,0}, k;
    fun(a,0,3);
    fun(a,4,9);
    fun(a,0,9);
    for(k=0;k<10;k++)printf("%d",a[k]);
    printf("\n");
}
程序運(yùn)行的結(jié)果是________。

    A、0987654321

    B、4321098765

    C、5678901234

    D、0987651234

19、在下面的字符數(shù)組定義中,哪一個(gè)有語法錯(cuò)誤 。

    A、char a[20]=“abcdefg”;

    B、char a[]=“x+y=55.”;

    C、chara[15];

    D、char a[10]='5’;

20、下面賦值表達(dá)式不正確的是__________________.
struct student
{
    long num;
    char name[20];
} st1, st2={101, "tom"}, *p=&st1;

    A、st1 = st2

    B、p->name = st2.name

    C、p->num = st2.num

    D、*p=st2

二、填空題(共10題,每小題2 分,共 20分)

1、利用條件運(yùn)算符的嵌套來完成此題:學(xué)習(xí)成績>=90分的同學(xué)用a表示,60-89分之間的用b表示,60分以下的用c表示。  

2、已知a=5,則表達(dá)式"a+=a-=3"的值是_____________。  

3、若i為整型變量,且i%2==0的值為1,則變量i為________數(shù)?  

4、C語言中的標(biāo)識(shí)符只能由三種字符組成,他們是 字母,數(shù)字,下劃線___。  

5、下列程序段的運(yùn)行結(jié)果是________。
main()
{
    int m=1,t=1;
    for( ; ; )
    {
        m=m+t ;
        t++;
        if(m>9) break ;
    }
    printf("%d\n",m);
}  

6、下面程序段的運(yùn)行結(jié)果是________。for(a=1,i=-1;-1<=i<1;i++)
{
    a++;
    printf("%d,",a);
}
printf("%2d",i);  

7、c語言本身不提供輸入輸出語句,輸入和輸出操作是由________來實(shí)現(xiàn)的?  

8、C語言中函數(shù)返回值的類型是由______決定的。  

9、已知"float x=0.5; int y=8;",則算術(shù)表達(dá)式"(int)(x+y/5)"的值是________。  

10、以下程序的運(yùn)行結(jié)果是_____________。
main( )
{
    int k, s ,a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
    s=0;
    for( k=0;k<4;k ++)s=s+ a[k][k];
    printf("%d,",s);
}    

三、編程題(共3題,共 40分)

1、編寫程序:查找n在數(shù)組a中最后一次出現(xiàn)的位置
例如:如果a數(shù)組中的元素為:1,5,2,5,6,8,7,4,3,0,當(dāng)n=5時(shí),程序的輸出結(jié)果為:5 is no.3 當(dāng)n=10時(shí),程序的輸出結(jié)果應(yīng)為:10 not found (本題10分) 

2、輸入n的值,計(jì)算并輸出1*1+2*2+3*3+4*4+5*5+...+n*n的值。要求編寫函數(shù)f求平方。 (本題14分) 

3、題?描述
有10個(gè)學(xué)?,每個(gè)學(xué)?的數(shù)據(jù)包括學(xué)號(hào)、姓名、3門課程的成績。讀?這10個(gè)學(xué)?的數(shù)據(jù),要求輸出3門課程的總平均成績,以及個(gè)?平均分最?的學(xué)?的數(shù)據(jù)(包括學(xué)號(hào)、姓名、3門課程成績、平均分?jǐn)?shù))。
輸?
共有10?,每?包含了?個(gè)學(xué)?的學(xué)號(hào)(整數(shù))、名字(長度不超過19的?空格字符串)和3門課程的成績(0?100之間的整數(shù)),?空格隔開。
輸出
第??包含了3個(gè)實(shí)數(shù),分別表?3門課程的總平均成績,保留2位?數(shù),每個(gè)數(shù)之后輸出?個(gè)空格。
第??輸出個(gè)?平均分最?的學(xué)?的數(shù)據(jù),與輸?數(shù)據(jù)格式相同。如果有多位個(gè)?平均分最?的學(xué)?,輸出按照輸?順序第?個(gè)最?分的學(xué)?數(shù)據(jù)。
請(qǐng)注意?尾輸出換?。
樣例輸?

樣例輸出
 85.60 87.90 90.40
 105 EEE 92 93 94 (本題16分)   


參考答案

一、單項(xiàng)選擇題

1、A

2、A

3、A

【解析】程序執(zhí)行的實(shí)際計(jì)算工作量不僅與程序的控制結(jié)構(gòu)有一定的關(guān)系,還與處理的數(shù)據(jù)量有關(guān),與數(shù)據(jù)的存儲(chǔ)結(jié)構(gòu)密切相關(guān)。所以,選項(xiàng)A正確,選項(xiàng)B和C錯(cuò)誤。所以,本題的正確答案為A。

4、B

【解析】本題考查的是循環(huán)嵌套。在一個(gè)循環(huán)體內(nèi)又完整地包含了另一個(gè)循環(huán),稱為循環(huán)嵌套。外循環(huán)i的值分別為1、2、3,當(dāng)i=1,內(nèi)循環(huán)j=1時(shí),輸出1*1=1;當(dāng)內(nèi)循環(huán)j=2時(shí),輸出1*2=2;當(dāng)內(nèi)循環(huán)j=3時(shí),輸出1*3=3;當(dāng)i=2,內(nèi)循環(huán)j=2時(shí),輸出2*2=4;當(dāng)內(nèi)循環(huán)j=3時(shí),輸出2*3=6;當(dāng)i=3,內(nèi)循環(huán)j=3時(shí),輸出3*3=9。

5、D

【解析】無參宏定義的一般格式:# define 標(biāo)識(shí)符語言符號(hào)字符串,其中:“define”為宏定義命令;“標(biāo)識(shí)符為所定義的宏名,通常用大寫字母表示,以便于與變量區(qū)別;“語言符號(hào)字符串”可以是常數(shù)、表達(dá)式、格式串(格式串是用雙引號(hào)括起來的字符串)等,選項(xiàng) A  B  C 錯(cuò)誤,選項(xiàng) D 正確;本題答案為 D。

6、C

7、D

【解析】選項(xiàng)4初始化值大于數(shù)組的大小。

8、D

9、B

【解析】字符串中的每個(gè)字符占1個(gè)字節(jié),但C程序在存儲(chǔ)字符串時(shí),要在最后一個(gè)有效字符后面接上1個(gè)字符串結(jié)束的標(biāo)記符'\0'。這樣,存儲(chǔ)字符串常量”XyZ”需要4個(gè)字節(jié)。所以解答是B。

10、C

11、B

【解析】當(dāng)局部變量與全局變量重名時(shí),全局變量會(huì)被屏蔽。

12、B

13、A

14、D

【解析】結(jié)構(gòu)體變量所占用內(nèi)存的字節(jié)數(shù)是其所有成員所占用內(nèi)存字節(jié)數(shù)之和。本題中整型變量i所占用的內(nèi)存是2字節(jié),字符型變量ch所占用的內(nèi)存是1字節(jié),雙精度型變量f所占用的內(nèi)存是8字節(jié),三者相加即可。

15、B

16、D

17、C

18、C

19、D

【解析】[考點(diǎn)分析] 考查聲明數(shù)組的語法格式。
選項(xiàng)D的定義右語法錯(cuò)誤。賦值號(hào)右邊的字符應(yīng)該是用雙引號(hào)括起來。

20、B

二、填空題

1、x>=90?’a’:x>=60?:’b’:’c’;
。

2、4

3、偶

4

5、11

6、-1

7、['函數(shù)']

8、函數(shù)類型

9、1

10、34#34,#34,

三、編程題

1、#include <stdio.h>
main( )
{
    int a[10]={1,5,2,5,6,8,7,4,3,0};
    int i,k,n,f=0;
    scanf("%d",&n);
    for(i=0;i<10;i++)
    if(a[i]==n)
    {
        f=1;
        k=i;
    }
    if(f) printf("%d is no. %d\n", n,k);
    else printf(" %d not found !\n",n);
}

2、#include
void main()
{  
    int    f(int x);
    int n,sum;
    printf("
    請(qǐng)輸n值:");
    scanf("%d",&n);
    sum=f(n);
    printf("%d\n",sum);
}
int f(int x)
{  
    int j,z=0;
    for(j=1;j<=x;j++)
    z=z+j*j;
    return z;
}

3、#include<stdio.h>
#include<string.h>
struct people {
    int num,a,b,c;
    char name[10];
};

int input(struct people stu[]){
    for(int i=0;i<10;i++)
        scanf("%d %s %d %d %d",&stu[i].num,stu[i].name,&stu[i].a,&stu[i].b,&stu[i].c);
}

int print(struct people stu[]) {
    double x=0,y=0,z=0;
    for(int i=0;i<10;i++){
    x=x+stu[i].a*1.0;
    y=y+stu[i].b*1.0;
    z=z+stu[i].c*1.0;
}

for(int i=0;i<10;i++){
    if((stu[i].a+stu[i].b+stu[i].c)>=(stu[i+1].a+stu[i+1].b+stu[i+1].c)){
        stu[i+1].num=stu[i].num;
        strcpy(stu[i+1].name,stu[i].name);
        stu[i+1].a=stu[i].a;
        stu[i+1].b=stu[i].b;
        stu[i+1].c=stu[i].c;
    }
}
printf("%.2f %.2f %.2f\n",x/10.0,y/10.0,z/10.0);
printf("%d %s %d %d %d\n",stu[9].num,stu[9].name,stu[9].a,stu[9].b,stu[9].c); }
int main(){
struct people stu[10];
input(stu);
print(stu);
return 0;
}


 2023年計(jì)算機(jī)C語言專升本測(cè)試卷(二)

一、單項(xiàng)選擇題(共20題,每小題2 分,共 40分)

1、有以下程序
main( )
{
    int i,s=0;
    for(i=1;i<10;i+=2) s+=i+1;
    printf("%d\n",s);
}
程序執(zhí)行后的輸出結(jié)果是________。

    A、自然數(shù)1~9的累加和

    B、自然數(shù)1~10的累加和

    C、自然數(shù)1~9中的奇數(shù)之和

    D、自然數(shù)1~10中的偶數(shù)之和

2、若有說明語句:int a; float b; ,以下輸入語句正確的是________?

    A、scanf("%f%f",&a,&b);

    B、scanf("%f%d",&a,&b);

    C、scanf("%d,%f",&a,&b);

    D、scanf("%6.2f%6.2f",&a,&b);

3、switch語句不能用于下列哪種數(shù)據(jù)類型 ( )

    A、double

    B、byte

    C、short

    D、char

4、下列敘述中,正確的是________。

    A、while語句構(gòu)成的循環(huán)不能用其他語句構(gòu)成的循環(huán)來代替

    B、do-while語句構(gòu)成的循環(huán)只能用break語句退出

    C、用while語句構(gòu)成的循環(huán),只有在while后的表達(dá)式為非0時(shí)才執(zhí)行循環(huán)

    D、do-while語句構(gòu)成的循環(huán),只有在while后的表達(dá)式為0時(shí)才結(jié)束循環(huán)

5、定義如下變量和數(shù)組: int k,a[3][3]={1,2,3,4,5,6,7,8,9};
則下面語句的輸出結(jié)果是________。for(k=0;k<3;k++) printf("%d ",a[k][2-k]);

    A、3 5 7

    B、3 6 9

    C、1 5 9

    D、1 4 7

6、表示關(guān)系1<=x<=100的c語言表達(dá)式為________。

    A、x>=1 & x<=100

    B、x>=1 and x<=100

    C、1<=x<=100

    D、x>=1 && x<=100

7、與實(shí)際參數(shù)為實(shí)型數(shù)組名相對(duì)應(yīng)的形式參數(shù)不可以定義為________。

    A、float  a[];

    B、float *a;

    C、float a;

    D、float (*a)[3];

8、算法要有確定的含義,不能出現(xiàn)二義性指的是算法的哪個(gè)特性?

    A、有窮性

    B、確定性

    C、可行性

    D、輸入

9、下面不正確的字符串常量是________。

    A、'abc'

    B、"12'12"

    C、"0"

    D、"  "

10、數(shù)組a[10]的下標(biāo)從( )開始。

    A、1

    B、0

    C、10

    D、不確定

11、調(diào)用函數(shù)時(shí),當(dāng)實(shí)參和形參都是簡單變量時(shí),它們之間數(shù)據(jù)傳遞的過程是 __________.

    A、實(shí)參將其地址傳遞給形參,并釋放原先占用的存儲(chǔ)單元

    B、實(shí)參將其地址傳遞給形參,調(diào)用結(jié)束時(shí)形參再將其地址回傳給實(shí)參

    C、實(shí)參將其值傳遞給形參,調(diào)用結(jié)束時(shí)形參再將其值回傳給實(shí)參

    D、實(shí)參將其值傳遞給形參,調(diào)用結(jié)束時(shí)形參并不將其值回傳給實(shí)參

12、以下條件表達(dá)式中能完全等價(jià)于條件表達(dá)式 x的是 _________.

    A、(x==0)

    B、(x!=0)

    C、(x==1)

    D、(x!=1)

13、設(shè)變量定義為 int a[2]={1,3}
, *p=&a[0]+1;
,則*p的值是________。

    A、2

    B、3

    C、4

    D、&a[0]+1

14、以下關(guān)于邏輯運(yùn)算符兩側(cè)運(yùn)算對(duì)象的敘述中正確的是________。

    A、只能是整數(shù)0或1

    B、只能是整數(shù)0或非0整數(shù)

    C、可以是結(jié)構(gòu)體類型的數(shù)據(jù)

    D、可以是任意合法的表達(dá)式

15、若運(yùn)行時(shí)給變量x輸入12,則以下程序的運(yùn)行結(jié)果是
main()
{
    int x,y;
    scanf("%d",&x);
    y=x>12 ? x+10 : x-12;
    printf("%d\n",y);
   
}

    A、0

    B、22

    C、12

    D、10

16、設(shè)有以下程序段: int k=0;
while(k=1) k--;
則以下敘述中正確的是________。

    A、while 循環(huán)執(zhí)行一次

    B、該循環(huán)是無限循環(huán)

    C、循環(huán)體語句一次也不執(zhí)行

    D、該循環(huán)有語法錯(cuò)誤

17、下列選項(xiàng)中屬于c語言構(gòu)造類型的是________。

    A、指針類型

    B、空類型

    C、枚舉類型

    D、數(shù)組類型

18、有以下程序:
main()
{
    int a=1,b=3,c=5,*p;
    int*p1=&a,*p2=&b,*p3=&c;
    *p=*p1*(*p2);
}
執(zhí)行后的輸出結(jié)果是________。

    A、1

    B、2

    C、3

    D、4

19、以下能正確定義數(shù)組并正確賦初值的選項(xiàng)是______。

    A、int N=5,a[N][N];

    B、int b[1][2]={{1},{2}};

    C、int c[2][]={{1,2},{3,4}};

    D、int d[3][2]={{1,2},{3,4}};

20、struct ex
{
    int x ;
    float y;
    char z ;
}
example;
則下面的敘述中不正確的是________。

    A、struct結(jié)構(gòu)體類型的關(guān)鍵字

    B、example是結(jié)構(gòu)體類型名

    C、x,y,z都是結(jié)構(gòu)體成員名

    D、struct ex是結(jié)構(gòu)體類型

二、填空題(共10題,每小題2 分,共 20分)

1、設(shè)int a=12,則表達(dá)式a/=a+a 運(yùn)算后,a的值是______。  

2、在c語言中,用轉(zhuǎn)義字符 \' 表示______________。答題提示:雙引號(hào)/單引號(hào)/反斜線/橫向跳格/回車換行  

3、在c語言中,正確的標(biāo)識(shí)符是由________ 組成的,且由 ________ 開頭的。  

4、在scanf函數(shù)中,用符號(hào)______表示變量的地址。  

5、程序的結(jié)果是:
#include<stdio.h>
void main()
{
    int i,j,x=0;
    for(i=0;i<2;i++)
    {
        x++;
        for(j=0;j<=3;j++)
        {
            if(j%2) continue;
            x++;
        }
        x++;
    }
    printf("x=%d",x);
}  

6、以下程序的功能是計(jì)算:s=1+12+123+1234+12345。請(qǐng)?zhí)羁铡?br>main()
{
    int t=0,s=0,i;
    for( i=1; i<=5; i++)
    {
        t=i+ ________ ;
        s=s+t;
    }
    printf("s=%d\n",s);
}  

7、在c語言中,將字符串中大寫字母轉(zhuǎn)換成小寫字母的函數(shù)是_____________。  

8、c語言約定用____________作為字符串的結(jié)束標(biāo)志。  

9、程序結(jié)果是________
#include<stdio.h>
void swap(int *,int);
void main( )
{
    int a=3,b=5;
    swap(&a,b);
    printf("a=%d,b=%d",a,b);
}
void swap(int *x,int y)
{
    int temp ;
    temp=*x ;
    *x=y ;
    y=temp ;
}  

10、下列給定程序中函數(shù)fun()的功能是:用遞歸算法計(jì)算斐波拉契數(shù)列中第n項(xiàng)的值。從第1項(xiàng)起,斐波拉契數(shù)列為:l,1,2,3,5,8,13,21,… 例如,若給n輸入7,則該項(xiàng)的斐波拉契數(shù)值為13。 請(qǐng)改正程序中的錯(cuò)誤,使它能得出正確結(jié)果。 注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)! 試題程序:
long fun(int g) (
switch(g);
{
    case 0:
      return 0;
    case 1:case 2: return 1;
}
return(fun(g-1)+fun(g-2)); )
void main()
{
    long fib;
    int n;
    printf("input n:");
    scanf("%d",&n);
    printf("n=%d\n",n);
    fib=fun(n);
    printf("fib=%d\nkn",fib);
}    

三、編程題(共3題,共 40分)

1、一個(gè)皮球從100米高度自由落下,每次落地后反彈回原高度的一半,再落下,再反彈。求當(dāng)它第10次落地時(shí),共經(jīng)過了多少米,第10次反彈多高? (本題10分) 

2、已知銀行定期存款利率為r=2.25%,輸入存款本金x、存款年數(shù)n,輸出本利之和y=x(1+r)(1+r)...(1+r),共n個(gè)(1+r)。 (本題14分) 

3、題?描述
完成?個(gè)對(duì)候選?得票的統(tǒng)計(jì)程序。假設(shè)有3個(gè)候選?,名字分別為Li,Zhang和Fun。使?結(jié)構(gòu)體存儲(chǔ)每?個(gè)候選?的名字和得票數(shù)。記錄每?張選票的得票?名,輸出每個(gè)候選?最終的得票數(shù)。結(jié)構(gòu)體可以定義成如下的格式:
struct person {
char name[20];
int count;
}leader[3] = {“Li”, 0, “Zhang”, 0, “Fun”, 0};
輸?
第??有?個(gè)整數(shù)n,表?以下有n張選票信息將會(huì)輸?。保證n不?于100。
以后的n?中,每??包含?個(gè)?名,為選票的得票?。保證每?個(gè)?名都是Li,Zhang和Fun中的某?個(gè)。
輸出
有三?,分別為Li,Zhang和Fun每?的得票數(shù)。格式為?先輸出?名,其后輸出?個(gè)冒號(hào),最后輸出候選?的得票數(shù)。
請(qǐng)注意?尾輸出換?。
樣例輸?
10
Li
Li
Fun
Zhang
Zhang
Fun
Li
Fun
Zhang
Li
樣例輸出
Li:4
Zhang:3
Fun:3 (本題16分)   


參考答案

一、單項(xiàng)選擇題

1、D

2、C

3、A

【解析】swish語句中表達(dá)式expression只能返回這幾種類型的值:int、byte、short和char。如果比較的數(shù)據(jù)類型是double型,則不能使用 switch結(jié)構(gòu)。

4、C

【解析】本題考核對(duì)do-while語句、while語句基本語法的掌握。選項(xiàng)A中,while語句構(gòu)成的循環(huán)體可由其他語句構(gòu)成的循環(huán)體代替,所以選項(xiàng)A不正確。選項(xiàng)B中, do-while語句構(gòu)成的循環(huán),當(dāng)while的條件表達(dá)式的值為0時(shí),也可結(jié)束循環(huán),所以選項(xiàng)B也不正確。選項(xiàng)C是正確的。選項(xiàng)D可參照選項(xiàng)B,當(dāng)使用break語句時(shí),也可退出循環(huán)。故選項(xiàng)D也不正確。

5、A

6、D

7、C

8、B

9、A

10、B

11、D

12、B

13、B

14、D

【解析】本題考查的是邏輯運(yùn)算符。C語言中,邏輯運(yùn)算符的兩個(gè)運(yùn)算分量可以是任意合法的表達(dá)式。故本題應(yīng)該選擇D)。

15、A

【解析】本題考查的是三目運(yùn)算符的用法,三日運(yùn)算符的形式為(表達(dá)式1)(表達(dá)式2):(表達(dá)式3)。當(dāng)(表達(dá)式1)的值為真時(shí),求(表達(dá)式2)的值為整個(gè)表達(dá)式的值;如果(表達(dá)式1)的值為假,則求 (表達(dá)式3)的值為整個(gè)表達(dá)式的值。題中,表達(dá)式x> 12的結(jié)果為假,所以執(zhí)行的語句是x-12,最終y的值應(yīng)該是0。

16、B

【解析】請(qǐng)仔細(xì)閱讀交規(guī)難度:簡單

17、D

【解析】構(gòu)造類型數(shù)據(jù)是由基本類型數(shù)據(jù)按一定規(guī)則組成的。C語言中的構(gòu)造類型數(shù)據(jù)只有3種,它們是數(shù)組類型、結(jié)構(gòu)體類型和共用體類型。故應(yīng)該選擇D。

18、C

19、D

【解析】A.數(shù)組維數(shù)必須為常量;B.b[1][2]數(shù)組為一行兩列,而兩行一列;數(shù)組定義錯(cuò)誤,數(shù)組定義時(shí)列數(shù)必須寫明,而行數(shù)可以缺??;D.表示正確,相當(dāng)于{{1,2},{3,4},{0,0}}

20、B

二、填空題

1、0

2、單引號(hào)

3、['字母、數(shù)字、下劃線', '以字母、下劃線']

4、&

5、x=8

6、['t*10']

7、strlwr#strlwr()#strlwr(字符串)

8、'\0'#\0

9、a=5,b=5

10、(1)錯(cuò)誤:switch(g);
正確:switch(g)(2)錯(cuò)誤:casel:case2:returnl;
正確:casel;
case2:returnl;

三、編程題

1、#include
void main()

    int i;
    float sum=100.0,h=50;
    for(i=2;i<=10;i++)
    { 
    sum=sum+2*h;
    h=h/2;
    }
    printf("%f,%f\n",sum,h);
}

2、#include
void main()
{
    float x,y,r=0.0225;
    int i,n;
    printf("請(qǐng)輸入存款本金x和存款年數(shù)n:");
    scanf("%f%d",&x,&n);
    y=x;
    for(i=1;i<=n;i++)
    y=y*(1+r);
    printf("%f\n",y);
}

3、#include<stdio.h>
#include<string.h>
struct person {
char name[20];
int count;
}leader[3]={"Li",0,"Zhang",0,"Fun",0};
int main(){
    int i,j,n;
    char leader_name[20];
    scanf("%d",&n);
    for(i =1;i <= n;i++){
    scanf("%s",leader_name);
    for(j =0;j <3;j++)
        if(strcmp(leader_name,leader[j].name)==0) leader[j].count++;
    }
    for(i =0;i <3;i++)
        printf("%s:%d\n",leader[i].name,leader[i].count);
    return0;
}


 2023年計(jì)算機(jī)C語言專升本測(cè)試卷(三)

一、單項(xiàng)選擇題(共20題,每小題2 分,共 40分)

1、下列關(guān)于指針說法的選項(xiàng)中,正確的是________。

    A、指針是用來存儲(chǔ)變量值的類型

    B、指針一旦定義就不能再指向別的變量

    C、指針當(dāng)中存儲(chǔ)的是變量的內(nèi)存地址

    D、指針一旦定義必須要指向某一個(gè)變量

2、以下程序段的輸出結(jié)果是________。 int a=1234; float b=123.456; double c=12345.54321; printf("%2d,%2.1f,%2.1f",a,b,c);

    A、無輸出

    B、12,123.5,12345.5

    C、1234,123.5,12345.5

    D、1234,123.4,1234.5

3、有如下程序:
main ()
{
  int x = 1, a = 0, b = 0;
  switch (x)
    {
    case 0:
      b++;
    case 1:
      a++;
    case 2:
      a++;
      b++;
    }

  printf ("a = %d, b = %d\n", a, b);
}
該程序的輸出結(jié)果是________。

    A、a=2,b=1

    B、a=1,b=1

    C、a=1,b=0

    D、a=2 b=2

4、以下是死循環(huán)的程序段是________。

    A、for(i=1; ; )if(++i%2==0) continue;if(++i%3==0) break;}

    B、i=32767;do{if(i<0) break;}while(++i);

    C、for(i=1; ; ) if(++i<10) continue;

    D、i=1;while(i--);

5、以下選項(xiàng)中合法的c語言字符常量是________。

    A、'\t'

    B、"A"

    C、67

    D、A

6、與數(shù)學(xué)式子3乘以x的n次方/(2x-1)對(duì)應(yīng)的c語言表達(dá)式是______。

    A、3*x^n/(2*x-1)

    B、3*x**n/(2*x-1)

    C、3*pow(x,n)*(1/(2*x-1))

    D、3*pow(n,x)/(2*x-1)

7、以下敘述中正確的是________。

    A、語句 int a[8]={0};是合法的

    B、語句 int a={ 0};是不合法的,遺漏了數(shù)組的大小

    C、語句 char a[2]={"A","B"};是合法的,定義了一個(gè)包含兩個(gè)字符的數(shù)組

    D、語句char[3];a="AB";是合法的,因?yàn)閿?shù)組有三個(gè)字符空間的容量,可以保存兩個(gè)字符

8、根據(jù)c語言的語法規(guī)則,下列________個(gè)是不合法標(biāo)識(shí)符。

    A、do

    B、Name

    C、R5

    D、_exam

9、以下關(guān)于字符串的敘述中正確的是________。

    A、c語言中有字符串類型的常量和變量

    B、兩個(gè)字符串中的字符個(gè)數(shù)相同時(shí)才能進(jìn)行字符串大小的比較

    C、可以用關(guān)系運(yùn)算符對(duì)字符串的大小進(jìn)行比較

    D、空串一定比空格打頭的字符串小

10、若有定義:int c[4][5],(*cp)[5]; 和語句cp=c; ,則能正確引用c數(shù)組元素的是________。

    A、cp+1

    B、*(cp+3)

    C、*(cp+1)+3

    D、*(*cp+2)

11、關(guān)于c語言中print()函數(shù)與scanf()函數(shù),下列描述中正確的是________。

    A、printf()函數(shù)可以向任何地方輸出數(shù)據(jù)

    B、printf()只向控制臺(tái)輸出數(shù)據(jù)

    C、scanf()只能輸入英文字母和數(shù)字

    D、scanf()函數(shù)可以識(shí)別輸入的空格

12、在c語言中,能代表邏輯值"真"的是________。

    A、True

    B、大于0的數(shù)

    C、非0整數(shù)

    D、非0的數(shù)

13、設(shè)有字符串a(chǎn)="he has 錢!",則該字符串的長度為( )。

    A、9

    B、10

    C、11

    D、8

14、設(shè)有如下枚舉類型定義: enum language
{
    basic=3 , assembly , ada=100 , cobol , fortran
};
枚舉量 fortran 的值為 。

    A、4

    B、7

    C、102

    D、103

15、下列程序執(zhí)行后輸出的結(jié)果是________。
int d=1;
fun (int p)
{
    int d=5;
    d + =p ++;
    printf("%d,",d);
}
main()
{
    int a=3;
    fun(a);
    d += a++;
    printf("%d\n",d);
}

    A、8, 4

    B、9, 6

    C、9, 4

    D、8, 5

16、流程控制語句的基本控制結(jié)構(gòu)有三種,其中不包括________。

    A、順序結(jié)構(gòu)

    B、選擇結(jié)構(gòu)

    C、循環(huán)結(jié)構(gòu)

    D、計(jì)算結(jié)構(gòu)

17、以下對(duì) c 語言中共用體類型數(shù)據(jù)的敘述正確的是______。

    A、可以對(duì)共用體變量名直接賦值

    B、一個(gè)共用體變量中可以同時(shí)存放其所有成員

    C、一個(gè)共用體變量中不可以同時(shí)存放其所有成員

    D、共用體類型定義中不能出現(xiàn)結(jié)構(gòu)體類型的成員

18、以下語句的輸出結(jié)果是________。 int a=-1,b=4,k; k=(++a<0)&&!(b --<=0); printf("%d,%d,%d\n",k,a,b);

    A、1,0,4

    B、1,0,3

    C、0,0,3

    D、0,0,4

19、若有定義:int a[10],則對(duì)數(shù)組a元素的正確引用是________。

    A、a[10]

    B、a[3.5]

    C、a(5)

    D、a[0]

20、下列程序的輸出結(jié)果是________。
#include <stdio.h>
struct abc
{
  int a, b, c, s;
} ;

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

    A、5

    B、6

    C、7

    D、8

二、填空題(共10題,每小題2 分,共 20分)

1、若a是int型變量,則計(jì)算下表達(dá)式a=25/3%3后,a的值為________?  

2、局部變量的作用域是從______的位置起,到函數(shù)結(jié)束止。  

3、表達(dá)式5%(-3)的值是________,表達(dá)式-5%(-3)的值是________?  

4、若有定義: int a[3][4]={{1,2},{0},{4,6,8,10}};
則初始化后,a[1][2] 得到的初值是【1】, a[2][1] 得到的初值是【2】。  

5、以下程序的輸出結(jié)果是 ________ 。
#include <stdio.h>
main()
{
    int k=1,s=0;
    do
    {
        if((k%2)!=0) continue;
        s+=k;
        k++;
    }
    while(k>10);
    printf("s=%d\n",s);
}  

6、有以下程序
#include <stdio.h>
main()
{
    char a[20]="how are you?",b[20];
    scanf("%s",b);
     printf("%s %s\n",a,b);
}
程序運(yùn)行時(shí)從鍵盤輸入: how are you?<回車> 則輸出結(jié)果為________。  

7、如果一個(gè)變量要在一個(gè)程序中的所有函數(shù)都能共享,則應(yīng)該定義成為________。  

8、以下程序的功能是:借助指針變量找出數(shù)組元素中最大值所在的位置并輸出該最大值。請(qǐng)?jiān)谳敵稣Z句中填寫代表最大值的輸出項(xiàng)。
#include<stdio.h>
main() {
  int a〔10],*p,*s;
  for(p=a;p-a<10;p++)scanf("%d",p);
  for(p=a,s=a;p-a<10;p++)if(*p>*s)s=p;
  printf("max=%d\n",________);
}  

9、下面程序可求出矩陣兩條對(duì)角線上的元素之和。請(qǐng)分析程序填空。
main()
{
    int a[3][3]={1,3,6,7,9,11,14,15,17},sum1=0,sum2=0,i,j;
    for(i=0;i<3;i++)for(j=0;j<3;j++)
    if(i==j) sum1+=a[i][j];
    for(i=0;i<3;i++)
    for( 【1】________;【2】________;j--)
    if(i+j==2) sum2+=a[i][j];
    printf("sum1=%d,sum2=%d\n",sum1,sum2);
}  

10、函數(shù)f 的形參a 為一個(gè)10×10 的二維數(shù)組, n 的值為5,以下程序段的運(yùn)行結(jié)果為________。f(int a[][20], int n)
{
    int i,j,k;
    j=n/2+1;
    a[1][j]=1;
    i=1;
    for(k=2;k<=n*n;k++)
    {
        i=i-1;
        j=j+1;
        if(i<1&&j>n)
        {
            i=i+2;
            j=j-1;
        }
        else
        {
            if(i<1) i=n;
            if(j>n) j=1;
        }
        if(a[i][j]==0) a[i][j]=k;
        else
        {
            i=i+2;
            j=j-1;
            a[i][j]=k;
        }
    }
}
main()
{
    int a[20][20]={0},n,i,j;
    scanf("%d",&n);
    f(a,n);
    for(i=1;i<=n;i++)
    {
        for(j=1;j<=n;j++)printf("%3d",a[i][j]);
        printf("\n");
    }
}    

三、編程題(共3題,共 40分)

1、編寫程序: 古典問題(兔子生崽):有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問每個(gè)月的兔子總數(shù)為多少?(輸出前40個(gè)月即可) (本題10分) 

2、編寫程序:計(jì)算并輸出100~300之間能被3和7整除的所有數(shù),每8個(gè)換行 (本題14分) 

3、有以下類信息,使用結(jié)構(gòu)體數(shù)組存儲(chǔ)這些信息
struct class{
int id;//類編號(hào)
char info[20]; //類信息
}a[5]={{1,"aaa"},{2,"bbb"},{6,"ccc"},{7,"ddd"},{4,"eee"}};
從鍵盤輸入一個(gè)類編號(hào),如果有該類,刪除該類信息,并輸出刪除
后剩余類信息;如果沒有,全部輸出。
【輸出形式】分行輸出數(shù)據(jù),每行數(shù)據(jù)均使用一個(gè)空格分隔
【輸入樣例】1
【輸出樣例】每行數(shù)據(jù)均使用一個(gè)空格分隔,分行輸出
2 bbb
6 ccc
7 ddd
4 eee (本題16分)   


參考答案

一、單項(xiàng)選擇題

1、C

【解析】指針中存儲(chǔ)的不是變量本身的值,而是變量的內(nèi)存地址

2、C

【解析】以%mf或%mlf格式輸出浮點(diǎn)數(shù)時(shí),如果指定寬度大于實(shí)際數(shù)據(jù)寬度,則按指定寬度輸出,且多余數(shù)補(bǔ)以空格;如果指定寬度小于實(shí)際數(shù)據(jù)寬度,浮點(diǎn)數(shù)的整數(shù)部分將以實(shí)際位數(shù)輸出,小數(shù)部分按指定位數(shù)輸出,且對(duì)數(shù)據(jù)做四舍五入處理。而輸出整型數(shù)時(shí),沒有寬度限制的整數(shù)按原數(shù)輸出;在寬度限制小于數(shù)的實(shí)際位數(shù)時(shí),寬度說明無效,按數(shù)的實(shí)際位數(shù)輸出。

3、A

4、C

5、A

【解析】在C語言中,一個(gè)字符常量代表 ASCII字符集中的一個(gè)小字符,在程序中用單引號(hào)把一個(gè)字符括起來作為字符常量,選項(xiàng)A)是一個(gè)轉(zhuǎn)義字符常量,表示橫向跳若干空格(代表“TAB”鍵);選項(xiàng)B)表示一個(gè)字符串;選項(xiàng)C)表示一個(gè)整型常量;選項(xiàng)D)表示一個(gè)標(biāo)識(shí)符(代表一個(gè)變量),故本題答案為A)。

6、C

7、A

【解析】B 選項(xiàng)中,如給全部元素賦值,則在數(shù)組說明中,可以不給出數(shù)組元素的個(gè)數(shù);C 選項(xiàng)中, char2={
  ab 不合法,應(yīng)為 char【2】={
  a,"}選項(xiàng)中,用字符串方式賦值比用字符逐個(gè)賦值要多占 1 個(gè)字節(jié),在該選項(xiàng)中應(yīng)為 3 個(gè)字節(jié)。因此 A 選項(xiàng)正確。

8、A

9、D

10、D

11、B

【解析】printf()是向控制臺(tái)輸出的函數(shù)

12、D

13、B

14、C

15、A

16、D

17、C

18、D

19、D

20、B

【解析】在本題中,s[0].a=1,s[1].b=5,所以輸出結(jié)果為6。

二、填空題

1、2

2、定義

3、['2', '-2']

4、【1】0【2】6

5、[' s=0']

6、['howareyouhow']

7、全局變量

8、['*s']

9、【1】j=2 【2】j>=0

10、17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9

三、編程題

1、#include<stdio.h>
 
int main()
{
    int f1=1,f2=1,i;
    for(i=1;i<=20;i++)
    {
        printf("%12d%12d",f1,f2);
        if(i%2==0) printf("\n");
        f1=f1+f2;
        f2=f1+f2;
    }
   
    return 0;
}

【解析】兔子的規(guī)律為數(shù)列1,1,2,3,5,8,13,21....,即下個(gè)月是上兩個(gè)月之和(從第三個(gè)月開始)。

2、#include<stdio.h>
main()
{
    int i,n=0;
    for(i=100;i<=300;i++) if(i%3==0&&i%7==0)
    {
        printf("%d\t",i);
        n++;
        if(n%8==0) printf("\n");
    }
}

3、#include<stdio.h>
 
 
struct class
{
    int id;//類編號(hào)
    char info[20]; //類信息
}a[5]={{1,"aaa"},{2,"bbb"},{6,"ccc"},{7,"ddd"},{4,"eee"}};
 
 
int main(void)
{
   int i, j, x;
   scanf("%d", &x);
   for(i = 0; i < 5; i++)
   {
       if(a[i].id==x)
        break;
   }
   for(j = i; j < 4; j++)
   {
       a[j] = a[j + 1];
   }
   for(j = 0; j < 4; j++)
   {
       printf("%d %s\n", a[j].id, a[j].info);
   }
}


 2023年計(jì)算機(jī)C語言專升本測(cè)試卷(四)

一、單項(xiàng)選擇題(共20題,每小題2 分,共 40分)

1、對(duì)于條件表達(dá)式(k)(i++):(i--)來說,其中的表達(dá)式k等價(jià)于( )

    A、k==0

    B、k==1

    C、k!=0

    D、k!=1

2、已知三個(gè)用不同數(shù)制表示的整數(shù)a=00111101b,b=3ch,c=64d,則能成立的比較關(guān)系式______。

    A、A<B<C

    B、B<C<A

    C、B<A<C

    D、C<B<A

3、下列程序的運(yùn)行結(jié)果是________。
main()
{
    int a=-5,b=1,c=1;
    int x=0,y=2,z=0;
    if(c>0)x=x+ y;
    if(a<=0)
    {
        if(b>0) if(c<=0)y=x-y;
    }
    else if(c>0)y=x-y;
    else z=y;
    printf("%d,%d,%d\n",x,y,z);
}

    A、2,2,0

    B、2,2,2

    C、0,2,0

    D、2,0,2

4、執(zhí)行下面程序片段的結(jié)果是______。int x=23;
do
{
    printf("%2d",x--);
}
while(!x);

    A、打印出321

    B、打印出23

    C、不打印任何內(nèi)容

    D、陷入死循環(huán)

5、關(guān)于c語言中的全局變量,下列描述中正確的是________。

    A、全局變量的作用域一定比局部變量的作用域范圍大

    B、靜態(tài)類別變量的生存周期貫穿于整個(gè)程序的運(yùn)行期間

    C、函數(shù)的形參都屬于全局變量

    D、未在定義語句中賦初值的auto變量和static變量的初值都是隨機(jī)值

6、以下四個(gè)程序中,完全正確的是______。

    A、#include<stdio.h>
main();
  /*programming*/
  printf("programming! \n");

    B、#include<stdio.h>
main()
  /*/programming/*/
  printf("programming! \n");

    C、#include<stdio.h>
main()
  /*/*programming*/*/
  printf("programming! \n");

    D、include<stdio.h>
main()
  /*programming*/
  printf("programming! \n");

7、若有以下定義和語句,且 0 ≤ i<10 則對(duì)數(shù)組元素的錯(cuò)誤引用是______。 int a[10]= { 1,2,3,4,5,6,7,8,9,10 },*p,i; p=a;

    A、*(a+i)

    B、a[p-a]

    C、p+i

    D、*(&a[i])

8、下列運(yùn)算符中,屬于關(guān)系運(yùn)算符的是________。

    A、<<

    B、>=

    C、=

    D、!

9、下面描述正確的是________。

    A、兩個(gè)字符串包含的字符個(gè)數(shù)相同時(shí),才能比較字符串

    B、字符個(gè)數(shù)多的字符串比字符個(gè)數(shù)少的字符串大

    C、字符串"STOP" 與"STOP■"相等

    D、字符串"That" 小于字符串"The"

10、以下關(guān)于數(shù)組的描述正確的是______。

    A、數(shù)組的大小是固定的,但可以有不同的類型的數(shù)組元素。

    B、數(shù)組的大小是可變的,但所有數(shù)組元素的類型必須相同。

    C、數(shù)組的大小是固定的,但所有數(shù)組元素的類型必須相同。

    D、數(shù)組的大小是可變的,但可以有不同的類型的數(shù)組元素。

11、以下程序運(yùn)行后的輸出結(jié)果是
#include <stdio.h>
void fun(int a,int b) {
  int t;
  t=a;
  a=b;
  b=t;
}
main( ) {
  int c[10]=1,2,3,4,5,6,7,8,9,0,i;
  for(i=0;i<10;i+=2) fun(c[i],c[i+1]);
  for(i=0;i<10;i++) prinff("%d,",c[i]);
  printf("\n");
}

    A、1,2,3,4,5,6,7,8,9,0

    B、2,1,4,3,6,5,8,7,0,9

    C、0,9,8,7,6,5,4,3,2,1

    D、0,1,2,3,4,5,6,7,8,9

12、下列關(guān)于自動(dòng)類型轉(zhuǎn)換的說法中,正確的是________。

    A、int類型數(shù)據(jù)可以被自動(dòng)轉(zhuǎn)換為char類型數(shù)據(jù)

    B、char類型數(shù)據(jù)可以被自動(dòng)轉(zhuǎn)換為int類型數(shù)據(jù)

    C、boolean類型數(shù)據(jù)不可做自動(dòng)類型轉(zhuǎn)換,但是可以做強(qiáng)制類型轉(zhuǎn)換

    D、long類型數(shù)據(jù)可以被自動(dòng)轉(zhuǎn)換為short類型數(shù)據(jù)

13、設(shè)int*p[4]; 則標(biāo)識(shí)符p是________。

    A、整型數(shù)組名

    B、指針數(shù)組名

    C、指針函數(shù)名

    D、指向整型變量的指針

14、設(shè)有如下定義:
struct sk
{
    int n;
    float x;
} data,*p;
若要使p指向data中的n域,正確的賦值語句是________。

    A、p=&datn;

    B、*p=datn;

    C、p=(struct sk*)&datn;

    D、p=(struct sk*)datn;

15、有以下程序:
main()
{
    int k=-3: if(k<=0)printf("****\n") else printf("&&&&\n");
}
程序的輸出結(jié)果是________。

    A、輸出####

    B、輸出&&&&

    C、輸出####&&&&

    D、有語法錯(cuò)不能通過編譯

16、有以下程序
#include <stdio.h>
main()
{
    int a[]={2,3,5,4},i;
    for(i=0;i<4;i++)
    switch(i%2)
    {
        case 0: switch(a[i]%2)
        {
            case 0:a[i]++;
            break;
            case 1:a[i]--;
        }
         break;
        case 1:a[i]=0;
    }
    for(i=0;i<4;i++) printf("%d ",a[i]);
    printf("\n");
}
程序運(yùn)行后的輸出結(jié)果是________。

    A、3 3 4 4

    B、2 0 5 0

    C、3 0 4 0

    D、0 3 0 4

17、有以下程序
struct stu
{
    char num[10];
    float score[3];
}
;
main( )
{
    struct stu s[3]={{"20021",90,95,85},{"20022",95,80,75},{"20023",100,95,90}},*p;
    int i;
    float sum=0;
    p=s+1;
    for(i=0;i<3;i++)sum=sum+p->score[i];
    printf("%.3f\n",sum);
}
程序運(yùn)行后的輸出結(jié)果是___________。

    A、250.000

    B、250

    C、270.000

    D、270

18、下面程序的輸出結(jié)果為________。
main()
{
    int a,b;
    b=(a=3*5,a*4,a*5);
    printf(""%d"",b);
}

    A、60

    B、75

    C、65

    D、無確定值

19、有以下程序:
#include <stdio.h>
#include <string.h>
main()
{
    char str[][20]={"one*world", "one*dream]"}, *p=str[1];
    printf("%d, ", strlen(p));
    printf("%s\n", p);
}
程序運(yùn)行后的輸出結(jié)果是______。

    A、10, One*Dream!

    B、9, One*Dream!

    C、9, One*World

    D、10, One*World

20、若有下面的說明和定義,則sizeof(struct aa)的值是______。
struct aa
{
    int r1;
    double r2;
    float r3;
}
maya;

    A、20

    B、18

    C、14

    D、16

二、填空題(共10題,每小題2 分,共 20分)

1、&& 0 || 2的值為________?  

2、在c語言中除了使用c提供的標(biāo)準(zhǔn)類型名(如int、char等)外,還可以用_________聲明新的類型名來代替已有的類型名。  

3、執(zhí)行下面程序段后, k 值是________。
k=1;
n=263;
do
{
    k*=n%10;
    n/=10;
}
while(n);  

4、在c語言中,用轉(zhuǎn)義字符 \\ 表示______________。答題提示:雙引號(hào)/單引號(hào)/反斜線/橫向跳格/回車換行  

5、結(jié)構(gòu)化程序設(shè)計(jì)的3種基本結(jié)構(gòu)是:順序結(jié)構(gòu)、_______結(jié)構(gòu)、循環(huán)結(jié)構(gòu),這三種基本結(jié)構(gòu)構(gòu)成了復(fù)雜的c語言程序。  

6、以下程序的功能是將字符串s中的數(shù)字字符放入d數(shù)組中,最后輸出d中的字符串。例如,輸入字符串:abc123edf456gh,執(zhí)行程序后輸出:123456。請(qǐng)?zhí)羁铡?
#include <stdio.h>
#include <ctype.h>
main()
{
    char s[80], d[80];
    int i,j;
    gets(s);
    for(i=j=0;s[i]!='\0';i++) if( ________ )
    {
        d[j]=s[i];
        j++;
    }
    d[j]='\0';
    puts(d);
}  

7、使文件指針重新定位到文件讀寫的首地址的函數(shù)是________。  

8、函數(shù)strlen("1234\0xy")的值為:______。  

9、下面程序的運(yùn)行結(jié)果是________。
#include<stdio.h>
main()
{
    int i,x,y;
    i=x=y=0;
    do
    {
        ++i;
        if(i%2!=0)
        {
            x=x+i;
            i++;
        }
        y=y+i++;
    }
    while(i<=7);
    printf("x=%d,y=%d\n",x,y);
}  

10、下面程序的輸出結(jié)果是:
#include <stdio.h>
void add(int *p, int n)
{
    int *pend = p + n;
    for( ; p<pend; p++) *p += 10;
}
void main( )
{
    int a[5]={1,2,3,4,5}, *q = a;
    add(q, 5);
    for(q=a; q < a+5; q++) printf("%4d", *q);
}    

三、編程題(共3題,共 40分)

1、編寫程序:求兩個(gè)正整數(shù)[m,n]之間所有既能被3整除也能被7整除的整數(shù)之和例如:m=1,n=1000,則程序的輸出結(jié)果應(yīng)為:_________________。 (本題10分) 

2、從鍵盤輸入10個(gè)數(shù),統(tǒng)計(jì)非負(fù)數(shù)的個(gè)數(shù),并計(jì)算非負(fù)數(shù)的和。 (本題14分) 

3、定義?個(gè)結(jié)構(gòu)體student,存儲(chǔ)學(xué)?的學(xué)號(hào)、名字、性別和年齡,讀?每個(gè)學(xué)?的所有信息,保存在結(jié)構(gòu)體中,并輸出。結(jié)構(gòu)體student的定義如下:
struct student {
    int num;
    char name[20];
    char sex;
    int age;
};
本題要求使?指向結(jié)構(gòu)體數(shù)組進(jìn)?輸?和輸出。
輸?:
第??有?個(gè)整數(shù)n,表?以下有n個(gè)學(xué)?的信息將會(huì)輸?。保證n不?于20。
以后的n?中,每??包含對(duì)應(yīng)學(xué)?的學(xué)號(hào)、名字、性別和年齡,?空格隔開。保證每?個(gè)?名都不包含空格且長度不超過15,性別?M和F兩個(gè)字符來表?。
輸出:
有n?,每?輸出?個(gè)學(xué)?的學(xué)號(hào)、名字、性別和年齡,?空格隔開。
請(qǐng)注意?尾輸出換?。

樣例輸?:
3
10101 LiLin M 18
10102 ZhangFun M 19
10104 WangMin F 20

樣例輸出:
10101 LiLin M 18
10102 ZhangFun M 19
10104 WangMin F 20 (本題16分)   


參考答案

一、單項(xiàng)選擇題

1、C

【解析】條件表達(dá)式e1 e2:e3的含義是e1為真時(shí),取表達(dá)式e2的值,否則取表達(dá)式e3的值,“為真”的意思就是不等于0。

2、C

【解析】把數(shù)字都轉(zhuǎn)換為一種格式。

3、A

【解析】本題考查if else語句的使用。 先判斷第1個(gè)if語句,因?yàn)閏=1>0,所以x=x+ y=0+2=2。第1個(gè)if語句,因?yàn)閍=-5<0,所以進(jìn)入下列的復(fù)合語句。經(jīng)判斷發(fā)現(xiàn),復(fù)合語句中第2個(gè)if語句的條件均不滿足,不執(zhí)行任何語句退出,在這個(gè)過程中y和z的值沒有發(fā)生變化。

4、B

5、B

【解析】選項(xiàng)1不對(duì):如果程序中只有一個(gè)主函數(shù),則在整個(gè)程序運(yùn)行中,局部變量都在起作用;
選項(xiàng)3不對(duì):除了C++的引用類型參數(shù),所有函數(shù)的形參都是局部變量;
選項(xiàng)4不對(duì):static變量定義時(shí)就存儲(chǔ)地全局區(qū),初始化為0;

6、B

【解析】選項(xiàng)A中的main()后而不能直接用分號(hào)。選項(xiàng)C中的注釋符使且不正確,編譯器會(huì)把從第一個(gè)“/*到第一個(gè)*/”之間的當(dāng)作注釋,最后一個(gè)“*/”會(huì)被作為程序代碼去編譯。選項(xiàng)D中的include前要加上#表示是預(yù)定義語句。

7、C

8、B

9、D

10、C

11、A

【解析】fun函數(shù)無值返回。
main函數(shù)調(diào)用時(shí)數(shù)組元素作實(shí)參,形參的改變不會(huì)影響實(shí)參。因此,循環(huán)調(diào)用結(jié)束后,C數(shù)組沒有任何改變。

12、B

【解析】根據(jù)自動(dòng)類型轉(zhuǎn)換的優(yōu)先級(jí)順序,int類型的數(shù)據(jù)不可以自動(dòng)轉(zhuǎn)換為char類型數(shù)據(jù),long類型也不可以自動(dòng)轉(zhuǎn)換為short類型,boolean的值只有true和false兩個(gè)值,不能做類型轉(zhuǎn)換,包括自動(dòng)和強(qiáng)制。

13、B

【解析】指針數(shù)組的定義格式為:數(shù)據(jù)類型*指針數(shù)組名[長度],…其中,指針數(shù)組名是標(biāo)識(shí)符,前面必須有“*”號(hào),故本題選B。

14、C

【解析】本題主要考查了結(jié)構(gòu)體變量引用成員數(shù)據(jù)的方法,主要有以下幾種:結(jié)構(gòu)體變量名,成員名或結(jié)構(gòu)體指針->,成員名的方法來引用結(jié)構(gòu)體成員。

15、D

16、C

17、A

18、B

19、A

【解析】p是指向二維字符數(shù)組第二行One*Dream!的數(shù)組指針,所以長度是10,打印輸出的也是該字符串。

20、D

二、填空題

1、['1 (或真)']

2、typedef

3、36

4、反斜線

5、選擇#分支

6、["s[i]>='0' && s[i]<='9' 或 isdigit(s[i]) 或 s[i]>=48 && s[i]<=57 或 s[i]<='9' && s[i]>='0' 或 '9'>=s[i] && '0'<=s[i] 或 '0'<=s[i] && '9'>=s[i] 或 s[i]<=57 && s[i]>=48 或 57>=s[i] && 48<=s[i] 或 48<=s[i] && 57>=s[i]"]

7、rewind

8、9

9、x=1,y=20

10、11 12 13 14 15

三、編程題

1、#include <math.h>
#include <conio.h>
#include <stdio.h>
long int fun(int x ,int y )
{
    int i,t;
    long int s=0;
    if( x>y )
    {
        t=x;
        x=y;
        y=t;
    }
    for (i=x;i<=y;i++)
    if ( i%3==0 && i%7==0 )
    s += i;
    ____(1)____;
}
main()
{
    int m=1,n=1000;
    printf("sum is : %ld", ____(2)____ );
}

【解析】return(s);
printf("sumis:%ld",fun(m,n));
sum is : 23688

2、#include
void main()
{   
    int i,n=0,sum=0;
    int a[10];
    printf(“請(qǐng)輸入10個(gè)數(shù):”);
    for(i=0;i<10;i++)
    scanf(“%d”,&a[i]);
    for(i=0;i<10;i++)
    if(a[i]>=0)
    {
        sum=sum+a[i];
        n++;
    }
    printf("非負(fù)個(gè)數(shù)是%d,sum=%d\n",n,sum);
}

3、#include<stdio.h>
struct student {
int num;
char name[20];
char sex;
int age;
} stu[20],*p;
int main(){
    int n;
    scanf("%d",&n);
    p = stu;
    for(int i =0; i < n; i++) {
        scanf("%d %s %c %d",&p->num, p->name,&p->sex,&p->age);
        printf("%d %s %c %d\n", p->num, p->name, p->sex, p->age);
    }
    return0;
}


 2023年計(jì)算機(jī)C語言專升本測(cè)試卷(五)

一、單項(xiàng)選擇題(共20題,每小題2 分,共 40分)

1、若有說明和語句 int a=5; a++;此處表達(dá)式a++的值是________。

    A、7

    B、6

    C、5

    D、4

2、與十六進(jìn)制數(shù)ab等值的二進(jìn)數(shù)是________。

    A、10101010

    B、10101011

    C、10111010

    D、10111011

3、if語句的基本形式是:if(表達(dá)式)語句,以下關(guān)于"表達(dá)式"值的敘述中正確的是______。

    A、可以是任意合法的數(shù)值

    B、必須是整數(shù)值

    C、必須是正數(shù)

    D、必須是邏輯值

4、以下說法正確的是________。

    A、結(jié)構(gòu)化程序有三種基本結(jié)構(gòu),分別是循環(huán)結(jié)構(gòu)選擇結(jié)構(gòu)和順序結(jié)構(gòu)

    B、只有順序結(jié)構(gòu)的 C 語言源程序才能由計(jì)算機(jī)正常執(zhí)行

    C、循環(huán)結(jié)構(gòu)和分支結(jié)構(gòu)均無法用 N-S 流程圖描述

    D、循環(huán)結(jié)構(gòu)中不能包含分支結(jié)構(gòu),分支結(jié)構(gòu)中也不能包含循環(huán)結(jié)構(gòu)

5、c 語言中,若未說明函數(shù)的類型,則系統(tǒng)默認(rèn)該函數(shù)的類型是 __________ 。

    A、float 型

    B、long 型

    C、int 型

    D、double 型

6、該語句打印結(jié)果為(每個(gè)d后都有空格)printf("%d ", printf("%d ", printf("%d ", 43)));

    A、4321

    B、43 43 43

    C、43 3 2

    D、4 3 2 1

7、下面的C程序完成的功能是________。
#define SIZE 5
void func(int data[SIZE]);
main()
{
    int i,buf[SIZE];
    printf(""Please input %d numbers:"",SIZE);
    for(i=0;idata[j+1])
    {
        d=data[j];
        data[j]=data[j+1];
        data[j+1]=d;
    }
}

    A、對(duì)一維數(shù)組降序排序

    B、對(duì)一維數(shù)組升序排序

    C、對(duì)一維數(shù)組逆向排序

    D、對(duì)一維數(shù)組順序排序

8、下列關(guān)于指針變量的描述,不正確的是________。

    A、在沒有對(duì)指針變量賦值時(shí),指針變量的值是不確定的

    B、同類指針類型可以進(jìn)行相減操作

    C、在使用沒有賦值的指針變量時(shí),不會(huì)出現(xiàn)任何問題

    D、可以通過指針變量來取得它指向的變量值

9、設(shè)有定義:char s[81]; int i=0;  以下不能將一行(不超過80個(gè)字符)帶有空格的字符串正確讀入的語句或語句組是________。

    A、gets(s);

    B、while((s[i++]=getchar())!='\n’);s[i]='\0’;

    C、scanf(“%s”,s);

    D、do{ scanf(“%c”,&s[i]); } while(s[i++]!='\n’); s[i]='\0;

10、有如下說明: int a[10]=1,2,3,4,5,6,7,8,9,10,*p=a; 則數(shù)值為9的表達(dá)式是________。

    A、*p+9

    B、*(p+8)

    C、*p+=9

    D、p+8

11、以下敘述中錯(cuò)誤的是________。

    A、C程序必須由一個(gè)或一個(gè)以上的函數(shù)組成

    B、函數(shù)調(diào)用可以作為一個(gè)獨(dú)立的語句存在

    C、若函數(shù)有返回值,必須通過咖語句返回

    D、函數(shù)形參的值也可以傳回給對(duì)應(yīng)的實(shí)參

12、下列關(guān)于c語言的敘述錯(cuò)誤的是________。

    A、英文字母大小寫不加以區(qū)分

    B、不同類型的變量可以出現(xiàn)在同一個(gè)表達(dá)式中

    C、在賦值表達(dá)式中賦值號(hào)兩邊的類型可以不同

    D、某些運(yùn)算符在不同的場合可以有不同的含義

13、在函數(shù)聲明中,下面哪項(xiàng)是不必要的________。

    A、函數(shù)參數(shù)的類型和參數(shù)名

    B、函數(shù)名

    C、函數(shù)的類型

    D、函數(shù)體

14、有以下程序
#include <studio.h>
#include <string.h>
struct a
{
    int a;
    char b[10];
    double c;
};
void f(struct a t);
main()
{
    struct a a={1001,"zhangda",1098.0};
    f(a);
    pringt("%d,%s,%6.1f\n",a.a,a.b,a.c);
}
void f(struct a t)
{
    t.a=1002;
    strcpy(t.b,"changrong");
    t.c=1202.0;
}
程序運(yùn)行后的輸出結(jié)果是________。

    A、1001,ZhangDa,1098.0

    B、1002,ChangRong,1202.0

    C、1001,ChangRong,1098.0

    D、1002,ZhangDa,1202.0

15、有以下程序段
#include<stdio.h>
int a,b,c;
a=10;
b=50;
c=30;
if(a>b)a=b,b=c;
c=a;
printf("a=%d b=%d c=%d\n",a,b,c);
程序的輸出結(jié)果是______。

    A、a=10 b=50 c=10

    B、a=10 b=50 c=30

    C、a=10 b=30 c=10

    D、a=50 b=30 c=50

16、在下列選項(xiàng)中,沒有構(gòu)成死循環(huán)的程序段是________。

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

    B、for( ; ; );

    C、int k=1000;
do {++k;} while (k>=1000);

    D、int s=36;
while (s) --s;

17、有以下程序
struct stu
{
    char name[10];
    int num;
    int score;
}
;
main( )
{
    struct stu s[5]={{"yangsan",20041,703} , {"lisiguo",20042,580 , {"wangyin",20043,680}, {"sundan",20044,550}, {"penghua",20045,537}},*p[5],*t;
    int i,j;
    for(i=0;i<5;i++) p[i]=&s[i];
    for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(p[i]->score>p[j]->score)
    {
        t=p[i];
        p[i]=p[j];
        p[j]=t;
    }
    printf("5d %d\n",s[1].score,p[1]->score);
}
執(zhí)行后輸出結(jié)果是________。

    A、550  550

    B、680  680

    C、580  550

    D、580  680

18、下列程序執(zhí)行后的輸出結(jié)果是________。
#define MA(x) x*(x-1)
main()
{
    int a=1,b=2;
    printf(""%d \n"",MA(1+a+b));
}

    A、6

    B、8

    C、10

    D、12

19、設(shè)有以下語句,其中不是對(duì)a數(shù)組元素的正確引用的是:______(其中0≤i<6)int a[6]= {11,22,33,44,55,66 },*m=a;

    A、&(*(a+i) )

    B、*(&a[i])

    C、m[i]

    D、a[i]

20、設(shè)有下面的定義:
struct st
{
    int a;
    float b;
} d;
int*p;
要使p指向結(jié)構(gòu)變量d中的a成員,正確的賦值語句是________。

    A、*p=d.a;

    B、p=&a;

    C、p=d.a;

    D、p=&d.a;

二、填空題(共10題,每小題2 分,共 20分)

1、若要定義一個(gè)單精度實(shí)型變量f,則應(yīng)該使用的定義語句為________。  

2、int a = 0; a+=(a=8); 求a的最后結(jié)果  

3、在c語言中,標(biāo)識(shí)符是由( )、數(shù)字、下劃線組成的。  

4、c語言標(biāo)識(shí)符的第一個(gè)字符必須為下劃線或者_(dá)_______。  

5、c語言程序的三種基本結(jié)構(gòu)是順序結(jié)構(gòu)?選擇結(jié)構(gòu)和________?  

6、以下程序運(yùn)行結(jié)果是________。
#include <stdio.h>
void main()
{
    int x,y=1;
    if(y!=0) x=5;
    printf("\t%d\n" ,x);
    if(y==0) x=4;
    else x=5;
    printf("\t%d\n" ,x);
    x=1;
    if(y<0) if(y>0) x=4;
    else x=5;
    printf("\t%d\n" ,x);
}  

7、宏定義必須寫在______之外  

8、指針是存放_(tái)_____的變量。  

9、以下程序運(yùn)行的結(jié)果為____________。
#include <stdio.h>
int d = 1;
fun(int p)
{
    int d = 5;
    d += p++;
    printf( "%d,", d);
}
void main()
{
    int a = 3;
    fun(a);
    d += a++;
    printf( "%d\n", d);
}  

10、以下程序運(yùn)行后的輸出結(jié)果是 ________ 。
main()
{
    int i,m=0,n=0,k=0;
    for(i=9; i<=11;i++) switch(i/10)
    {
        case 0: m++;
        n++;
        break;
        case 10: n++;
        break;
        default: k++;
        n++;
    }
    printf("%d %d %d\n",m,n,k);
}    

三、編程題(共3題,共 40分)

1、編寫程序: 利用條件運(yùn)算符的嵌套來完成此題:學(xué)習(xí)成績>=90分的同學(xué)用A表示,60-89分之間的用B表示,60分以下的用C表示。 (本題10分) 

2、編寫程序:寫一個(gè)函數(shù),求一個(gè)字符串的長度,在 main 函數(shù)中輸入字符串,并輸出其長度。 (本題14分) 

3、有以下職工信息,使用結(jié)構(gòu)體數(shù)組存儲(chǔ)這些信息,從鍵盤輸入5條記錄,
之后在屏幕上依次輸出職工信息。
struct stuff{
int stuffID;//職工編號(hào)
float bonus; //工資
};
【輸入形式】5條職工信息,分行輸入,數(shù)據(jù)間空格隔開
【輸出形式】分行輸出5條職工信息和最低工資,每行數(shù)據(jù)均使用1個(gè)空格分隔
【輸入樣例】
1001 8540.59
1002 6345.45
1003 3500.65
1004 4898.86
1005 5345.80
【輸出樣例】每行數(shù)據(jù)均使用一個(gè)空格分割,分五行輸出
1001 8540.59
1002 6345.45
1003 3500.65
1004 4898.86
1005 5345.80
minBonus = 3500.65 (本題16分)   


參考答案

一、單項(xiàng)選擇題

1、C

2、B

【解析】本題考查十六進(jìn)制與二進(jìn)制的轉(zhuǎn)化,每位十六進(jìn)制數(shù)正好對(duì)應(yīng)4位二進(jìn)制數(shù),不足4位的高應(yīng)補(bǔ)0。本題中數(shù)A對(duì)應(yīng)1010,數(shù)B對(duì)應(yīng)l0ll,故轉(zhuǎn)換過程為AB→1010 1011。

3、A

【解析】表達(dá)式”的值類型可以是合法的數(shù)值,但是都分為兩類,0是假,非0是真。

4、A

【解析】結(jié)構(gòu)化程序有三種基本結(jié)構(gòu)循環(huán)結(jié)構(gòu)、選擇結(jié)構(gòu)和順序結(jié)構(gòu),三種結(jié)構(gòu)的 C 語言源程序都可以由計(jì)算機(jī)正常執(zhí)行。N-S 流程圖可以描述這三種結(jié)構(gòu)這三種結(jié)構(gòu)可以相互嵌套。本題答案為 A 選項(xiàng)

5、C

6、C

7、B

8、C

【解析】沒有賦值的指針變量,可能指向任何地方,如果指向系統(tǒng),那么使用該指針可能導(dǎo)致系統(tǒng)崩潰。

9、C

10、B

【解析】當(dāng)指針指向數(shù)組的首地址時(shí),數(shù)組內(nèi)各元素地址為p+n(數(shù)組下標(biāo)從0開始到n-1結(jié)束),n為數(shù)組下標(biāo),取數(shù)組元素值為*(p+n)。

11、D

【解析】本題主要考查函數(shù)的概念。C語言規(guī)定,實(shí)參變量對(duì)形參變量的數(shù)據(jù)傳遞是“值傳遞”,即單向傳遞,只由實(shí)參傳給形參,而不能由形參傳回來給實(shí)參。由此可知選項(xiàng)D不正確,故應(yīng)該選擇D。

12、A

13、D

【解析】本題考核函數(shù)的原型聲明格式。解析此題時(shí),要注意函數(shù)定義和函數(shù)聲明的區(qū)別。
  ①C中每一個(gè)函數(shù)的定義都是由4個(gè)部分組成的,即函數(shù)類型、函數(shù)名、函數(shù)參數(shù)表和函數(shù)體。
  ②函數(shù)的聲明是為了消除函數(shù)定義的位置影響。不管函數(shù)是在何處定義的,只要在調(diào)用前進(jìn)行函數(shù)的聲明,就可保證函數(shù)調(diào)用的合法性。
  ③函數(shù)原型的說明格式為:
  <類型><函數(shù)名>(<形參表>);

14、A

15、A

【解析】本題中a>b的條件不滿足,因此不執(zhí)行逗號(hào)表達(dá)式“a=b,b=c;”的操作,而是執(zhí)行“c=a”的操作,即c的值為10。故本題答案為A。

16、D

17、C

18、B

19、A

20、D

【解析】本題主要考查按結(jié)構(gòu)數(shù)組元素方式引用結(jié)構(gòu)成員。結(jié)構(gòu)體變量的成員引用方法有3種:①結(jié)構(gòu)體變量名,成員名;②指針變量名->成員名;③(*指針變量名).成員名。因?yàn)閜是指針變量,所以應(yīng)該將地址值賦給p。

二、填空題

1、float f

2、16

3、英文字母#字母

4、字母

5、['循環(huán)結(jié)構(gòu)']

6、5|5,1

【解析】上程序中第三個(gè)if語句有嵌套,前兩個(gè)if語句沒有嵌套。前兩個(gè)if語句根據(jù)y=1便可得知輸出結(jié)果均為5;最后一個(gè)if語句,根據(jù)條件y<0便知不成立,后續(xù)語句無法執(zhí)行,只好輸出前一賦值語句x=1的值。

7、函數(shù)

8、地址

9、8,4

10、['1 3 2']

三、編程題

1、#include<stdio.h>
int main()
{
    int score;
    char grade;
    printf("請(qǐng)輸入分?jǐn)?shù): ");
    scanf("%d",&score);
    grade=(score>=90)?'A':((score>=60)?'B':'C');
    printf("%c\n",grade);
    return 0;
}

2、#include <stdio.h>
#include <stdlib.h>
int main()
{
    int len;
    char str[20];
    printf("請(qǐng)輸入字符串:\n");
    scanf("%s",str);
    len=length(str);
    printf("字符串有 %d 個(gè)字符。",len);
}
//求字符串長度 
int length(char *s) 

    int i=0;
    while(*s!='\0')
    { 
        i++;  
        s++; 
    } 
    return i; 
}

3、#include <stdio.h>
 
struct stuff
{
    int stuffID;
    float bonus;
}a[5];
 
int main()
{
    int i;
    float min;
    for(i = 0; i < 5; i++)
    scanf("%d %f", &a[i].stuffID, &a[i].bonus);
    min = a[0].bonus;
    for(i = 1; i < 5; i++)
    {
 
        if(min >= a[i].bonus)
        min = a[i].bonus;
    }
    for(i = 0; i < 5; i++)
    printf("%d %.2f\n", a[i].stuffID, a[i].bonus);
 
    printf("minBonus = %.2f", min);
 
}


2023年計(jì)算機(jī)C語言專升本測(cè)試卷(六)

一、單項(xiàng)選擇題(共20題,每小題2 分,共 40分)

1、如下陳述中正確的是________。

    A、串“ABC”和串“ABC”不相等

    B、串的長度必須大于零

    C、串中元素只能是字母

    D、空串就是空格串

2、設(shè)有定義:int x=2; ,以下表達(dá)式中,值不為6的是________。

    A、x*=x+1

    B、x++,2*x

    C、x*=(1+x)

    D、2*x,x+=2

3、下列說法中不正確的是________。

    A、switch語句功能可以由if-else語句實(shí)現(xiàn)

    B、若用于比較的數(shù)據(jù)類型為double,則不能用switch語句來實(shí)現(xiàn)

    C、if-else語句的執(zhí)行效率總是比switch語句高

    D、case子句可以有多個(gè)語句,并且不需要用大括號(hào)””括起來

4、有如下程序
#define N 2
#define M N+1
#define NUM 2*M+1
main()
{
    int i;
    for(i=1;i<=NUM;i++) printf("%d\n"i)
}
該程序中的for循環(huán)執(zhí)行的次數(shù)是______。

    A、5

    B、6

    C、7

    D、8

5、若有以下說明和語句: int c[4][5],(*p)[5]; p=c; 能夠正確引用c數(shù)組元素的是________。

    A、p+l

    B、*(p+3)

    C、*(p+1)+3

    D、*(p[0]+2)

6、下述程序的輸出結(jié)果是________。
#include<stdio.h>
void main() {
  char a=1,b=2;
  char c=a^b<<2;
  printf("\n%d",c);
}

    A、9

    B、10

    C、12

    D、2

7、下面程序段的運(yùn)行結(jié)果是 char a[ ]="lanuage",*p; p=a; while(*p!='u') printf("%c",*p-32); p++;

    A、LANGUAGE

    B、language

    C、LAN

    D、langUAGE

8、以下敘述中錯(cuò)誤的______。

    A、C 程序在運(yùn)行過程中所有計(jì)算都以二進(jìn)制方式進(jìn)行

    B、C 程序在運(yùn)行過程中所有計(jì)算都以十進(jìn)制方式進(jìn)行

    C、所有 C 程序都需要編譯鏈接無誤后才能運(yùn)行

    D、C 程序中整型變量只能存放整數(shù),實(shí)型變量只能存放浮點(diǎn)數(shù)

9、下面不能正確進(jìn)行字符串賦值操作的語句是________。

    A、char s[5]={"ABCDE"};

    B、char s[5]={'A','B','C','D','E'};

    C、char *s;s="ABCDEF";

    D、char *s; scanf("%s",s);

10、已知3個(gè)字符為:a、z和8,按它們的ascii碼值升序排序,結(jié)果是________。

    A、8,a,Z

    B、a,8,Z

    C、a,Z,8

    D、8,Z,a

11、以下敘述中不正確的是________。

    A、在不同的函數(shù)中可以使用相同名字的變量

    B、函數(shù)中的形式參數(shù)是局部變量

    C、在一個(gè)函數(shù)內(nèi)定義的變量只在本函數(shù)范圍內(nèi)有效

    D、在一個(gè)函數(shù)內(nèi)的復(fù)合語句中定義的變量在本函數(shù)范圍內(nèi)有效

12、c語言中,int型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式是________。

    A、ASCⅡ碼

    B、補(bǔ)碼

    C、反碼

    D、原碼

13、下列程序的運(yùn)行結(jié)果是________。
#include<stdio.h>
void sub(int*s,int*y) {
  static int m=4;
  *y=s[0];
  m++;
}

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

    A、1,1,1,1,1,

    B、1,2,3,4,5,

    C、0,0,0,0,0,

    D、4,4,4,4,4,

14、若有下列說明和語句,則對(duì)結(jié)構(gòu)體變量st中成員i的引用方式不正確的是________。
struct stu
{
    int i;
    int name;
} st,*p;
p=&st;

    A、si

    B、*i

    C、(*.i

    D、p->i

15、以下程序結(jié)果為:______。
void add( )
{
    static int x=3;
    x++;
    printf("%d",x);
}
main( )
{
    int i;
    for(i=0;i<3;i++)add( );
}

    A、456

    B、444

    C、555

    D、345

16、有以下程序
main()
{
    int a=15,b=21,m=0;
    switch(a%3)
    {
        case 0:m++;
        break;
        case 1:m++;
        switch(b%2)
        {
            default:m++;
            case 0:m++;
            break;
        }
    }
    printf("%d\n",m);
}
程序運(yùn)行后的輸出結(jié)果是______。

    A、1

    B、2

    C、3

    D、4

17、有如下定義
struct person
{
    char name[9];
    int age;
}
;
struct person class[10] = {"john",17, "paul",19, "mary",18, "adam",16};
根據(jù)上述定義,能輸出字母a的語句是______。

    A、printf("%c\n",class[3].name);

    B、printf("%c\n",class[3].name[0]);

    C、printf("%c\n",class[4].name[1]);

    D、printf("%c\n",class[4].name[0]);

18、請(qǐng)讀程序 :
#include <stdio.h>
 f(int b[ ], int n)
{
    int i, r=1;
    for(i=0; i<=n; i++) r=r*b[i];
    return r;
}
void main()
{
    int x, a[]={2,3,4,5,6,7,8,9} ;
    x=f(a, 3);
    printf("%d\n",x);
}
上面程序的輸出結(jié)果是 __________.

    A、720

    B、120

    C、24

    D、6

19、下列字符數(shù)組初始化語句中,不正確的是________。

    A、char c[]='goodmorning';

    B、char e[20]="goodmorning":

    C、char c[]=('a','b','c','d');

    D、char c[]={”ffgoodmorning”);

20、有以下定義和語句:
struct students {
  int num;
  char name[20];
  char c;
  struct {
    int grade1;
    int grade2;
  } s;
};
struct students w,*pw;
*pw=w;
下列賦值語句不正確的是________。

    A、num=1002;

    B、w.grade1=85;

    C、pw->num=1002;

    D、w.s.grade2=85;

二、填空題(共10題,每小題2 分,共 20分)

1、設(shè)m=0,n=2,則表達(dá)式"!(m+n)"的值是_____________。  

2、設(shè)int a=5,b=6;
則表達(dá)式(++a==b--)?++a:--b的值是________。  

3、共用體類型變量的定義關(guān)鍵字是________。  

4、c語句分為______大類。  

5、執(zhí)行下列程序段后,輸出的a的值是_____________。
main()
{
    int a = 1;
    switch(a)
    {
        case 0: a--;
        break;
        case 1: a++;
        break;
        case 2: a=a+5;
        break
    }
    printf("%d",a);
}  

6、float f=3.1415927;
printf("%f,%5.4f,%3.3f",f,f,f);
則程序的輸出結(jié)果是________。  

7、有如下函數(shù)頭: int max(int i,int j),則此函數(shù)有______個(gè)參數(shù)。  

8、有函數(shù)調(diào)用fun1(x+y, (y,z), 10, fun((x,y-1)));
函數(shù)fun1有【1】個(gè)參數(shù)。  

9、下列程序段的運(yùn)行結(jié)果是_____。#define MAX(x , y) x>y? x : y
main( )
{
    int a , b , max;
    A=5, b=6;
    Max=MAX(a,b);
    printf("max=%d\n",max);
}  

10、以下程序用以刪除字符串中的所有的空格,請(qǐng)?zhí)羁铡?
#include<stdio.h>
main()
{
    char s[100]={"our .tercher teach c language!"};
    int i,j;
    for( i=j=0;s[i]!='\0’;i++) if(s[i]!=' ’)
    {
        s[j]=s[i];
        j++;
    }
    s[j]=________ ;
    printf("%s\n",s);
}    

三、編程題(共3題,共 40分)

1、編寫程序:輸出一維數(shù)組a中的最小值及其下標(biāo) (本題10分) 

2、將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2*3*3*5。 (本題14分) 

3、題?描述,定義?個(gè)包括年、?、?的結(jié)構(gòu)體變量,讀?年、?、?,計(jì)算該?在當(dāng)年中是第?天。注意閏年問題。
輸?
三個(gè)整數(shù),分別表?年、?、?。保證輸?是實(shí)際存在的?期,且年份在1000?3000之間(包含1000和3000)。輸出
輸出該?期是?年中的第?天。
請(qǐng)注意?尾輸出換?。
樣例輸?
2012 12 21
樣例輸出
356 (本題16分)   


參考答案

一、單項(xiàng)選擇題

1、A

【解析】兩個(gè)串相等且僅當(dāng)兩個(gè)串長度相等,并且各對(duì)應(yīng)位置的字符都相等,零個(gè)字符的串稱為空串,空格串是由一個(gè)或多個(gè)空格組成的串,它的長度為串中空格的個(gè)數(shù)。

2、D

3、C

【解析】并不是所有的if-else語句的執(zhí)行效率都高于switch語句,在一些特定的情況下, switch語句可以比較簡煉,同時(shí)容易閱讀,因此,選項(xiàng)C的描述是錯(cuò)誤的。

4、B

5、D

【解析】本題中定義了一個(gè)二維數(shù)組c和一個(gè)指針數(shù)組p,并初始化讓p指向c。顯然此時(shí)p中的各元素為地址,選項(xiàng)A中p+1,此時(shí)其中的1代表的長度是整個(gè)二維數(shù)組c的長度,故p+l將讓p指向c數(shù)組后面的元素,不能引用c數(shù)組中的成員,故選項(xiàng)A錯(cuò)誤;同理選項(xiàng)B和選項(xiàng)C都不正確,選項(xiàng)D中p[0]指的是指針數(shù)組中的第一個(gè)元素的地址即c的首地址,此時(shí)的1的長度代表的是數(shù)組C中一行的長度,故p[0]+2代表的是第3行的首地址,而*(p[0]+2)將代表第3行的第一個(gè)元素的地址,所以,4個(gè)選項(xiàng)中選項(xiàng)D符合題意。

6、A

【解析】本題主要考查C語言最基本的算術(shù)運(yùn)算“左移(<<)”和“異或(^)”。
  “左移”或“右移”運(yùn)算表達(dá)式的一般形式為:x<<n或x>>n?!白笠?<<)”運(yùn)算的規(guī)則是將x的二進(jìn)制位全部向左移動(dòng)n位,將左邊移動(dòng)的高位舍棄,右邊空出的位補(bǔ)0:“右移(>>)”運(yùn)算的規(guī)則是將x的二進(jìn)制位全部向右移動(dòng)n位,將右邊移動(dòng)的高位舍棄,左邊高位空出要根據(jù)原來符號(hào)位的情況進(jìn)行補(bǔ)充,對(duì)無符號(hào)數(shù)則補(bǔ)0,對(duì)有符號(hào)數(shù),若為正數(shù)則補(bǔ)0,若為負(fù)數(shù)則補(bǔ)1。
  “異或”運(yùn)算是當(dāng)兩個(gè)運(yùn)算量的相應(yīng)位相同時(shí)結(jié)果為0,不相同時(shí)結(jié)果為1。b=2的二進(jìn)制為(00000010)b<<2后為00001000,a=1的二進(jìn)制為00000001,所以c=a^b<<2為00001001,轉(zhuǎn)化為十進(jìn)制后為9。

7、C

【解析】本段程序的作用是輸出字符串“l(fā)anuage”中字母u之前的字符,并將其轉(zhuǎn)化為大寫字母。
  注意:如果一個(gè)字符數(shù)組用來作為字符串使用,那么在定義該字符數(shù)組時(shí),數(shù)組的大小就應(yīng)該比它將要實(shí)際存放的最長字符多一個(gè)元素,以存放,\0,。

8、B

9、A

10、D

【解析】在ASCII碼袁中,根據(jù)碼值由小到大的排列順序是:控制符、數(shù)字符、大寫英文字母、小寫英文字母。

11、D

12、B

【解析】C語言中int型數(shù)據(jù)是以補(bǔ)碼形式存放的,字符型數(shù)據(jù)是以ASCⅡ碼形式存放的。

13、A

【解析】本題中sub(int*s,int*y)函數(shù)的參數(shù)是兩個(gè)指針型變量,在函數(shù)體內(nèi)將數(shù)組s的第一個(gè)元素賦給y。主程序內(nèi),首先定義了一維數(shù)組并賦初值,然后通過for循環(huán),5次調(diào)用sub(a,&x)函數(shù),每一次調(diào)用都是將數(shù)組a的第一個(gè)元素1賦給x,并輸出。

14、B

【解析】本題主要考查結(jié)構(gòu)指針:p=&st,訪問結(jié)構(gòu)體的成員,可以通過結(jié)構(gòu)變量訪問,即st.i,也可以用等價(jià)的指針形式即(*p).i和 p->i。

15、A

16、A

17、B

18、B

19、A

20、B

【解析】本題主要考查的是結(jié)構(gòu)體變量的嵌套定義,也就是說一個(gè)結(jié)構(gòu)體變量也可以是一個(gè)結(jié)構(gòu)體。在本題中student這個(gè)結(jié)構(gòu)體中包含了結(jié)構(gòu)體s。所以對(duì)結(jié)構(gòu)體變量w中g(shù)rade1成員的引用是w.s.grade1或w->s->grade1。

二、填空題

1、0

2、7

3、union

4、5#五

5、2

6、3.141593,3.1416,3.142

7、2

8、4

9、max=6

10、["'\\0'或者填寫0"]

三、編程題

1、#include <stdio.h>
main( )
{
    int i,p=0,a[10];
    for(i=0;i<10;i++)
    scanf("%d",&a[i]);
    for(i=1;i<10;i++) if(a[i]<a[p]) 
    p=i;
    printf("%d,%d\n",a[p],p);
}

2、程序分析:對(duì)n進(jìn)行分解質(zhì)因數(shù),應(yīng)先找到一個(gè)最小的質(zhì)數(shù)k,然后按下述步驟完成:
(1)如果這個(gè)質(zhì)數(shù)恰等于n,則說明分解質(zhì)因數(shù)的過程已經(jīng)結(jié)束,打印出即可。
(2)如果n<>k,但n能被k整除,則應(yīng)打印出k的值,并用n除以k的商,作為新的正整數(shù)你n,重復(fù)執(zhí)行第一步。
(3)如果n不能被k整除,則用k+1作為k的值,重復(fù)執(zhí)行第一步。
程序源代碼:
main()
{
    int n,i;
    printf("\nplease input a number:\n");
    scanf("%d",&n);
    printf("%d=",n);
    for(i=2;i<=n;i++)
    {
        while(n!=i)
        {
            if(n%i==0)
            { printf("%d*",i);
                n=n/i;
            }
            else
            break;
        }
    }
    printf("%d",n);
}

3、#include<stdio.h>
int main(){
    struct dd{
        int y,m,d;
    }
    date;
    int i,j,k;
    scanf("%d%d%d",&date.y,&date.m,&date.d);
    k=date.d;
    if(date.m>1) k+=31;
    if(date.m>2) k+=28;
    if(date.m>3) k+=31;
    if(date.m>4) k+=30;
    if(date.m>5) k+=31;
    if(date.m>6) k+=30;
    if(date.m>7) k+=31;
    if(date.m>8) k+=31;
    if(date.m>9) k+=30;
    if(date.m>10) k+=31;
    if(date.m>11) k+=30;
    if(date.y%4==0&&date.y%100!=0||date.y%400==0) k++;
    printf("%d",k);
}


 2023年計(jì)算機(jī)C語言專升本測(cè)試卷(七)

一、單項(xiàng)選擇題(共20題,每小題2 分,共 40分)

1、下列選項(xiàng)中不是字符常量的是________。

    A、'\v'

    B、'\x2a'

    C、'a'

    D、"\0"

2、已知整型變量a=13和b=6,則a&b和a^b的值分別是________。

    A、4 13

    B、4 11

    C、1 11

    D、1 13

3、下列if語句中,不正確的是________。

    A、if(x>y);

    B、if(x==y) x+=y;

    C、if(x!=y) scanf("%d",&x) else x=1;

    D、if(x

4、有以下程序
#include <stdio.h>
main()
{
    int x=8;
    for( ; x>0; x--)
    {
        if(x%3)
        {
            printf("%d,",x--);
            continue;
        }
        printf("%d,",--x);
    }
}
程序的運(yùn)行結(jié)果是________。

    A、7,4,2

    B、8,7,5,2

    C、9,7,6,4

    D、8,5,4,2

5、有一函數(shù), ,以下程序段中不能根據(jù)x值正確計(jì)算出y值的是________。

    A、if(x>0) y=1;
else if(x==0) y=0;
else y=-1;

    B、y=0;
if(x>0) y=1;
else if(x<0) y=-1;

    C、y=0;
if(x>=0);
if(x>0) y=1    ;
else y=-1;

    D、if(x>=0)
if(x>0) y=1;
else y=0;
else y=-1;

6、下列程序段的輸出是____。int c[]={1, 3, 5};
int *k=c+1;
printf("%d", *++k);

    A、3

    B、4

    C、5

    D、6

7、有以下程序
main()
{
    int a[3][2]={0},(*ptr)[2],i,j;
    for(i=0;i<2;i++)
    {
        ptr=a+i;
        scanf("%d",ptr);
        ptr++;
    }
    for(i=0;i<3;i++)
    {
        for(j=0;j<2;j++) printf("%2d",a[i][j]);
        printf("\n");
    }
}
若運(yùn)行時(shí)輸入:1 2 3<回車>,則輸出結(jié)果是______。

    A、產(chǎn)生錯(cuò)誤信息

    B、10

    C、12

    D、1020       30        2000       00        30

8、若想通過a&b來使a的二進(jìn)制碼中的首尾兩位為原來的值,而其余為0,則b應(yīng)為:(設(shè)變量a,b均占一個(gè)字節(jié))

    A、01111110

    B、10000001

    C、視a值而定

    D、無法辦到

9、以下程序段的執(zhí)行結(jié)果為
#define PLUS(X,Y)X+Y
main()
{
    int x=1,y=2,z=3,sum;
    sum=PLUS(x+y,z)*PLUS(y,z);
    printf("SUM=%d",sum);
   
}

    A、SUM=9

    B、SUM=12

    C、SUM=18

    D、SUM=28

10、已知:char s[100]; int i; 則引用數(shù)組元素的錯(cuò)誤的形式是________。

    A、s[i+10]

    B、*(s+i)

    C、*(i+s)

    D、*((s++)+i)

11、以下敘述中正確的是______。

    A、函數(shù)既可以直接調(diào)用自己,也可以間接調(diào)用自己

    B、任何情況下都不能用函數(shù)名作為實(shí)參

    C、函數(shù)的遞歸調(diào)用不需要額外開銷,所以效率很高

    D、簡單遞歸不需要明確的結(jié)束遞歸的條件

12、設(shè)x為整型變量,和表達(dá)式"!(!x)"值完全相同的表達(dá)式是________。

    A、A==0

    B、x==1

    C、x!=0

    D、x!=1

13、下面程序的輸出結(jié)果是______。
main()
{
    int a[]={1,2,3,4,5,6,7,8,9,0},*p;
    p=a;
    printf("%d\n",*(p+8));
}

    A、0

    B、8

    C、10

    D、9

14、enum a
{
    sum=9,mon=-1,tue
}
;
定義了________。

    A、枚舉變量

    B、3個(gè)標(biāo)識(shí)符

    C、枚舉數(shù)據(jù)類型

    D、整數(shù)9和-1

15、以下程序的輸出結(jié)果是______。
main()
{
    int a=5,b=4,c=6,d;
    printf("%d\n",d=a>c?(a>c?a:c):(b));
}

    A、5

    B、4

    C、6

    D、不確定

16、以下程序的輸出結(jié)果是______。
main()
{
    int a,b;
    for(a=1,b=1;a<=100;a++)
    {
        if(b>=10) break;
        if(b%3==1)
        {
            b+=3;
            continue;
        }
    }
    printf("%d\n",a);
}

    A、101

    B、6

    C、5

    D、4

17、以下程序的輸出結(jié)果是______。
struct har
{
    int x,y;
    struct har *p;
}
h[2];
main()
{
    h[0].x=1;
    h[0].y=2;
    h[1].x=3;
    h[1].y=4;
    h[0].p=&h[1];
    h[1].p=h;
    printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);
}

    A、12

    B、23

    C、14

    D、32

18、有以下程序 #include <stdio.h>
main() {
 int a=1,b=2;
 while(a<6){
  b+=a;
  a+=2;
  b%=10;
 }
 printf("%d,%d\n",a,b);
} 程序運(yùn)行后的輸出結(jié)果是________。

    A、5,11

    B、7,1

    C、7,11

    D、6,1

19、以下語句或語句組中,能正確進(jìn)行字符串賦值的是________。

    A、char *sp; *sp="right!";

    B、char s[10]; s="right!";

    C、char s[10]; *s="right!";

    D、char *sp="right!";

20、下面定義結(jié)構(gòu)變量的語句中錯(cuò)誤的是________。

    A、struct student{
  int num; char name[20];
} s;

    B、struct {
  int num; char name[20];
} s;

    C、struct student{
  int num; char name[20];
};
struct student s;

    D、struct student{
  int num; char name[20];
};
student s;

二、填空題(共10題,每小題2 分,共 20分)

1、設(shè)a=3,b=2,c=1,則a>b>c的值為________。  

2、c語言中的關(guān)鍵字共有32個(gè),而且都是________寫。提示:大/小  

3、設(shè)x和y均為int型變量,且x=1,y=2,則表達(dá)式1.0+x/y的值為 ()  

4、用&&寫出判斷一個(gè)字母是否為大、小寫的語句  

5、在循環(huán)的過程中,有時(shí)要提前中止循環(huán),通常采用 () 語句。  

6、請(qǐng)補(bǔ)充main()函數(shù),亥函數(shù)的功能是求方程ax2+bx+ e=0的兩個(gè)實(shí)數(shù)根。方程的系數(shù)a、b、c從鍵盤輸入,如果判別式(disc=b*b-4*a*c)小于0,則要求重新輸入a、b、c的值。 例如,當(dāng)a=1,b=2,c=1時(shí),方程的兩個(gè)根分別是:x1 =-1.00,x2=-1.00。 注意:部分源程序給出如下。 請(qǐng)勿改動(dòng)函數(shù)中的其他任何內(nèi)容,僅在橫線上填入所編寫的若干表達(dá)式或語旬。 試題程序:
void main()
{
    double a,b,c,x1,x2,disc;
    do
    {
        printf("input a,b,c:");
        scanf("%1f,%1f,%1f",&a,&b,&c);
        disc=b*b一4*a*c;
        if(disc<0)
            printf("disc=%1f\n input again!\n",disc);
    }
    while( ________);
    printf("****The result****\n");
    x1=(-b+ ________ (disc))/(2*a);
    x2=(-b- ________(disc))/(2*a);
    printf("\nx1=%6.21f\nx2=%6.21f\n",x1,x2);
}  

7、語言的函數(shù)體一般由____和____構(gòu)成  

8、int y=1, x, *p, a[ ]={2,4,6,8,10};
p=&a[1];
for(x=0;x<3;x++) y + = * (p + x);
printf("%d\n",y);
程序的輸出結(jié)果y的值是________ 。  

9、改正下列程序中不正確的語句。
main()
{
    int n ;
    float s=1.0;
    for(n=10;n>1;n--) s=s+1/n;
    printf("%6.1f\n",s);
}  

10、以下程序運(yùn)行后的輸出結(jié)果是________。
main()
{
    char s[ ]="gfedcba";
    int p=6;
    while(s[p]!='d’)
    {
        printf("%c ", p);
        p=p-1;
    }
}    

三、編程題(共3題,共 40分)

1、編寫程序,求s=1+(1+2)+….+(1+2+….+10) (本題10分)  

2、輸入一行字符,將所有的小寫字母轉(zhuǎn)換成大寫字母, (本題14分) 

3、編寫程序:創(chuàng)建一個(gè)長度為n的鏈表,然后反向輸出該鏈表。 (本題16分)   


參考答案

一、單項(xiàng)選擇題

1、D

2、B

【解析】a的值轉(zhuǎn)換成二進(jìn)制數(shù)是1101,b的值轉(zhuǎn)換成二進(jìn)制數(shù)是110,a&b的值是100,轉(zhuǎn)換成十進(jìn)制數(shù)是4;a^b的值是1011,轉(zhuǎn)換成十進(jìn)制數(shù)是11。

3、C

4、D

5、C

6、C

7、B

【解析】本題定義了一個(gè)二維數(shù)組a,又定義了一個(gè)指針變量ptr,它用于指向包含2個(gè)元素的一維數(shù)組,在第一個(gè)for循環(huán)中,語句"ptr=a+i;"用于將指針變量ptr指向第i行的數(shù)組元素,通過兩次循環(huán),分別給二維數(shù)組a的第0行的第1個(gè)元素和第1行的第1個(gè)元素賦了值1和2。

8、B

9、B

【解析】本題考查帶參數(shù)的宏定義及應(yīng)用方法,這種宏不只是進(jìn)行字符串的替換,還要進(jìn)行參數(shù)的替換。
  格式為:#define宏名(參數(shù)表)字符串
  我們先看一個(gè)簡單的帶參數(shù)的宏定義:#define X (A,B)A*B*B并且在程序中有語句:y=X(4,3);經(jīng)過替換后變?yōu)閥=4*3*3;這就是帶參數(shù)的宏定義的使用方法。注意:宏是按原形替換,本題替換后為 sun=1+2+3*2+3;。

10、D

11、A

【解析】函數(shù)直接或間接調(diào)用自己,稱為遞歸調(diào)用,所以選擇A。

12、C

13、D

14、C

15、B

16、D

17、D

18、B

19、D

【解析】本題考查了考生對(duì)字符串常量的理解。字符串常量是一段以雙引號(hào)括起來的字符序列,它既可以出現(xiàn)在對(duì)字符數(shù)組的初始化中,也可以出現(xiàn)在表達(dá)式中。當(dāng)它用于對(duì)字符數(shù)組的初始化時(shí),應(yīng)注意系統(tǒng)自動(dòng)為其添加的結(jié)束標(biāo)志'\0'。而當(dāng)它出現(xiàn)在表達(dá)式中時(shí),應(yīng)該將其看作一個(gè)const char*類型的指針常量。在選項(xiàng)A中,首先定義了一個(gè)字符指針sp,然后將一個(gè)字符串賦給甲所指的地址,這是錯(cuò)誤的。因?yàn)閟p是一個(gè)未經(jīng)初始化的野指針,不知其指向哪兒,往一個(gè)不確定的地址中寫數(shù)據(jù)很容易讓程序出錯(cuò)。選項(xiàng)B首先定義了一個(gè)字符數(shù)組,然后將一個(gè)字符串賦給數(shù)組名,這是錯(cuò)誤的。因?yàn)閿?shù)組名是一個(gè)指針常量,不可以被改變。選項(xiàng)C首先定義了一個(gè)字符數(shù)組,然后將一個(gè)字符串賦給數(shù)組的第一個(gè)元素,這也是錯(cuò)誤的。因?yàn)樽址诒磉_(dá)式中相當(dāng)于一個(gè)常字符指針,將一個(gè)指針值賦給一個(gè)字符型變量是行不通的。選項(xiàng)D是定義一個(gè)字符指針sp,同時(shí)使其指向一個(gè)字符串常量,即將一個(gè)常字符型指針賦給sp。這是可行的。所以,4個(gè)選項(xiàng)中選項(xiàng)D符合惠意。

20、D

二、填空題

1、1

2、小

3、1.0

4、c>='a'&&c<='z'

5、break

6、________disc<0或o>disc ________sqrt ________sqrt

7、定義語句|執(zhí)行語句

8、19

9、s=s+1.0/n

10、a b c

三、編程題

1、#include<stdio.h>
main()
{
    int i,s=0,t=0;
    for(i=1;i<=n;i++)
    {
        t=t+i;
        s=s+t;
    }
    printf("%d",s);
}

2、大寫字母轉(zhuǎn)換成小寫字母,其余字符不變。輸出轉(zhuǎn)變
后的這行字符。
#include "stdio.h"
void main()
{
    char a[n];
    int i;
    scanf("%s",a);
    printf("大寫為:");
    for(i=0;i<=n;i++)
    {
        if(a<='z'&&a>='a')
        a=a-32;
        printf("%c",a);
    }
    printf("\n小寫為:");
    for(i=0;i<=3;i++)
    {
        a=a+32;
        printf("%c",a);
    }
}

3、#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
typedef struct LNode{
    int          data;
    struct LNode *next;
}LNode,*LinkList;
 
LinkList CreateList(int n);
void print(LinkList h);
int main()
{
    LinkList Head=NULL;
    int n;
   
    scanf("%d",&n);
    Head=CreateList(n);
   
    printf("剛剛建立的各個(gè)鏈表元素的值為:\n");
    print(Head);
   
    printf("\n\n");
    system("pause");
    return 0;
}
LinkList CreateList(int n)
{
    LinkList L,p,q;
    int i;
    L=(LNode*)malloc(sizeof(LNode));
    if(!L)return 0;
    L->next=NULL;
    q=L;
    for(i=1;i<=n;i++)
    {
        p=(LinkList)malloc(sizeof(LNode));
        printf("請(qǐng)輸入第%d個(gè)元素的值:",i);
        scanf("%d",&(p->data));
        p->next=NULL;
        q->next=p;
        q=p;
    }
    return L;
}
void print(LinkList h)
{
    LinkList p=h->next;
    while(p!=NULL){
        printf("%d ",p->data);
        p=p->next;
    }
}


 2023年計(jì)算機(jī)C語言專升本測(cè)試卷(八)

一、單項(xiàng)選擇題(共20題,每小題2 分,共 40分)

1、為了避免在嵌套的條件語句if else中產(chǎn)生二義性,c語言規(guī)定,else子句總是與( )配對(duì)。

    A、縮排位置相同if

    B、其前面最近的if

    C、其后面最近的if

    D、同一行上的if

2、在下列字符序列中,不可用做c語言標(biāo)識(shí)符的是________。

    A、student___num

    B、class

    C、#88

    D、month___12

3、若x和y是程序中的兩個(gè)整型變量,則下列if語句中正確的是________。

    A、if(x==0) y=1; else y=2;

    B、if(x==0) then y=1 else y=2;

    C、if(x==0) y=1 else y=2;

    D、if x==0 y=1; else y=2;

4、以下for語句構(gòu)成的循環(huán)執(zhí)行了______次。
#include <stdio.h>
#define N 2
#define M N+1
#define NUM (M+1)*M/2
main()
{
    int i,n=0;
    for(i=1;i<=NUM;i++)
    {
        N++;
        printf("%d",n);
    }
    printf("\n");
}

    A、5

    B、6

    C、8

    D、9

5、下面說明不正確的是________。

    A、char a[10]="china";

    B、char a[10],*p=a;p="china"

    C、char*a;a="china";

    D、chara[10],*P;P=a="china"

6、下列程序段的輸出結(jié)果為________。 int x=3,y=2; printf("%d",(x-=y,x*=y+8/5));

    A、1

    B、7

    C、3

    D、5

7、以下能正確定義數(shù)組并正確賦初值的語句是______。

    A、int n=5,b[n][n];

    B、int a[1][2]={{1},{3}};

    C、int c[2][]={{1,2},{3,4}}

    D、int a[3][2]={{1,2},{3,4}}

8、若變量已正確定義,表達(dá)式 (j=3, j++) 的值是____。

    A、3

    B、4

    C、5

    D、6

9、下列數(shù)據(jù)中屬于"字符串常量"的是________。

    A、“a”

    B、{
  ABC}

    C、'abc\0’

    D、'a’

10、數(shù)組a[0…5,0…6]每個(gè)元素占5個(gè)單元,將其按列優(yōu)先次序存儲(chǔ)在起始地址為1000的連續(xù)內(nèi)存單元中,則元素a[5][5]的地址為________。

    A、1175

    B、1180

    C、1205

    D、1210

11、以下函數(shù)調(diào)用語句中實(shí)參的個(gè)數(shù)為 。exce((v1,v2),(v3,v4,v5),v6);

    A、3

    B、4

    C、5

    D、6

12、用高級(jí)程序設(shè)計(jì)語言編寫的程序,________。

    A、計(jì)算機(jī)能直接執(zhí)行

    B、具有良好的可讀性和可移植性

    C、執(zhí)行效率高,但可讀性差

    D、依賴于具體機(jī)器,可移植性差

13、以下關(guān)于函數(shù)的敘述中正確的是________?

    A、每個(gè)函數(shù)都可以被其它函數(shù)調(diào)用(包括main函數(shù))

    B、每個(gè)函數(shù)都可以被單獨(dú)編譯

    C、每個(gè)函數(shù)都可以單獨(dú)運(yùn)行

    D、在一個(gè)函數(shù)內(nèi)部可以定義另一個(gè)函數(shù)

14、下面說法正確的是________。

    A、文件指針變量的值是文件當(dāng)前正在處理的字節(jié)地址

    B、文件指針變量的值是文件中包含的字符個(gè)數(shù)

    C、文件指針的類型是一種指針類型

    D、文件指針的類型是結(jié)構(gòu)體類型

15、以下程序的運(yùn)行結(jié)果是________。
#include<stdio.h>
main()
{
    int a=3,b=4,c=8,d=4,m=1,n=3;
    printf("%d\n",(m=a>b)&&(n=c>d));
}

    A、0

    B、1

    C、2

    D、3

16、以下程序的運(yùn)行結(jié)果是________。
main()
{
    int n;
    for(n=1;n<=10;n++)
    {
        if(n%3==0) continue;
        printf("%d",n);
    }
}

    A、12457810

    B、369

    C、12

    D、1234567890

17、有以下程序
struct stu
{
    char name[10];
    int num;
};

void f(char *name, int num)
{
    struct stu s[2]={{"sundan",20044},{"penghua",20045}};
    num = s[0].num;
    strcpy(name, s[0].name);
}

main()
{
    struct stu s[2]={{"yangsan",20041},{"lisiguo",20042}},*p;
    p=&s[1];
    f(p->name, p->num);
    printf("%s %d\n", p->name, p->num);
}
程序運(yùn)行后的輸出結(jié)果是________。

    A、SunDan 20042

    B、SunDan 20044

    C、LiSiGuo 20042

    D、YangSan 20041

18、以下程序運(yùn)行后的輸出結(jié)果是
main() {
  char c;
  int n=100;
  float f=10;
  double x;
  x=f*=n/=(c=50);
  printf("%d %f\n", n, x);
}

    A、2 20.000000

    B、100,20.000000

    C、2 40.000000

    D、100 40.000000

19、以下敘述中正確的是______。

    A、不能用字符串常量對(duì)字符數(shù)組名進(jìn)行整體賦值操作

    B、字符串常量"Hello"會(huì)被隱含處理成一個(gè)無名字符型數(shù)組,它有5個(gè)元素

    C、char str[7]="string!";在語法上是合法的,運(yùn)行也是安全的

    D、char *str;str="Hello";與char str[];str="Hello";效果是一樣的

20、設(shè)有如下說明
typedef struct st
{
    long a;
    int b;
    char c[2];
}
new;
則下面敘述中正確的是______。

    A、以上的說明形式非法

    B、ST 是一個(gè)結(jié)構(gòu)體類型

    C、NEW 是一個(gè)結(jié)構(gòu)體類型

    D、NEW 是一個(gè)結(jié)構(gòu)體變量

二、填空題(共10題,每小題2 分,共 20分)

1、有以下程序段,且變量已正確定義和賦值 for(s=1.0,k=1;k<=n;k++) s=s+1.0/(k*(k+));
printf("s=%f\n\n",s);
請(qǐng)?zhí)羁?使下面程序段的功能與之完全相同 s=1.0;
k=1;
while([10] )
{
    s=s+1.0/(k*(k+1));
    [11] ;
}
printf("s=%f\n\n",s);  

2、c程序中的變量按其定義位置及作用域可分為________兩種?  

3、在c語言中,'\n'表示________。  

4、數(shù)學(xué)表達(dá)式100<a或者a<-20改寫為c語言表達(dá)式是________。注:表達(dá)式要在英文半角狀態(tài)下按原表達(dá)式順序書寫,且表達(dá)式中不要留空格。  

5、下列程序段是從鍵盤輸入的字符中統(tǒng)計(jì)數(shù)字字符的個(gè)數(shù),用換行符結(jié)束循環(huán)。 int n=0, ch;
ch=getchar( );
while( ________ )
{
    if ( ________ ) n++;
    c=getchar( );
}  

6、下列給定程序中,函數(shù)proc()的功能是計(jì)算正整數(shù)m 各位上數(shù)字的平方和。 例如,輸入498,則輸出應(yīng)該是161。 請(qǐng)修改程序中的錯(cuò)誤,使它能得到正確結(jié)果。 注意:不要改動(dòng)main()函數(shù),不得增行或刪行,也不得更改程序的結(jié)構(gòu)。 試題程序:
#include<stdlib.h>
#include<stdio.h>
#include<conio.h> long proc(10ng m)
{
    long sum=1;
    do
    {
        sum+=(m%10)*(m%10);
        m/= 10;
    }
    while(m)
    return(sum);
}
void main()
{
    long n;
    system("cls");
    printf("please enter a number:");
    scanf("%1d",&n);
    printf("\n%ld\n",proc(n));
}  

7、字符串函數(shù)___________用于把一個(gè)字符串寫入指定的磁盤文件中。  

8、在c語言中,函數(shù)的返回值是由___________語句傳遞的。  

9、a=3;
a+=(a<1)?a:1;
printf("%d",a);
結(jié)果是________。  

10、以下程序中給指針p分配三個(gè)double型動(dòng)態(tài)內(nèi)存單元,請(qǐng)?zhí)羁铡?br>#include <stdlib.h>
main ( )
{
    double *p;
    p=(double *) malloc( ________);
    p[0]=1.5;
    p[1]=2.5;
    p[2]=3.5;
    printf("%f%f%f\n",p[0],p[1],p[2]);
}    

三、編程題(共3題,共 40分)

1、編寫一個(gè)函數(shù),從傳人的m個(gè)字符中找出最長的一個(gè)字符串,并通過形參指針max傳回該串地址(用****作為結(jié)束輸入的標(biāo)志)。 注意:部分源程序給出如下。 請(qǐng)勿改動(dòng)main()函數(shù)和其他函數(shù)中的任何內(nèi)容,僅在函數(shù)proc()的花括號(hào)中填人所編寫的若干語句。 試題程序:
char*proc(char(*a)[81],int num)
{
}
void main()
{
     char ss[l0][81],*max;
     int n,i=0;
     printf("輸入若干個(gè)字符串:");
     gets(ss[i]);
     puts(ss[i]);
     while(!strcmp(ss[i],"****")==0) 
       {
          i++;   
              gets(ssei]);
            puts(ss[i]);
       }
     n=i; 
       max=proe(ss,n);
     printf("\nmax=%s\n",max);
} (本題10分) 

2、編寫程序:字符串反轉(zhuǎn),如將字符串 "www.baidu.com" 反轉(zhuǎn)為"moc.udiab.www"。 (本題14分) 

3、給定N個(gè)職員的信息,包括姓名、基本工資、浮動(dòng)工資和支出,要求編寫程序順序輸出每位職員的姓名和實(shí)發(fā)工資(實(shí)發(fā)工資=基本工資+浮動(dòng)工資-支出)。
輸入格式:
輸入在一行中給出正整數(shù)N。隨后N行,每行給出一位職員的信息,格式為“姓名 基本工資 浮動(dòng)工資 支出”,中間以空格分隔。其中“姓名”為長度小于10的不包含空白字符的非空字符串,其他輸入、輸出保證在單精度范圍內(nèi)。

輸出格式:
按照輸入順序,每行輸出一位職員的姓名和實(shí)發(fā)工資,間隔一個(gè)空格,工資保留2位小數(shù)。

輸入樣例:
3
zhao 240 400 75
qian 360 120 50
zhou 560 150 80
輸出樣例:
zhao 565.00
qian 430.00
zhou 630.00 (本題16分)   


參考答案

一、單項(xiàng)選擇題

1、B

2、C

3、A

4、C

5、D

【解析】C語言中操作一個(gè)字符串常量的方法有:①將字符串常量存放在一個(gè)字符數(shù)組之中;②用字符指針指向字符串,然后通過字符指針來防問字符串存儲(chǔ)區(qū)域。當(dāng)字符串常量在表達(dá)式中出現(xiàn)時(shí),根據(jù)數(shù)組的類型轉(zhuǎn)換規(guī)則,將其轉(zhuǎn)換成字符指針。
  本題D)項(xiàng)中錯(cuò)誤的關(guān)鍵是對(duì)數(shù)組初始化時(shí),可以在變量定義時(shí)整體賦初值,但不能在賦值語句中整體賦值。

6、C

7、D

8、A

9、A

10、A

【解析】本題主要考查的知識(shí)點(diǎn)是二維數(shù)組元素的地址計(jì)算。
[要點(diǎn)透析] a[5][5]的地址是1000+(5×6+5)×5=1175。

11、A

12、B

【解析】用高級(jí)程序設(shè)計(jì)語言編寫的程序具有良好的可讀性和可移植性。

13、B

14、C

【解析】文件指針變量的值是文件所在的地址,選項(xiàng) A  B 錯(cuò)誤;文件指針也是一種指針,屬于指針類型不是結(jié)構(gòu)體類型,選項(xiàng) C 正確,D 錯(cuò)誤;本題答案為 C

15、A

【解析】邏輯與(&&)運(yùn)算符的功能是:當(dāng)“&&”運(yùn)算符兩邊的運(yùn)算對(duì)象均為1時(shí),整個(gè)表達(dá)式的值為1,否則為0。因?yàn)閍=3<b=4,即m=0,所以整個(gè)表達(dá)式的值為0。

16、A

17、A

18、A

【解析】對(duì)于C語言中的賦值運(yùn)算符,必須遵循以下規(guī)則:賦值運(yùn)算符的優(yōu)先級(jí)別只高于逗號(hào)運(yùn)算符,比其他任何運(yùn)算符的優(yōu)先級(jí)都低,并且具有自右向左的結(jié)合性。因此先得到變量c的值為50,變量n經(jīng)過計(jì)算結(jié)果為2,最后通過變量f的值10和n的值2相乘得到變量x的值,為20.000000。因此選項(xiàng)A)正確。

19、A

【解析】字符數(shù)組在定義時(shí)可以用字符串賦初值,其后就不可以再用字符串常量進(jìn)行賦值。答案選擇A。

20、C

【解析】typedef 關(guān)鍵字用于聲明一個(gè)新的類型名代替已有的類型名。本題中如果沒有用 typedef 進(jìn)行定義的話,則 struct ST 為結(jié)構(gòu)體類型,現(xiàn)在用 typedef 定義后,相當(dāng)于用 NEW代表了 struct ST 這一結(jié)構(gòu)體類型,故 NEW 為結(jié)構(gòu)體類型。

二、填空題

1、['k<=n ', 'k++ ']

2、['全局變量和局部變量']

3、回車換行#換行

4、100<alla<-20#a<-20ll100<a#a>100lla<-20#a<-20lla>100#100<all-20>a#-20>all100<a#a>100ll-20>a#-20>alla>100

5、['ch!=’\\n’ ch>=0’0’', '&& ch<=’9’']

6、1.錯(cuò)誤:long sum=1; 正確: long sum=0;
2.錯(cuò)誤:while(m)  正確: while(m);

7、fputs#fputs()

8、return#return()

9、4

10、['3*sizeof(double) ']

三、編程題

1、char*proc(char(*a)[81],int m)
{
    char*max;
    int i=0: max=a[0]: for(i=0;i<m;i++) if(strlen(max)<strlen(a[i]))//找出最長的字符串 max=a[i];
    return max;
    //返回最長字符串的地址
}

2、#include <stdio.h>
 
 
void reverse(char* s)
{
    // 獲取字符串長度
    int len = 0;
    char* p = s;
    while (*p != 0)
    {
        len++;
        p++;
    }
   
    // 交換 ...
    int i = 0;
    char c;
    while (i <= len / 2 - 1)
    {
        c = *(s + i);
        *(s + i) = *(s + len - 1 - i);
        *(s + len - 1 - i) = c;
        i++;
    }
}
 
int main()
{
    char s[] = "www.baidu.com";
    printf("'%s' =>\n", s);
    reverse(s);           // 反轉(zhuǎn)字符串
    printf("'%s'\n", s);
    return 0;
}

【解析】質(zhì)數(shù)(prime number)又稱素?cái)?shù),有無限個(gè)。一個(gè)大于1的自然數(shù),除了1和它本身外,不能被其他自然數(shù)整除。

3、#include <stdio.h>
struct message
{
    char a[9];
    double basic;
    double fu;
    double  output;
};
struct message d[100];
int main()
{
    int N;
    double  f[100];
    scanf("%d",&N);
    for(int i=0;i<N;i++)
    {
       scanf("%s %lf %lf %lf",d[i].a,&d[i].basic,&d[i].fu,&d[i].output);
       f[i]=d[i].basic+d[i].fu-d[i].output;
    }
    for(int i=0;i<N;i++)
    {
       printf("%s %.2f\n",d[i].a,f[i]);
    }
   
    return 0;
}

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
c語言練習(xí)題
計(jì)算機(jī)二級(jí)學(xué)習(xí)網(wǎng)址
數(shù)組
【C語言】C語言基礎(chǔ)知識(shí)概念
計(jì)算機(jī)二級(jí)C語言歷年真題及答案
【藍(lán)橋杯系列】第一節(jié) C的基本用法
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服