文档库 最新最全的文档下载
当前位置:文档库 › C语言程序设计复习资料

C语言程序设计复习资料

C语言程序设计复习资料
C语言程序设计复习资料

C 语言程序设计(07春)

一、选择题

21. 以下关于C 语言源程序的叙述中,错误的是 (21) 。

A. 一个C 源程序由若干个函数定义组成,其中必有且仅有一个名为main 的函数定义

B. 函数定义由函数头部和函数体两部分组成

C. 在一个函数定义的函数体中允许定义另一个函数

D. 在一个函数定义的函数体中允许调用另一个函数或调用函数自身 22. 以下表示中,不能用作C 语言常量的是 (22) 。

A. 0UL

B. (long)123

C. 1e0

D.‘\x2a’

23. 以下标识符中,不能用作变量名或自定义函数名的是 (23) 。

A. main

B. scanf

C. _float

D. sizeof

24.以下表示数学式“a

A. a

B. a

C. !(a>=b)&&!(b>=c)

D. !(a>=b||b>=c)

25. 以下程序运行后的输出结果是 (25) 。

A. 2 2

B. 7 2

C. 7 5

D. 6 2

main()

{ char a[7]="a0\0a0\0"; int i,j;

i=sizeof(a); j=strlen(a); printf("%d %d",i,j); }

26.下面关于循环语句for 、while 、do-while 的叙述中,正确的是 (26) 。

A. 三种循环语句的循环体都必须放入一对花括号中

B. 三种循环语句中都可以缺省循环终止条件表达式

C. 三种循环语句的循环体都至少被无条件地执行一次

D. 三种循环语句都可能出现无穷循环

27. 以下程序段中,有语法错误的是 (27) 。

28. 若有声明“int a[]={1,2,3,4},*p,i;”,则以下程序段中不能输出13的是 (28) 。

A. for(i=0;i<4;i+=2) printf("%d",a[i]);

B. for(p=0;p<4;p+=2) printf("%d",a[p]);

C. for(p=a;p

D. for(p=a,i=0;i<4;i+=2) printf("%d",p[i]);

29. 若有如下的类型定义和变量声明,则在给出的选项中值不为7的表达式是 (29) 。

A.ptr->a

B.(++ptr)->a

C.x[1].a

D.x[0].b->a

struct ss { int a; struct

ss

*b;

}x[3]={{5,&x[1]},{7,&x[2]},{9,0}},

*ptr=&x[0];

30. 若需要对一个数据文件abc.txt 中的数据做加密处理并且限定只能做一次打开文件操作,则在A. fun(char aa[10]) {while(*aa)printf("%c",*aa++);} B. fun(char *aa)

{while(aa[0])printf("%c",*aa++);} C. main() { char *aa="Hello!"; while(*aa)printf("%c",*aa++); }

D. main()

{ char aa[10]="Hello!"; while(*aa)printf("%c",*aa++); }

“fp=fopen("abc.txt", 模式字符串 ); ”中,模式字符串应当是 (30) 。 A. "w+"

B. "r+"

C. "a+"

D. "r"

二、填空题 ●

基本概念(5分)

1.在声明局部变量时,不能使用的存储类别标识符是 (1) 。

2.与整型数学算式

)

