最新消息:XAMPP默认安装之后是很不安全的,我们只需要点击左方菜单的 "安全"选项,按照向导操作即可完成安全设置。

c语言程序题目单选项_C语言程序设计

XAMPP相关 admin 59浏览 0评论

一、单项选择

1、有以下程序B

void fun(int a,int b,int c)

{ a=3;b=4;c=5;}

main()

{

int x=1,y=2;z=3;

fun(x,y,z);

printf(“%d,%d,%d\n”,x,y,z);

}

输出结果是

A.  3,4,5           B.  1,2,3          C.  5,4,3           D.  3,2,1

2、下列叙述错误的是D

A. if语句允许用户选择是否执行某一个操作

B. if~else语句允许用户选择是否执行两个操作中的某一个操作

C. switch语句允许用户选择执行多个操作的某一个操作

D. 多分支选择结构只能使用switch语句实现

3、有以下定义A

int  a=013;

int  b=15;

则表达式a&b的值为

A.13               B.  1              C.15               D.4

4、下述对C语言字符数组的描述中错误的是C

A. 字符数组可以存放字符串

B. 字符数组中的字符串可以整体输入输出

C. 可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

D. 不可以用关系运算符对字符数组中的字符串进行比较

5、假定p所指对象的值为28,p+1所指对象的值为62,则*p++的值为A

A.28            B.29               C.62                D.63

6、若用数组名作为函数调用时的实参,则实际上传递给形参的是A

A. 数组首元素的地址            B. 数组元素的个数

C. 数组的第一个元素的值        D. 数组中全部元素的值

7、设有如下定义A

structsk

{inta;float b;}data,*p;

如有p=&data; 则对data中的a域的正确引用是

A.  (*p).a       B.  (*p).data.a    C.  p.data.a        D.  p->data.a

8、while(!x)中的!x与下面哪个条件等价B

A. x==0           B. x!=0           C. x==1             D.x!=1

9、设x和y均为逻辑值,则x||y为假的条件是D

A. 其中一个为真    B. 其中一个为假    C. 两者均为真       D. 两者均为假

10、C语言规定为字符串结束标志的是C

A. \n              B. \r              C. \0               D. \o

11、下列程序的输出是B

main()

{

unsigned  a=32765;

a=a+3;

printf(“a=%d\n”,a);

}

A. a=32768             B. a=-32768           C. a=-1         D. a=1

12、执行以下程序段,输出结果为B

main()

{ ints=1,t=1,a=3,b=4;

if(a>0)s++;

if(a>b)t+=s;

else  if(a==b)t=5;

else  t=s++*2;

printf(“%d\n”,t);

}

A.  3                  B.  4                  C. 5            D.  6

13、假定a为一数组名,则下面的哪一种表示有错误B

A. a[i]                B.*a++                C. *a           D. *(a+1)

14、如下列变量均合法定义,则以下合法的赋值表达式是D

A. a=int(3.5)          B. 3=a                C. ++(a+b)       D. a<<=3

15、下面标识符合法的是A

A.  a8b                B. 3ab                 C. if           D.ok?

16、如存在以下程序,则输出结果为B

char  s[]=”\\\12345\\\012”;

printf(“%d\n”,strlen(s));

A.5                    B.6                   C.7              D.14

17、设有以下说明语句C

struct  stu

{ int num;

char xm[10];

float cj;

}s[20];

则数组a所占空间大小为多少字节

A.16                   B. 14                  C .320          D .280

18、设有以下函数C

f(int i)

{ int j=0;

static int s=1;

return(s++)+(++i)+(++j);

}

main()

{int i;

for(i=0;i<2;i++)printf(“%d”,f(0));

}

A.23                  B.35                     C.34            D. 24

19、下列叙述正确的是D

A. C语言源程序可以直接在DOS环境中运行

B.Turbo C系统不提供编译和连接C 程序的功能

C.编译C语言源程序得到目标程序可以直接在DOS环境中运行

D.C语言源程序连接得到的可执行程序可以直接在DOS环境中运行

20、下列叙述错误的是D

A.break语句可以使程序从switch语句中跳出来

B.continue 语句是为了结束本次循环,而不是终止整个循环的执行

C.break语句是为了使程序流程跳出循环体,提前结束循环

