文档视界 最新最全的文档下载
当前位置:文档视界 › C语言期末复习必备资料

C语言期末复习必备资料

C语言期末复习必备资料
C语言期末复习必备资料

1、函数fun的功能是计算x^n。

double fun(double x,int n)

{int i; double y=1;

for(i=1;i<=n;i++) y=y*x;

return y;

}

主函数中已经正确定义m、a、b变量并赋值,并调用fun函数计算:m=a^4+b^4-(a+b)^3。实现这一计算的函数调用语句为______。

答案: 1:fun(a,4)+fun(b,4)-fun((a+b),3)

评析:函数fun的功能是计算x的n次方,所以a的4次方的调用函数应当为fun(a,4),b的4次方的调用函数应当为fun(b,4),(a+b)的3次方的调用函数应当为fun((a+b),3),所以,实现m=a^4+b^4-(a+b)^3这一计算的函数458调用语句为:fun(a,4)+fun(b,4)-fun((a+b),3);。

知识点:知识点/函数/破函数的正确调用,嵌套调用,递归调用

2、以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指内存空间中,形成一个新字符串s。请填空。

void sstrcpy(char *s,char *t)

{ while(*s++=______);}

main()

{ char str1[100],str2[]="abcdefgh";

sstrcpy(str1,str2);

printf("%s\n",str1);

} 答案: 1:*t++

评析:要使sstrcpy()函数实现字符串复制,必须将t字符串中的每个字符逐个拷到s字符串中,所以可以使用*s=*t;s++;t++。或者可以写成*s++=*t++,本题只有一个空,可以填入*t++。

知识点:知识点/指针/用指针作函数参数

3、以下程序给指针p分配三个double型动态内存单元,请填空。

#include

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:3*sizeof(double)

评析: malloc(size)在内存的动态存储区中分配一个长度为size的连续空间。此函数的值(即"返回值")是一个指针,它的值是该分配域的起始地址。如果此函数未能成功地执行,则返回值为0。

本题中要求分配三个double型动态内存单元,所以size处应当为3*sizeof(double)。

知识点:知识点/指针/各类型的指针及指针变量,通过指针引用各类型数据

4、以下程序运行后的输出结果是______。

main()

{ int a,b,c;

a=25;

b=025;

c=0x25;

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

} 答案: 25 21 37

评析:本题考查的是格式字符的输出。

变量a、b、c分别为十进制、八进制、十六进制的25,格式字符d所代表的含义是,以带符号的十进制形式输出整数(正数不输出符号),所以本题a=25则输出值为25;b=025转换为10进制:

b=2*8+5=16+5=21,则输出的值为21;c=0x25转换为10进制:c=2*16+5=32+5=37,则输出的值为37,

而且printf中三个%d之用的是空格,所以输出的几个数字之间也必须是空格。

知识点:知识点/函数/变量的存储类别,变量的作用域和生存期

5、以下程序运行后的输出结果是______。

main ()

{ char a[]="Language",b[]="Programe";

char *p1,*p2; int k;

p1=a; p2=b;

for(k=0;k<=7;k++)

if(*(p1+k)==*(p2+k)) printf("%c",*(p1+k));

} 答案: gae

评析:本题考查的是字符指针变量与字符数组。

解题过程:

(1)当k=0时,*(p1+0)='L',*(p2+0)='P',L!=P,所以没有输出

(2)当k=1时,*(p1+1)='a',*(p2+1)='r',a!=r,所以没有输出

(3)当k=2时,*(p1+2)='n',*(p2+2)='o',n!=o,所以没有输出

(4)当k=3时,*(p1+3)='g',*(p2+3)='g',g==g,所以输出g

(5)当k=4时,*(p1+4)='u',*(p2+4)='r',u!=r,所以没有输出

(6)当k=5时,*(p1+5)='a',*(p2+5)='a',a==a,所以输出a

(7)当k=6时,*(p1+6)='g',*(p2+6)='m',g!=m,所以没有输出

(8)当k=7时,*(p1+7)='e',*(p2+7)='e',e==e,所以输出e

(9)当k=8时结束循环

(10)输出结果为:gae。

知识点:知识点/数组的定义和引用/字符串与字符数组

6、以下程序通过函数SunFun和f(x),x=0到10,这里f(x)=x^2+1,由F函数实现,请填空。

main()

{ printf("The sun=%d\n",SunFun(10));}

SunFun(int n)

{ int x,s=0;

for(x=0;x<=n;x++)s+F(______);

return s;

}

F(int x)

{ return (______);}

答案: 1:x

2:x*x+1

评析:本题考查的是函数的调用。

解题过程:

(1)f(x)的含义为x的平方加上1

(2)所以F(int x)的返回值应该为 x*x+1

(3)SunFun(10)的作用是将0到10之间所有的整数相加求和

(4)所以F()的形式参数为x。

知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用

7、以下程序中,函数SumColumMin的功能是:求出M行N列二维数组每列元素中的最小值,并计算它们的和值。和值通过形参传回主函数输出。请填空。

#define M 2

#define N 4

void SumColumMin(int a[M][N],int *sum)

{ int i,j,k,s=0;

for(i=0;i

{ k=0;

for(j=1;j

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

s+=______ ;

}

______ =s;

}

main()

{ int x[M][N]={3,2,5,1,4,1,8,3},s;

SumColumMin(______);

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

}答案: 1:a[k][i]

2:*sum

3:x,&s

评析:本题考查的是函数参数的传送。

解题过程:

(1)执行以i为变量的for语句

1)k=0

2)执行以j为变量的for语句

①当j=1

②比较a[0][0]和a[1][0]的大小,如果a[0][0]大于a[1][0]则k=1;如果a[0][0]大于a[1][0]则k=0

③j=2所以结束循环

3)此时a[k][i]就代表第一列中最小的值,要累计所有列中的最小值的和,应该在第一空内填写 a[k][i],用变量s累加。

(2) SumColumMin是一个无返回值的函数,其中形式参数*sum是一个指针类型,所以第二空应该填写 *sum,用来将该指针变量指向s

(3)当主函数main调用SumColumMin时,需要两个实际参数,一个代表被操作的数组,一个为指向累计和的指针变量,所以第三个空应该为 x,&s,分别代表已经被定义的数组x,和整型变量s的地址。

知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用

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

main()

{

int a=0;

a+=(a=8);

printf("%d\n",a);

} 答案: 16

评析:本题的考查点是表达式。

表达式a+=8相当于a=a+8,对表达式逐步求解过程如下:

a+=(a+8)此时,a的值赋值为8,而不再是0;

a+=8

a=a+8

a=16

故本题答案为16。

知识点:知识点/函数/形式参数与实在参数,参数值的传递

9、以下程序的输出结果是______。

#define MAX(x,y) (x)>(y)?(x):(y)

main()

{

int a = 5, b = 2,c = 3, d = 3, t;

t = MAX(a + b, c + d)*10;

printf("%d\n", t);

} 答案: 7

评析:本题的考查点是宏定义。

宏替换后,表达式t = MAX(a + b, c + d)*10即变为:t = (a+b)>(c+d) ? (a+b) : (c + d)*10;

由于(a+b)>(c+d)为真,所以t = (a+b),即为7。

故本题答案为:7。

知识点:知识点/编译预处理/宏定义:不带参数的宏定义;带参数的宏定义

10、函数mycmp(char *s,char *t)的功能是比较字符串s和t的大小,当s等于t时返回0,当s>t返回正值,当s

mycmp( char *s,char *t)

{ while (*s==*t)

{ if (*s=='\0')return 0;

++s;++t;

}

return(______);

} 答案: *s-*t

评析:本题的考查点是比较字符串的大小。

函数的两个形参是两个字符指针变量,字符串的首地址是指针变量的值,*s和*t表示字符串数组s和t的第一个字符,在while循环中,是通过s和t值的不断变化改变两个串的第一个字符,要返回s和t的第一个不同字符的ASCII码的差值,必须使用"*s-*t"得出。

故本题答案为:*s-*t。

知识点:知识点/函数/库函数的正确调用

11、若给fun函数的形参s传送字符串:" 6354abc",则函数的返回值是______。(字符串中包括空格)

long fun(char s[ ])

{ long n; int sign;

for (; isspace(*s);s++);

sign=(*s=='-')?-1:1;

if (*s=='+' || *s=='-') s++;

for (n=0;isdigit(*s);s++)

n=10*n+(*s-'0');

return sign*n;

} 答案: 6354

评析:本题的考查点是函数的返回值。