(3|

|b a b a +- 等价的C 语言表达式是 (2) 。

3.在以下程序的main 函数中,语句“fun(x,10);”内的实参x 表示数组x 的 (3) 。

void fun(int a[10],int n) { int i;for(i=0;i

{ int x[10]={0}; fun(x,10);}

4.已知程序中有声明“int a;long b;”,若需要接收从键盘输入的电话号码字符串(010)64782656(其中010是区号,64782656是电话号码)并将其中的区号、电话号码分别存储到变量a 、b 中,则实现该功能的输入语句应为“scanf(“ (4) ”,&a,&b);”。

5.若要使表达式p="jiangsu"无任何错误(包括语法错误和警告错误),p 的声明形式应为 (5) 。 ●

阅读程序(13分)

6.以下程序运行后输出结果为 (6) 。

#include "stdio.h" int a;

int m(int a) { static int s; return (++s)+(--a); }

void main() { int a=2;

printf("%d",m(m(a))); }

7.以下程序运行后输出结果为 (7) 。

#include "stdio.h"

enum days { mon=1,tue,wed,thu,fri,sat,sun} today=tue; void main()

{ printf("%d",(today+2)%7);}

8.以下程序运行后输出结果为 (8) 。

#include "stdio.h" int mystery(int a,int b) { if(b==1)return a;

else return a+mystery(a,b-1); }

void main()

{ int x=5,y=3;

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

}

9.以下程序运行后输出结果第一行为(9) , 第二行为(10)。

#include "stdio.h"

void main()

{ int i=5;

do

{ switch (i%2)

{ case 0: i--; break;

case 1: i--; continue;

}

i--;

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

} while (i>0);

}

10.以下程序运行后输出结果中第一行为(11),第二行为(12)。

#include

int fun(int a[],int n,int b[])

{ int i=0,j,m=0,c,x;

for(i=0;i

{ x=a[i];c=1;

for(j=i+1;j

if(a[j]==x) c++;

else { i=j-1;break;}

if(j>=n)i=j;

if(c==1) b[m++]=x;

else { b[m++]=-c; b[m++]=x; }

}

return m;

}

void main()

{ int x[]={4,4,4,4,4,4,4,4,1,2},y[10],i,j,n=10;

n=fun(x,n,y);

for(i=0;i

{ if(i%2==0)printf("\n");

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

}

}

11.以下程序运行后输出结果中第一行为(13),第二行为(14),第三行为(15)。

#include "stdio.h"

#define N 3

main()

{ int a[N][N],b[N*N]={1,1},i,j;

for(i=2;i

b[i]=b[i-1]+b[i-2];

for(i=0;i

for(j=0;j

a[j][i]=b[i*N+j];

for(i=0;i

{ for(j=0;j

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

printf("\n");

}

}

12.以下程序运行后输出结果中第一行为(16),第二行为(17),第三行为(18)。

#include "stdio.h"

#include "stdlib.h"

struct node

{ char data; struct node *next;};

struct node *insert(struct node *h,char c)

{ struct node *p,*p1,*p2;

p=(struct node*)malloc(sizeof(struct node));

p->data=c;p->next=NULL;

if(h==NULL) h=p;

else

{ p1=p2=h;

while(c>p1->data&&p1->next!=NULL)

{ p2=p1;p1=p1->next;}

if(c<=p1->data)

if(p1==h) { p->next=h;h=p;}

else { p2->next=p;p->next=p1;}

else

{ p1->next=p;}

}

return h;

}

struct node *del(struct node *h)

{ struct node *p=h;

while(p!=NULL)

{ if(p->data%2==0) p->next=p->next->next;

p=p->next;

}

return h;

}

void print(struct node *h)

{ struct node *p=h;

while(p!=NULL)

{ printf("%c",p->data); p=p->next; }

printf("\n");

}

void main()

{ struct node *head=NULL;

char *item="32659",*p=item;

puts(item);

while(*p) head=insert(head,*p++);

print(head); del(head); print(head);

}

完善程序(12分)

13.以下程序的功能是:用简单迭代法求方程cos(x)-x=0在区间(0,1)上的一个近似实根。迭代

公式为:x n+1=cos(x n),(n=0,1,2,…),当 |x n+1-x n|<10-6时,x n+1即是方程

cos(x)-x=0在x0附近的一个误差小于10-6的近似实根(此根的近似值是0.7391)。

#include

#include

float root( float x0)

{ float x1;

(19) ;

do

{ x0=x1;

x1=cos(x0);

}while( (20) );

return x1;

}

void main()

{ float x;

x= (21) ;

printf("x=%f,cos(%f)-%f=%f", x,x,x,cos(x)-x);

}

14.以下程序的功能是找到具有这样特性的正整数A:若将A的个位数p移到首位,所得到的数为原数的p倍。例如,将102564的个位数4移到首位得到410256,而410256=102564?4,因此数102564具有此特性。对于p=2,3,4,5,6,7,8,9均存在具有此特性的整数,但除本例外,其余数的位数均超过12,不能用普通整型数表示,但可用类似手算的方法找到它们。

函数int search(int p)的功能是:找到末位数是p且具有上述特性的正整数A,以十进制形式将A保存到数组a中,每个数组元素保存A的一位数(个位数p保存在a[0]中,十位数保存在a[1]中,百位数保存在a[2]中,其他位依次类推)。

算法提示:⑴将p保存到a[0],将a[0]向a[1]的进位值置为0;

⑵对于i=1,2,3,……,计算“a[i-1]×p+a[i-1]向a[i]的进位值”得

到t,若t=p则A已找到,否则将t的个位数保存到a[i],t的十位数作为a[i]向a[i+1]的进位值。

#include

#define N 60

int a[N];

int search(int p)

{ int i,t,c=0;

a[0]= (22) ;

for(i=1;;i++)

{ t= (23) ;

if(t==p)break;

a[i]= t%10; c= t/10;

}

return i;

}

void main()

{ int p, i, n;

scanf("%d",&p);

n=search(p);

printf("p=%d;A=",p);

for(i= (24) ; i>=0;i--)

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

}

15.以下程序的功能是:main函数通过调用fun1函数将数组S的4个元素中大于等于平均值的那些数保存到a数组,小于平均值的那些数保存到b数组,变量n、m分别保存a数组和b数组中数据的个数。

输出数组S中数据的平均值和a、b数组中的数据。

#include "stdio.h"

#define N 4

double fun1(int *x,int *y,int *z,int *n,int *m)

{ int i;

double av=0;

(25) ;

for(i=0;i

(26) ;

av/=N;

for(i=0;i

if( (27) )

{ y[*n]=x[i]; (*n)++; }

else

{ z[*m]=x[i]; (*m)++; }

return av;

}

void main()

{ int S[N]={60,80,50,90},a[N]={0},b[N]={0},t,i,j,m,n; double ave;

ave=fun1(S,a,b,&n,&m);

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

for(i=0;i

printf("\n");

for(i=0;i

}

16.以下程序的功能是:在不改变a数组中数据存储位置的前提下,按a数组第一列元素的值从大到小依次输出a数组的各行元素。实现算法:将a数组每行第一个元素的值和地址依次保存到index结构数组相应元素的成员x和y中,对index数组按成员x的值从大到小排序,依次输出index数组每个元素的成员y指向的a数组中一行的全部元素的值。

a数组中元素的值:程序输出结果:

20 40 30 60 60 30

30 10 20 40 50 30

40 50 30 30 10 20

60 60 30 20 40 30

#include

struct link

{ int x, *y;};

void main( )

{ int a[][3]={{20,40,30},{30,10,20},{40,50,30},{60,60,30}},i,j,k,*p;

struct link index[4]={0},tmp;

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

{ index[i].y= (28) ;

index[i].x=a[i][0];

}

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

{ k=i;

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

if( (29) )k=j;

if(k!=i) { tmp=index[i];index[i]=index[k];index[k]=tmp; }

}

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

{ p=index[i].y;

printf("\n");

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

printf("%3d", (30) );

}

}

C语言程序设计(07秋)

一、选择题

21.在下列C语言源程序的错误中,通常不能在编译时发现的是(21)。

A. 括号不匹配

B. 非法标识符

C. 数组元素下标值越界

D. 程序结构不完整

22.在以下各组标识符中,均可以用作变量名的一组是(22)。

A.a01, Int B.table_1, a*.1 C.0_a, W12 D.for, point 23.若有声明“long a,b;”且变量a和b都需要通过键盘输入获得初值,则下列语句中正确的是

(23)。

A. scanf("%ld%ld,&a,&b");

B. scanf("%d%d",a,b);

C. scanf("%d%d",&a,&b);

D. scanf("%ld%ld",&a,&b);

24.若有程序段“char c=256; int a=c;”,则执行该程序段后a的值是(24)。

A. 256

B. 65536

C. 0

D. -1

25.若在一个C语言源程序中“e1”和“e3”是表达式,“s;”是语句,则下列选项中与语句“for(e1; ;e3)s;”

功能等同的语句是(25)。

A. e1;while(10)s;e3;

B. e1;while(10){s;e3;}

C. e1;while(10){e3;s;}

D. while(10){e1;s;e3;}

26.若有声明“int a[3][4], *p=a[0] ,(*q)[4]=a;”,则下列叙述中错误的是 (26) 。

A. a[2][3]与q[2][3]等价B. a[2][3]与p[2][3]等价

C. a[2][3]与*(p+11)等价D. a[2][3]与p=p+11,*p等价

27. 若有结构类型定义“typedef struct test{ int x,y[2]; }TEST;”,则以下声明中正确的

是(27)。

A.struct test x; B.struct x;

C.test x ; D.struct TEST x;

28. 若有声明“long fun(int *x,int n,long *s);int a[4]={1,2,3,4}; long b,c;”,则

以下函数调用形式中正确的是(28)。

A. c=fun(a,4,b);

B. c=fun(a[],4,&b);

C. c=fun(a[4],4,b);

D. c=fun(a,4,&b);

29.若有枚举类型定义“enum list1{x1,x2,x3,x4=6,x5,x6};”,则枚举常量x2和x6代表的值分

别是(29)。

A. 1,6

B. 1,8

C. 2,6

D. 2,8 30.已知在函数f中声明了局部变量x,如果希望f函数第一次被调用返回后变量x中存储的数据保持到下次f函数被调用时仍可以使用,则在声明x时必须指定其存储类型为(30)。

A. auto

B. register

C. static

D. extern

二、填空题

●基本概念

1.若有声明“int a=5,b=2;”,则表达式“b+=(float)(a+b)/2”运算后b的值为(1)。2.若有声明“char s[10]="remind";”,执行“puts(s+2);”后的输出结果是 (2) 。3.若有声明“double x=10,y=5;”,则计算x y的库函数调用形式是 (3) 。

4.已知某程序中有预处理命令“#include”,为使语句“zx=fopen("c:\\a.txt","r");”

能正常执行,在该语句之前必须有声明 (4) 。

●阅读程序

5. 以下程序运行时输出结果是 (5) 。

#define EVEN(x) x%2==0?1:0

main()

{ if(EVEN(5+1)) printf("Even");

else printf("Odd");

}

6. 以下程序运行时输出结果是(6)。

#include

main()

{ int s=1,n=235;

do

{ s*=n%10;

n/=10;

}while(n);

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

}

7. 以下程序运行时输出结果是(7)。

#include

int t;

int sub(int *s)

{ *s+=1;

t+=*s;

return t;

}

main()

{ int i;

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

printf("%4d",sub(&i));

}

8.以下程序运行时输出结果是(8)。

#include

void f(long x)

{ if(x<100) printf("%d", x/10);

else { f(x/100); printf("%d", x%100/10); }

}

main()

{ f(123456); }

9. 以下程序运行时输出结果的第一行是(9);第二行是(10)。

#include

int fun(int *x,int n)

{ int i,j;

for(i=j=0;i

if(*(x+i)%2)

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

return j;

}

main()

{ int a[10]={1,5,2,3,8,3,9,7,4,10},n,i;

n=fun(a,10);

for(i=0;i

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

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

}

}

10.以下程序运行时输出结果中第一行是(11),第二行是(12),第三行是(13)。

#include

main()

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

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

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

switch(i-j+2)

{ case 0: case 1: a[i][j]=1;break;

case 2: a[i][j]=2;break;

case 3: a[i][j]=3;break;

case 4: a[i][j]=5;break;

}

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

{ for(j=0;j<3;j++)

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

printf("\n");

}

}

11.以下程序运行时输出结果中第一行是(14),第二行是(15)。

#include

#include

void fun(char str[][20],int n)

{ int i,j,k;

char s[20];

for(i=0;i

{ k=i;

for(j=i+1;j

if(strcmp(str[j],str[k])<0) k=j;

strcpy(s,str[i]);

strcpy(str[i],str[k]);

strcpy(str[k],s);

}

}

main( )

{ char str[6][20]={"PASCAL","BASIC","FORTRAN","C","COBOL","Smalltalk"};

int i;

fun(str,6);

for(i=0;i<6;i++) printf("%s\n",str[i]);

}

12.以下程序运行时输出结果的第一行是 (16) ;第二行是 (17) ;第三行是 (18) 。

#include

#define N 10

int merge(int a[],int b[],int c[],int m[][N+1])

{ int i=0,j,k;

while((k=m[0][i])!=2)

{ j=m[1][i];

if(k==0)

c[i]=a[j];

else

c[i]=b[j];

i++;

}

return i;

}

main( )

{ int a[N]={1,3,5},b[N]={2,4,6},c[2*N],i,n;

int m[2][N+1]={ {0,1,0,1,0,1, 2},

{0,0,1,2,2,1,-1}};

n=merge(a,b,c,m);

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

for(i=0;i

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

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

}

}

完善程序

13.程序功能:寻找具有下列特性的四位正整数,其百位数为0,去掉百位数0可得到一个三位正整数,而该三位正整数乘以9等于原四位正整数。例如,6075=675×9,所以6075是具有上述特性的正整数。

#include

int fun(int n)

{ int a[4],i,k;

k=n;

for(i=0;k>0;i++)

{ a[i]= (19) ;

k/=10;

}

if( (20) &&(a[3]*100+a[1]*10+a[0])*9==n )

return 1;

else

return 0;

}

main()

{ int i, n=0;

for(i=1000;i<10000;i++)

if(fun(i))

printf("%4d\t",i); printf("\n"); }

14.程序功能:用牛顿迭代法求方程

3x 3-3x 2

+x-1=0在2.0附近的一个实根,精度要求为10-5

函数F 求f(x)的值,函数F1求f(x)的一阶导数值。 牛顿迭代公式如下:

)

0(')0(0x f x f x x -

=

#include #include float F(float x)

{ return x*(3*x*(x-1)+1)-1; }

float F1(float x) { return 9*x*x-6*x+1; } float newtoon(float x) { float f,f1,x0; do

{ (21) ; f=F(x0); f1=F1(x0);

x= (22) ; }while(fabs(x-x0)>1e-5); return x; } main()

{ float x0;

scanf("%f",&x0);

printf("The result =%.2f\n",newtoon(x0)); }

15.程序功能:选票统计。二维数组s 中保存了投票后10张有效选票上所填写的候选人姓名,结构数组stat 中保存统计结果。程序运行后的输出结果是“liu:2 wang:5 zhao:3”。

#include #include typedef struct

{ char name[20]; /* 候选人姓名 */

int count; /* 候选人得票数 */

}COUNT;

int count(char x[][20],int n, (23) ) { int i,j,k=0;

for(i=0; (24) ;i++) { for(j=0;j

if(strcmp(st[j].name,x[i])==0)

{ (25) ;

break;

}

if(j>=k)

{ (26) ;

st[k].count++;

k++;

}

}

return k;

}

main()

{ char s[10][20]={"liu","wang","zhao","zhao","wang","liu","wang","zhao","wang","wang"};

COUNT stat[5]={0};

int i,n;

n=count(s,10,stat);

for(i=0;i

printf("%s:%d\t",stat[i].name,stat[i].count);

}

16. 设一个单向链表结点的数据类型定义为:

struct node

{ int x;

struct node *next;

};

fun函数从h指向的链表第二个结点开始遍历所有结点,当遇到x值为奇数的结点时,将该结点移到h链表第一个结点之前,函数返回链表首结点地址。print函数输出p指向的链表中所有结点的x值。程序运行后的输出结果是“1 3 4 2”。

#include

#define N 4

struct node

{ int x;

struct node *next;

};

void print(struct node *p)

{ while( (27) )

{ printf("%4d", (28) ); p=p->next;}

printf("\n");

}

struct node *fun(struct node *h)

{ struct node *p1,*p2,*p3;

p1=h; p2=p1->next;

while(p2)

{ if(p2->x%2)

{ p3=p2;

p1->next= (29) ;

p2=p1->next;

p3->next=h;

(30) ;

}

else

{ p1=p2; p2=p2->next; }

}

return h;

}

main()

{ struct node a[N]={{4},{3},{2},{1}},*head=a; int i,num;

for(i=0;i

a[i].next=0;

head=fun(head); print(head);

}

C语言程序设计(08春)

一、选择题

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

A. main函数必须出现在其他函数之前

B. main函数中至少必须有一条语句

C. C程序总是从main函数的第一条语句开始执行

D. C程序总是在执行完main函数的最后一条语句后结束

22.以下常量表示中正确的是 (22) 。

A. \xff

B.5L

C. aEb

D. 3.14U

23.若程序中已有相应的声明,下列语句中错误的是 (23) 。

A.printf(i==4 ? "%6d\n" : "%6d" , i );

B.i==4 ? printf("%6d\n",i ) : printf("%6d" , i ) ;

C.for (i=10 ; ; i--) if(i==1) break;

D.for (i=10 ; ; ) if(i--); break;

24.若有声明“float f=123.45678;”,则执行语句“printf( "%.3f",f );”后,输出结果是 (24) 。

A. 1.23e+02 B. 123.457 C. 123.456780 D. 1.234e+02 25.若有声明“int x=2,y=1,z=0;”,则下列关系表达式中有语法错误的是 (25) 。

A. x>y=2 B.z>y>x

C. x>y==1 D.x==(x=0,y=1,z=2)

26.若有声明“int x[10]={0,1,2,3,4,5,6,7,8,9},*p;”,则值不为4的表达式是(26)。

A.p=x,*(p+4) B.p=x+4,*p++

C.p=x+3,*(p++) D.p=x+3,*++p

27.若有声明“int i,k=1; unsigned j;”,则下列语句执行时会出现无限循环的语句是 (27) 。

A.for(j=15;j>0;j-=2) k++; B.for(j=0;j<15;j+=2) k++;

C.for(i=0;i<15;i+=2) k++; D.for(i=15;i>0;i-=2) k++;

28.已知A盘根目录下有文本文件“data.txt”且程序中已有声明“FILE *fp;”,若程序需要先从“data.txt”

文件中读出数据,修改后再写入“data.txt”文件中,则调用fopen函数的正确形式是 (28) 。

A.fp=fopen("a:\\data.txt","rw"); B. fp=fopen("a:\\data.txt","w+");

C. fp=fopen("a:\\data.txt","r+");

D. fp=fopen("a:\\data.txt","r"); 29.以下选项均为fun函数定义的头部,其中错误的是 (29) 。

A. int fun(int x,int y[])

B. int fun(int x,int y[x])

C. int fun(int x,int y[3])

D. int fun(int x,int *y)

30.以下结构变量stu1的声明形式中,错误的是 (30) 。

A.typedef struct stu{char name[10];float score;}STU ; STU stu1;

B.#define STU struct stu

STU {char name[10];float score; }stu1;

C.struct stu{char name[10];float score;}stu1;

D.struct stu{char name[10];float score;}STU; STU stu1;

二、填空题(将答案填写在答题纸的相应答题号内,每个答案只占一行,共30分)

●基本概念

1.在C语言源程序中,不带任何修饰符的浮点数直接量(例如:3.14)都是按 (1) 类型数据存储的。2.若有声明“ch ar s1[10]=″A BCDE″,s2[10]=″A\\0″;”,则语句

“prin tf(″%d″,str len(strcp y(s1,s2)));”的输出结果是 (2) 。

3.可以改变局部变量的生存期、但不能改变它的作用域的存储类别是 (3) 。

4.C语言有效的预处理命令总是以 (4) 开头。

5.若有声明“int a=15,b=20,c=25,e;”,则执行语句“e=a>b? --c :++c;”后变量e的值是 (5) 。

●阅读程序

6.以下程序运行后的输出结果是 (6) 。

#include

#define Count(n) ++n

main ( )

{ int x=-3 ,n=8;

while(Count(x)) n--;

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

}

7.以下程序运行后的输出结果是 (7) 。

#include

int fun(int w1 , int w2)

{ return w2-w1;

}

main( )

{ int w=1,k ;

k=fun(fun(w+1,w),w) ;

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

}

8.下列程序运行后的输出结果第一行是 (8) ;第二行是 (9) 。

#include

{ int i,a=0,c=2;

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

switch(++a,a*c)

{ case 1: printf("1");

case 2: printf("2");

case 3: printf("3\n");break;

default: printf("other\n");

}

}

9.以下程序运行后的输出结果是 (10) 。

#include

main ( )

{ char a[ ]="369",*p=a;

int s=0,t=1;

while(*++p) t*=10;

p--;

while (t)

{ s+=(*p-'0')*t;

p--;

t/=10;

}

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

}

10.以下程序运行后的输出结果第一行是 (11) ;第二行是 (12) 。

#include

struct num

{ int x,y ;

} st[]={{1,10},{2,20},{3,30},{4,40},{-1,-1}},s1[2],s2[2];

main()

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

for(k=0;st[k].x!=-1;k++)

{ if(st[k].x%2)

s1[i++]=st[k];

else

s2[j++]=st[k];

}

printf (" %d \n %d \n",s1[0].y ,s2[0].y );

}

11.以下程序运行后的输出结果第一行是 (13) 。

#include

void print(int n);

void print_n(int n);

{ print(4); }

void print(int n)

{ if (n==0) return;

print_n(n);

if (n>0) print(n-1);

}

void print_n(int n)

{ if(n==0)return;

printf("%d",n);

if(n>1)

print_n(n-1);

else

printf("\n");

}

12.以下程序运行后的输出结果第一行是 (14) ;第二行是 (15) ;第三行是 (16) 。

#include

void sot( int a[3][3])

{ int i,j,i0,j1,min,max,temp;

min=max=a[0][0];

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

{ for( j=0;j<3;j++)

{ if(a[i][j]<=min) { min=a[i][j];i0=i;}

if(a[i][j]>=max) { max=a[i][j];j1=j;}

}

}

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

{ temp=a[i0][j];

a[i0][j]=a[2][j];

a[2][j]=temp; }

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

{ temp=a[i][j1];

a[i][j1]=a[i][2];

a[i][2]=temp;

}

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

{ for(j=0;j<3;j++)

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

printf("\n");

}

}

main()

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

sot(b); }

13.以下程序运行时,若在键盘上输入 2,则输出是 (17) ;若在键盘上输入i,则输出是 (18) 。

#include

#include

int strch( char *s,char ch) { int i;

for(i=strlen(s);i>=0;i--) if(s[i-1]==ch) return i; if(i<0)return 0; }

main()

{ char ch,s1[]="as123d2nfghjkm";

int k;

printf("input ch:"); ch=getchar(); k=strch(s1,ch); if(k!=0)

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

printf("not found\n"); }

完善程序

14.某餐厅用苹果、桔子、香蕉、菠萝、梨五种水果制作水果拼盘,要求每个拼盘中恰有三种不同水果。

以下程序的功能就是计算可以制作出多少种这样的水果拼盘并列出组合方式。

#include

typedef enum { apple,orange,banana,pineapple,pear } Fruit;

main()

{(19) fruits[ ]={"apple","orange","banana","pineapple","pear"}; Fruit x,y,z,p;

int k=0,i;

for (x= (20) ;x<=pear;x++) for (y=x+1;y<=pear;y++)

for (z=y+1;z<=pear;z++)

printf ("\n%d %s %s %s ",++k, fruits[x],fruits[y],fruits[z]); }

15.以下程序通过给出的公式计算π的近似值,计算过程在所加项的值小于10-10时终止。

#include

main()

{ double sum=0.5,t,t1,t2,t3;

+??

?

????? ????+??? ????? ???+??? ????? ??+=7

5321716543212151432121312121

int odd=1, even=2 ;

t=t1=t2=1.0; t3=0.5;

while (t>1e-10)

{ t1= (21) ;

odd+=2;

even+=2;

t2=1.0/odd ;

t3= (22) ;

t=t1*t2*t3;

sum+=t;

}

printf ("\nPI=%.8lf", (23) );

}

16.以下程序中函数long fun(char *str)的功能是:自左至右取出非空字符串str中的所有数字字符,将这些数字字符组成一个不超过8位的十进制整数并输出。

例如,字符串str为“efg32gh76.jbejing08t5y4u2”,程序输出:32760854。

#include

long fun(char *str)

{ int i=0; long k=0;

char *p=str;

while(*p!='\0'&& (24) )

{ if(*p>='0'&&*p<='9')

{ k= (25) +*p-'0'; ++i; }

(26) ;

}

return k;

}

void main( )

{ char x[]="efg32gh76.jbejing08t5y4u2";

printf("%ld\n", fun(x));

}

17.设某单向链表结点的数据结构定义为:

typedef struct node

{ char ch;

struct node *next ;

} linklist ;

以下程序首先建立一个单向链表head(如图1所示),该链表每个结点中保存x数组的一个元素值;输出head链表中每个结点的值;再将head链表变换为倒序链表(如图2所示),输出倒序后head链表中每个结点的值。

head链表倒序算法提示:(1)使hp指向head链表,置head为0(head链表为空链表)。(2)从hp指向的链表第一个结点开始,依次从hp链表中删除每个结点,将所删除的结点再依次插入到head链表第一个结点之前,直到hp链表为空时结束。

#include

typedef struct node

{ char ch;

struct node *next;

}linklist ;

linklist *create( char x[])

{ int i; linklist *pt,*pr,*p=NULL;

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

{ pt=(linklist*)malloc(sizeof(linklist));

pt->ch=x[i];pt->next=NULL;

if(p==NULL)

{ (27) ; pr=pt;}

else

{ pr->next=pt; (28) ;}

}

return p;

}

linklist *revlist( linklist *head)

{ linklist *hp,*p=NULL;

hp=head;

head= (29) ;

while(hp)

{ p=hp;

hp=hp->next;

p->next=head;

(30) ;

}

return head;

}

void print( linklist *phead)

{ while(phead)

{ printf("%c ",phead->ch);

phead=phead->next;

}

printf("\n");

}

main()

{ linklist *head; char x[]="ABCD";

head=create(x); print(head);

head=revlist(head); print(head);

C语言程序设计试题及答案

C语言程序设计 一、选择题(共40分,每小题2分) 1、以下叙述不正确的是(D) A、一个C源程序可由一个或多个函数组成 B、一个C源程序必须包含一个main函数 C、C程序的基本组成单位是函数 D、在C程序中,注释说明只能位于一条语句的后面 2、下列四个选项中,是不合法的用户标识符的选项是(B) A、abc B、12AC C、sun D、A 3、设有语句inta=4;则执行了语句a+=a-=a*a后,变量a的值是(A) A、-24 B、0 C、4 D、16 4、下列运算符中优先级最高的是(B) A、< B、+ C、&& D、== 5、在C语言中,运算对象必须是整型数的运算符是(A) A、% B、/ C、%和/ D、+ 6、以下关于运算符的优先顺序的描述正确的是(C) A、关系运算符<算术运算符<赋值运算符<逻辑与运算符 B、逻辑与运算符<关系运算符<算术运算符<赋值运算符 C、赋值运算符<逻辑与运算符<关系运算符<算术运算符 D、算术运算符<关系运算符<赋值运算符<逻辑与运算符 7、在C语言中,如果下面的变量都是int类型,则输出的结果是(C) sum=pad=5;pAd=sum++,pAd++,++pAd; printf(“%d\n”,pad); A、7 B、6 C、5 D、4 8、x、y、z被定义为int型变量,若从键盘给x、y、z输入数据,正确的输入语句是(B)

A、INPUTx、y、z; B、scanf(“%d%d%d”,&x,&y,&z); C、scanf(“%d%d%d”,x,y,z); D、read(“%d%d%d”,&x,&y,&z); 9、假定从键盘输入23456<回车>,下面程序的输出结果是:(C)voidmain() {intm,n; scanf(“%2d%3d”,&m,&n); printf(“m=%dn=%d\n”,m,n); } A、m=23n=45 B、m=234n=56 C、m=23n=456 D、语句有错误 10、若运行时,给变量x输入12,则以下程序的运行结果是(A)main() {intx,y; scanf(“%d”,&x); y=x>12?x+10:x-12; printf(“%d\n”,y); } A、0B、22C、12D、10 11、C语言中while和do-while循环的主要区别(A) A、do-while的循环体至少执行一次 B、while的循环控制条件比do-while的循环控制条件严格 C、do-while允许从外部转到循环体内 D、do-while的循环体不能是复合语句 12、以下对二维数组的正确说明的语句是(C) A、inta[3][] B、floata(3,4) C、doublea[3][4] D、floata(3)(4) 13、以下程序的输出结果是(C) main()

c语言程序设计第二章课后参考答案

第二章:C程序的基本结构 一、单项选择题 1、以下不是C语言的特点的是________。 A)语言的表达能力强B)语言定义严格 C)数据结构系统化 D)控制流程结构化 2、TC编译系统提供了对C程序的编辑、编译、连接和运行环境,以下可以不在该环境下进行的环节是________。 A)编辑和编译 B)编译和连接 C)连接和运行D)编辑和运行 3、以下不是二进制代码文件是________。 A)标准库文件 B)目标文件C)源程序文件 D)可执行文件 4、下面个选项组中,均属于C语言关键字的一组是________。 A)auto,enum,include B)switch,typedef,continue C)signed,union,scanf D)if,struct,type 5、下面四组字符串中,都可以用作C语言标识符的是________。 A)print B)I \am C)signed D)if _maf scanf 3mf ty_pr mx_2d mx_ a.f x1# aMb6 AMB A&B 5XY 6、以下不属于流程控制语句的是_________。 A)表达式语句 B)选择语句 C)循环语句 D)转移语句 7、下面描述中,不正确的是________。 A)C语言的函数体由一系列语句和注释组成。 B)注释内容不能单独写在一行上。 C)C程序的函数说明部分包括对函数名、函数类型、形式参数等的定义和说明。 D)scanf和printf是标准库函数而不是输入和输出语句。 8、下面描述中,正确的是________。 A)主函数的花括号必须有,而子函数中的花括号是可有可无的。 B)一个C程序行只能写一个语句。 C)主函数是程序启动时的唯一入口。 D)函数体包含了函数说明部分。 二、填空题 1、一个完整的C程序至少要有一个________函数。(主函数) 2、标准库函数不是C语言本身的组成部分,它是由__________提供的功能函数。(编译系统) 3、C语言是以________为基本单位、整个程序由________组成。(函数函数) 4、常用的标准库函数有数学函数、字符函数和字符串函数、动态分配函数、随机函数和________函数等几个大类。(输入输出) 5、标准库函数存放在________文件中。(函数库) 6、目标程序文件的扩展名是________。(.obj) 7、程序连接过程是将目标程序、________或其它目标程序连接装配成可执行文件。(库函数) 8、因为源程序是________类型文件,所以用具有文本编辑功能的任何编辑软件程序完成编辑。(文本)