D.在switch语句中使用continue 和break语句的作用相同

21、下面的哪一个保留字不能作为函数返回类型(  B    )。

A. long          B.  auto        C.  float        D. char

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

main()

{intk=017;

printf(“%d,%o,%x\n”,k,k,k);

}

A. 17,17,17      B.  17,21,11    C.  15,17,f        D. 15,017,0xf

23、在C语言中,合法的字符常量是(  D   )。

A.  ’\xfg’   B. ’\083’      C.  ”\0”      D.  ’\r’

24、以下程序的输出结果为( B    )。

main()

{charx=012;

printf(“%o\n”,x<<2);

}

A.   10          B.  50           C. 40             D.  48

25、若有以下语句,使得a=’a’,d=9,c=’b’,则输入格式正确的是(u 空格,CR为换行符)(  C   )。

int i;

char  a,b;

scanf(“%c%d%c”,&a,&i,&b);

A.  au9ub        B.  a9ub         C. a9b           D.  a CR 9 CR b

26、C语言程序从(D     )开始执行。

A. 程序中的第一个语句              B. 程序中的第一个函数

C. 程序中的第一个可执行语句        D. 程序中的main函数

27、有如下程序段,其执行后的输出结果为(  B   )。

main()

{inti=8;

while(i>1) {–i; printf(“%d”,i–);}

}

A.  753            B.  7531         C.  8642         D. 864

28、假定a为一维数组,pa是指向数组a的指针变量,则访问a[i]的正确方式为(B     )。

A.  *a+i           B.  *(pa+i)       C. *pa+i        D.   pa+i

29、以下程序运行后,输出结果为(  B    )。

main()

{static char s[]=”ABCDEFGH”,   *t=”ABCDFGH”;

int i;

for (i=0;s[i]==t[i];i++);

printf(“%d\n”,t[i]-s[i]);}

A. 0               B. 1               C. –1          D. 死循环

30、在下列的数组定义中,哪一个有语法错误( C     )。

A. int a[]={1,2,3,4,5};            B. int a[10]={0};

C. int a[][]={0,2,4,6,8};          D. int a[][5]={1,2,3,4,5,6,7};

 

二、填空题

1、若要在程序中使用标准输入输出库函数时,则必须在程序的开始用#include命令中使用stdio.h头文件。

2、设有语句int a=5;则执行语句a+=a-=a*a;后,变量a的值是-40。

3、数学表达式+2x-3y*(x-y)的c语言表达式是(x+y)/(x-y)+2*x-3*y*(x-y)。

4、假定x和y为double型,则表达式x=3,y=x+x/2的值是500000。

5、在每一个c语言程序中都必须包含有这样一个函数,该函数的函数名为main()。

6、函数是c语言程序的基本单位。

7、设有如下定义

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

int *p=arr;

*(p+2)+=2;

printf(“%d,%d\n”,*p,*(p+2));

则输出结果为1.5 。

8、执行以下程序段后,输出结果为35

main()

{int a[]={1,2,3,4,5,6};

int *p=a+2, *q=0;

q=p+2;

printf(“%d%d\n”,*p,*q);

}

9、有如下程序,则其输出结果为5

main()

int a=3,b=-2,c=5;

if(a<b)

if(b<0) c=0;

else c++;

printf(“%d\n”, c);

}

10、下面程序的运行结果是4

main()

{int x=5,y=3;

printf(“%d”,(x++,++y));

}

 

11、假定a是一个字符数组名,则元素a[5]的字节地址为a+5。

12、如有以下程序段

union ss

{int i;

char a;

}s;

s.i=512

s.a=2

printf(“%d”,s.i)

则输出结果为514。

13、以下程序段的输出结果是AB348

#include “string.h”

main()

{char *p,*q,s[80]=”ABCDEFGHIJK”;

p=”1234”;q=”5678”;

strcpy(s+2,p+2);strcpy(s+4,q+3);

printf(“%s”,s);

}

14、结构化程序设计规定的三种基本结构是顺序结构、选择结构和循环结构。

15、以下程序的输出结果是31。

main()

{int a=0,i;

for(i=0;i<5;i++)

switch(i)

{case 0:

case 2:a+=3;

default:a+=5;

}

}

