文档库 最新最全的文档下载
当前位置:文档库 › C语言编程大题

C语言编程大题

C语言编程大题
C语言编程大题

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

a)所有成员一直驻留在内存中

b)只有一个成员驻留在内存中

c)部分成员驻留在内存中

d)没有成员驻留在内存中

2. 以下不能正确定义二维数组的选项是(A )

A. int a[2][] = {{1, 2}, {3, 4}};

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

C. int a[2][2] = {{1}, 2, 3};

D. int a[2][2] = {{1}, {2}};

3. 一个C语言程序是由(函数)组成

4.从键盘上输入某字符串时,不可使用的函数是(A).

(A).getchar()

(B).gets()

(C).scanf()

(D).fread()

5.若要说明一个类型名STP,使得定义语句STP s等价于char *s,以下选项中正确的是(D)

A) typedef STP char *s; B) typedef *char STP;

C) typedef stp *char; D) typedef char* STP

6.设a,b均为double型常量,且a=5.5,b=2.5则表达式(int)a+b/b的值是(6)

7.若有定义:int a[5],*p=a; 则对a数组元素地址正确引用的是(B)。

A &a[5]

B p+2

C a++

D &a

8.C语言中while 和do-while 循环的主要区别是(A).

(A).do-while 的循环体至少无条件执行一次

(B).while的循环控制条件比do-while 的循环控制条件更严格

(C).do-while 允许从外部转到循环体内

(D).do-while 的循环体不能是复合语句

9.以下叙述正确的是(D).

(A).do-while语句构成的循环不能用其它语句构成的循环来代替.

(B).do-while语句构成的循环只能用break语句退出.

(C).用do-while语句构成的循环,在while后的表达式为非零时结束循环. (D).用do-while语句构成的循环,在while后的表达式为零时结束循环

10.对于void类型函数,调用时不可作为

(D)。

A:自定义函数体中的语句

B:循环体里的语句

C:if语句的成分语句

D:表达式

11.若有以下定义:char s='\092'; 则该语句(B)。

A:使s的值包含1个字符

B:定义不合法,s的值不确定

C:使s的值包含4个字符

D:使s的值包含3个字符

12.下面字符序列中可用作c语言程序标识符得一组字符序列是(D)

a)S.B,sum,aberage,_above

b)glass,month,cccc_1,4times

c)#aq,&77y,sprit,teach_01

d)W18,w_1_8,name,cf_1

13.以下叙述正确的是(C).

(A).在C程序中,main函数必须位于程序的最前面

(B).C程序的每行中只能写一条语句

(C).C语言本身没有输入输出语句

(D).在对一个C程序进行编译的过程中,可发现注释中的拼写错误

14.下列语句的结果是(D).

main()

{ int j;

j=3;

printf("%d,",++j);

printf("%d",j++);

}

(A).3,3

(B).3,4

(C).4,3

(D).4,4 15.以下运算符中优先级最低的是(C)

A:&&

B:&

C:||

D:|

16.C语言源程序的基本单位是(函数)

17.下面有关for 循环的正确描述是(D).

(A).for 循环只能用于循环次数已经确定的情况

(B).for 循环是先执行循环循环体语句,后判断表达式

(C).在for 循环中,不能用break 语句跳出循环体

(D).for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来

18..先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是(A).

(A).c='a';

(B).c="a";

(C).c="97";

(D).C='97'

19.下面选择中正确的赋值语句是(设char a[5],*p=a;)(A)。

A:p="abcd";

B:a="abcd";

C:*p="abcd";

D:*a="abcd";

20.下列语句中,不正确的是(C)。

A:static char a[2]={1,2};

B:static int a[2]={'1','2'};

C:static char a[2]={'1','2','3'};

D:static char a[2]={'1'};

21.若k为int型变量,则以下程序段的执行结果是(B).

k=-8567; printf("|%06D|\n",k);

(A).格式描述符不合法,输出无定值