C语言程序设计试题集与答案解析

一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10. 程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。

13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。 18. 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19. 用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.

C语言程序设计试题集

第一章基础知识 一.填空 1. 每个C程序都必须有且仅有一个________ 函数。 2. C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3. 软件是程序,以及______、使用和维护所需要的所有文档。 4. 国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5. 程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6. C语言是由________组成的。 7. C语言的函数可分为主函数main、标准库函数和_________。 8. 一个函数是由两部分组成的,即:________和函数体。 9. 编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。

程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作 的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11. 机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12. 与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对 象,也可以用标号和符号来代替地址、常量和变量。 13. 在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14. C程序的执行均是由执行_________开始。 15. 函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C 语句 组成的执行部分。 16. C语言程序中一条简单语句是以________字符作为结束符的。 17. C语言是结构化、________的程序设计语言。

C语言程序设计试卷及答案

C语言程序设计试卷及 答案 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

C语言程序设计 一、单项选择题(共15小题,每题4分,共60分) 1、下列有关C语言的叙述中错误的是()。 A)C语句必须以分号结束B)任何一个C程序中有且只有一个主函数 C)复合语句在语法上可被看作一条语句D)C程序中对数据的任何操作都可由运算符实现 2、以下不能定义为用户标识符的是()。 A)MAINB)_HJC)2ongD)LINE1 3、以下能正确定义一维数组的是()。 A)inta[5]={0,1,2,3,4,5};B)inta[5]=”012345”; C)chara[]=”012345”;D)chara[5]={0,1,2,3,4,5}; 4、以下关于main()函数的说法,正确的是。 A)main()必须是程序的第一行B)main()可以有参数 C)一个程序可以有多个main()D)main()可以被用户自定义的函数调用 5、设charstr1[10]=“ABCDE”,str2[10]=“xyz”; 则执行语句printf(“%d”,strlen(strcpy(str1,str2)));后的输出结果是()。 A)9B)8C)5D)3 6、若用数组名作为函数调用的实参,则传递给形参的是()。 A)数组的首地址B)数组第一个元素的值C)数组中全部元素的值D)数组元素的个数 7、在C程序中,若未在函数定义时说明函数类型,则函数默认的类型为()。 A)void?B)double?C)int?D)char 8、下面不能正确进行字符串赋值操作的语句是()。