这个函数的目的是提取出由函数的形参传送来的字符串中的数字字符,并通过相应各个字符位置计算出它们数值形式的幂,最后返回字符串中的数字字符的数值形式,所以函数的返回值应当是"6354"。

故本题答案为:6354。

知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用

12、以下程序段的输出结果为______。

char *p;int i,d;

p="PDP1-0";

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

{

d=isdigit(*(p+i) );

if(d!=0)

printf("%c\n",*(p+i) );

} 答案: 1

评析:本题的考查点是函数isdigit()。

这段程序的目的是按从左至右的顺序从字符串p中找出阿拉伯数字字符,如果找到,将其打印出来。最后的输出应当是:

1

知识点:知识点/函数/库函数的正确调用

13、下列程序中字符串中各单词之间有一个空格,则程序的输出结果是______。

# include

main( )

{ char str1[ ]="How do you do", *p1=str1;

strcpy(str1+strlen(str1)/2,"es she");

printf("%s\n",p1);

}答案: How does she

评析:本题的考查点是字符串拷贝函数strcpy()。

strlen(str1)是求str1字符串的长度,为13,然后,进行除2运算,结果为6。strcpy()函数是把字符串"es she"拷贝到str1后的第6个字符后面,也就是说,拷贝后的结果是"How does she"。

故本题答案为:How does she。

知识点:知识点/函数/库函数的正确调用

14、下面的函数strcat(str1,str2)实现将字符串str2拼接到字符串str1后面的功能。请填空使之完整。

char *strcat(str1,str2)

char *str1,*str2;

{ char *t=str1;

while(______)str1++;

while(______);

return(t);}

答案: 1:*str1!='\0'

2:*str1++=*str2++

评析:本题的考查点是字符串连接函数strcat()。

函数strcat(str1,str2)实现将字符串str2连接到字符串str1后面,所以首先要找到字符串str1的串尾,根据C语言的语法规定,一个串的串尾一定是一个隐含字符"\0",而在程序中,对字符串中字符的访问是通过两个指针变量来完成的,因此要找到字符串str1的串尾,要判断*str1是否为"\0",要找到字符串str2的串尾,要判断*str2是否为"\0",程序中必须可以使字符串中字符逐一顺序体现,所以在题中我们应填写"*str1"和"*str1++=*str2++ "。

知识点:知识点/函数/库函数的正确调用

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

void fun()

{ static int a=0;

a +=2; printf("%d",a);

}

main()

{ int cc;

for(cc=1;cc<4;cc++) fun();

printf("\n");

}答案: 246

评析:循环for(cc=1;cc<4;cc++)被执行了3次。在函数fun中,由于a是static型变量,所以函数第1次调用后,a= 2;第2次调用后,a = 4;第3次调用后,a = 6。

知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用

16、若要使指针p指向一个double类型的动态存储单元,请填空。

p=______malloc(sizeof (double));

答案: (double*)

评析:函数malloc返回的是void*而不是double类型指针。所以要使指针p指向一个double类型的存储单元就必须进行强制类型转换。

知识点:知识点/函数/函数的类型和返回值

17、下列程序段的输出结果是______。

main()

{ char b[]="Hello,you";

b[5]=0;

printf("%s\n",b);

}答案: Hello

评析:字符串中,数值0或符号'\0'表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。

知识点:知识点/数组的定义和引用/一维数组和多维数组的定义、初始化和引用

18、下列程序的输出结果是______。

void fun(int *n)

{ while((*n)--);

printf("%d",++(*n));

}

main()

{ int a=100;

fun(&a);

}答案: 0

评析:在函数fun()中,while((*n)--)是先引用*n的值,再做(*n)-- 运算,所以循环结束时*n

的值为0,再做(*n)-- 运算后,*n的值为-1;执行++(*n)后,*n的值是0。

知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用

19、以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。请填空:

#define N 3

#define M 4

void LineMax(int x[N][M])