(B).输出为|%06D|

(C).输出为|0-8567|

(D).输出为|-8567|

22.在执行fopen函数时,ferror函数的初值是(0)

23.以下不能正确定义二维数组的选项是

(D).

(A).int a[2][2]={{1},{2}};

(B).int a[][2]={1,2,3,4};

(C).int a[2][2]={{1},2,3};

(D).int a[2][]={{1,2},{3,4}};

24.以下不符合C语言语法的赋值语句是(A)。

A:a=1,b=2

B:++j;

C:a=b=5;

D:y=(a=3,6*5);

25.以下正确的说法是(B)。

A:用户若需调用标准库函数,调用前必须重新定义

B:用户可以重新定义标准库函数,若如此,该函数将失去原有含义

C:系统根本不允许用户重新定义标准库函数

D:用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调

26.若x=2,y=3则x&y的结果是(B)。

A:0

B:2

C:3

D:5

27.下列叙述中正确的是(D)。

A:C语言编译时不检查语法

B:C语言的子程序有过程和函数两种

C:C语言的函数可以嵌套定义

D:C语言所有函数都是外部函数

28.假设所有变量均为整型,则表达式(a=2,b=5,a++,b++,a+b)的值是(C)

A、7

B、8

C、9

D、10

29.运算符优先级:算术>关系>赋值

30.C语言中的标识符只能由字母、数字和下划线3中字符组成,且第一个字符必须为(C)

A)必须为字母

B)必须为下划线

C)必须为字母或下划线

D)可以是字母、数字和下划线中的任意一种字符

31.下列运算符中,不属于关系运算符的是(D)

A.<

B.>=

C.==

D.!

32.用下列语句定义a,b,c,然后执行b=a、c='b'+b,则b,c的值是(C)。

long a=0xffffff;

int b; char c;

A:0ffffff 和0x61

B:-1和98

C:-1和97

D:指向同一地址

33.函数ftell(fp)作用是:(A)

A.得到流式文件中的当前位置

B.移动流式文件的位置指针

C.初始化流式文件的位置指针

D.以上答案均正确

34.以下叙述中错误的是(A)

A.可以通过typedef增加新的类型

B.可以用typedef将已存在的类型用一个新的名字来代表

C.用typedef定义新的类型名后,原有类型名仍有效

D.用typedef可以为各种类型起别名,但不能为变量起别名35.下面叙述中正确的是(C)

A对于用户自己定义的函数,在使用前必须加以声明

B声明函数时必须明确其参数类型和返回类型

C函数可以返回一个值,也可以什么值也不返回

D空函数在不完成任何操作,所以在程序设计中没有用处

36.若有说明:int a[3][4];则数组a中各元素是(C)

a.可在程序的运行阶段得到初值0

b.可在程序的编译阶段得到初值0

c.不能得到确定的值

d.可在程序编译或运行阶段得到初值0

37.C语言中while 和do-while 循环的主要区别是(A)。

A:do-while 的循环体至少无条件执行一次

B:while的循环控制条件比do-while 的循环控制条件更严格

C:do-while 允许从外部转到循环体内

D:do-while 的循环体不能是复合语句

38.若有下列定义,则对a数组元素地址的正确引用是(B)。

int a[5],*p=a;

A:&a[5]

B:p+2

C:a++

D:&a

39.若已定义x和y为double类型,则表达式x=1,y=x+3/2 的值是(C)。

A:1

B:2

C:2.0

D:2.5

40.以下叙述正确的是(C).

(A).在C程序中,main函数必须位于程序的最前面

(B).C程序的每行中只能写一条语句

(C).C语言本身没有输入输出语句

(D).在对一个C程序进行编译的过程中,可发现注释中的拼写错误

41.设a和b均为double型常量,且a=5.5、b=2.5,则表达式(int)a+b/b的值是(D)

A) 6.500000

B) 6

C) 5.500000

D) 6.000000