C语言程序设计习题集(3)

指针 一单项选择题(每题2分,共40分) 1 以下叙述中错误的是_B__。 A 在程序中凡是以“#”开始的语句行都是预处理命令行 B 预处理命令行的最后不能以分号表示结束 C #define MAX是合法的宏定义命令行 D C程序对预处理命令行的处理是在程序执行的过程中进行的 2 若程序中有宏定义行:#define N 100 ,则以下叙述中正确的是__B_。 A 宏定义行中定义了标识符N的值为整数100 B 在编译程序对C源程序进行预处理时用100替换标识符N C 对C源程序进行编译时用100替换标识符N D 在运行时用100替换标识符 3 若有如下宏定义: #define N 2 #define y(n) ((N+1)*n) 则执行下列语句:z=4*(N+y(5));后的结果是_B__。 A 语句有错误 B z值为68 C z值为60 D z值为180 4 以下程序运行后的输出结果是_A__。 #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 以下程序运行后的输出结果是_C__。 #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型变量,则__D_是对指针变量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__。 A 6 B 2 C 4 D 8 8 下面是一个初始化指针的语句:int *px=&a;,其中指针变量的名字应该__C_。 A *px B a C px D &a 9 若指针px为空指针,则_B__。。

C语言详解(第五版)第二章程序设计项目答案

