2023年計(jì)算機(jī)C語言專升本測(cè)試卷(一)
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
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);
}
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è)試卷(二)
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)體類型
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);
}
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è)試卷(三)
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
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");
}
}
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è)試卷(四)
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
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);
}
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è)試卷(五)
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;
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);
}
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è)試卷(六)
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;
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);
}
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è)試卷(七)
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;
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;
}
}
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è)試卷(八)
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)體變量
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]);
}
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;
}
聯(lián)系客服