C语言期末速成真题+答案

C语言程序设计复习题库
、一、单项选择题

  1. 下列合法的常量是( )
    A.1e-5 B.3.0e3.0 C.1e5.0 D.e10
  2. 下列合法的变量名是( )
    A.int B._int C.2c D.c-d
  3. 下列不属于C语言基本数据类型的是( )
    A.字符型 B.浮点型 C.整型 D.逻辑型
  4. 转义字符“反斜杠”的正确表示是( )
    A.‘’ B.‘\’ C.“” D.“\”
  5. 以下运算符为单目运算符的是( )
    A.! B.&& C. % D.?:
    6.对于一个正常运行的C程序,以下叙述中正确的是( )
    A.程序的执行总是从main函数开始,在main函数结束
    B.程序的执行总是从程序的第一个函数开始,在main函数结束
    C.程序的执行总是从main函数开始,在程序的最后一个函数中结束
    D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
    7.若有定义:int a=8; float x=1.5; 则表达式x+a/3的值是( )
    A.4.500000 B. 4.166667 C.3.500000 D. 0.000000
    8.以下不能正确计算代数式值的C语言表达式是( )
    A.1/3*sin(1/2)sin(1/2) B.sin(0.5)sin(0.5)/3
     C.pow(sin(0.5),2)/3 D.1/3.0
    pow(sin(1.0/2),2)
    9.下列条件语句中,功能与其他语句不同的是( )
    A.if(a) printf(“%d\n”,x); else printf(“%d\n”,y);
    B.if(a0) printf(“%d\n”,y); else printf(“%d\n”,x);
    C.if (a!=0) printf(“%d\n”,x); else printf(“%d\n”,y);
    D. if(a
    0) printf(“%d\n”,x); else printf(“%d\n”,y);
    10.变量已正确定义,有以下程序段,其输出结果是 ( )
    A. 程序段有语法错 B. 1,2,1 C. 1,2,2 D. 1,2,3
    int a=1,b=2,c=3;
    if(a>b) a=b;
    c=a;
    if(c!=a) c=b;
    printf(“%d,%d,%d\n”,a,b,c);
    11.有宏定义:#define f(x) x
    x,则表达式f(2+2)/f(1+1)的值为( )
    A.2 B.10 C.3 D.4
    12.C语言中while和do-while循环的主要区别是( )
    A.do-while的循环体至少无条件执行一次
    B.while的循环控制条件比do-while的循环控制条件严格
    C.do-while允许从外部转到循环体内
    D.do-while的循环体不能是复合语句
    13.在C程序中用做用户标识符的一组标识符是 ( )
    A.and _2011 B. Date y-m-d
    C.Hi Dr.Tom D. default Bigl
    14.设有程序段int k=10; while(k=0) k=k-1;则下面叙述中正确的是( )
    A.while循环执行10次 C.循环是无限循环
    B.循环体语句一次也不执行 D.循环体语句执行一次
    15.函数调用语句func((exp1,exp2),(exp3,exp4,exp5))含有实参个数( )
    A.1 B. 2 C. 4 D. 5
    16.在C语言中,以下正确的描述是( )
    A.函数的定义可以嵌套,但函数的调用不可以嵌套
    B.函数的定义不可以嵌套,但函数的调用可以嵌套
    C.函数的定义和函数的调用均不可以嵌套
    D.函数的定义和函数的调用均可以嵌套
    17.以下对一维整型数组a的正确定义是( )
    A.int a(10); B. int n=10,a[n];
    C. int n; D. #define N 10
    scanf(“%d”,&n); int a[N];
    int a[n];
    18.下面是对字符数组s的初始化,其中不正确的是( )
    A.char s[5]={“HELLO”}; B.char s[5]={‘H’,‘E’,‘L’, ‘L’, ‘O’};
    C.char s[5]=“”; D.char s[]=“HELLO”;
    19.下选项中,合法的一组C语言常量是 ( )
    A.027 5e-3 ‘\’
    B. 12 “ABC” 4.5e0
    C.4c1.5 177 Oabc
    D. 0x8A 10,000 3.e5
    20.断字符串a和b是否相等,应当使用( )
    A.if(a==b) B. if(a=b) C. if(strcpy(a,b)) D.if(strcmp(a,b))
    21.如下语句 int a=10,b=20,*p1,*p2; p1=&a; p2=&b; 若要让p1也指向b,可
    选用的赋值语句是( )
    A.*p1=*p2; B. p1=p2; C. p1=*p2; D. *p1=p2;
    22.计算表达式48%10/3的值是( )
    A.1.25 B.1 C.1.0 D.2
    23.正确表示逻辑关系:“a≥10或 a≤0”的C语言表达式是( )
    A.a>=10 or a<=0 B.a>=10| a<=0
    C.a>=10 && a<=0 D.a>=10||a<=0
    24.有定义语句:int x;float y;,则正确的输入语句是( )
    A.scanf(“%d%d”,x,y); B.scanf(“%d%d”,&x,&y);
    C.scanf(“%d%f”,&x,&y); D.scanf(“%f%d”,&x,&y);
    25.十进制整数-1的补码表示为( )
    A. 1111111111111111 B. 1000000000000001
    C. 0000000000000001 D. 1111111111111110
    26.下列常量中合法的是( )
    A . 1e4.0 B. 0xabc C. 0128 D. ∏
    27.若有以下结构体定义,则下列哪项引用是正确的( )
    struct info
    { int m;
    int n;
    }v;
    A. v.m=10;v.n=20;  B.v={10,20}; C.v=10,20; D.v->m=10;v->n=20;
    28.设有定义语句:char c1=7,c2=7;则以下表达式中值为零的是( )
    A. c1^c2 B. c1&c2 C. ~c2 D. c1|c2
    29.定义 int x;float y; 正确的输入语句是( )
    A. scanf(“%d%d”,x,y); B. scanf(“%d%d”,&x,&y);
    C. scanf(“%d%f”,&x,&y); D. scanf(“%f%d”,&x,&y);
  6. 在C语言中,int型数据在内存中以( )形式存放
    A.补码 B.BCD码 C.反码 D.原码
  7. 在C语言中,用关键字( )定义无符号型变量。
    A.unsigned B.signed C.sign D.unsign
    32.定义语句 double a,b; int w; long c;变量已正确赋值,则错误的是( )
    A.a=a+b=b++ B.w%(int)(a+b) C.(c+w)%(int)a D.w=a==b
  8. 以下不正确的用户标识符是( )
    A._char B.Double C.*m D.0
  9. 在C语言的if语句中,用作判断的表达式为( )
    A. 关系表达式 B. 逻辑表达式 C. 算术表达式 D. 任意表达式
    35 printf( )函数的格式说明符中,要输出单个字符应使用说明符( )
    A.%d B.%f C.%s D.%c
    36.下列语句是判别变量x、y的大小,若x A.if(x C.if (x 37.do-while语句的循环体( )
    A.可能一次也不执行 B.至少要被执行一次
    C.由循环条件决定循环次数 D.任意多次
  10. 在C语言中while语句与do-while语句的主要区别是( )
    A.do-while的循环体至少无条件执行一次
    B.do-while允许从外部转到循环体内
    C.do-while的循环体不能是复合语句
    D.while的循环控制条件比do-while的循环控制条件严格
  11. 以下不正确的数值常量是 ( )
    A.0.23E1 B.2.3e-1 C.1E3.6 D.2.3e0
  12. C语言中主函数的个数是( )
    A.1个 B.2个 C. 6个 D.任意多个
  13. 下列函数定义中正确的是 ( )
    A.double add(double x,y)
    { return x+y;} B.minus(double x,double y)
    { return x-y;}
    C.double div(double x,double y)
    { return x%y;} D.double multiply(double x,double y)
    { return x*y;}
  14. 若有宏定义:#define f(x) x*x,则表达式f(4+4)/f(2+2)的值为( )
    A.3 B.4 C.16 D.28
  15. 若有定义int a,*b; 表达式( )可以使指针b指向变量a
    A.b=*a B.b=a C.b=&a D.*b=&a
  16. 定义int n1=0,n2,*p=&n2,*q=&n1;下列与n2=n1;语句等价的是( )
    A.*p=*q; B.p=q; C.*p=&n1; D.p=*q;
    45.以下对数组元素的初始化,错误的是( )
    A.float weight[5]={67.5,34}; B.float a[]={0};
    C.int a[]={1,2,2}; D.int a[5]={};
  17. 若要定义a为3*4的二维数组,正确的定义语句是( )
    A.float a(3,4); B.float a[1+2][2+2];
    C.float a(3)(4); D.float a[3,4];
  18. 能正确判断字符串s1大于字符串s2的是( )
    A. if(s1>s2) B. if(strlen(s1)>strlen(s2))
    C. if(strcmp(sl,s2)>0) D. if(strcmp(s1,s2)==0)
    48.以下能正确定义一维数组的选项是( )
    A.int a[5]={0,1,2,3,4,5}; B.int a[]={0,1,2,3,4,5};
    C.int a[2+3]={}; D.int x=5,a[x]={0};
  19. 若要定义b为5*10的二维数组,正确的定义语句为( )
    A.float b(5,10)    B.float b[5,10]
    C.float [5][10]        D.float b[5][10]

50.若有以下说明和语句,则输出结果是 ( )
char str[]=““x:\abc.dat””;
printf(“%s”,str);
A. 字符串中有非法字符 B. “x:\abc.dat”
C. “x:\abc.dat” D. “x:\abc.dat”
51. 表达式strcmp(“box”,“boss”)的值是一个( )
A.正数 B.负数 C.0 D.不确定的数
52. 已知int a[]={1,2,3,4,5,6},*p=a+2;则p[2]的值是( )
A.3  B.4  C.5 D.6
53.若有定义:int a[8],*p;则与p=a;等价的语句是 ( )
A.p=&a[0]; B.p=a[0]; C.p=*a; D.*p=&a;
54. 若有定义:int i=10,j=20,*p=&i,*q=&j; p=q; 则执行输出的结果是( )
printf(“%d %d\n”,*p,*q);
A. 10 20 B. 20 20 C. 10 10 D.20 10
55.有语句char s[]=“EGIK”,*p=s;则printf(“%c”,*p+2);的输出结果是( )
A.E B.G C.I  D.K
56.C语言中可以处理的文件类型是( )
A.文本文件和数据文件 B.文本文件和二进制文件
C.数据文件和二进制文件 D.任何类型文件
57.定义int x=10,y=20; 执行printf(“%d,”, x++);printf(“%d\n”, --y);的结
果是( )
A. 10, 20 B. 11, 20 C. 10, 19 D. 11, 19
58. 语句int x= -1, y= -1, z= -1; ++x||++y&&++z; printf(“%d %d %d\n”,x,y,z);
执行的结果是( )
A. -1 -1 -1 B. 0 -1 -1 C. 0 0 -1 D. 0 0 0
59. 下列语句判别变量x、y大小,若x A. if(x C. if (x 60. 凡是函数中未指定存储类别的局部变量,其隐含的存储类别为( )
A.auto B.static C.extern D. register

  1. 对于语句for(i=0; ; i++) printf(“*”); 可理解为( )
    A. 条件恒为真 B. 条件恒为假 C. 错误表达式 D.该循环不会被执行
  2. 下列程序段中,功能与其它程序段不同的是( )
    A. for(i=1,s=0;i<=10;i++) s+=i; B. i=1;s=0;do {s+=i;i++;} while(i<=10);
    C. for(i=1;i<=5;){s=1; s+=i; i++;} D. i=1;s=0;while(i<=10){s+=i; i++;}
    63.定义函数:int add(int a,int b){ return (a+b);}并将其放在调用语句之后,则在调用之前应该声明,以下选项中错误的声明是( )
    A. int add(int a,b); B. int add(int,int);
    C. int add(int a,int b); D. int add(int x,int y);
    64 .以下一维数组的定义正确的是( )
    A. int a[10+20] B. int x=10, a[x]; C.int a[5.0] D.int a[i=10]
  3. 有结构定义如下,则用p对成员变量sex的引用正确的是( )
    struct student
    { int stu_num;
    char name[10];
    char sex;
    int score;
    }*p;
    A.p->sex B.(*p)->sex C.p.sex D.(&p)->sex
  4. 下面对数组赋初值错误的是( )
    A. int a[]={1,2,3,4} B. int a[5]={0,1,2,3,4,5}
    C. int a[2][3]={1,2,3,4,5,6} D. int a[2][3]={{1},{2}}
  5. 以下能正确进行字符串赋值的是( )
    A. char *sp; *sp=“hello”; B. char s[10]; s=“hello”;
    C. char s[10]; *s=“hello”; D. char sp=“hello”;
    68.能判断字符串s1是否与字符串s2相等的是( )
    A. if(s1=s2) B. if(s1==s2)
    C. if(strcmp(sl,s2)=0) D. if(strcmp(s1,s2)==0)
    69.定义int x; 经过下列( )语句后,执行赋值语句
    p=8;可将x值置为8
    A. int p=x ; B. int *p=x; C. int *p=&x; D. p=x;
    70.若文本文件f1.txt中原有内容good,则运行以下程序后,文件f1.txt中的
    内容为( )
    main()
    { FILE *fp1;
    fp1=fopen("f1.txt ", "w ");
    fprintf(fp1, “abc”);
    fclose(fp1);
    }
    A.goodabc B.abcd C.abc D.abcgood

71.定义FILE fp; 以“只写”方式打开文件C:\aa.dat的正确语句是( )
A. fp=fopen(“C:\aa.dat”,“w”); B. fp=fopen(“C:\aa.dat”,“r”);
C. fp=fopen(“C:\aa.dat”,“w”); D. fp=fopen(“C:\aa.dat”,“r”);
72.以下选项中能作为合法常量的是( )
A. 1.234e4.0 B. ‘\’ C. 0128 D. ‘Visual C++’
73. C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符( )
A. 必须为字母 B. 必须为下划线
C. 必须为字母或下划线 D. 可以是字母、数字和下划线中任一种字符
74.以下选项中值为1的表达式是( )
A. 1-‘0’ B. 1-‘\0’ C. ‘1’-0 D. ‘\0’-‘0’
75.设char ch;,表示ch是小写字母的表达式是( )
A. ‘a’≤ch≤’z’ B.‘a’<=ch<=‘z’ C.ch>=‘a’ and ch<=‘z’ D.ch>=‘a’&& ch<=‘z’
76.下列关系表达式中结果为假的是( )
A. 1!=2 B. 8<=10 C. 4>3>2 D. -1
77.以下能正确地定义三个整型变量a,b和c,并赋初值为5的语句是( )
A. int a=b=c=5; B. int a,b,c=5; C. int a=5,b=5,c=5; D. a=b=c=5;
78.执行int x=0,y=0,z=0; ++x||++y&&++z; printf(“%d %d %d\n”,x,y,z);的结果是( )
A. 0 0 0 B. 1 0 0 C. 1 1 0 D. 1 1 1
79. 下列条件语句中,功能与其他语句不同的是( )
A. if(a) printf("
“); else printf(”#“);
B. if(a0) printf(“#”); else printf(““);
C. if (a!=0) printf(”
”); else printf(“#”);
D. if(a
0) printf(”*“); else printf(”#");

80.若有以下说明和定义语句;引用结构体变量成员的表达式错误的是( )
struct student
{ int age; char num[8];
};
struct student stu[3]={{20, “200701”},{21, “200702”},{19, “200703”}};
struct student p=stu;
A. (p++)->num B. p->num C. (p).num D. stu[3].age
81. C语言中,数学表达式,正确的表达方式是( )
A. (ax
2+bx+c)/a
b B. (axx+bx+c)/ab
C. (axx+bx+c)/ab D. (axx+bx+c)/a/b
82.下列关系表达式中结果为真的是( )
A. 1!=2>1 B. 4>3>2 C. 4&&0 D. 4||0
83.下列表达式中结果为假的是( )
A. 1!=2 B. 8<=10 C. (a=2
2)==2 D. x=(1+1)==2
84. 定义char c1=92,c2=92; 则以下表达式中值为零的是( )
A. c1^c2 B. c1&c2 C. ~c2 D. c1|c2
85.定义FILE fp; 以“只读”方式打开文件C:\aa.dat的正确语句是( )
A. fp=fopen(“C:\aa.dat”,“w”); B. fp=fopen(“C:\aa.dat”,“r”);
C. fp=fopen(“C:\aa.dat”,“w”); D. fp=fopen(“C:\aa.dat”,“r”);
86.执行语句for (int i=1;i<10&&i%2;i++) printf("
"); 将输出( )个*号
A.1 B.4 C.5 D.10
87. C语言源程序要正确地运行,必须有( )
A. printf函数 B. 自定义的函数 C. main函数 D.空函数
88. 有函数定义:void fun(int n, double x) { …… },若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是( )
A. fun(int y,double m); B. k=fun(y,m); 
C. fun(y,m); D. void fun(y,m);
89.执行int x=-1,y=-1,z=-1; ++x&&++y||++z;后,x、y、z的值分别是_________
A. 0 -1 0 B. 0 0 0 C. -1 -1 0 D. -1 0 -1
二、程序填空

  1. 数学表达式 的C语言表达式形式为
  2. 以下程序的运行结果是______________
    #include
    main()
    { int x=5,y=10;
    x+=y; y=x-y; x-=y;
    printf(“x=%d,y=%d\n”,x,y); }
    3.表示图中坐标轴上阴影部分的正确表达式_____________________________
    x
    -4 -1 0 1 3
  3. 若有定义int a=32,b=12,c=-1;则表达式a*b&&c的运算结果为
  4. 函数调用语句fun1(x,(y,z),10,fun2((x-1,y-1))),有______个参数
  5. 若有宏定义:#define square(x) x*x 则表达式square(1+2)的值为__
  6. printf(“%d”,’2’-‘0’);的输出结果是_____________________
  7. 设int a=3,b=2,c=1; 则表达式(ac?c:(a 9.设int a,b; 则表达式(a=1,b=2,b+=a-=3)的值是____________
    10.利用条件运算符将语句“m=a>b?a:b”转换成与其等价的语句是
    11.语句int x=4,y=3; 则 printf(“%d %d\n”,–x, y++); 输出的结果是
    12.函数strlen(“a\nb\c\0de”)的值为______________
    13.有定义如下则表达式(++p)-〉n的值为________________
    struct
    { int m,n;};
    s[2]={{1,2},{3,4}},*p=s ;
    14.有以下语句:int x,y;scanf(“x=%d ,y=%d”,&x,&y);为使变量a,b的值分别为
    2和3,则输入数据的形式为
    15.若有定义:int i,j,k;则表达式(i=3,j=3+i,k=3+j)的值为

三. 阅读程序,写出下列程序的运行结果。

  1. main()
    { int x=5, y=10;
    printf(“%d “, ++x);
    printf(”%d\n”, y++);
    }
    程序的运行结果:

2.main( )
{ float num=5.6789;
num=(int)(num*100+0.5); //强制转换为整数,并不四舍五入
num=num/100;
printf(“num=%f\n”,num);
}
程序的输出结果是:

  1. main( )
    { int x,y,z;
    x=y=z=-1;
    ++x&&++y||++z;
    printf(“%d %d %d\n”,x,y,z);
    }
    程序的运行结果:

  2. main( )
    { int x=1,y=2;
    if(x>3)
    if(x>0)
    printf(“%d”,x+10);
    else
    printf(“%d”,y+10);
    printf(“%d”,x);
    }
    程序的输出结果:

5.main( )
{ int x=2;
switch(x==2)
{ case 1:printf(“*”);break;
case 2:printf(“%”);break;
}
}
程序的运行结果:

6.int f(int x)
{ if(x>0)
return 3+f(x-1);
else
return 10;
}
main( )
{ int x=5;
printf(“f(%d)=%d\n”,x,f(x));
}
程序的输出结果是:

  1. main( )
    { int n,sum=0;
    for(n=1;n<=10;n++)
    { if(n%2==0)
    continue;
    sum+=n;
    }
    printf(“%d”,sum);
    }
    运行结果:

8.main( )
{ char p[4]={“CHINA”,“JAPAN”,“ENGLAND”,“GERMANY”};
char **pp=p;
for(int i=0;i<4;i++)
printf("%c ",
(*(pp+i)+2));
}
程序的输出结果是:

  1. int x;
    void plusone()
    { x++;
    }
    main( )
    { x=1;
    plusone();
    plusone();
    printf(“x=%d\n”,x);
    }
    运行结果:

10.main( )
{ int a[3][3]={0},i,j;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(i>=j) a[i][j]=i*3+j;
for(i=0;i<3;i++)
{ for(j=0;j<3;j++)
printf(“%3d”,a[i][j]);
printf(“\n”);
}
}
程序的输出结果是:
11. main()
{ int a[4]={1,2,3,4};
int i;
for(i=0;i<4;i++)
a[i]+=i;
for(i=3;i>=0;i–)
printf(“%d “,a[i]);
printf(”\n”);
}
运行结果:

12. main( )
{ int s[12]={1,2,3,4,1,2,3,4,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++) c[s[i]]++;
for(i=1;i<5;i++) printf(“%d”,c[i]);
printf(“\n”);
}
程序的输出结果是:

  1. main( )
    { int x=1,a=1,b=1;
    switch(x)
    { case 0: b++;
    case 1: a++;
    case 2: a++;b++;
    }
    printf(“a=%d b=%d\n”,a,b);
    }
    程序的输出结果是:

14.main( )
{ int k;
int a[3][3]={1,2,3,4,5,6,7,8,9};
for(k=0;k<3;k++)
printf("%d ",a[k][2-k]);
}
运行结果:

15.void increment( )
{ int x=0;static int y=0;
x+=3; y+=3;
printf (“x=%d y=%d\n”,x,y);
}
main()
{ for(int i=1;i<=3;i++)
increment();
}
程序的输出结果是:

  1. main( )
    { int i=3;
    do
    { if(i%31)
    if(i%5
    2)
    { printf(“%d”,i); break;}
    i++;
    } while(i!=0);
    }
    程序的输出结果是:

17.int f(int x)
{ int y;
if(x0||x1) return (3);
y=x*x-f(x-2);
return y;
}
main()
{ int z;
z=f(3); printf(“%d\n”,z);
}
程序的输出结果是:

  1. main( )
    { int i,s=0;
    char str[]=“a1b2c3d4e5”;
    for (i=strlen(str);i>0;i–)
    if(str[i]>=‘0’&&str[i]<=‘9’)
    s+=str[i]-‘0’;
    printf(“%d”,s);
    }
    运行结果:

  2. fun(int x,int y)
    { static int m=0,i=2;
    i+=m+1; m=i+x+y; return m;
    }
    main( )
    { int j=1,m=1,k;
    k=fun(j,m); printf(“%d,”,k);
    k=fun(j,m); printf(“%d\n”,k);
    }
    程序的输出结果是:

20.void f(int a,int *b)
{ int t=a;a=*b;*b=t;}
main( )
{ int x=10,y=20;
f(x,&y);
printf(“x=%d y=%d\n”,x,y);
}
程序的输出结果是:

  1. main( )
    { int a[]={1,2,3,4,5};
    int m,p;
    p=a;
    m=
    (p+2);
    printf(“*p=%d,m=%d\n”,*p,m);
    }
    运行结果:

22.void func(int *a,int b[])
{ b[0]=*a+6; }
main( )
{ int a,b[5]; a=0; b[0]=3;
func(&a,b); printf(“%d \n”,b[0]);
}
程序的输出结果是:

23.以下程序的运行结果是:
main( )
{ int x=12321,y;
x=x%100; y=x/2;
printf(“x=%d,y=%d\n”,x,y);
}

  1. void test( int *x,int y)
    {
    *x+=2;
    y+=2;
    }
    main( )
    {
    int a=3,b=3;
    test(&a,b);
    printf(“a=%d,b=%d”,a,b);
    }
    以上程序的运行结果是:

  2. int x;
    void minusone()
    {x–; }
    int f(int n)
    {
    static int x=1;
    x=x+n;
    return x;
    }
    main( )
    {
    x=10;
    minusone();
    minusone();
    printf(“x=%d\n”,x);
    printf(“f(1)=%d\n”,f(1));
    printf(“f(2)=%d\n”,f(2));
    }
    程序的运行结果是:

main( )
{ int i,sum=0;
for (i=1;i<=50;i++)
{
if(i%2==0)
continue;
sum+=i;
if (sum>10) break;
}
printf(“sum=%d\n”,sum);
}
程序的输出结果是:

  1. int fun(int x)
    {
    if(x>0)
    return 2*fun(x-1);
    return 1;
    }
    main()
    {
    printf(“%d\n”,fun(5));
    }
    输出结果是:

  2. main()
    { int a[10], i, *p;
    for(i=0; i<10; i++)
    a[i]=i+1;
    p=a;
    i=4;
    printf(“a[%d]=%d\n”, i, *(p+i));
    }
    输出结果是:

  3. 以下程序的运行结果是: ,并画出链表结构示意图
    #include
    struct NODE
    { int num;
    struct NODE *next;
    };
    main( )
    { struct NODE *p,*q,*r;
    p=(struct NODE *)malloc(sizeof(struct NODE));
    q=(struct NODE *)malloc(sizeof(struct NODE));
    r=(struct NODE *)malloc(sizeof(struct NODE));
    p->num=1; q->num=2; r->num=3;
    p->next=q; q->next=r; r->next=NULL;
    printf(“%d\n”,p->next->next->num);
    }

四、填空完成程序
1.输入一个字符,如果它是一个大写字母,则把它变成小写字母;如果它是一个
小写字母,则把它变成大写字母;其它字符不变。
main()
{ char ch;
scanf (“%c”,&ch );
if (___________________)
ch = ch + 32;
else
if(ch>=‘a’&&ch<=‘z’)
__________________;
printf(“%c”,ch);
}

2.用冒泡法对10个整数从小到大排序。
main()
{ int a[11],i,j,t;
for(i=1;i<11;i++) scanf(“%d”,&a[i]);
for(j=1;j<=9;j++)
for(i=1;i<=10-j;i++)
if(_________________)
{t=a[i];a[i]=a[i+1];a[i+1]=t;
}
for(i=1;i<11;i++)
printf("%d ",a[i]);
}

3.定义一个结构类型,要求输入一个学生的数学和计算机两门课的成绩,然后计
算并输出其平均成绩。
main()
{ struct student
{ int math,computer;}stu;
printf(“请输入分数: “);
scanf(”%d%d”,______________________);
printf("平均分是:%f ",_______________________);
}

4.求一个三位整数的各位数之和。
main()
{ int x,x1,x2,x3;
scanf(“%d”,&x);
x1=x%10;
x2=________;
x3=x/100;
printf(“数字之和为:%d\n”,x1+x2+x3);
}
5. 利用冒泡排序算法将数组a中的n个元素按升序进行排序。
main()
{ int a[7]={66,28,5667,938,422,343,34},n=7, i,j,t;
for(i=1;i for(j=0;j<
;j++)
if(a[j]>a[j+1])
_______________________;
for(i=0;i printf("%d ",a[i]);
}
6. 将有N个元素的数组a中的数据逐个后移,最后一个元素移到最前面。如有数组:1 2 3 4 5 6 7 8移动后的结果为:8 1 2 3 4 5 6 7 。
#define N 8
main()
{ int a[N]={1,2,3,4,5,6,7,8},i,t;
t=_____________;
for (i=N-1;i>0;i–)
;
a[0]=t;
for(i=0;i printf("%d ",a[i]);
}
7.输出以下形式的图案:
*
**
***
****
main( )
{ int i,j;
for(i=1;i<=4;i++)
{ for(j=1;j<=
;j++)
printf(“*”);
printf(“\n”);
}
}

  1. 求平面坐标上两点之间的距离。
    #include
    main()
    { float x1,y1,x2,y2,dis;
    printf(“请输入二点的坐标”);
    scanf(“%f,%f,%f,%f”,&x1,&y1,&x2,&y2);
    dis=________________________;提示:用sqrt函数
    printf(“两点的距离是:%f\n”,dis);
    }

9.用公式求的近似值,直到最后一项的绝对值小于
0.0001为止。
main()
{ int i=1,sign=1;
double pi=0;
while(1.0/i>=)
{ pi+=
__________;
sign=-sign;
i+=2;
}
printf(“%lf\n”,4*pi);
}

  1. 用泰勒级数求e的近似值。直到最后一项小于0.000001为止。
    e=;
    main()
    { double e=1,p=1;
    int i;
    for(i=1;1/p>1e-6;i++)
    {
    p=_______________;
    e=e+1/p;
    }
    printf(“%lf”,e);
    }

参考答案使用班级:
一、选择题
1-5. ABDBA 6-10. ACADB 11-15. BAABB 16-20. BDABD
21-25. BDDCA 26-30. BAACA 31-35. AACBD 36-40. CBACA
41-45. DDCAD 46-50. BCBDC 51-55. ACABB 56-60. BCCCA
61-65. ACAAA 66-70. BDDCC 71-75. CBCBD 76-80. CCBDD
81-85. DDCAD 86-89. ACCA
二、填空题
2. x=10,y=5 4. 1 5. 4 6. 5 7. 2 8. 1 9. 0
10.if(a>b) m=a; else m=b; 11. 3 3 12. 5 13. 4 14. x=2, y=3
15. 9
三、完成程序

  1. 6 ,10 2. 5.68 3. 0 -1 0 4. 1
    •           6. f(5)=25       7.  25               8. I P G R 
      

9.x=3 10. 0 0 0 11. 12. 7 5 3 1
3 4 0
6 7 8
13.a=3 , b=2 14. 3 5 7 15. x=3 y=3 16. 7
x=3 y=6
x=3 y=9
17. 6 18. 15 19. 5 , 11 20. x=10,y=10
21.*p=1 ,m=3 22. 6
23.x=21, y=10
24. a=5 ,b=3
25.x=8 f(1)=2 f(2)=4
26.sum = 16
27. 32 (此题答案不一定正确)
a[4]=5 29. 3

你可能感兴趣的:(c语言,c语言期末)