C语言详解(第五版)程序设计项目答案第二章 1.编写一个程序,以每英里0.35的费率计算一个售货员的里程偿还金。程序中要求与用户进行如下方式的交互。 #include #include int main(void) {float mile_1,mile_2,miles,consume,payment; printf("MILEAGE REIMBURSEMENT CALCULATOR\n"); printf("Enter begainning odometer reading>\n"); scanf("%f",&mile_1); printf("Enter endding odometer reading>\n"); scanf("%f",&mile_2); printf("Enter consume per mile>\n"); scanf("%f",&consume); miles=mile_2-mile_1; payment=miles*consume; printf("You traveled%f miles.At%f per mile,your reimbursement is%f",miles,consume,payment); system("pause"); return(0); } 2.编写一个程序,用于辅助设计水力发电大坝。提示用户输入大坝高度,以及水流量。如果水由重力所做的功有90%转化为电能,测算会有多少M瓦的功率。 #include #include int main(void) {double density,weight,gravitational_acceleration, efficiency,height,water_flow_rate,work,electricity_power; printf("Please type in the density of water>"); scanf("%lf",&density); printf("Please type in the gravitational_acceleration>"); scanf("%lf",&gravitational_acceleration); printf("Please type in the height of the water>"); scanf("%lf",&height); printf("Please type in the efficiency of the transformation\nfrom water to electricity>"); scanf("%lf",&efficiency); printf("Please type in the water_flow_rate>"); scanf("%lf",&water_flow_rate); weight=density*water_flow_rate; work=weight*height*gravitational_acceleration; electricity_power=work*efficiency/1000000; printf("The electric energy production is%fW",electricity_power); system("pause"); return0; }