42.以下运算符中,优先级最高的运算符是

(B).

A ?:

B ++

C &&

D ,

-【程序设计】

-------------------------------------------------

功能:编写函数fun计算下列分段函数的值:

x^2+x+6 x<0且x≠-3

f(x)= x^2-5x+6 0≤x<10且x≠2及x≠3

x^2-x-1 其它

------------------------------------------------*/

#include "stdio.h"

float fun(float x)

{ /**********Program**********/

float y;

if (x<0 && x!=-3.0)

y=x*x+x+6;

else if(x>=0 && x<10.0 && x!=2.0 && x!=3.0)

y=x*x-5*x+6;

else y=x*x-x-1;

return y;

/********** End **********/

}

main()

{ float x,f;

printf("Input x=");

scanf("%f",&x);

f=fun(x);

printf("x=%f,f(x)=%f\n",x,f);

getch();

yzj();

}

--------------------------------------------------

功能:从键盘上输入任意实数,求出其所对应的函数值。

z=e的x次幂(x>10)

z=log(x+3) (x>-3)

z=sin(x)/((cos(x)+4)

------------------------------------------------*/

#include

#include

double y(float x)

{ /**********Program**********/ double z;

if(x>10) z=exp(x);

else if(x>-3) z=log(x+3);

else z=sin(x)/(cos(x)+4);

return(z);

/********** End **********/

}

main()

{ float x;

scanf("%f",&x);

printf("y=%f\n",y(x));

yzj();

getch();

}

功能:编写函数判断一个整数能否同时被3和5整除,若能

则返回值为1,否则为0。调用该函数求出15~300之

间能同时被3和5整除的数的个数。------------------------------------------------*/

#include "stdio.h"

int sum(int n)

{ /**********Program**********/

if(n%3==0&&n%5==0) return(1);

return(0);

/********** End **********/

}

main()

{ int i,s=0;

for(i=15;i<=300;i++)

if(sum(i)==1) s=s+1;

printf("s=%d\n",s);

yzj();

getch();}

------------------------------------------------*/

功能:能计算从1开始到n的自然数的和,n由键盘输入,

并在main()函数中输出。

------------------------------------------------*/

#include "stdio.h"

int fun(int n)

{ /**********Program**********/

int sum,i;

sum =0;

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

{sum=sum+i;}

return(sum);

/********** End **********/

}

main()

{ int m;

printf("Enter m: ");

scanf("%d", &m);

printf("\nThe result is %d\n", fun(m)); yzj();

getch();

}

------------------------------------------------*/

功能:求1到w之间的奇数之和。(w是大于等于100小于等

于1000的整数)

------------------------------------------------*/

#include "stdio.h"

#include"conio.h"

long fun(int w)

{ /**********Program**********/

long y=0;

int i;

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

if(i%2==1)y+=i;

return y;

/********** End **********/

}

main()

{ int m;

printf("Enter m: ");

scanf("%d", &m);

printf("\nThe result is %ld\n", fun(m)); yzj();

getch();

}

功能:求1到100之间的偶数之积。

------------------------------------------------*/

#include "stdio.h"

double fun(int m)

{ /**********Program**********/ double y=1;

int i;

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

if(i%2==0)y*=i;

return y;

/********** End **********/

}

----------------------------------------------

功能:若x、y为奇数,求x到y之间的奇数和;若x、y为偶

数,则求x到y之间的偶数和。

------------------------------------------------*/

#include "stdio.h"

main()

{ int s,i,j;

s=fun(1,1999)-fun(2,1998);

printf("s=%d\n",s);

getch();

yzj();

}

int fun(int x,int y)

{ /**********Program**********/

int i,s=0;

for(i=x;i<=y;i+=2)

s=s+i;

return s;

/********** End **********/

}

--------------------------------------------------

功能:根据整型形参m,计算如下公式的值:y=1/5+1/6+1/7+1/8+1/9+1/10...+1/(m+5)

例如:若m=9,则应输出:1.168229

------------------------------------------------*/

#include "stdio.h"

double fun(int m)

{ /**********Program**********/ double y=0;

int i;

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

{y+=1.0/(i+5); }

return(y);

/********** End **********/

}

main()

{ int n;

clrscr();

printf("Enter n: ");

scanf("%d", &n);

printf("\nThe result is %1f\n", fun(n)); getch();

yzj();

}

--------------------------------------------------

功能:根据整型形参m,计算如下公式的值:y=1/2+1/4+

1/6+...+1/2m 。

例如:若m=9,则应输出:1.414484

------------------------------------------------*/

#include "stdio.h"

double fun(int m)

{ /**********Program**********/

double y=0;

int i;

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

{y+=1.0/(2*i); }

return(y);

/********** End **********/

}

main()

{ int n;

clrscr();

printf("Enter n: ");

scanf("%d", &n);

printf("\nThe result is %1f\n", fun(n)); yzj();

getch();

}

--------------------------------------------------

功能:编写函数求表达式的和(n的值由主函数输入)。

1-1/2+1/3-1/4+......+1/m

例如:当n=20时,表达式的值为0.668771。------------------------------------------------*/

#include "stdio.h"

float sum(int n)

{ /**********Program**********/

float s=0;

int i,k=1;

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

{ s=s+k*1.0/i;

k=-k;

}

return(s);

/********** End **********/

}

main()

{ int n;

scanf("%d",&n);

printf("sum=%f\n",sum(n));

yzj();

getch();

}

--------------------------------------------------

功能:求一分数序列2/1,3/2,5/3,8/5,13/8,21/13…

的前n项之和。

说明:每一分数的分母是前两项的分母之和,每一分数的

分子是前两项的分子之和

例如:求前20项之和的值为32.660259。------------------------------------------------*/

#include "stdio.h"

float fun(int n)

{ /**********Program**********/

int i;

float f1=1,f2=1,f3,s=0;

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

{f3=f1+f2;

f1=f2;

f2=f3;

s=s+f2/f1;

}

return s;

/********** End **********/

}

main() { float y;

y=fun(20);

printf("y=%f\n",y);

yzj();

getch();

}

-----------------------------------------------

功能:求Sn=a+aa+aaa+aaaa+a…a的值,其中a是一个数字-----------------------------------------------

#include

void main( )

{int n,i,a,sum=0,t;

scanf("%d,%d",&a,&n);

t=a;

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

{sum=sum+t; t=t*10+a;}

printf("sum=%d\n",sum);

}

--------------------------------------------------

功能:用函数求fibonacci数列前n项的和。说明:fibonacci数列为数列的第一项值为1,第二项值也

为1,从第三项开始,每一项均为其前面相邻两项

的和。

例如:当n=28时,运行结果:832039

------------------------------------------------*/

#include "stdio.h"

long sum(long f1,long f2)

{ /**********Program**********/

long f,k=f1+f2;

int i;

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

{f=f1+f2;

k=k+f;

f1=f2;

f2=f;

}

return(k);

/********** End **********/

}

main()

{ long int f1=1,f2=1;

clrscr();

printf("sum=%ld\n",sum(f1,f2));

yzj();

getch();

}

-----------------------------------------------

功能:编写函数fun求1!+2!+3!+ …… +n!的和,在main函

数中由键盘输入n值,并输出运算结果。请编写fun

函数。

例如:若n值为5,则结果为153。

------------------------------------------------*/

#include

float fun(int n)

{ /**********Program**********/

int i;

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

{f=f*i;

s=s+f;}

return s;

/********** End **********/

}

main()

{ int i,n;

long int result;

scanf("%d",&n);

result=fun(n);

printf("%ld\n",result);

yzj();

}

--------------------------------------------------

功能:计算并输出给定整数n的所有因子之和(不包括1与

自身)。

注意:n的值不大于1000。

例如:n的值为855时,应输出704。

------------------------------------------------*/

#include "stdio.h"

int fun(int n)

{ /**********Program**********/

int s=0,i;

for(i=2;i

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

return s

/********** End **********/

}

main()

{ printf("s=%d\n",fun(855));

yzj();

getch();

}

--------------------------------------------------

功能:从键盘输入一个大于3的整数,调用函数fun判断

其是否素数,然后在main函数中输出相应的结论

信息。

例如:7是素数,8不是素数。请编写fun 函数。素数是

仅能被1和自身整除的数

-------------------------------------------------*/

#include "stdio.h"

main()

{ int m,flag;

printf("input an integer:");

scanf("%d",&m);

flag=fun(m);

if(flag)

printf("%d is a prime.\n",m);

else

printf("%d is not a prime.\n",m); yzj();

}

int fun(int n)

{ /**********Program**********/

int i;

int j;

j= 1;

for(i=2;i

}

return j;

/********** End **********/

}

--------------------------------------------------

功能:求给定正整数n以内的素数之积。(n<28)

------------------------------------------------*/

#include "stdio.h"

#include"conio.h"

long fun(int n)

{ /**********Program**********/

long i,k;

long s=1;

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

{for(k=2;k

if(i%k==0)break;

if(k==i)s=s*i;

}

return s;

/********** End **********/

}

--------------------------------------------------

功能:调用函数fun判断一个三位数是否"水仙花数"。

在main函数中从键盘输入一个三位数,并输

出判断结果。请编写fun函数。

说明:所谓"水仙花数"是指一3位数,其各位数字立方和

等于该数本身。

例如:153是一个水仙花数,因为153=1+125+27。

------------------------------------------------*/

#include "stdio.h"

int fun(int n)

{ /**********Program**********/

int bw,sw,gw;

bw=n/100;sw=(n-bw*100)/10;gw=n%1 0;

if(n==bw*bw*bw+sw*sw*sw+gw*gw*g w) return 1;

else return 0

/********** End **********/

}

main()

{ int n,flag;

scanf("%d",&n);

flag=fun(n);

if(flag)

printf("%d 是水仙花数\n",n);

else

printf("%d 不是水仙花数\n",n); getch();

}

------------------------------------------------*/

功能:给定n个数据, 求最大值出现的位置(如果最大值出现多次,求出第一次出现的位置即可)。

------------------------------------------------*/ #include

int station(int s[],int n)

{ /**********Program**********/

int i,k;

k=0;

for(i=1;i

if(s[i]>s[k]) k=i;

return(k+1);

/********** End **********/

}

main()

{ int a[100],n,i,t;

clrscr();

scanf("%d",&n);

for(i=0;i

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

t=station(a,n);

printf("the max_value position is:%d\n",t);

yzj();

getch();

}

------------------------------------------------------

功能:求一批数中最大值和最小值的差。------------------------------------------------*/

int max_min(int a[],int n)

{ /**********Program**********/

int i,max,min;

max=min=a[0];

for(i=1;i

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

else if(a[i]

return(max-min);

/********** End **********/

}

#define N 30

#include "stdlib.h"

#include "stdio.h"

main()

{ int a[N],i,k;

clrscr();

for(i=0;i

a[i]=random(51)+10;

for(i=0;i

{ printf("%5d",a[i]);

if((i+1)%5==0) printf("\n");

}

k=max_min(a,N);

printf("the result is:%d\n",k);

yzj();

getch();

}

------------------------------------------------*/

功能:求一组数中大于平均值的数的个数。例如:给定的一组数为1,3,6,9,4,23,35,67,12,88时,函

数值为3。

------------------------------------------------*/

#include "stdio.h"

int fun(int a[],int n)

{ /**********Program**********/

int i,k=0;

float s=0,ave;

for(i=0;i

s+=a[i];

ave=s/n;

printf("%f ",ave);

for(i=0;i

if(a[i]>ave)k++;

return k;

/********** End **********/

}

main()

{ int a[10]={1,3,6,9,4,23,35,67,12,88}; int y;

y=fun(a,10);

printf("y=%d\n",y);

yzj();

getch();

}

--------------------------------------------------

功能:统计出若干个学生的平均成绩,最高分以及得最高

分的人数。

例如:输入10名学生的成绩分别为92,87,68,56,92,

84,67,75,92,66,则输出平均成绩为77.9,

最高分为92,得最高分的人数为3人。------------------------------------------------*/

#include "stdio.h"

float Max=0;

int J=0;

float fun(float array[],int n)

{ /**********Program**********/

int i;float sum=0,ave;

Max=array[0];

for(i=0;i

{ if(Max

sum=sum+array [i]; }

ave=sum/n;

for(i=0;i

if(array [i]==Max) J++;

return(ave);

/********** End **********/

}

main( )

{ float a[10],ave;

int i=0;

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

scanf("%f",&a[i]);

ave=fun(a,10);

printf("ave=%f\n",ave);

printf("max=%f\n",Max);

printf("Total:%d\n",J);

getch();

yzj();

}

int m;

printf("Enter m: ");

scanf("%d", &m);

printf("\nThe result is %ld\n", fun(m)); yzj();

getch();

}

--------------------------------------------------

功能:编写函数fun将一个数组中的值按逆序存放,并在

main()函数中输出。例如:原来存顺序为8,6,5,4,1。要求改为:1,4,5,6,8。

------------------------------------------------*/

#include "stdio.h"

#define N 5

main()

{ int a[N]={8,6,5,4,1},i;

for(i=0;i

printf("%4d",a[i]);

printf("\n");

fun(a,N);

for(i=0;i

printf("%4d",a[i]);

yzj();

getch();

}

int fun(int arr[],int n)

{ /**********Program**********/

int i,t;

for(i=0;i

{ t=arr[i];

arr[i]=arr[n-1-i];

arr[n-1-i]=t;

}

/********** End **********/

}

--------------------------------------------------

功能:将主函数中输入的字符串反序存放。例如:输入字符串“abcdefg”,则应输出“gfedcba”。

------------------------------------------------*/

#include

#include

#define N 81

char fun(char *str,int n)

{ /**********Program**********/

int i,j;

char c;

for(i=0,j=n-1;i

/*或者for(i=0,j=n-1;i

*(str+i)=*(str+j);

*(str+j)=c;}

/********** End **********/

}

main()

{ char s [N];

int l;

clrscr();

printf("input a string:");gets(s);

l=strlen(s);

fun(s,l);

printf("The new string is :");puts(s); getch();

yzj();

}

------------------------------------------------*/

功能:将字符串中的大写字母转换为对应的小写字母,

其它字符不变。

------------------------------------------------*/

#include "stdio.h"

void change(char str[]) { /**********Program**********/

int i;

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

if(str[i]>='A' && str[i]<='Z') str[i]=str[i]+32;

/********** End **********/

}

功能:将字符串中的小写字母转换为对应的大写字母,

其它字符不变。

#include "string.h"

#include "stdio.h"

void change(char str[])

{ /**********Program**********/

int i;

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

if(str[i]>='a' && str[i]<='z')

str[i]=str[i]-32;

/********** End **********/

}

main()

{ void change();

char str[40];

gets(str);

change(str);

puts(str);

yzj();

getch();

}

--------------------------------------------------

功能:求一个给定字符串中的字母的个数。------------------------------------------------*/

#include "stdio.h"

int fun(char s[])

{

/**********Program**********/

int i,k=0;

for(i=0;s[i]!='\0';i++)

if(s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i] <='Z')

k++;

return k;

/********** End **********/

}

main()

{ char str[]="Best wishes for you!"; int k;

k=fun(str);

printf("k=%d\n",k);

yzj();

}

相关文档