{ int i,j,p;

for(i=0;i

{ p=0;

for(j=1;j

if(x[i][p]

printf("The max value in line %d is %d\n",i,______);

}

}

main()

{ int x[N][M]={1,.5,7,4,2,6,4,3,8,2, 3,1};

______;

} 答案: 1:p=j

2:a[i][p]

3:LineMax(x)

评析: LineMax函数中运用了两个循环,外循环来控制数组的行,内循环控制列,在寻找每行最大的元素时,先把每行的第一个元素列下标即0赋给p,然后把后面的数逐一与之比较,如果大于它,则把大的数的列下标重新赋给p。

所以(1)处应该填p=j;

内循环结束后,便获得了本行中最大的数,即a[i][p],这也就是(2)处应该填写的答案;

而(3)处,很显然是要调用函数,关键就在于参数怎么写,函数中需要的是整个数组,所以应该把数组名做为实参,传递过去,(3)处的答案应该是LineMax(x)。注意大小写,C语言中大小写是不等价的。

知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用

20、若有如下结构体说明:

struct STRU

{ int a,b;char c: double d;

struct STRU *p1,*p2;

};

请填空,以完成对t数组的定义,t数组的每个元素为该结构体类型。

______t[20]

答案: struct STRU

评析:本题主要考查考生对C语言中结构体的掌握。

结构体类型是构造数据类型,是用户自已定义的一种类型。

结构体类型的定义:

struct 结构体类型名

{

成员项表;

};

定义结构体变量的的形式为:

struct 结构体类型名变量1,变量2,...

其中变量包括:一般变量、指针变量、数组变量等。

知识点:知识点/数组的定义和引用/一维数组和多维数组的定义、初始化和引用

21、以下程序运行后的输出结果是______。

void fun(int x,int y)

{x=x+y;y=x-y;x=x-y;

printf("%d,%d,",x,y);}

main()

{int x=2,y=3;

fun(x,y);

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

} 答案: 3,2,2,3

评析:本题的考查点是交换变量的值。

被调函数fun()实现的功能是交换变量x和y的值并打印,由于该函数无返回值,所以在主函数中打印出的x和y的值仍然为2,3。

故本题答案为:3,2,2,3。

知识点:知识点/函数/形式参数与实在参数,参数值的传递

22、下面程序的运行结果是:______。

#define N 10

#define s(x) x*x

#define f(x) (x*x)

main()

{int i1,i2;

i1=1000/s(N);i2=1000/f(N);

printf("%d %d\n",i1,i2);

} 答案: 1000 10

评析:本题的考查点是宏定义。

根据宏定义,变量i1的值为1000/10*10=1000,变量i2的值为1000/(10*10)=10。

故本题答案为:1000和10。

知识点:知识点/编译预处理/宏定义:不带参数的宏定义;带参数的宏定义

23、下面程序的运行结果是:______。

void swap(int *a,int *b)

{int *t;

t=a;a=b;b=t;

}

main()

{int x=3,y=5,*p=&x,*q=&y;

swap(p,q);

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

}答案: 35

评析:本题的考查点是函数调用。

观察本题的程序可以看出,被调函数swap()实现的功能是交换变量的值,但由于函数不返回任何值,所以在main()函数中打印出的变量的值并没有发生交换,即仍为3和5。

故本题答案为:3和5。

知识点:知识点/函数/函数的类型和返回值

24、fun函数的功能是:首先对a所指的N行N列的矩阵,找出各行中的最大的数,再求这N个最大值中的最小的那个数作为函数值返回。请填空。

#include

#define N 100

int fun(int(*a)[N])

{int row,col,max,min;

for(row=0;row

{for(max=a[row][0],col=1;col

if(______) max=a[row][col];

if(row==0) min=max;

else if(______) min=max;

}

return min;

}答案: 1:max

2:max

评析:本题的考查点是求矩阵最大值的算法。

本题中的第一空要求判断出每一行中的最大数,应该填写条件max

故本题答案为:max

知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用

25、以下程序的输出结果是______。

#define MCRA(m) 2*m

#define MCRB(n,m) 2*MCRA(n)+m

main()

{ int i=2,j=3;

printf("%d\n",MCRB(j,MCRA(i)));

} 答案: 16

评析:本题的考查点是带参数的宏定义。

带参数的宏定义是这样展开置换的:在程序中如果有带实参的宏,则按#define 命令行中指定的字符串从左到右进行置换。如果串中包含形参,则将程序语句中相应的实参(可以是常量、变量或表达式)代替形参,如果宏定义中的字符串中的字符不是参数字符,则保留。因此对MCRB(j,MCRA(i))进行宏展开就得到了2*MCRA(j)+MCRA(i),即:2*2*j+2*i=2*2*3+2*2=16。

故本题答案为:16。

知识点:知识点/编译预处理/宏定义:不带参数的宏定义;带参数的宏定义

26、以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。

int fun ( int n)

{ int m=0,f=1,i;

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

{ m+=i*f;

f=______;

}

return m;

}

main()

{ printf("m=%d\n",______);}

答案: 1:-f

2:fun(10)

评析:本题的考查点是C程序设计。根据程序写出运行结果。

考察的知识点主要是函数的调用。本题利用一个fun函数来完成题目要求的计算。程序中f起的作用是控制i*f的符号,看的出,偶数位都为负值,所以f的值为(-1)^(i+1),最后要求输出m的值,在输出中调用fun函数,并把实参10传给n。

知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用

27、以下程序运行后的输出结果是______。

main()

{ int i,n[]={0,0,0,0,0};

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

{ n[i]=n[i-1]*2+1;

printf("%d ",n[i]);

}

}答案: 1 3 7 15

评析:本题的考查点是C程序设计。根据程序写出运行结果。

该程序考察的是数组的知识点,n是一个有5个元素,且元素值全为0的数组。程序运行过程时先进行for循环,i=1时,n[1]=n[0]*2+1,此时n[1]=1;执行i++;i=2时,再进行循环,n[2]=n[1]*2+1,此时n[2]=3,再执行i++,此时i=3,继续循环,n[3]=n[2]*2+1,此时n[3]=7,然后i=4时,

n[4]=n[3]*2+1,此时n[4]=15。循环结束。注意输出函数中%d后有空格。

知识点:知识点/数组的定义和引用/一维数组和多维数组的定义、初始化和引用

28、请在以下程序第一行的下划线处填写适当内容,使程序能正常运行。

______( double,double);

main()

{ double x,y;

scanf("%1f%1f",&x,&y);

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

}

double max(double a,double b)

{ return(a>b ? a:b);}

答案: double max

评析:本题的考查点是C程序设计。调试程序,把不完善的程序进行修改和补充,使之能得到正

确的结果。

主函数里可以看到调用了一个max函数,函数在被调用之前需要先定义,所以要求填空的内容应该是对函数进行定义的语句。由题目内容也可以看出此函数是double型的。

知识点:知识点/函数/函数的正确调用,嵌套调用,递归调用

29、有以下程序

void f(int y,int *x)

{ y=y+*x; *x=*x+y;}

main()

{ int x=2,y=4;

f(y,&x);

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

}

执行后输出的结果______。答案: 8 4

评析: f函数中变量x传递的是变量的地址,可以实现值的变换,而变量y是传递的值,执行完f 后,y的值是变了,但main函数中的y并未变化。也就是说由于"单向传送"的"值传递"方式,形参值的改变无法传给实参。

知识点:知识点/函数/形式参数与实在参数,参数值的传递

31、C语言程序的基本单位是______

答案:函数

32、设有说明语句:char a= '\72';则变量a包含______个字符、答案:1

33、c语言是一种______(选择面向对象或面向过程)高级程序设计语言。

答案:面向过程

34、C语言中唯一的三目运算符是______

答案:条件运算符#? :

35、C语言中结束一次循环的语句是______

答案:continue

36、C语言中结束整个循环的语句是______ 答案:break

37、二维数组a中元素a[2][2]的值是______ a[4][5]={{1,2,3},{3,2,1,6},{1}};答案:0

38、写出下面个逻辑表达式的值,设a=3,b=4,则c=5 a || b+c && b-c=______ 答案:1

39、写出下面个逻辑表达式的值,设a=3,b=4,则! (a+b)+c –1 && b+ c/2 =______ 答案:1

40、在C语言中打开文件的函数名称是______

答案:fopen#fopen()

41、在C语言中关闭文件的函数名称是______

答案:fclose#fclose()

42、C语言中基本的数据类型有______

答案:int float char # 整型实型字符型

43、设y是int型变量,请写出判断y为奇数的关系表达______ 答案:y%2!=0 # y%2==1 # y%2

44、以下程序运行后的输出结果是______

main()

{ int i=10,j=0;

do

{ j=j+i; i-;

while(i>2);

printf("%d\n",j);

}

答案:52

45、设有以下程序:

main()

{ int n1,n2;

scanf("%d",&n2);

while(n2!=0)

{ n1=n2%10;

n2=n2/10;

printf("%d",n1);

}

}

程序运行后,如果从键盘上输入1298;则输出结果为______答案:8921

46、以下程序输出的最后一个值是______

int ff(int n)

{ static int f=1;

f=f*n;

return f;

}

main()

{ int i;

for(i=1;i<=5;i++) printf("%d\n",ff(i));

} 答案:120

47、设有以下程序:

main()

{ int a, b, k=4, m=6, *p1=&k, *p2=&m;

a=pl==&m;

b=(*p1)/(*p2)+7;

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

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

}

执行该程序后,a的值为______b的值为______

答案:0 @ 7

48、函数fun的功能是:累加数组元素中的值。n为数组中元素的个数。累加的和值放入x所指的存储单元中。

fun(int b[], int n ,int *y)

{for(k=0;______;k++) r=r+b[k];

*y=______;

} 答案:k

51、以下程序运行后的输出结果是______

main()

{ char m;

m='B'+32; printf("%c",m);

} 答案:b

52、以下程序运行后的输出结果是______

main()

{ int a=1,b=3,c=5;

if (c=a+b) printf("yes\n");

else printf("no\n");

} 答案:yes

53、以下程序运行后的输出结果是______

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 3 2

54、执行以下程序后,输出'*'号的个数是______

#include

main()

{ int i,j;

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

for(j=2; j<=i; j++) putchar('*');

} 答案:6

55、以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果,请填空.

int fun( int n)

{ int m=0,f=1,i;

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

{ m+=i*f;

f=______;

}

return m;

}

main()

{ printf("m=%d\n",______ ); }

答案:-f@ fun(10)

56、假定p所指对象的值为25,p+1所指对象的值为46,则执行"(*p)++;"语句后, p所指对象的值为______

答案:26

56、空字符串的长度是______’\t’所占的长度为______ 答案:0@1

57、若从键盘输入58,则以下程序输出的结果是______

main()

{ int a;

scanf("%d",&a);

if(a>50) printf("%d",a);

if(a>40) printf("%d",a);

if(a>30) printf("%d",a);

} 答案:585858

58、以下程序的输出结果是______

main()

{ char *p="abcdefgh",*r;

long *q;

q=(long*)p;

q++;

r=(char*)q;

printf("%s/n",r);

} 答案:efgh

59、以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整形数据;成员变量link是指向自身结构体的指针.请将定义补充完整。

struct node

{int info;

______ link;

} 答案:struct node *

60、有以下程序

main( )

{ int n=0,m=1,x=2;

if(!n) x-=1;

if(m) x-=2;

if(x) x-=3;

printf("%d\n",x);

}

执行后输出结果是______ 答案:-4

61、#include

main()

{ char ch1,ch2; int n1,n2;

ch1=getchar(); ch2=getchar();

n1=ch1-'0'; n2=n1*10+(ch2-'0');

printf("%d\n",n2);

}

程序运行时输入:12,执行后输出结果是______

答案:12

62、有以下程序

void f( int y,int *x)

{y=y+*x; *x=*x+y;}

main( )

{ int x=2,y=4;

f(y,&x);

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

}

执行后输出的结果是______ 答案:8 4

63、以下程序段打开文件后,先利用fseek函数将文件位置指针定位在文件末尾,然后调用ftell函数返回当前文件位置指针的具体位置,从而确定文件长度,请天空。

FILE *fp;long f1;

fp=fopen(“test”,”rb”);

______

F1=ftell(fp);

fclose(fp);

答案:fseek(fp,0,SEEK_END)#fseek(fp,0,-2)

64、以下程序功能是将数组里面的元素写入文件d2.dat中(使用fprintf函数),请填空。

#include

main()

{FILE *fp; a[3]={1,2,3};

fp=fopen("d2.dat","w");

______

fclose(fp);

} 答案:fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);

65、以下程序功能是从文件d2.dat中读入读出数据放到数组a中(使用fscanf函数),请填空。

#include

main()

{FILE *fp; a[2];

fp=fopen("d2.dat","r");

______

fclose(fp);

} 答案:fscanf(fp,"%d%d",&a[0],&a[1]);

66、以下程序的输出结果是______

main( )

{char s[ ]= "abcdef ";

s[3]= '\0';

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

} 答案:abc

67、下列程序段的输出结果是______

main( )

{ char b[]="Hello,you";

b[5]=0;

printf("%s", b );

} 答案:Hello

68、以下程序的输出结果是______

main()

{

int a[]={30,25,20,15,10,5},*p=a;

p++;

printf("%d",*(p+3));

} 答案:10

69、以下程序运行后的输出结果是______

main( )

{ char s[]="9876",*p;

p=s;

p++;

++p;

puts(p);

} 答案:76

70、mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回,请填空: int mystrlen(char *str)

{int i;

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

return ______;

} 答案:i-1

71、以下程序用来统计文件中字符个数、请填空:

#include"stdio、h"

main( )

{FILE *fp; long num=0L;

if((fp=fopen("fname、dat","r")==NULL)

{printf("Open error\n"); exit(0);}

while(______)

{fgetc(fp); num++;}

printf("num=%ld\n",num-1);

} 答案:!feof(fp)

72、下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中,请填空.

#include "stdio.h"

FILE *fp;

{ char ch;

if( (fp=fopen (______) )= = NULL) exit(0);

while( (ch=getchar( )) !='@') fputc (ch,fp);

fclose(fp);

} 答案:”bi.dat”,”r”

73、用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。

st=(char*) ______; 答案:malloc(11)

74、若要使指针p指向一个double类型的动态存储单元,请填空.

p=______malloc(sizeof(double));

答案:(double*)

75、以下程序通过函数指针p调用函数fun,请在填空栏内,写出定义变量p的语句、

void fun(int *x,int *y)

{ ……}

main( )

{ int a=10,b=20;

______; /定义变量p */

p=fun; p(&a,&b);

……

} 答案:void (*p)(int,int);

76、以下程序的输出结果是______

main( )

{ int arr[ ]={30,25,20,15,10,5}, *p=arr;

p++;

printf("%d\n",*p++);

} 答案:30

77、若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______

int w[10]={23,54,10,33,47,98,72,80,61}, *p=w;

答案:*(p+5)#p[5]

78、以下定义的结构体类型拟包含两个成员,其中成员变量info用来存入整型数据;成员变量link是指向自身结构体的指针,请将定义补充完整、

struct node

{int info;

______ link;

} 答案:struct node *

79、设有如下宏定义

#define MYSWAP(z,x,y) {z=x;x=y;y=z}

以下程序段通过宏调用实现变量a,b内容交换,请填空:

float a=5,b=16,c;

MYSWAP(______,a,b); 答案:c

80、以下程序段用于构成一个简单的单向链表,请填空.

struct STRU

{ int x, y ;

float rate;

} a, b;

a.x=0; a.y=0; a.rate=0; a.p=&b;

b.x=0; b.y=0; b.rate=0; b.p=NULL;

答案:struct STRU *

81、设有以下结构类型说明和变量定义,则变量a在内存所占字节数是______ Struct stud

{ char num[6];

int s[4];

double ave;

} a,*p; 答案:14

82、下列程序段的输出结果是______

int n='c';

switch(n++)

{ default: printf("error");break;

case 'a': case 'A': case 'b': case 'B': printf("good");break;

case 'c': case 'C': printf("pass");

case 'd': case 'D': printf("warn");

}

答案:passwarn

83、以下程序的输出结果是______

main( )

{int s,i;

for(s=0,i=1;i<3;i++,s+=i) ;

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

} 答案:5

84、设有以下程序:

main( )

{ int n1,n2;

scanf("%d",&n2);

while(n2!=0)

{ n1=n2%10;

n2=n2/10;

printf("%d",n1);}

}

程序运行后,如果从键盘上输入1234;则输出结果为______ 答案:4321 85、要使以下程序段输出10个整数,请填入一个整数、

for(i=0;i<=______;printf("%d\n",i+=2));

答案:18

86、若输入字符串:abcde,则以下while循环体将执行______次

While((ch=getchar( ))== 'e') printf("*");

答案:4

87、以下程序的输出结果是______

main( )

{int a=177;

printf("%o\n",a);

} 答案:261

88、以下程序的输出结果是______

main( )

a+=(a=8);

printf("%d\n",a);

} 答案:16

89、以下程序的输出结果是______

main( )

{int a=5,b=4,c=3,d;

d=(a>b>c);

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

} 答案:0

90、以下程序的输出结果是______

main( )

{int x=0;

sub(&x,8,1);

printf("%d\n",x);

}

sub(int *a,int n,int k)

{if(k<=n) sub(a,n/2,2*k);

*a+=k;

} 答案:7

91、以下程序输出的最后一个值是______

int ff(int n)

{ static int f=1;

f=f*n;

return f;

}

main( )

{ int i;

for(i=1;i<=5;i++ ) printf("%d\n",ff(i));

} 答案:120

92、已知某程序中有预处理命令#include ,为使语句”zx=fopen(“c:\\n.txt”,r”)能正常执行,在该语句之前必须有定义______

答案:FILE *zx

93、以下程序的输出结果为______

main()

{

int a=10;

a=(3*5,a=4);

printf(“%d”,a);

} 答案:14

94、变量a所占的字节数是______

union {char aa[10],long bb, int cc } a;答案:10

95、以下函数的功能是删除字符串s中的所有空格。请填空。?

viod?dele(char?*s)?

{?int?n=0,i;?

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

if(a[i]!=’’)? s[n++]=s[i];?

s[n]= ______;?

}? 答案:’\0’

96、有以下程序

main()

{char ch[]=“uvwxyz”,*pc;

pc=ch; printf(“%c\n”,*(pc+5)); }

程序运行后的输出结果是______ 答案:z

97、设有如下说明?

typedef?struct?

{?int?n;?char?c;?double?x;}STD;

则要定义一个变量stu是以上说明的变量则正确定义方式是______

答案:STD stu

98、c语言运算符中优先级最低的是______运算符

答案:,#逗号

99、设有定义:FILE *fw;请将以下文件的语句补充完整,以便可以向文本文件readme.txt的最后续写内容。

fw=fopen();

答案:”readme.txt”,”a”

100、以下程序输出结果是______

#include

#define M 5

#define N M+M

main()

{

int k;

k=N*N*5;

k=N*N*5;

printf("%d",k);

}_

答案:55

所有单选题

1、C语言中下列叙述正确的是______。

A:不能使用do-while语句构成的循环

B:do-while语句构成的循环,必须用break语句才能退出

C:do-while语句构成的循环,当while语句中的表达式值为非零时结束循环

D:do-while语句构成的循环,当while语句中的表达式值为零时结束循环答案:D

评析:本题的考查点是do-while语句。

选项A是错误的,C语言支持do-while语句;选项B是错误的,do-while构成的循环,当while

语句中的表达式值为零时结束循环,而不是非零;选项C也是错误的。故本题答案为D。

知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构

2、以下选项中属于C语言的数据类型是______。

A:复数型B:逻辑型C:双精度型D:集合型

答案:C

评析:本题的考查点是C语言的数据类型。

C语言的数据类型分为基本类型,构造类型,指针类型,空类型四大类。其中,基本类型分为整型,字符型,实型三类。实型又称浮点型,包括单精度型和双精度型两种类型。故本题答案为C。知识点:知识点/数据类型及其运算/C的数据类型及其定义方法

3、下列描述中不正确的是______。

A:字符型数组中可以存放字符串

B:可以对字符型数组进行整体输入、输出

C:可以对整型数组进行整体输入、输出

D:不能在赋值语句中通过赋值运算符"="对字符型数组进行整体赋值答案:C

评析:本题的考查点是对数组的理解。

C语言规定只能逐个引用数组元素而不能一次引用整个数组。字符数组的输入、输出可以将整个字符串一次输入或输出。所以,选项C的说法是不正确的。

故本题答案为C。

知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用

4、以下程序的输出结果是______。

main()

{ int x=10,y=10,i;

for(i=0;x>8 ;y=++i)

printf("%d %d ",x--,y);

}

A:10 1 9 2 B:9 8 7 6

C:10 9 9 0 D:10 10 9 1

答案:D

评析:本题的考查点是for循环语句。

for语句的一般格式为:for(表达式1;表达式2;表达式3)语句执行中只要表达式2为真,则执行for语句中指定的内嵌语句。所以,本题在条件为真的情况下,先执行printf函数。x--是先使用后运算。

知识点:知识点/循环结构程序设计/FOR循环结构

5、以下程序的输出结果是______。

main()

{ char a[10]={'1','2','3','4','5','6','7','8','9',0},*p;

int i ;

i=8;

p=a+i;

printf("%s\n",p-3);

}

A:6 B:6789 C:'6' D:789 答案:B

评析:本题的考查点是通过指针引用数组元素。

指针p指向数组中第8个元素,即a[8]='9'。输出时,输出字符串,且指针把a[8]作为初始位置往前指3个元素,也就是共有4个字符输出。最后指向a[5]为'6',所以输出为6789。

知识点:知识点/指针/指针数组,指向指针的指针,MAIN函数的命令行参数

6、能正确表示a和b同时为正或同时为负的逻辑表达式是______。

A:(a>=0||b>=0)&&(a<0|| b<0)

B:(a>=0&&b>=0)&&(a<0&&b<0)

C:(a+b>0)&&(a+b<=0) D:a*b>0 答案:D

评析:本题的考查点是对逻辑表达式的判断。

逻辑表达式是指用逻辑运算符将关系表达式或逻辑量连接起来。

选项A中,表达式表示的是a,b为异号;选项B中,表达式表示的是0,因为没有满足条件的值;

选项C中,表达式表示的是0,因为没有满足条件的值;

选项D表示的是a和b为同号。

知识点:知识点/基本语句/表达式语句,空语句,复合语句

7、以下程序的输出结果是______。

main()

{ int n=4;

while(n--)printf("%d ",--n);

}

A:2 0 B:3 1

C:3 2 1 D:2 1 0 答案:A

评析:本题的考查点是while语句的判断。

n--是先使用后运算,--n是先运算后使用。n=4时,执行n--后,n变为3,执行--n后,n变为2,所以,第一次输出时,n为2;同上过程,第二次输出时,n为0。知识点:知识点/循环结构程序设计/WHILE和DO WHILE循环结构

8、以下程序的输出结果是______。

main()

{ int k=17;

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

}

A:17,021,0x11 B:17,17,17

C:17,0x11,021 D:17,21,11 答案:D

评析:本题的考查点是不同格式的数据输出。

printf函数对不同类型的数据用不同的格式字符,"%d"是以带符号的十进制形式输出整数(正数不输出符号);"%o"以8进制无符号形式输出整数(不包括前导符0);"%x"以16进制无符号形式输出整数(不包括前导符0x)。

知识点:知识点/数据类型及其运算/C的数据类型及其定义方法

9、若有说明:long *p,a;则不能通过scanf语句正确给输入项读入数据的程序段是______。

A:*p=&a;scanf("%ld",p);

B:p=(long *)malloc(8);scanf("%ld,p);

C:scanf("%ld",p=&a);

D:scanf("%ld",&a); 答案:A

评析本题的考查点是格式输入函数Scanf()的使用。

scanf函数输入形式为:scanf(格式控制,地址表列); 选项B中,p=(long*)malloc(8)是分配8个字节的long型存储单元,所以能通过scanf语句正确给输入项读入数据;

选项C中,p=&a,求出变量a的内存地址并赋给p;

选项D中,能正确给输入项读入数据;

知识点:知识点/基本语句/数据的输入与输出,输入输出函数的调用

10、以下选项中,能定义s为合法的结构体变量的是______。

A:typedef struct abc

{ double a;

char b[10];

} s;

B:struct

{ double a;

char b[10];

}s;

C:struct ABC

{ double a;

char b[10];

}

ABC s;

D:typedef ABC

{ double a;

char b[10];

}

C语言试卷及答案

《C语言程序设计》考试试卷(答案) 一、填空题(每小空1分,共10分) 1.C语言程序的三种基本结构是顺序结构、选择结构、循环结构。 2.一个C程序有且仅有一个main( ) 函数。 3.C语言描述“x和y都大于或等于z”的表达式是x>=z && y>=z。 4.C语言可以用来实现循环的结构化语句是while、do while、for。 5.数组名表示数组在内存的首地址。 6.int a=3,*p=&a;*p+2的值是5。 二、单项选择题(每小题2分,共70分) 1.__B___是C语言合法的常量。 (A).45(B)078 (C)25.6e3.4 (D)‘xy’2.一个程序的执行是从 A 。 (A)本程序的main函数开始,到main函数结束 (B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 (C)本程序的main函数开始,到本程序文件的最后一个函数结束。 (D)本程序文件的第一个函数开始,到main函数结束。 3.以下叙述正确的是 C 。 (A)在C程序中,main函数必须位于程序的最前面。 (B)C程序每行中只能写一条语句。 (C)C语言本是没有输入输出语句。 (D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 4.以下叙述不正确的是 D 。 (A)逗号运算符的运算级最低。 (B)ABC和abc是两个不同的变量。 (C)若a和b类型相同,在执行a=b后,b的自身值不变。 (D)‘a’和“a”是完全等价的常量。 5.int x=3,y=2;则表达式x+=x*=y+8的值为 C 。 (A)28 (B)30 (C)60(D)17 6.设x=2.7,a=8,y=4.9,算术表达式x+a%3*(int)(x+y)%5/3的值为 B 。 (A)2.7 (B)3.7(C)4.7 (D)4.03 7.执行下面两个语句后,输出的结果为__D___。 char c1=98; printf(“%d %c”,c1,c1-32); (A)97 66 (B)98 b (C)b 66 (D)98 B 8.执行下面语句后的结果为 C 。 y=10;x=y++; (A)x=10,y=10 (B)x=11,y=11 (C)x=10,y=11(D)x=11,y=10 9.Char w;int x;float y;double z;则表达式w*x+z-y值的数据类型是A 。 (A)double (B)char (C)int (D)float 10.C语言中要求操作数必须是整数的运算符是 B 。

c语言试题及答案

1、以下正确的说法是( B ) (A) 用户若需要调用标准库函数,调用前必须重新定义 (B) 用户可以重新定义标准库函数,若如此,该函数将失去原有含义 (C) 系统根本不允许用户重新定义标准库函数 (D) 用户若需调用标准库函数,调用前不必使用预编译命令将该函数所在文件包括到用户源文件中,系统自动去调 2、以下正确的函数声明形式是( A ) (A) double fun(int x, int y) (B) double fun(int x; int y) (C) double fun(int x, int y); (D) double fun(int x,y); 3、以下正确的函数形式是( D ) (A) double fun(int x, int y) { z=x+y; return z;} (B) fun(int x,y) { int z; return z;} (C) fun(x,y) { int x,y; double z; z=x+y; return z;} (D) double fun(int x, int y) { double z; z=x+y; return z;} 4、以下正确的说法是( A ) 在C语言中 (A) 实参和与其对应的形参各占用独立的存储单元 (B) 实参和与其对应的形参共占用一个存储单元 (C) 只有当实参和与其对应的形参同名时才共占用存储单元 (D) 形参是虚拟的,不占用存储单元 5、若调用一个函数,且此函数中没有return语句,则正确的说法是( A ) 该函数 (A) 没有返回值 (B) 返回若干个系统默认值 (C) 能返回一个用户所希望的函数值 (D) 返回一个不确定的值 6、以下不正确的说法是( B ) C语言规定 (A) 实参可以是常量、变量和表达式 (B) 形参可以是常量、变量和表达式 (C) 实参可以为任意类型 (D) 形参应与其对应的实参类型一致 7、以下正确的说法是( C ) (A) 定义函数时,形参的类型说明可以放在函数体内 (B) return后边的值不能为表达式 (C) 如果函数值的类型与返回值类型不一致,以函数值类型为准 (D) 如果形参与实参的类型不一致,以实参类型为准 8、C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是( B ) (A) 地址传递 (B) 单向值传递 (C) 由实参传给形参,再由形参传回给实参 (D) 由用户指定传递方式

C语言必背18个经典程序(可直接打印)

1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/ #include "stdio.h" main() {int i,j,result; for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ } printf("\n");/*每一行后换行*/ } } 2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....*/ main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ } } 3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。*/ #include "math.h" main() { int m,i,k,h=0,leap=1; printf("\n"); for(m=101;m<=200;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) if(m%i==0) {leap=0;break;} if(leap) /*内循环结束后,leap依然为1,则m是素数*/ {printf("%-4d",m);h++; if(h%10==0) printf("\n"); } leap=1;

(完整版)C语言试题及答案解析

C语言 一、选择题(第题2分,共20分) 1.一个C程序的执行是从 A 。 A) 本程序的main函数开始,到main函数结束 B) 本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C) 本程序文件的第一个函数开始,到本程序main函数结束 D) 本程序的main函数开始,到本程序文件的最后一个函数结束 2.若x、i、j、k都是int型变量,则计算下面表达式后,x的值为 C 。 x=(i=4,j=16,k=32) A) 4 B) 16 C) 32 D) 52 3.设C语言中,一个int型数据在内存中占2个字节,则unsigned int 型数据的取值范围为 C 。 A) 0~255 B) 0~32767 C) 0~65535 D) 0~2147483647 4.设有说明:char w; int x; float y; double z;则表达式w*x+z-y值的数据类型为 D 。 A) float B) char C) int D) double 5. putchar函数可以向终端输出一个 D 。 A) 整型变量表达式 B) 实型变量值 C) 字符串 D) 字符或字符型变量值 6. printf函数中用到格式符%5s,其中数字5表示输出的字符串占用5列。如果字符串长度大于5,则输出按方式 B ;如果字符串长度小于5,则输出按方式 C 。 A) 从左起输出该字符串,右补空格 B) 按原字符长从左向右全部输出 C) 右对齐输出该字符串,左补空格 D) 输出错误信息 7.判断char型变量ch是否为大写字母的正确表达式是 C 。 A) ‘A’<=ch<=‘Z’ B) (ch>=‘A’)&(ch<=‘Z’) C) (ch>=‘A’)&&(ch<=‘Z’) D) (‘A’<= ch)AND(‘Z’>= ch) 8.已知int x=10,y=20,z=30;以下语句执行后x,y,z的值是 B 。 if(x>y) z=x; x=y; y=z; A) x=10, y=20, z=30 B) x=20, y=30, z=30 C) x=20, y=30, z=10 D) x=20, y=30, z=20 9.以下程序段______C__. x=-1; do{ x=x*x; } while(!x); A)是死循环 B)循环执行二次 C)循环执行一次 D)有语法错误 10.以下正确的描述是___B____. A)continue语句的作用是结束整个循环的执行