C语言程序设计期末考试试题(含答案)

C语言程序设计 期末考试试题及其答案 一、单项选择题(本大题共20题,每题2 分,共40分) 1、以下不是C语言的特点的是( ) A、C语言简洁、紧凑 B、能够编制出功能复杂的程序 C、C语言可以直接对硬件进行操作 D、C语言移植性好 2、以下不正确的C语言标识符是( ) A、ABC B、abc C、a_bc D、ab.c 3、一个C语言程序是由( ) A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 4、一个算法应该具有“确定性”等5个特性,对另外4个特性的描述中错误的是( ) A、有零个或多个输入 B、有零个或多个输出 C、有穷性 D、可行性 5、设变量a是整型,f是实型,i是双精度型,则表达式10+‘a’+i*f值的数据类型为( ) A、int B、float C、double D、不确定 6、在C语言中,char型数据在内存中的存储形式是( ) A、补码 B、反码 C、源码 D、ASCII码 7、有如下程序,输入数据:12345M678<cR>后(表示回车),x的值是( ) 。 #include main(){ int x; float y; scanf("%3d%f",&x,&y); } A、12345 B、123 C、45 D、345 8、若有以下定义int a,b; float x,则正确的赋值语句是( ) A、a=1,b=2 B、b++; C、a=b=5 D、b=int(x); 9、以下程序的执行结果是( )

#include { int i=10,j=10; printf("%d,%d\n",++i,j--); } A、11,10 B、9,10 C、11,9 D、10,9 10、巳知字母A的ASCII码是65,以下程序的执行结果是( ) #include main() { char c1='A',c2='Y'; printf("%d,%d\n",c1,c2); A、A,Y B、65,65 C、65,90 D、65,89 11、下列运算符中优先级最高的是( ) A、< B、十 C、% D、!= 12、设x、y和z是int型变量,且x=3,y=4,z=5,则下面表达式中值为0是( ) 。 A、’x’&&’y’ B、x<=y C、x||y+z&&y-z D、!((x<y)&&!z ||1) 13、判断char型变量cl是否为小写字母的正确表达式为( ) A、’a’<=c1<=f’z’ B、(c1>=a)&&(c1<=z) C、(‘a’>=c1) (‘z’<=c1) D、(c1>=’a’)&&(c1<=’z’) 14、字符串"a"在内存中占据的字节个数为( ) A、0 B、 1 C、 2 D、 3 15、下面有关for循环的正确描述是( ) A、for循环只能用于循环次数已经确定的情况 B、for循环是先执行循环体语句,后判定表达式 C、在for循环中,不能用break语句跳出循环体 D、for循环体语句中,可以包含多条语句,但要用花括号括起来 16、下面程序的运行结果是( ) #include main() {int num=0; while(num<=2) {num++; printf(“%d ,num); } } A、 1 B、 1 2 C、 1 2 3

C语言程序设计学习指导(第2版) 1-6

第一章概述 一、选择 1.C 2.B 3.C 4.D 5.D 6.A 7.B 8.C 9.A 10.B 11.C 12.D 13.B 14.B 第二章数据类型 一、选择 1.D 2.A 3.C 4.D 5.A 6.B 7.A 8.B 9.A 10.D 11.B 12.C 13.C 14.D 15.C 16.B 17.D 18.A 19.C 20.B 21.B 22.D 23.A 24.B 25.B 26.B 27.C 第三章运算符和表达式 一、选择 1.A 2.D 3.D 4.D 5.D 6.A 7.C 8.C 9.B 10.B 11.C 12.C 13.A 14.A 15.A 16.A 17.B 18.C 19.C 20.D 21.A 22.A 23.C 24.C 25.A 26.B 27.D 28.A 29.B 30.C 31.D 32.D 33.D 34.B 35.A 36.A 37.B 38.C 39.D 40.B 41.B 42.C 43.B 第四章输入和输出 一、选择 1.C 2.D 3.C 4.C 5.C 6.B 7.B 8.C 9.D 10.D 11.D 12.D 13.B 14.A 15.B 16.B 二、编程 1.double fun(double m) { float n; n=(5.0/9.0)*(m-32); return n; } 2. char fun(char c) {c=c+32; return c;} 3.double fun(int m) { double y=0; y=sin(m)*10; return(y); } 4.float fun ( float h ) {return (long)( h * 100 + 0.5 )/ 100.0;}

C语言程序设计程序填空题库及答案

程序填空题 导读:在程序填空题中,已经给出了程序的主干,读者首先要理解程序的思路,再选择正确的内容填入空白处,使程序完成既定的功能。这类习题的设计就是要引导读者逐步掌握编程的方法。本节习题的难度适中,可能有些典型的程序在课堂上已经有所接触,读者一定要独立完成它,这样就可以逐步提高自己的编程能力。在程序设计语言学习的中期,读者对程序设计已经有了初步的了解,而自己编写程序又不知从何处入手,此时解答此类题目可以避免盲目性,从而提高学习的效率。 【】下面程序的功能是不用第三个变量,实现两个数的对调操作。#include <> main() { int a,b; scanf("%d%d",&a,&b); printf("a=%d,b=%d\n",a,b); a= ①; b= ②; a= ③; printf("a=%d,b=%d\n",a,b); }

【】下面程序的功能是根据近似公式:π2/6≈ 1/12+1/22+1/32+ …… +1/n2,求π值。 #include <> double pi(long n) { double s=; long i; for(i=1;i<=n;i++) s=s+ ①; return( ②); } 【】下面的程序的功能是求一维数组中的最小元素。 findmin(int *s,int t,int *k) { int p; for(p=0,*k=p;p

C语言程序设计试题与答案D

