公告:本站提供编程开发方面的技术交流与分享,打造最佳教程网,希望能为您排忧解难!

C语言教程C语言试题库: 试卷一

C语言试题库: 试卷一

更新时间:2013-03-25 22:35:54 |

试卷一
一、判断题:(每小题1分,共6分)
1、若有说明int c;则while(c=getchar());是正确的C语句。 ( )
2、int i,*p=&i;是正确的C说明。 ( )
3、7&3+12的值是15。 ( )
4、while 1 i,j; 一定是错误的C说明。 ( )
5、for( ; ; )S中的语句S必执行无穷多次。 ( )
6、unsigned 和void 在C中都是保留的。 ( )

二、单项选择题(每小题1分,共5分)
1、设有int i;则表达式i=1,++i,++i||++i,i的值为 ( )
A.1
B.2
C.3
D.4
2、设有int i;则表达式(i=1,i=10)?i++||++i:++i的值为 ( )
A.1
B.2
C.3
D.10
3、设有int a[ ]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是 ( )
A.10,11,12
B.11,12,12
C.10,12,12
D.11,11,12
4、设有int i, j, k; 则表达式i=1,j=2,k=3, i&&j&k 的值为 ( )
A.1 B.2 C.3 D.0
5、设有说明int s[2]={0,1},*p=s; 则下列错误的C语句是 ( )
A.s+=1; B.p+=1; C.*p++; D.(*P)++;

三、填空题(每小题2分,共10分)
1、char *(*pa)[10];说明pa是______________。
2、表达式98&&8&&31&1的值为________________。
3、printf("%5.3f\n",123456.12345);输出为_____________。
4、表达式~3&(2&3^4)的值为_______________。
5、若有说明int i,j,k;则表达式i=10,j=20,k=30,k*=i+j的值为_______________。

四、程序分析,给出下列各程序的执行结果(输出)
1、#include <stdio.h>
    int f(n)
    int n;
    {
        static int s=1;
        while(n) s*=n--;
        return s;
    }
    main()
    {
        int i,j;
        i=f(3); j=f(5);
        printf("\nThe output of 5.1. is:\n\n");
        printf("i=%d j=%d \n",i,j);
    }
2、#include <stdio.h>
    trans(m,n)
    int m,n;
    {
    int i;
    if (m>n){
    i=m%n;
    trans(m/n,/);
    }
    else i=m;
    if (i<10) printf("%d",i);
    else printf("%c",'A'+i-10);
    }
    main( )
    {
    int i;
    printf("\nThe output of 5.3 is:\n\n");
    printf("\n%d->-",-23);
    trans(21,3);
    printf("\n%d->",123);
    trans(123,16);
    }
3、#include <stdio.h>
    #include <malloc.h>
    typedef struct node
    {
    int d;
    struct node *next;
    }t_node;
    create(h)
    t_node **h;
    {
    int i,m=0;t_node *p,*q;
    scanf("%d",&i);
    while(i)
    {
    p=(t_node*)malloc(sizeof(t_node));
    p->d=i>m?i:m;m=i;p->next=NULL;
    if(*h)
    {
    q->next=p;
    q=p;
    }  
    else
    {
    *h=p;
    q=p;
    }
    scanf("%d",&i);
    }
    }
    void main()
    {  
    t_node *h=NULL,*p;
    create(&h);p=h;printf("\nThe output of 4.3 is:\n\n");
    while(p)
    {
    printf("%d",p->d);
    p=p->next;
    }
    }
4、#include <stdio.h>
    main()
    {
    int m,n,sign,t;
    scanf("%d%d",&m,&n);
    while(m*n){
    if (m>=0&&n>=0||m<=0&&n<=0) sign=0;
    else sign=1;
    m=m>0?m:-m; n=n>0?n:-n;
    t=0;
    while(n--) t+=m;
    printf("\nThe result is:");
    if (sign) printf("-");
    printf("%d\n",t);
    scanf("%d%d",&m,&n);
    }
    }
5、#include <stdio.h>
    int a[10]={1,2,3,4,5,6,7};
    rev (m,n)
    int *m,n;
    {int t;
    if(n>1)
    {
    t=*m;*m=*(m+n-1);*(m+n-1)=t;
    rev(m+1,n-2);
    }
    }
    main()
    {
    int i;
    printf("\nThe output of 5.5 is:\n\n");
    rev(a+2,6);
    for(i=0;i<10;i++)
    printf("%d",a[i]);
    printf("\n");
    rev(a,5);
    for(i=0;i<10;i++)
    printf("%d",a[i]);
    printf("\n");
    }
   
五、在下面程序中横线处填上适当字句,使其能正确执行(6分)
[程序说明] 该程序用于计算cos x值,依据公式为:
 
要求输入X(以角度计)和误差值epsil。当epsil<=0时程序停止执行。
#include <stdio.h>
#define PI 3.141526
double ex(x,epsil)
float x,epsil;
{
double t,s; int n;
s=0.0; t=1.0; n=1;
while ((t>=0.0?t:-t)>epsil){
s+=t;___(1)___;___(2)___;
}
return s;
}
main()
{
float x,epsil;
printf("Input x,epsil:(epsil<=0 to quit)\n");
scanf("%f%f",&x,&epsil);
while(epsil>0.0){
x*=PI/180;
printf("e^%f=%f\n",x,ex(x,epsil));
printf("Input x,epsil:(epsil<=0 to quit)\n");
scanf("%f%f",&x,&epsil);
}
}
六、在下面程序中横线处填上适当字句,使其能正确执行(18分)
[程序说明]该程序能计算两个整数集合A与B的差,其中A与B的元素都以值的递增
次序存放中单链表中,A中的同一元素允许在单链表中出现多次,A与B的差也以值的
递增次序存于单链表内,但是同一元素不允许出现多次。假定调用diff前a,b的值已
创建。
#include <stdio.h>
typedef struct node{
int d;
struct node *next;
}tnode;
void diff(a,b,c)
tnode *a,*b,__(1)__;
{
int last_a; tnode *p;
*c=NULL; last_a=-9999;
while(a&&b){
if(a->d==b->d){
__(2)__;
a=a->next;
__(3)__;
}
else
if (a->d>d->d)
__(4)__;
else {
if (a->d!=last_a){
last_a=a->d;
p=(tnode *)malloc(sizeof(tnode));
p->d=last_a;
p->next=*c;
*c=p;
}
a=a->next;
}
}
while(a){
if(__(5)__){
last_a=a->d;
p->d=last_a;
p->next=*c;
__(6)__;
}
a=a->next;
}
}
void print(h)
tnode *h;
{
while(h){
printf("%d ",h->d);
h=h->next;
}
}
main()
{
tnode *a,*b,*c;
...
diff(a,b,&c);
print(c);
}

最佳教程网

最大的技术交流平台 www.goodxyx.com© CopyRight 2011-2013, All Rights Reserved

浙ICP备11033019号