C语言试卷及答案

一、选择题(每题 1 分,共 20 分) 1. C 语言程序的三种基本结构是顺序结构、选择结构和结构。 A、循环 B、递归 C、转移 D、嵌套 2. 下列标识符中,合法的是_______ 。 A) unsigned B) 5ab C) INT# D)_num2 3. 若float x ;x = 10/4 ;x的值是。 A、2.5 B、2.0 C、3 D、 2 4. 表达式!x 等价于。 A、x==0 B、x==1 C、x != 0 D、x != 1 5. 算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为。 A、算术运算、赋值运算、关系运算 B、关系运算、赋值运算、算术运算 C、算术运算、关系运算、赋值运算 D、关系运算、算术运算、赋值运算 6. 能将高级语言编写的源程序转换为目标程序的是。 A、链接程序 B、解释程序 C、编译程序 D、编辑程序 7. 下列语句定义pf为指向float类型变量f的指针,是正确的。 A、float f, *pf = f; B、float f, *pf = &f; C、float *pf = &f, f; D、float f, pf = f; 8. 一个C程序的执行是从。 A、本程序的main函数开始,到main函数结束 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 9. 能正确表示“当x的取值在[1,10]或[[200,210]范围内为真,否则为假”的表达式是________。 A、(x>=1)&&(x<=10)&&(x>=200)&&(x<=210) B、(x>=1)||(x<=10)||(x>=200)||(x<=210) C、(x>=1)&&(x<=10)||(x>=200)&&(x<=210) D、(x>=1)||(x<=10)&&(x>=200)||(x<=210) 10. 对两个数组a和b进行如下初始化 char a[]=“ABCDEF”;char b[]={ …A?,?B?,?C?,?D?,?E?,?F?}; 则以下叙述正确的是。 A、a和b数组完全相同 B、a和b长度相同 C、a和b中都存放字符串 D、a数组比b数组长度长 11. 是不正确的字符常量。 A、'\n' B、'1' C、"a" D、'\101' 12. 若变量已正确定义,语句“if(a>b) k=0; else k=1;”和等价。 A、k=(a>b)?1:0; B、k=a>b; C、k=a<=b; D、a<=b ? 0 : 1; 13. 设变量定义为“int x, *p=&x;”,则&*p相当于。 A、p B、*p C、x D、*&x 14. 有两个字符数组a、b,则以下正确的输入语句是。 A)gets(a,b); B) scanf(“%s%s”,a,b); C) scanf(“%s%s”,&a,&b); D) gets(“a”),gets(“b”); 15. C语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是。 A、地址传递 B、单向值传递