绝密★启用前学院 学年第二学期期末考试 级专业()《 C语言程序设计》试卷D 一、单项选择题(本大题共15小题,每小题2分,共30分) 1、以下正确的C语言自定义标识符是() A._la B.2a_ C.do D.a.12 2、在C语言中,错误 ..的常数表示是() A.0L B.-0x6aL C.′6′D.1.234E3.5 3、设int a,x=2;执行语句a=x>0?3*x:(x=10);后,变量x的值是() A.1 B.2 C.6 D.10 4、设有以下程序段: int x=2,y=2,z=0,a; a=++x||++y&&z++; printf(″%d,%d,%d\n″,x,y,z); 执行后输出的结果是() A.2,2,0 B.3,3,1 C.3,2,0 D.3,2,1 5、逗号表达式a=2*6,a*3,a+5的值是() A.12 B.17 C.36 D.41 6、设int a[2][3]={{1},{2,3}};,则元素a[1][0]的值是() A.0 B.1 C.2 D.3 7、C语言中,错误 ..的int类型的常数是() A.1E5 B.0 C.037 D.0xaf 8、在C语言中,′a′和″a″存储所占用的字节数分别是() A.1,1 B.1,2 C.2,1 D.2,2 9、设int x;,则以下语句中错误 ..的输入是() A.scanf (″%d″,x); B.scanf (″%d″,&x); C.scanf (″%o″,&x); D.scanf (″%x″,&x); 10、在C语言中,运算符″=″和″==″的功能分别是() A.关系运算和赋值运算B.赋值运算和关系运算 C.都是关系运算D.都是赋值运算 11、设int x[]={1,2,3,4,5},*p=x;,则值为3的表达式是() A.p+=2, *p++ B.p+=2, *++p C.p+=2, p++ D.p+=2, ++*p 12、设for(i=0, j=10; (j>0)&&(i<4); i++, j--);,该语句的循环次数是() A.0 B.3 C.4 D.无限 13、设函数定义如下: float f1 (float a, float b) { return (a+b); } 若有float x=1.1, y=2.2;,则以下语句中正确的函数调用是() A.printf (″%f″, f1(x)); B.printf (″%f″,f1(&x, y)); C.printf (″%f″,f1(*x,*y)); D.printf (″%f″,f1(x, y)); 14、若有说明:int i,j=7,*p=&i;则与i=j;等价的语句是()。 A. i=*p; B. *p=*&j; C. i=&j ; D. i=**p; 15、设char str1[10]=″ABCDE″,str2[10]=″XYZ″;则执行语句: printf(″%d″,strlen(strcpy(str1,str2))); 后的输出是()。 A. 3 B. 5 C. 8 D. 9 二、填空题(本大题共10小题,每小题2分,共20分) 16、一个C语言程序的基本组成单位是___________________。 17、求字符串的有效长度的系统函数名是___________________。 18、设float a [4][5];,则数组a中第一维下标的最大值是___________________。 19、设int a; float b; char c; long d; double e; , 则表达式a/c-b+d-e值的类型是 ______________。 20、设int a=2;,则执行a+=a*=15;后,变量a的值是__________。 21、一个C语言程序的执行起点是__________。 22、设double y[4][5];,则数组y中元素的个数是__________。 23、设int x=7,y=3,则表达式x%y+x/y的值是__________。 24、一个short型变量所占内存的字节数是____________________。

C语言程序设计试题集及答案

单项选择题 (002) 阅读程序题 (018) 程序填空题 (039) 编写程序题 (070) 一、单项选择题 导读:单项选择题要求从给出的四个备选答案中,选出一个最符合题意的答案。本类习题主要检查对C语言基本概念的掌握情况,读者可根据学习进度选做部分习题。在完成习题的过程中,不但要选出正确的答案,而且要清楚不正确的选项错在何处,以加深对概念的理解。对于掌握不准的问题,应该通过上机实验来检验。 【1.1】以下不正确的C语言标识符是____。 A) int B) a_1_2 C) ab1exe D) _x 【1.2】以下是正确的C语言标识符是____。 A) #define B) _123C) %d D) \n

【1.3】下列四组字符串中都可以用作C语言程序标识符的一组是。 ??? A) print B) i\am C) Pxq D) str_l ??? _3d one_half My->book Cpp ??? oodbs tart$it line# pow ??? aBc 3pai His.age while 【1.4】下面各选项组中,均是C语言关键字的组是。 A) auto,enum,include B) switch,typedef,continue C) signed,union,scanf D) if,struct,type 【1.5】下列不属于C语言关键字的是。 A) default B) register C) enum D) external 【1.6】C语言程序从main()函数开始执行,所以这个函数要写在____。 A) 程序文件的开始B) 程序文件的最后 C) 它所调用的函数的前面D) 程序文件的任何位置 【1.7】下列关于C语言的叙述错误的是____ A) 大写字母和小写字母的意义相同 B) 不同类型的变量可以在一个表达式中 C) 在赋值表达式中等号(=)左边的变量和右边的值可以是不同类型 D) 同一个运算符号在不同的场合可以有不同的含义 【1.8】在C语言中,错误的int类型的常数是。 A) 32768 (超过了范围) B) 0 C) 037 D) 0xAF 【1.9】执行语句printf("%x",-1);屏幕显示____。 A) -1 B) 1 C) –ffff D) ffff 【1.10】已知long i=32768;执行语句printf("%d",i);屏幕显示____。 A) -1 B) -32768C) 1 D) 32768 【1.11】已知long i=65539; 执行语句printf("%d",i);屏幕显示____。 A) 65539 B) -3 C) 3D) 程序不能执行 【1.12】在C语言中,整数-8在内存中的存储形式是。 A) 1111 1111 1111 1000B) 1000 0000 0000 1000 C) 0000 0000 0000 1000 D) 1111 1111 1111 0111 【1.13】C语言中字符型(char)数据在内存中的存储形式是____。

《C语言程序设计》基本知识点

《C语言程序设计》教学基本知识点 第一章C语言基本知识 1.C源程序的框架 尽管各个C源程序的功能千变万化,但框架是不变的,主要有:编译预处理、主函数()、函数n()等,主函数的位置不一定在最前面,可以在程序的中部或后面,主函数的名字固定为main。 2.C语言源程序的书写规则: (1)C源程序是由一个主函数和若干个其它函数组成的。 (2)函数名后必须有小括号,函数体放在大括号内。 (3)C程序必须用小写字母书写。 (4)每句的末尾加分号。 (5)可以一行多句。 (6)可以一句多行。 (7)可以在程序的任何位置加注释。 3.语句种类 语句是程序的基本成分,程序的执行就是通过一条条语句的执行而得以实现的,根据表现形式及功能的不同,C语言的基本语句可以分为五大类。 (1)流程控制语句 流程控制语句的功能是控制程序的走向,程序的流程有三种基本结构:顺序结构、分支结构和循环结构,任何复杂的程序都可以由这三种基本结构复合而成。其中后两种结构要用特定的流程控制语句实现。 (2)表达式语句 表达式语句的形式是:表达式;,即表达式后跟一分号“;”,分号是语句结束符,是一个语句必不可少的成分。表达式和表达式语句的区别在于表达式代表的是一个数值,而表达式语句则代表一种动作。最常见的表达式语句是赋值语句。 (3)函数调用语句 函数调用语句实际上也是一种表达式语句,形式为:在一次函数调用的小括号后面加上一个分号。 (4)空语句 空语句的形式就是一个分号,它不代表任何动作,常常作为一个意义转折点使用。 (5)复合语句 复合语句从形式上看是多个语句的组合,但在语法意义上它只相当于一个语句,在任何单一语句存在的地方都可以是复合语句。注意复合语句中最后一个语句末尾的分号不能少。复合语句右大括号后面没有分号。 4.运算符 用来表示数据各种操作的符号称为运算符。运算符实际上代表了一种类型数据的运算规则。不同的运算符具有不同的运算规则,其操作的数据类型必须符合该运算符的要求,运算结果的数据类型也是固定的。 根据参加操作的数据个数多少,可以将C语言的运算符分为单目运算符,双目运算符和三目运算符(三目运算符只有条件运算符一个)。 根据运算对象和运算结果的数据类型可分为算术运算符、关系运算符、逻辑运算符等。 5.表达式 表达式是由常量、变量、函数,通过运算符连接起来而形成的一个算式。一个常量,一个变量或一个函数都可以看成是一个表达式。 表达式的种类有: 算术表达式、关系表达式、逻辑表达式、赋值表达式、字位表达式、强制类型转换表达式、逗号

