?2022年遼寧專升本C語言程序設計模擬習題(3)
摘要:本文2022年遼寧專升本C語言程序設計模擬習題(3),內(nèi)容包含指針、結(jié)構(gòu)體文件相關選擇題和填空題等題目。供大家報考參考,下面是具體內(nèi)容。
指針
一 單項選擇題(每題2分,共40分)
1 以下敘述中錯誤的是___。
A 在程序中凡是以“#”開始的語句行都是預處理命令行
B 預處理命令行的最后不能以分號表示結(jié)束
C #define MAX是合法的宏定義命令行
D C程序?qū)︻A處理命令行的處理是在程序執(zhí)行的過程中進行的
2 若程序中有宏定義行:#define N 100 ,則以下敘述中正確的是___。
A 宏定義行中定義了標識符N的值為整數(shù)100
B 在編譯程序?qū)源程序進行預處理時用100替換標識符N
C 對C源程序進行編譯時用100替換標識符N
D 在運行時用100替換標識符
3 若有如下宏定義:
#define N 2
#define y(n) ((N+1)*n)
則執(zhí)行下列語句:z=4*(N+y(5));后的結(jié)果是___。
A 語句有錯誤 B z值為68 C z值為60 D z值為180
4 以下程序運行后的輸出結(jié)果是___。
#define F(X,Y) (X)*(Y)
main()
{ int a=3,b=4;
printf("%d\n",F(a++,b++));
}
A 12 B 15 C 16 D 20
5 以下程序運行后的輸出結(jié)果是___。
#define f(x) (x*x)
main()
{ int i1,i2;
i1=f(8)/f(4); i2=f(4+4)/f(2+2);
printf("%d,%d\n",i1,i2);
}
A 64,28 B 4,4 C 4,3 D 64,64
6 若已定義a為int型變量,則___是對指針變量p的正確說明和初始化。
A int p=&a; B int *p=a; C int *p=*a; D int *p=&a;
7 已知下列說明語句:
static int a[]={2,4,6,8}
static int *p[]={a,a+1,a+2,a+3};
int **q;
q=p;
則表達式**(q+2)的值是___。
A 6 B 2 C 4 D 8
8 下面是一個初始化指針的語句:int *px=&a;,其中指針變量的名字應該___。
A *px B a C px D &a
9 若指針px為空指針,則___。。
A px指向不定 B px的值為零 C px的目標為零 D px的地址為零
10 對下語句int *px[10];,下面正確的說法是___。
A px是一個指針,指向一個數(shù)組,數(shù)組的元素是整數(shù)型。
B px是一個數(shù)組,其數(shù)組的每一個元素是指向整數(shù)的指針。
C A和B均錯,但它是C語言的正確語句。
D C語言不允許這樣的語句。
11 具有相同基類型的指針變量p和數(shù)組y,下列寫法中不合法的是___。
A p=y B *p=y[i] C p=&y[i] D p=&y
12 已知static int a[]={5,4,3,2,1},*p[]={a+3,a+2,a+1,a},**q=p; ,
則表達式 *(p[0]+1)+**(q+2) 的值是___。
A 5 B 4 C 6 D 7
13 說明語句int *(*p)();的含義為___。
A p是一個指向int型數(shù)組的指針
B p是指針變量,它構(gòu)成了指針數(shù)組
C p是一個指向函數(shù)的指針,該函數(shù)的返回值是一個整型
D p是一個指向函數(shù)的指針,該函數(shù)的返回值是一個指向整型的指針
14 設有如下程序段
char s[20]="Beijing",*p; p=s;
則執(zhí)行p=s;語句后,以下敘述正確的是___。
A 可以用*p表示s[0]
B s數(shù)組中元素個數(shù)和p所指字符串長度相等
C s和p都是指針變量
D 數(shù)組s中的內(nèi)容和指針變量p中的內(nèi)容相同
15 設int型變量i、n均已定義,指針變量s1、s2各指向一個字符串。在for(i=0;i<n;i++)循環(huán)中,下列語句用以實現(xiàn)將s2所指字符串中前n個字符復制到s1所指字符串中,其中代碼正確的是___。< p="">
A *s1++=*s2++; B s1[n-1]=s2[n-1];
C *(s1+n-1)=*(s2+n-1); D *(++s1)=*(++s2);
16 給出下列程序的運行結(jié)果___。
#include
void main()
{ static char a[]="language",b[]="program";
char *ptr1=a,*ptr2=b;
int k;
for(k=0;k<7;k++)
if(*(ptr1+k)==*(ptr2+k)) printf("%c",*(ptr1+k));
}
A gae B ga C language D 有語法錯誤
17 以下程序執(zhí)行后的輸出結(jié)果是___。
void fun1(char *p)
{ char *q;
q=p;
while(*q!='\0'){ (*q)++; q++; }
}
main()
{ char a[]={"Program"},*p;
p=&a[3]; fun1(p); printf("%s\n",a);
}
A Prohsbn B Prphsbn C Progsbn D Program
18 以下程序執(zhí)行后的輸出結(jié)果是___。
void swap(char *x,char *y)
{ char t;
t=*x; *x=*y; *y=t;
}
main()
{ char *s1="abc",*s2="123";
swap(s1,s2); printf("%s,%s\n",s1,s2);
}
A 123,abc B abc,123 C 1bc,a23 D 321,cba
19 以下程序執(zhí)行后的輸出結(jié)果是___。
main()
{ char *p[]={"3697","2584"};
int i,j; long num=0;
for(i=0;i<2;i++)
{ j=0;
while(p[i][j]!='\0')
{ if((p[i][j]-'0')%2) num=10*num+p[i][j]-'0';
j+=2;
}
}
printf("%d\n",num);
}
A 35 B 37 C 39 D 3975
20 下列程序運行后的輸出結(jié)果是___。
void main()
{ char str[]="The_Microsoft"; int n=4;
sub(str,0,n-1);
sub(str,0,strlen(str)-1);
printf("%s\n",str);
}
sub(str,n1,n2)
char *str;
int n1,n2;
{ char c,*p;
p=str+n2;
str=str+n1;
while(str<p)< p="">
{ c=*str; *str=*p; *p=c;
str++; p--;
}
}
A tfosorciMThe_ B. ehT_Microsoft C tfosorciM_ehT D. Microsoft_The
二 填空題(每空3分,共30分)
1 以下程序的定義語句中,x[1]的初值是 ① ,程序運行后輸出的內(nèi)容是 ② 。
main()
{ int x[]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},*p[4],i;
for(i=0; i<4; i++)
{ p[i]=&x[2*i+1]; printf("%d", p[i][0]); }
printf("\n");
}
2 以下程序的輸出結(jié)果是 ③ 。
void swap(int *a, int *b)
{ int *t;
t=a; a=b; b=t;
}
main()
{ int i=2,j=5,*p=&i,*q=&j;
swap(p,q); printf("%d %d\n",*p,*q)
}
3 以下程序的輸出結(jié)果是 ④ 。
main()
{ int a[5]={2,4,6,8,10}, *p;
p=a; p++;
printf("%d", *p);
}
4 以下程序的輸出結(jié)果是__⑤__。
#define M 5
#define N M+M
main()
{ int k;
k=N*N*5; printf("%d\n",k);
}
5 若有定義語句:int a[4]={0,1,2,3},*p;p=&a[1];則++(*p)的值是 ⑥ 。
6 若有定義:int a[2][3]={2,4,6,8,10,12};則*(&a[0][0]+2*2+1)的值是 ⑦ ,*(a[1]+2)的值是 ⑧ 。
7 若有程序段:
int *p[3],a[6],i;
for(i=0;i<3;i++) p[i]=&a[2*i] ;
則*p[0]引用的是a數(shù)組元素 ⑨ ,*(p[1]+1)引用的是a數(shù)組元素 ⑩ 。
三 程序填空題(每空3分,共30分)
1 下面函數(shù)的功能是從輸入的十個字符串中找出最長的那個串,請?zhí)羁帐钩绦蛲暾?/p>
void fun(char str[10][81],char **sp)
{ int i;
*sp = 【1】 ;
for(i=1;i<10; i++)
if(strlen(*sp)<strlen(str[i])) p="" ;
}
2 下面函數(shù)的功能是將一個整數(shù)字符串轉(zhuǎn)換為一個整數(shù),例如:"1234"轉(zhuǎn)換為1234,請?zhí)羁帐钩绦蛲暾?/p>
int chnum(char *p)
{ int num=0,k,len,j;
len=strlen(p);
for( ; 【3】 ; p++)
{ k= 【4】 ; j=(--len);
while( 【5】 ) k=k*10;
num=num+k;
}
return (num);
}
3 下面函數(shù)的功能使統(tǒng)計子串substr在母串str中出現(xiàn)的次數(shù),請?zhí)羁帐钩绦蛲暾?/p>
int count(char *str, char *substr)
{ int i,j,k,num=0;
for(i=0; 【6】 ;i++)
for( 【7】 ,k=0;substr[k]==str[j];k++,j++)
if(substr [ 【8】 ]==’\0’)
{ num++ ; break ; }
return (num);
}
4 下面函數(shù)的功能是用遞歸法將一個整數(shù)存放到一個字符數(shù)組中,存放時按逆序存放,如483存放成“384”,請?zhí)羁帐钩绦蛲暾?/p>
void convert(char *a, int n)
{ int i;
if((i=n/10)!=0) convert( 【9】 ,i);
else *(a+1)=0;
*a= 【10】 ;
}
結(jié)構(gòu)體 文件
單項選擇題(1~8題每題5分,9~18題每題6分,共100分)
1 有以下說明語句,對結(jié)構(gòu)變量中成員age的正確引用是___。
struct student
{ int age; int sex; }stud1,*p;
A p->age B student.age C *p.age D stud1.student.age
2 說明語句如下,則正確的敘述是___。
union data { int x; char y; float z; }a;
A data和a均是共用體類型變量
B a所占內(nèi)存長度等于其成員x、y、z各在內(nèi)存所占長度之和
C 任何情況下,均不能對a作整體賦值
D a的地址和它的各成員地址都是同一地址
3 共用體成員的數(shù)據(jù)類型___。
A 相同 B 可以不同也可以相同
C 長度一樣 D 是結(jié)構(gòu)體變量
4 由系統(tǒng)分配和控制的標準輸出文件為___。
A 鍵盤 B 磁盤 C 打印機 D 顯示器
5 下列關于C語言數(shù)據(jù)文件的敘述中正確的是 。
A C語言只能讀寫文本文件
B C語言只能讀寫二進制文件
C 文件由字符序列組成,可按數(shù)據(jù)的存放形式分為二進制文件和文本文件
D 文件由二進制數(shù)據(jù)序列組成
6 若要用fopen函數(shù)建一個新的二進制文件,該文件要既能讀也能寫,則文件方式字符串應該為___。
A "ab+" B "wb+" C "rb+" D "ab"
7 下列程序運行后的輸出結(jié)果是___。
struct s { int n; char *c; }*p;
char d[]={'a','b','c','d','e'};
struct s a[]={10,&d[0],20,&d[1],30,&d[2],40,&d[3],50,&d[4]};
#include
main()
{ p=a;
printf("%d\n",++p->n);
printf("%d\n",(++p)->n);
printf("%c\n",++(*p->c));
}
A 11 B 11 C 10 D 10
20 20 20 20
c b c b
8 已知
struct student
{ char *name; int student_no; char grade; };
struct student temp,*p=&temp;
temp.name="chou";
則下面不正確的是___。
表達式 值
A p->name chou
B (*p)->name+2 h
C *p->name+2 e
D *(p->name+2) o
9 下面程序運行后,其輸出結(jié)果是___。
#include
struct tree
{ int x; char *s; }t;
func(struct tree t)
{ t.x=10; t.s="computer"; return 0; }
main()
{ t.x=1; t.s="minicomputer";
func(t); printf("%d,%s\n",t.x,t.s);
}
A 10,computer B 1,minicomputer C 1,computer D 10,minicomputer
10 下列程序的輸出結(jié)果是___。
#include
main()
{ union
{ int i[2];
long k;
char c[4];
}t,*s=&t;
s->i[0]=0x39;
s->i[1]=0x38;
printf("%lx ",s->k);
printf("%c\n",s->c[0]);
}
A 390038 39 B 380039 9 C 3938 38 D 3839 8
11 若已定義了如下的共用體類型變量x,則x所占用的內(nèi)存字節(jié)數(shù)為___。
union data { int i; char cha; double f; }x;
A 7 B 11 C 8 D 10
12 如下說明語句:
enum A {A0=1,A1=3,A2,A3,A4,A5};
enum A B;
執(zhí)行 B=A3; printf("%d\n",B); 輸出是___。
A 5 B 3 C 2 D 編譯時出錯
13 有以下說明語句,則結(jié)構(gòu)變量s的成員num的不正確引用是___。
struct student
{ int num;
int age;
}s,*p;
A s.num B *p.num C p->num D (*p).num
14 以下各選項試圖說明一種新的類型名,其中正確的是 。
A typedef integer int; B typedef integer=int;
C typedef int integer; D typedef int=integer;
15 運行下面程序,其輸出結(jié)果是___。
#include
struct sample
{ int a,b; char *ch; };
main()
{ struct sample arg;
arg.a=1000;arg.b=100;arg.ch="abcd";
f1(arg);
}
f1(struct sample param)
{ param.a+=param.b;
param.ch[2]='x';
printf("%d\n",param.a);
printf("%s\n",param.ch);
}
A 1000 B 1100 C 1100 D 100
abcd abcd abxd abcd
16 fwrite函數(shù)的一般調(diào)用形式是___。
A fwrite(buffer,count,size,fp); B fwrite(fp,size,count,buffer);
C fwrite(fp,count,size,buffer); D fwrite(buffer,size,count,fp);
17 C語言文件操作函數(shù)fread(buffer,size,n,fp)的功能是___。
A 從文件fp中讀n個字節(jié)存入buffer
B 從文件fp中讀n個大小為size字節(jié)的數(shù)據(jù)項存入buffer中
C 從文件fp中讀入n個字節(jié)放入大小為size字節(jié)的緩沖區(qū)buffer中
D 從文件fp中讀入n個字符數(shù)據(jù)放入buffer中
18 若有如下定義:
struct data
{ int i; char ch; float f; }b;
則結(jié)構(gòu)體變量b占用內(nèi)存的字節(jié)數(shù)是 。
A 7 B 4 C 1 D 2
延伸閱讀
- 2022年遼寧專升本思想道德修養(yǎng)與法律基礎模擬題(九)
- 2022年遼寧專升本思想道德修養(yǎng)與法律基礎模擬題(八)
- 2022年遼寧專升本思想道德修養(yǎng)與法律基礎模擬題(七)
- 2022年遼寧專升本思想道德修養(yǎng)與法律基礎模擬題(六)
- 2022年遼寧專升本思想道德修養(yǎng)與法律基礎模擬題(五)
- 2022年遼寧專升本思想道德修養(yǎng)與法律基礎模擬題(四)
專升本微信公眾號
掃碼添加
專升本備考資料免費領取
去領取