C语言全部题目及答案

C语言全部题目及答案 SANY GROUP system office room 【SANYUA16H-

C语言全部题目及答案 Exercise 1: Programming Environment and Basic Input/Output 1.Write a program that prints “This is my first program!” on the screen. (a)Save this program onto your own disk with the name of e2-1a; (b)Run this program without opening Turbo C; (c)Modify this program to print “This is my second program!”, then save it as e2-1b. Please do not overwrite the first program. 2.Write a program that prints the number 1 to 4 on the same line. Write the program using the following methods: (a)Using four “printf” statements. (b)Using one “printf” statement with no conversion specifier(i.e. no ‘%’). (c)Using one “printf” statement with four conversion specifiers 3.(a) Write a program that calculates and displays the number of minutes in 15 days. (b) Write a program that calculates and displays how many hours 180 minutes equal to. (c) (Optional) How about 174 minutes?

c语言试题及答案 ()

第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由

主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

C语言试题与答案

大学C语言考试题库 第1章 C语言概述习题 1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. A B. B C. D D. E (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成 C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 32 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言的特点;既适合于开发系

C语言试题及答案

一、单项选择题 1. 软件危机具有下列表现( d )。 I. 对软件开发成本估计不准确II. 软件产品的质量往往靠不住 III. 软件常常不可维护IV. 软件成本逐年上升 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 2. 软件生命周期一般都被划分为若干个独立的阶段,其中占用精力和费用最多的阶段往往是( A )。 A. 运行和维护阶段 B. 设计阶段 C. 代码实现阶段 D. 测试阶段 3. 下列属于软件的特点的是(D )。 A. 软件是一种逻辑实体,具有抽象性 ~ B. 软件在使用过程中没有磨损、老化的问题 C. 软件不同于一般程序,它的一个显著特点是规模庞大,复杂程度高 D. 以上都正确 4. 软件工程的出现是由于(D )。 A. 软件危机的出现 B. 计算机硬件技术的发展 C. 软件社会化的需要 D. 计算机软件技术的发展 5. 软件开发技术不包含( d )。 A. 软件开发方法学 B. 软件工程环境 C. 软件工具 D. 软件质量度度量 6. 软件工程的课程特点( D )。 【 I. 学科理论及其知识应用的多维性 II. 工程化 III. 浓厚的方法学色彩 IV. 实践性、指导性强 A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 7. 下列属于应用软件的是( b )。 I. 计算机辅助教学软件II. 软件测试工具 III. 办公自动化软件IV. 工程与科学计算软件

A. I、II和III B. I、III和IV C. II、III和IV D. 以上都正确 8. 需求分析阶段最重要的技术文档是( b )。 - A. 设计说明书 B. 需求规格说明书 C. 可行性分析报告 D. 用户手册 9. 以下关于数据流图的说法错误的是( c )。 A. 数据流图舍去了具体的物质,只剩下数据的流动、加工处理和存储 B. 数据流图是用作结构化分析的一种工具 C. 传统的数据流图中主要由加工、数据源点/终点、数据流、控制流、数据存储组成 D. 数据流图的绘制采用自上向下、逐层分解的方法 10. 数据字典是软件需求分析阶段的最重要工具之一,其最基本的功能是( c )。 A. 数据库设计 B. 数据通信 C. 数据定义 D. 数据维护 11. 需求分析阶段的研究对象是( b )。 ¥ A. 系统分析员要求 B. 用户要求 C. 软硬件要求 D. 系统要求 12. 结构化方法的基本原则是( b )。 A. 模块化 B. 抽象与分解 C. 信息隐蔽 D. 逐步求精 13. 耦合度最高的是(b)耦合。 A. 环境 B. 内容 C. 控制 D. 数据 14. 内聚程度较低的是( a )内聚。 A. 偶然 B. 通讯 C. 顺序 D. 时间 15. 对一个程序来说,组成系统的模块数目( b ),则开发成本越小。 A. 越多 B. 越少 C. 顺序 D. 时间> 16. 画软件结构图时应注意调用关系只能是(B )。 A. 从下到上 B. 从上到下 C. 从左到右 D. 从右到左 17. 程序流程图中的箭头代表( b )。 A. 数据流 B. 控制流 C. 顺序流 D. 调用 18. 软件测试是软件质量保证的重要手段,下述( B )是软件测试的最基础环节。

C语言必背18个经典程序

C语言必背18个经典程序 (总10页) -CAL-FENGHAI.-(YICAI)-Company One1 -CAL-本页仅作为文档封面,使用请直接删除

C语言必背18个经典程序 1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/ #include "stdio.h" main() {int i,j,result; for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ } printf("\n");/*每一行后换行*/ } system("pause"); } 2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....*/ main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ } } 3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除, 则表明此数不是素数,反之是素数。*/ #include "math.h" main() { int m,i,k,h=0,leap=1; printf("\n"); for(m=101;m<=200;m++) { k=sqrt(m); for(i=2;i<=k;i++)

c语言试题及答案

《C语言》课程综合复习资料 一、单选题 1. 在C语言中,字符型数据在存中的存储形式是 A)原码 B)补码 C)反码 D)ASCII码 2. 在C语言中,十进制数47可等价地表示为 A) 2f B) 02f C) 57 D) 057 3. 设有定义:int x=12,n=5; 则表达式 x%=(n%2) 的值为 A) 0 B) 1 C) 2 D) 3 4. 设有定义语句:char str[][20]={,"Beijing","中国石油大学"},*p=str; 则printf("%d\n",strlen(p+20)); 输出结果是 A)10 B) 6 C) 0 D) 20 5. 已定义以下函数: fun(int *p) { return *p; } 该函数的返回值是 A)不确定的值 B)形参p所指存储单元中的值 C)形参p中存放的值 D)形参p的地址值 6. C语言中,函数返回值的类型是由 A)return语句中的表达式类型决定 B)调用函数的主调函数类型决定 C)调用函数时的临时类型决定 D)定义函数时所指定的函数类型决定 7. 有以下函数定义: void fun( int n , double x ) { …… } 若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是 A) fun( int y , double m ); B) k=fun( 10 , 12.5 ); C) fun( 10 , 12.5 ); D) void fun( 10 , 12.5 ); 8. 以下选项中不能正确赋值的是 A) char b[]={′H′,′e′,′l′,′l′,′o′,′!′}; B) char b[10];b="Hello!";