printf(“%d\n”,a);

}

16、c语言程序中的每条基本语句以;作为结束符。

17、设a,b和c都是int型变量,且a=7,b=8,c=9,则下列表达式!((a<b)&&!c||1)的值为0 。

18、设x,y均为int型变量,则执行语句:x=y=5;x++||++y后,y的值为5。

19、表达式(float)25/4的值为6.250000。

20、函数的返回表达式的类型与函数的类型不一致时,则返回值的类型由函数类型决定。

21、有如下程序:

#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循环执行的次数是5。

22、设x、y均为整型变量,且x=8,y=7,则以下语句的输出结果是9,7。

printf(“%d,%d\n”,++x,y++);

23、表达式x=x+1表示成增量表达式为x++或++x。

24、instrlen函数的功能是计算str所指字符的长度,并作为函数值返回。请填空。

intinstrlen (char *str)

{inti;

for(i=0;str[i] 或str[i]!=’\0’;i++);

return (i);

}

25、当不需要函数返回任何值时,则应把该函数类型定义为void。

26、如有以下定义 inta[10]={1,2,3};则数组x在内存中所占字节数是20。

27、若有以下语句

main()

{char*s=”1234\”\067”;

printf(“%s”,s);

输出结果为123”67。

28、若有以下程序段:

main()

{inta=511;

unsigned char *p;

p=(unsigned char*)&a;

printf(“%d”,*p);

}

输出结果为255。

29、若有定义语句 “inta=25,b=10,c=15;”以下语句执行结果是###26,9,15。

if(a++<=25&&b–<=2 && c++)

printf(“***%d,%d,%d\n”,a,b,c);

else  printf(“###%d,%d,%d\n”,a,b,c);

30、设有下列运算符:<<、/、++、&&、<=,其中优先级最高的是++。

三、写出下列程序(程序段)的运算结果

1、main()

{union ss

{char s[2];

int i;

}a;

a.i=123;

a.s[0]=3; a.s[1]=2;

printf(“%d”,a.i);

}—-515

2、void  f(int x,inty, int *p1, int *p2)

{*p1=2*x;  *p2=x*y;}

main()

{int a,b,c,d;

a=9; b=7;

f(a,b,&c,&d);

printf(“%d,%d\n”,c,d);

}—-18,63

3、main()

{int a=3;

while (–a)

printf(“%d”,a–);

}—–2

4、void main()

{ int a=10,b=20;

printf(“%d  %d\n”,a,b);

{int b;

a*=4;

int b=a+35;

printf(“%d %d\n”,a,b);}

printf(“%d  %d\n”,a,b);

}—-10  20

40 75

40  20

5、main()

{inta[10]={7,4,8,6,9,5,3,10,2,1};

int i, max, min;

max=min=0;

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

if (a[max]<a[i])max=i;

else if(a[min]>a[i])min=i;

i=a[max];a[max]=a[9]; a[9]=i;

i=a[min];a[min]=a[0]; a[0]=i;

for(i=0;i<10;i++)  printf(“%5d”,a[i]);

}—-10 4 8 6 9 5 31 2 7

6、f(int a[],int m, int n)

{inti,s=0;

for(i=m;i<n;i+=i+2)

s=s+a[i];

return (s);

}

main()

{intx,a[]={9,8,7,6,5,4,3,2,1};

x=f(a,3,5);

printf(“%d\n”,x);}———–6

7、main()

{charch[2][5]={“3773”,”6363”}, *p[2];

int i,j,s=0;

for(i=0;i<2;i++)

p[i]=ch[i];

for(i=0;i<2;i++)

for(j=0;p[i][j]!=’\0’;j+=2)

s=10*s+p[i][j]-‘0’;

printf(“%d\n”,s);}———3766

8、main()

{inta[5]={1,3,5,7,9},b[3]={2,4,6},*p,*q,i,j;

p=a;q=b;

printf(“\n”);

while(p<a+5&& q<b+3)

if(*p<*q) printf(“%3d”,*p++);

else printf(“%3d”,*q++);

while(p<a+5)printf(“%3d”,*p++);

while(q<b+3)printf(“%3d”,*q++);

}—————1 2 3 4 5 6 7 9

9、void main()

{chara[]=”abacdaabcabagfcad”;

int i1=0,i2=0,i=0;;

while(a[i])

{if(a[i]==’a’) i1++;

if(a[i]==’b’) i2++;

i++;}

printf(“i1=%d,i2=%d\n”,i1,i2);}———–i1=7,i2=3

10、main()

{inta[]={7,4,8,6,9,5,3,10,2,1};

int i,j,k;

for(j=3;j<=9;j++)

{k=a[j];

i=j-3;

while(i>=0 &&a[i]>k) {a[i+3]=a[i];i=i-3;}

a[i+3]=k;

}

for(i=0;i<=9;i++)

printf(“%d ”,a[i]);

}———–1 4 2 3 9 5 6 1 0 8 7

11、void main()

{int s=0,i;

for( i=1;  ; i++)

{if(s>50)  break;

if(i%3==0)  s+=i;

}

printf(“i=%d,s=%d\n”,i,s);

}—————————-i=19,s=63

12、void main()

{int s1=0,s2=0,i;

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

if(i%2)   s1=s1+i;

else s2=s2+i;

printf(“s1=%d,s2=%d\n”,s1,s2);}——————s1=25,s2=20

13、f(int a)

{int b=0;

static c=5;

b=b+3;

c=2*c;

return(a+b+c);

}

main()

{int a=2,i;

for(i=0;i<=2;i++)

printf(“%d”,f(a));

}————–152545

14、main()

{int a,b,c;

a=9; b=5;

c=max(a,b);

printf(“max=%d”,c);

}

int max(int x, int y)

{int z;

if (x>y) z=x;

else z=y;

return (z);

}—————–max=9

15、main()

{int a[3][3]={1,1,1},i,j;

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

for(j=i;j<3;j++)

{a[i][j]=a[i-1][j]+a[i-1][j-1];

a[j][i]=a[j][i]-a[i][j];

}

for(i=1;i<3;i++){printf(“\n”);

for(j=1;j<3;j++)

printf(“%5d”,a[i][j]);

}

}————-0    2

-2    0

 

四、写出下列程序(段)或函数的功能

1、float fac(int n)

{float f;

if(n<0)

printf(“error!”);

else

if(n==0||n==1)f=1;

else f=fac(n-1)*n;

return f;

}

main()

{int n;

float y;

scanf(“%d”,&n);

y=fac(n);

printf(“%d!=%10.0f”,n,y);

}—求n!

2、#include “stdio.h”

main()

{FILE *fp1,  *fp2;

if((fp1=fopen(“name1.dat”,”r”))==NULL)

{printf(“cannotopen file\n”);exit(0);}

if((fp2=fopen(“name2.dat”,”w”))==NULL)

{printf(“cannotopen outfile\n”);exit(0);}

while(!feof(fp1))fputc(fgetc(fp1),fp2);

fclose(fp1);

fclose(fp2);

}—实现文件的复制

3、int f()

{static i=0;

i++;

return i;

}

main()

{int i,s=0;

for(i=0;i<5;i++)

s+=f();

printf(“%d\n”,s);

}—求1到5的和

4、int LA(int *a,int n)

{int s=0,i;

for(i=0;i<n;i++)

s+=a[i];

return s;}

void main(){

int a[]={10,20,30,40,50,60};

int b=LA(a,5);

printf(“b=%d\n”,b);}—求数组a中前5个元素之和

5、int f(int n)

{

int i;

for(i=2;i<=n;i++)

if(n%i==0) return(0);

return  1;

}—判断一个数是否素数

6、void  ch(char str1[],char str2[],char str[])

{int i,j;

for(i=0;str1[i]!=’\0’;i++)

str[i]=str1[i];

for(j=0;str2[j]!=’\0’;j++)

str[i+j]=str2[j];

str[i+j]=’\0’;

}

main()

{char s1[80],s2[80],s[80];

scanf(“%s”,s1);

scanf(“%s”,s2);

ch(s1,s2,s);

printf(“The new string is%s\n”,s);

} —将字符串s1和s2合并复制到字符串s中

7、#define PI3.14159

#define S(R)  PI*R*R

#define L(R)   2*PI*R

main()

{int r,s,l;

scanf(“%d”,&r);

s=S(r);

l=L(r);

printf(“s=%d\nl=%d\n”,s,l);

}——-求半径为r的圆的周长的半径

8、#include<math.h>

int SB(int x)

{int a=(int)sqrt(x);

int i=2;

while (i<=a){

if (x%i==0) break;

i++;}

if(i<=a)  return 0; else return 1;}–判断x是否为素数

9、main()

{int n;

for(n=1;n<=1000;n++)

{if(n%5!=0)

continue;

printf(“%d”,n);

}

}—求1-1000中所有5的倍数

10、#include<string.h>

void main()

{char*a[5]={“student”,”worker”,”cadre”,”apple”,”peasent”};

char *p1;

int i;

p1=a[0];

for( i=0;i<5;i++)

if(strcmp(a[i],p1)>0)p1=a[i];

printf(“%s\n”,p1);}—求字符串数组a中最大的字符串

11、floatave(a,n)

float a[];

intn;

{inti;

float s;

for(i=0,s=0;i<n;i++)

s=s+a[i];

return (s/n);

}———-求数组a中前n个数的平均

12、SD(int a[],int n, int k)

{intb=0;

for(int i=0;i<n;i++)

if(a[i]==k) b++;

return (b);}——–在数组前n个元素中,查找与k相等的元素个数

13、# include “stdio.h”

main()

{FILE*fp1, *fp2;

if((fp1=fopen(“name1.dat”,”r”))==NULL)

{printf(“open error\n”); exit(0);}

if((fp2=fopen(“name2.dat”,”w”))==NULL)

{printf(“open error\n”); exit(0);}

while(!feof(fp1))

fputc(fgetc(fp1),fp2);

fclose(fp1);

fclose(fp2);

}————-把name1.dat文件内容复制到name2.dat中

14、doubleSA(double x,int n)

{intp=1,s=1,i;

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

{p*=x;

s+=1.0*p/(i+1);}

return s;

}———–求1+x/2+x2/3+……+xn/(n+1)

15、main()

{inti, s=0;

static c=0;

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

{c=c+i;

s=s+c;

}

printf(“%d”,s);

}———–求1+(1+2)+(1+2+3)+……+(1+2+……+9)的和

 

五、编程题

1、编写求1!+2!+3!+4!+5!+……+n!的函数。

float  f(int n)

{

float s=0,p=1;

int i;

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

{p=p*i;

s=s+p;

}

return s;

}

2、输入3个整数,按由大到小的顺序输出。

main()

{  int a,b,c,t;

scanf(“%d%d%d”,&a,&b,&c);

if(a<b){t=a;a=b;b=t;}

if(a<c){t=a;a=c;c=t;}

if(b<c){t=b;b=c;c=t;}

printf(“\n%d,%d,%d”,a,b,c);

}

3、用选择法对数组中10个整数按由大到小排序。

void sort (int a[], int n)

{

int i,j,k,t;

for(i=0;i<n-1;i++)

{k=i;

for(j=i+1;j<n;j++)

if (a[j]>a[k])k=j;

t=a[k];a[k]=a[i];a[i]=t;}

}

main()

{int a[10],i;

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

scanf(“%d”,&a[i]);

sort(a,10);

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

print(“%d”,a[i]);

printf(“\n”);

}

4、编写一个函数求两个非负整数a和b最大公约数。

int SA(int a, int b);

{int t ;

while(b!=0)

{t=a%b;a=b;b=t;}

return a;}

5、用冒泡法对10个数进行排序。

main()

{

int a[10];

int i,j,t;

printf(“please input 10 numbers:\n”);

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

scanf(“%d”,&a[i]);

for (i=0;i<9;i++)

for (j=9;j>i;j–)

if (a[j]<a[j-1])

{t=a[j];a[j]=a[j-1];a[j-1]=t;}

printf(“\n”);

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

printf(“%d”,a[i]);}

6、输入两个正数u和v,求其最大公约数。(用函数完成)

int f(int u, int v)

{

int r;

while ((r=u%v)!=0)

{u=v;v=r;}

return(v);

}

main()

{int u,v,h;

scanf(“%d,%d”,&u,&v);

h=f(u,v);

printf(“%d\n”,h);

}

转载请注明:XAMPP中文组官网 » c语言程序题目单选项_C语言程序设计