C语言程序设计试卷及答案

C 语言程序设计 笔试试题 试卷说明: 1. 笔试卷面总分100分,取卷面成绩的70%计入总分; 2. 综合成绩为平时成绩(10%)和实验成绩(20%)之和,占总分的30%; 3. 答题时禁止拆开试卷钉,试卷背面即为草稿纸; 4. 答题时间120分钟。 一、单项选择题。将正确答案填入下面框中。 (本题16分,每小题1分) 1. 有以下程序 main() {int a=1,b=0; if(!a) b++; else if(a==0) if(a) b+=2; else b+=3; printf(“%d\n ”,b); }则程序输出( A )。 A) 0 B) 1 C) 2 D) 3 2. 有以下定义:int a; long b; double x,y;则下列正确的是( A )。 A) a%(int)(x-y) B) a=x!=y C) (a*y)%b D) y=x+y=x 3. 若有定义 int (*p)[3];则下列说法正确的是( C )。 注意行为规范 遵守考试纪律

A) 定义了基类型为int的三个指针变量 B) 定义了一个名为*pt、具有三个元素的整型数值 C) 定义了一个名为pt的指针变量,它可以指向每行有三个整数元素的二维数组 D) 定义了基类型为int的具有三个元素的整型数组 4. 有以下程序段 main() { int x=10; while(x--); printf("x=%d\n",x);} 则最后的输出结果是:( B)。 A) x=0 B) x= -1 C) x=1 D)while构成无限循环 5. 有以下程序: int fun() {static int x=1; x *= 2; return x;} main( ) { int i,s=1 ; for(i=1 ;i<=2 ;i++) s=fun() ; printf(“%d\n ”,s) ;} 执行后的输出结果为( D)。 A) 0 B) 1 C) 8 D) 4 6. void main( ){ int k=011; printf("%d\n",k++); } }程序输出结果是( D ) A)12 B) 11 C) 10 D) 9 7. 以下C语言标识符中,不合法的是( C)。 A) _2 B) a_b C) a--b D) AaBc 8. C语言允许函数类型默认定义,此时该函数值隐含的类型是( B)。 A) float B) int C) long D) double 9. 以下程序段运行结果是( B)。 enum weekday{aa,bb=2,cc,dd,ee}week=ee;

c语言程序设计教程(第2版)课后题及模拟题参考答案

c语言程序设计教程(第2版)课后题及模拟题参考答案 习题1 1-1 填空题 1.函数 2.主函数main(),主函数main() 3.主函数main() 4.函数首部,函数体 5.{, } 6./*, */ 7.顺序结构,选择结构,循环结构 8..c, .obj, .exe 1-2 思考题 1.结构化程序设计是指:为使程序具有一个合理的结构以保证程序正确性而规定的一套如何进行程序设计的原则。其基本结构包括顺序结构、选择结构和循环结构三种。 2.算法是对具体问题求解步骤的一种描述。计算机算法的表达工具通常采用以下几种方法:(1)用自然语言表示算(2)用流程图表示算法(3)用伪代码表示算法(4)用程序设计语言表示算法 3.语言简洁、紧凑,使用方便、灵活; 支持结构化程序设计;运算符丰富;数据类型丰富;较强的编译预处理功能;C语言的可移植性好;C语言本身既有一般高级语言的优点,又有低级(汇编)语言的特点;语法限制不太严格,程序设计自由度大。 1-3 编程题 1. 试参照本章例题编写计算梯形面积的C语言程序,梯形的上底、下底和高分别用a,b,h表示,并用a=10,b=20,h=5测试所编写的程序。 #include "stdio.h" main() { float a, b, h, s; a=10; b=20; h=5; s=(a+b)*h/2; printf("s=%f\n" , s ); } 2. 编写程序显示如图1.11所示信息。 图1.11 显示信息 #include "stdio.h" main()

{ printf("******************************\n"); printf("* hello world *\n"); printf("******************************\n"); } 习题2 2-1 单选题 1~5 DBDCA 6~10 DCABA 11~12 CA 2-2 思考题 1.2.000000 2.1,0.5 3.9,2 4.6 5.100,d 6.(1)20 (2)0 (3)60 7. (1)10,6,4 (2)6,9,15 (3)3,60,83 8. 55 习题3 3-1 选择题 1-5BDABC 6-10ADCAC 11-12BB 3-2 填空题 1. 3 2.0261 3.0x10 4. 2, 1 互换a,b的值 5. 6.6 6.–003 8.7 7. 5.0,4,c=3 8.i=10,j=20 9.(1) 65 (2) 65,A (3) 56.123400,123.456001 (4) 3.141600 (5) 8765.432

C语言程序设计的试题及答案

C语言程序设计的试题及答案 C语言程序设计的试题及答案C语言程序设计的试题及答案第一章基础知识 一、填空 1.每个C程序都必须有且仅有一个________函数。 2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、________、链接、加载和执行。 3.软件是程序,以及______、使用和维护所需要的所有文档。 4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的_________”。 5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和________两大类。 6.C语言是由________组成的。 7.C语言的函数可分为主函数ain、标准库函数和_________。 8.一个函数是由两部分组成的,即:________和函数体。 9.编译是将C语言所编写的源程序________成机器代码,也称为建立目标代码程序的过程。 10.程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自

动化、管理信息系统、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为_________。 11.机器语言是以__________形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。 12.与机器语言相比,使用汇编语言来编写程序可以用_______来表示指令的操作码和操作对象,也可以用标号和符号来代替地址、常量和变量。 13.在编译程序之前,凡以____开头的代码行都先由预处理程序预处理。 14.C程序的执行均是由执行_________开始。15.函数体即为包含在{}内的部分。它分为________和为完成功能任务由若干个C语句组成的执行部分。 16.C语言程序中一条简单语句是以________字符作为结束符的。 17.C语言是结构化、________的程序设计语言。 18.由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19.用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.第一个系统体现结构化程序设计思想的教学工具语言是_______语言。

c语言程序设计题目及答案

一、程序设计共113 题第1 题题 号:319 #include "stdio.h" void wwjt(); int fun(int m) { int i,k=1; if(m<=1) k=0; for(i=2;i #include #define M 3 #define N 4 void wwjt(); void fun(int tt[M][N],int pp[N]) { int i,j; for(j=0;jpp[j]) pp[j]=tt[i][j]; } 第3 题题号:375 功能:从键盘上输入任意实数, 求出其所对应的函数值。 z=e 的x 次幂( x>10) z=log(x+3) (x>-3) z=sin(x)/((cos(x)+4) #include #include void wwjt(); double y(float x) { 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); } 第4 题题号:334 功能:求给定正整数n 以内的素数之积。( n<28) #include #include"conio.h" void wwjt(); long fun(int n) { long i,k; long s=1; for(i=2;i<=n;i++) {for(k=2;k #include"conio.h" void wwjt(); long int fun(int n) { long s=1,i; for(i=2;i<=n;i++) if(n%i==0)s=s*i; return s; } 第6 题题号:50 功能:求出菲波那契数列的前一项与后一项之比的极限的 近似值例如:当误差为0.0001 时,函数值为0.618056 。 #include #include "math.h" void wwjt(); float fun() { float f1=1,f2=1,f3; float r1=2,r2; do {r2=r1; r1=f1/f2; f3=f1+f2; f1=f2; f2=f3; }while(fabs(r1-r2)>1e-4); return r1; } 第7 题题号:394 功能:产生20个[30,120] 上的随机整数放入二维数组 a[5][4] 中, 求其中的最小值。 #include "stdlib.h" #include void wwjt(); int amin(int a[5][4]) { int i,j,s; s=a[0][0];

相关文档
相关文档 最新文档