C语言期末考试题含答案

C语言期末考试题含答 案 文档编制序号:[KKIDT-LLE0828-LLETD298-POI08]

《C 语言程序设计》期末试卷 一、单项选择题(10x2’=20’) 1、以下叙述正确的是( ) A )C 语言的源程序不必通过编译就可以直接运行。 B ) C 语言中的每条可执行语句最终都将被转换成二进制的机器指令。 C )C 语言源程序经编译形成的二进制代码可以直接运行。 D )C 语言中的函数不可以单独进行编译。 2、一个C 语言的源程序中( ) A )必须有一个主函数 B )可能有多个主函数 C )必须有除主函数外其它函数 D )可以没有主函数 3、以下不能定义为用户标识符的是( ) A )scanf B )Void C )_3com D )int 4、若以下选项中的变量已正确定义,则正确的赋值语句是( ) A )x1=%3; B )1+2=x2; C )x3=0x12; D )x4=1+2=3; 5、设有定义:float a=2,b=4,h=3;以下C 语言表达式中与代数式h b a *)(21 的计算结果不. 相符的是( ) A )(a+b)*h/2 B )(1/2)*(a+b)*h C )(a+b)*h*1/2 D )h/2*(a+b) 6、C 语言中用于结构化程序设计的3种基本结构是( ) A )顺序结构、选择结构、循环结构 B )if 、switch 、break C )for 、while 、do-while D )if 、for 、continue

7.在while(!x)语句中的!x与下面条件表达式等价的是() A) x!=0 B) x==1 C) x!=1 D) x==0 8、有以下程序: #include <> void main(){ int i=1,j=1,k=2; if( (j++||k++)&&i++ ) printf(“%d,%d,%d\n”,i,j,k);} 执行后的输出结果是() A)1,1,2B)2,2,1C)2,2,2D)2,2,3 9、有以下程序: #include <> void main(){ int i,s=0; for(i=1;i<10;i+=2) s+=i+1; printf(“%d\n”,s);} 程序执行后的输出结果是() A)自然数1~9的累加和B)自然数1~10的累加和 C)自然数1~9中奇数之和D)自然数1~10中偶数之和 10、有以下函数定义: void fun(int n,double x){……} 若以下选项中的变量都已经正确定义并赋值,则对函数fun的正确调用语句是() A)fun(int y,double m); B)k=fun(10,; C)fun(x,n); D)void fun(n,x); 二、填空题(10x2’=20’) 11、C语言描述“x和y都大于或等于z”的表达式是:。 12、函数定义时涉及的基本要素是:、、。

C语言试题及答案

C语言试题及答案 Company number【1089WT-1898YT-1W8CB-9UUT-92108】

第1章C语言概述习题1. 单项选择题 (1) C 语言是在 B 语言的基础上产生的。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (2) 在 C 语言中,每个语句必须以 D 结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 (3) 标识符和关键字间,要用 C 隔开。 A. 回车符 B. 冒号 C. 空格 D. 分号 (4) 用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( B )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D.自动保存源文件 (5) 下列说法中正确的是( B )。 A. 由于 C 源程序是高级语言程序,因此一定要在 TC 软件中输入 B. 由 C 源程序是字符流组成,因此可以作为文本文件在任何文本编辑的软件中输入 C. 由于C 程序是高级语言程序,因此输入后即可执行 D. 由于 C 程序是高级语言程序,因此它由命令组成 (6) 下列说法中正确的是( A )。 A. C 语言程序由主函数和 0 个或多个函数组成 B. C 语言程序由主程序和子程序组成

C. C 语言程序由子程序组成 D. C 语言程序由过程组成 (7) 下列说法中错误的是( D )。 A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 2. 填空题 (1) C 语言只有 37 个关键字和 9 种控制语句。 (2) C 语言是一种“中级语言”,既具有高级语言的特点又具有低级语言 的特点;既适合于开发系统软件又适合于编写应用程序。 (3) 每个源程序有且只有一个主函数,系统总是从该函数开始执行C语言程序。 (4) 在 C 语言程序中允许出现的字符集是 ASCII码字符集。 (5) C 语言的程序中有特殊含义的英语单词称为保留字。 (6) C 语言标识符的长度是前 8 位有效。 (7) C 语言中,标识符的定义规则是以字母或下划线为开头。 (8) C 语言程序的注释可以出现在程序中的任何地方,它总是以 /* 符号作为开始标记,以 */ 符号作为结束标记。

C语言全套教材

变量和常量 一、变量 (一)、变量类型和表示方法 1.什么是变量?一句话,变量是存储数据的值的空间。由于数值的类型有多种,有整数、小数(浮点数)、字符等等,那 么对应的变量就有整型变量、浮点型变量、字符型变量。变量还有其他的具体分类。整型变量还可具体分为无符号型、长整型和短整型。浮点型也可分为单精度型、双精度型和长双精度型。此外还可以分为静态变量、外部变量、寄存器变量和自动存储变量。这些数据类型我们在本节和后面的章节中都会陆陆续续介绍。 那么变量我们总要给它取个名字吧,这个名字我们叫做标识符。 标识符的命名有一定的规则: (1).标识符只能由字母、数字和下划线三类字符组成 (2).第一个字符必须是字母(第一个字符也可以是下划线,但被视作系统自定义的标识符) (3).大写字母和小写字母被认为是两个不同的字符,如A和a是两个不同的标识符 (4).标识符可以任意长,但只有前32位有效。有些旧的C版本对外部标识符的限制为6位。这是由于链接程序的限制所总 成的,而不是C语言本身的局限性 (5).标识符不能是C的关键字 2.从上面的规则中,有个关键字的概念。那么什么叫关键字呢? 从表面字意上也可以看出,关键字是C语言本身某些特性的一个表示,是唯一的代表某一个意思的。 下面列出ANSI标准定义的32个C语言的关键字,这些关键字在以后的学习中基本上都会用到,到时再说它们的各自用法。 auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef union unsigned void volatile while C语言还包括一些不能用做标识符的扩展关键字。 asm cdecl _cs _ds _es far huge interrupt near pascal _ss 所以在以后的学习中,在给变量命名时要避开这些关键字。 3. Turbo C2.0规定所有变量在使用前都必须加以说明。一条变量说明语句由数据类型和其后的一个或多个变量名组成。变 量说明的形式如下: 类型<变量表>; 这里类型是指Turbo C2.0的有效数据类型。变量表是一个或多个标识符名,每个标识符之间用,分隔。 (二)、整型变量 整型变量是用来存储整数的。 整型变量又可具体分为好几种,最基本的整型变量是用类型说明符int声明的符号整型,形式如下: int C ounter; 这里int是类型说明符,Counter是变量的名字。 整型变量可以是有符号型、无符号型、长型、短型或象上面定义的普通符号整型。 整型是16位的,长整型是32位,短整型等价于整型。 以下是几种整型变量的声明示例: long int Amount; /*长整型*/ long Amount; /*长整型,等价于上面*/ signed int Total; /*有符号整型*/ signed Total; /*有符号整型,等价于上面*/

全国计算机二级C语言资格考试培训资料

全国计算机二级C语言资格考试培训资料 ◆考试方式 全国计算机等级考试二级C语言每年上半年3月份与9月份两次考试,报名时间查看通知。 1.笔试:90分钟,满分100分,其中含公共基础知识部分的30分。 2.上机:90分钟,满分100分 3.上机操作包括: (1)填空。 (2)改错。 (3)编程。 ◆题型分析 二级C考试分笔试和机试两部分,两部分总分均为100分,两部分考试均需60分以上才能合格发放证书。若其中一科(笔试或机试)通过,另一科可在下一次考试中补考,若补考合格发放证书。若二科均在85分以上,在合格证书上将加印“优秀”字样,若二科均在70分以上,在合格证书上将加印“良好”字样。 (一)笔试 笔试内容分两部分。公共基础知识考核内容:30分;C语言基础知识考核内容:70分。题型分析如下: 1、单向选择题40道题,共70分。

分值分布如下: 其中(1)-(10)、(21)-(40)小题,每題2分,(11)-(20)小题,每题1分。 考核内容分布如下: (1)-(10)小题为公共基础知识考核内容,共计20分; (11)-(40)小题为C语言知识考核内容,共计50分。 2、填空题15个空,每空2分,共30分。 考核内容分布如下: (1)-(5)空为公共基础知识考核内容,共计10分; (6)-(15)空为C语言知识考核内容,共计20分。 ◆基本要求 1.熟悉 6.0 集成开发环境。 2.掌握结构化程序设计的方法,具有良好的程序设计风格 3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。 4.在 6.0 集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序能力 ◆考试内容 一、C语言程序的结构 1.程序的构成,函数和其他函数。 2.头文件,数据说明,函数的开始和结束标志以及程序中的

C语言考试题及答案

一、单项选择题:(10分,每题2分) 1.char *p[10];该语句声明了一个: c 。 A)指向含有10个元素的一维字符型数组的指针变量p B)指向长度不超过10的字符串的指针变量p C)有10个元素的指针数组p,每个元素可以指向一个字符串 D) 有10个元素的指针数组p,每个元素存放一个字符串 2.若int x;且有下面的程序片断,则输出结果为: D 。 for (x=3; x<6; x++) { printf((x%2) ? "##%d" : "**%d\n", x); } A) ##3B) **3C) **3D)##3**4 **4 ##4 ##4**5 ##5 ##5 **5 3.在while(!x)语句中的!x与下面条件表达式等价的是:D 。 A) x!=0 B) x==1 C) x!=1 D) x==0 4.已知 struct point { int x; int y; }; struct rect { struct point pt1; struct point pt2; }; struct rect rt; struct rect *rp = &rt; 则下面哪一种引用是不正确的__D______。 A) r t.pt1.x B) (*rp).pt1.x C) r p->pt1.x D) rt->pt1.x 5.若二维数组a有m行n列,则下面能够正确引用元素a[i][j]的为: C 。 A) *(a+j*n+i) B) *(a+i*n+j) C) *(*(a+i)+j) D) *(*a+i)+j CDDDC 二、分析程序并写出运行结果。(25分,每题5分) 1. #include main()

C语言试题及答案

一 下面四个选项中,均是不合法的用户标识符的选项是()。 A、float la0 _A B、A P_0 do C、_123 temp int D、b-a goto int 表达式18/4*sqrt(4.0)/8值的数据类型为()。 A、double B、float C、int D、不确定 设: long w=65535,t=7654321; 根据下面的输出结果,正确的程序段是( ). w=65535,t=7654321 end A、printf("w=%5d,t=%7d\n",w,t);printf("%s","end'); B、printf("w=%5ld,t=%7ld",w,t);printf("%c","end"); C、printf("w=%5ld,t=%7ld\n",w,t);printf("%s","end"); D、printf("w=%5u,t=%7u\n",w,t);printf( "end"); 选择结构中的条件与循环结构中循环成立的条件,在写法上可以是任一表达式,但其值只能被判断为“真”或“假”。哪个数作为逻辑“假”值()。 A、0 B、-1 C、非零的数 D、1 假定有以下变量定义: int k=7,x=12; 则能使值为3的表达式是:( ) A、(x%=k)-(k%=5)

B、x%=(k-k%5) C、x%=k-k%5 D、x%=(k%=5) 在以下给出的表达式中,与 do--while(E)语句中的(E)不等价的 表达式是()。 A、(E>0||E<0) B、(E==0) C、(!E==0) D、(E!=0) 下面有关 for 循环的正确描述是()。 A、for 循环是先执行循环体语句,后判断表达式 B、在 for 循环中,不能用 break 语句跳出循环体 C、for 循环的循环体语句中,可以包含多条语句,但必须用花括号括起来 D、for 循环只能用于循环次数已经确定的情况 在C语言中,一维数组的定义方式为:类型说明符数组名()。 A、[整型常量]或[整型表达式] B、[正整型常量表达式] C、[整型表达式] D、[常量表达式] 以下正确的说法是( ). A、函数的类型决定返回值的类型 B、定义函数时,形参的类型说明可以放在函数体内 C、return后面不能为表达式 D、如果形参与实参的类型不一致,以实参类型为准 若调用一个函数,且此函数中没有return语句,则正确的说法是: 该函数()。 A、没有返回值 B、返回一个不确定的值 C、返回若干个系统默认值 D、能返回一个用户所希望的值 设函数的调用形式如下: f((x1, x2),(y1,y2,y3)),则函数有 ( )个形参. A、2 B、4 C、3 D、5

C语言必背18个经典程序

C语言必背18个经典程序 1、/*输出9*9口诀。共9行9列,i控制行,j控制列。*/ #include "stdio.h" main() {int i,j,result; for (i=1;i<10;i++) { for(j=1;j<10;j++) { result=i*j; printf("%d*%d=%-3d",i,j,result);/*-3d表示左对齐,占3位*/ } printf("\n");/*每一行后换行*/ } } 2、/*古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 兔子的规律为数列1,1,2,3,5,8,13,21....*/ main() { long f1,f2; int i; f1=f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld",f1,f2); if(i%2==0) printf("\n");/*控制输出,每行四个*/ f1=f1+f2; /*前两个月加起来赋值给第三个月*/ f2=f1+f2; /*前两个月加起来赋值给第三个月*/ } } 3、/*判断101-200之间有多少个素数,并输出所有素数及素数的个数。 程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。*/ #include "math.h" main() { int m,i,k,h=0,leap=1; printf("\n"); for(m=101;m<=200;m++) { k=sqrt(m+1); for(i=2;i<=k;i++) if(m%i==0) {leap=0;break;} if(leap) /*内循环结束后,leap依然为1,则m是素数*/

c语言试题及答案

单选题 1 .在C语言中,下列类型属于构造类型的是(D ) A整型B .字符型C .实型D .数组类型 2.下列字符串不是标识符的是( D ) A.sum B. Average C. Day_night D. M.D.JOHN 3.在C语言中,回车换行符是(A ) A. n B. t C. v D. b 4.在C语言中,语句和数据定义是用(C )作为结束标记的A句号B .逗号C .分号D .括号 5. 设有如下定义: int x=10,y=5,z; 则语句printf( “%dn”,z= (x+=y,x/y)); 的输出结果是( C ) A.0 B.1 C.3 D.4 6. 10 .以下程序的输出结果是( B ) main( ) {char c1= '8',c2= '2'; printf( “%c,%c,%d,%d”n ,c1,c2,c1 -c2,c1+c2); }

精选文库 A.因输出格式不合法,输出出错信息 B.8,2,6,106 C . 8,2,6,10 D . 825,9 7.两次运行下面的程序,如果从键盘上分别输入6和4,则输出结果是 (A)mai n() {int x; seanf( “ %d,&x); if(x++>5) printf( “%dn ,x); else prints “%dn ,x --); A. 7 禾R 5 B . 7 禾R 4 C . 6 禾R 4 8.表达式(int)2.1416 的值时(A ) A. 2 B. 2.1 C. 0 D. 3 9.下列运算符优先级最高的是(B ) A. > B. + C. && D. != 10.C语言容许函数值类型缺省定义,此时该函数值隐含的类型时(B ) A. float 型 B. Int 型 C. Long 型 D. Double 型 11、C程序的基本构成单位是(C) A子程序B、过程C、函数D、文件 12、C语言中要求操作数都为整型数据的算术符是( C )

相关文档