第一篇: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.第一个系统体现结构化程序设计思想的教学工具语言是_______语言。解答: 1.main()2.编译
3.开发
4.指令序列
5.高级语言
6.函数
7.自定义函数
8.函数首部
9.翻译
10.应用软件
11.二进制代码
12.助记符
13.# 14.main函数
15.声明部分
16.;(或分号)
17.模块化
18.翻译
19.执行速度
20.PASCAL 二.阅读程序写结果;三.补充程序;四.改错题;五.编程一;六.编程二; 第二章 常量、变量和表达式 一.填空
1.以16位计算机为例,若定义long int a;则变量a占______个字节的内存空间。2.以16位计算机为例,若定义double a;则变量a占______个字节的内存空间。3.以16位计算机为例,若定义long double;则变量a占______个字节的内存空间。4.在______位机,int型占4个字节。
5.C语言的数据类型有:基本数据类型、构造数据类型、枚举类型、______、空类型。6.在C语言中,基本数据类型有:______。
7.整型常量046转换为十进制数等于______。
8.整型常量054转换为十进制数等于______
。9.整型常量0x125转换为十进制数等于_____。
10.整型常量0x7C转换为十进制数等于______。
11.整型常量39转换为八进制等于______。
12.实数473.468写成规范化指数形式,则应为______。
13.实数0.0453写成规范化指数形式,则应为_____。
14.将0x123转换为二进制等于______。
15.字符’A’表示成十六进制等于_____。
16.在C语言中,称代表常量的标识符为______。
17.C语言中是用编译预处理命令______来定义符号常量
18.在C语言中,以反斜杠符()开头,后跟字符的字符序列,称之为_____,主要用来表示控制及不可见的字符或者一些图形符号。
19.语句printf(“106”)执行的结果输出是______。
20.语句printf(“b”)执行的结果输出是______。
21.语句printf(“b”)执行的结果输出是______。
22.语句printf(“102”)执行的结果输出是______。
23.若有char ch1;ch1='a'+4;则语句printf(“%c”,x)的输出结果为______。
24.字符串常量“Hello, everyone!”占据的内存空间为______个字节 25.字符串常量“Hello,Bob!”占据的内存空间为 ______个字节。
26.十进制整型常量由0~9个数据组成,但不能以______开始,没有小数部分 27.十六进制常量由0~9和______组成
28.unsigned long类型常量通常以______为后缀
29.实型常量通常有小数形式和______两种表达方式
30.C语言中是用编译预处理命令______来包含其他源文件
31.为了表示字符串的结束,系统自动在字符串的最后加一个______,但不被输出 32.C语言中,其值可被改变的量称为变量,它具有三个基本要素:变量名、______和变量值。33.C语言规定,变量的标识符只能由字母、数字和下划线组成,且不能以______开头。34.在16位机中,sizeof(“hellon”)等于______。
35.在16位机中,printf(““hello””)等于_____。
36.字符变量在内存中占用______个字节的存储空间。37.若有定义int x=27, y=6;则表达式 x/y的值为______。38.若有定义int x=47, y=8;则表达式 x%y的值为______。
39.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch1=%c, ch2=% c”,ch1,ch2);则输出为______。
40.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch2=%c, ch3=% c”,ch2,ch3);则输出为______。
41.若有定义int i=5, j, k;执行j=i--;k=--i;printf(“i=%d, j=%dn”, i, j);则输 出为______。
42.表达式(int)(13.7+25.6)/4%5的值是______。
43.表达式 3.6-5/2+1.2+5%3的值是______。
44.表达式54%10/2+4.0*(8/5)的值是______。
45.若定义int x;double b=5.45;执行x=b后,则x的值为______。
46.若定义int y;char c='A';执行y=c后,则y的值为______。
47.若定义 int a=8;float b=2.5;则a/(int)(b)的值为______。
48.若a=5,则执行a*=7-3语句后,a的值是______。
49.若int a=1,b=0,c=4,d=2;则表达式(a>b ? a:b)&&(c-d)的值为______。
50.已知a = 0,表达式 a = 1?b = 1:b = 0;执行后,b的值是_____。
51.若定义int m=7,n=12;则表达式n%=m-m%5的值是______。
52.若定义int a=8;float b=4.5;执行a*=a/=a-b后,a的值为______。
53.int a=2;!a++的值为_____。
54.int a=0;!++a的值为______。
55.int a=7;float b=4.5;则printf(“%d”,a*=a/=a-b)的值为______。
56.int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值为______。
57.#define MM(a,b)(a-b)?a:b int a=2,b=6;printf(“%dn”,MM(a,b))的值为______。
58.在32位机中,int a=4,b=7;printf(“%0x”,a-b)的值为:______。
59.int x,y,z;x=y=2;z=3;y=x++-1;printf(“%d,%d”,x,y)的值为: ______。
60.int i=2,j;printf(“%d”,j=i<1)的值为:______。
解答: 1.4;2.4;3.10;4.32;5.指针类型;6.int、float、double、char;7.38;8.44;9.293; 10.124;11.047;12.4.734680e+002;13.4.530000e-002;14.100100011;15.x41/41H; 16.符号常量;17.#define;18.转义字符常量;19.F;20.b;21.b;22.B;23.e;24.16; 25.11;26.0;27.A~F;28.U;29.指数形式;30.#include;31.“ ”;32.变量类型; 33.数字;34.7;35.“hello”;36.1;37.4;38.7;39.ch1=C, ch2=A;40.ch2=A, ch3=C; 41.i=3, j=5;42.4;43.4.800000;44.6.000000;45.5;46.65;47.4;48.20;49.1; 50.1;51.2;52.4;53.0;54.0;55.4;56.2.500000;57.2;58.fffffffd;59.3,1; 60.0 二.阅读程序写结果;三.补充程序;四.改错题;五.编程一;六.编程二; 第三章 顺序结构; 一.填空
1.C语言的语句可分为5类,它们是:控制语句、____________、函数语句、符合语句和空 语句。
2.常用于字符输入的函数为:________________。3.常用于字符输出的函数为:________________。4.常用于字符串输入的函数为:________________。5.常用于字符串输出的函数为:________________。6.格式输入函数的一般形式为:________________。7.格式输出函数的一般形式为:________________。
8.printf和scanf是标准的库函数,它们的函数原型在头文件________________中。9.有char ch,则从键盘给ch赋值的格式输入语句为:________________。10.如果要输出字符串常量“HelloWord!”,则格式输出语句为:________________。11.设有定义:long x=-123456L;,请写出能够正确输出变量x值的语句________________。12.若有int a,b;,想通过scanf(“%d%d”,&a,&b);输入语句给a赋于1,给b赋于2,则从键盘输入数据的形式是________________。
13.若有int i,j;scanf(“i=%d,j=%d”;&i,&j);,要求给i赋10,给j赋20,则应该从键盘 输入_______。
14.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为
1、j的值为
2、k的值为3,请写出正确的输入语句________________。
15.有int m,n,p;scanf(“m=%dn=%dp=%d”,&m,&n,&p);printf(“%d%d%dn”,m,n,p);若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是___________。
16.有 int a;float b, c;scanf(“%2d%3f%4f”,&a,&b,&c);printf(“na=%d, b=%f, c=%fn”, a, b, c);,若运行时从键盘上输入9876543210<回车>,则程序的输出结果是_____________。17.有 int m=0256,n=256;则 printf(“%o %on”,m,n);的输出结果是__________________。18.有int x=102,y=012;,则printf(“%2d,%2dn”,x,y);的输出结果是____________。
19.有定义和语句:int a;char c=10;float f=100.0;double x;a=f/=c*=(x=6.5);则printf(“%d %d %3.1f %3.1fn”,a,c,f,x);的输出结果是_____________________。
20.若有定义和语句:int m=0xabc,n=0xabc;m-=n;则printf(“%on”,m);的输出结果是___。21.若有int m=32,n=032;,则printf(“%d,%xn”,m,n);执行后输出结果是______________。22.若有 int a=1234;,则 printf(“%2dn”,a);的输出结果是_________________。
23.若变量已正确说明为float类型,要通过语句scanf(“%f %f %f ”,&a,&b,&c);给a赋于1 0.0,b赋予22.0,c赋予33.0,不正确的输入形式是_____________________。
A)10 <回车>22<回车>33<回车>
B)10.0,22.0,33.0<回车> C)10.0<回车> 22.0 33.0<回车>
D)10 22<回车> 33<回车> 24.若有 int x=3,y=1;则printf(“%d %dn”,x++,y+2);的输出结果是________________。
25.若有定义和语句:double d;float f;long l;int i;i=f=l=d=20/3;则 printf(“%d %ld %f %f n”, i,l,f,d);的输出结果是(小数点后只写一位)_____________________。26.以下说法中正确的是 _____________________。
A)#define和printf都是C语句;B)#define是C语句,而printf不是; C)printf是C语句,但#define不是;D)#define和printf都不是C语句
27.若有 int k=17;,则 printf(“%d,%o,%x n”,k,k,k);的输出结果是________________。28.以下叙述中正确的是_____________________。
A)输入项可以是一个实型常量,如:scanf(“%f”,3.5);B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scakf(“a=%d,b=%d”);C)当输入数据时,必须指明变量地址,例如:scanf(“%f”,&f);29.若有定义和语句:int u=010,v=0x10,w=10;则printf(“%d,%d,%dn”,u,v,w);输出结果是_____________________。
30.若有int a=1,b=4,c=2;float x=10.5, y=4.0, z;z=(a+b)/c+sqrt((double)y)*1.2/c+ x;,则printf(“%fn”,z);的输出结果是_____________________。
31.若有int a=2,c=5;,则printf(“a=%%d,b=%%dn”,a,c);的输出结果是________________。32.有char c;int n=100;float f=10;double x;x=f*=n/=(c=50);则printf(“%d %f n”,n,x);的输出结果是_____________________。
33.有int i=0,j=0,k=0;scanf(“%d%*d%d”,&i,&j,&k);printf(“%d%d%dn”,i,j,k);若 从键盘输入:10 20 30<回车>。输出结果是_____________________。
34.若有int a,b,c;a=25;b=025;c=0x25;,则printf(“%d %d %dn”,a,b,c);的输出结果 是___________。35.有以下语句段
int n1=10,n2=20;
printf(“________________”,n1,n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
n1=10 n2=20 36.若有语句int i=-19,j=i%4;则printf(“%dn”,j);的输出结果是_____________________。37.有int a=0;a+=(a=8);则printf(“%dn”,a);的输出结果是_____________________。
38.有int a=1, b=2;a=a+b;b=a-b;a=a-b;则printf(“%d,%dn”, a, b);的输出结果是__________。39.有unsigned short a=65536;int b;,则printf(“%dn”,b=a);的输出结果是________。40.语句printf(“10289n”);的数据结果为:__________________。解答: 1.表达式语句;2.getchar();3.putchar();4.gets();5.puts(); 6.scanf(“格式控制字符串”,地址表列);7.printf(“格式控制字符串”,输出表列);8.stdio.h;9.scanf(“%c”,&ch);10.printf(“%s”,HelloWord!);或者:printf(“HelloWord!”);11.printf(“x=%1dn”,x);12.1 2;13.i=10,j=20;14.scanf(“%d,%d,%d”,&i,&j,&k);15.m=123n=456p=789;
16.a=98, b=765.000000, c=4321.000000;17.256 400;18.102,10;19.1 65 1.5 6.5;20.0;21.32,1a;22.1234;23.B;24.3 3;25.6 6 6.0 6.0;26.D;27.17,21,11;28.C;29.8,16,10;30.13.700000;31.a=%d,b=%d;32.2 20.000000;33.10300;34.25 21 37;35.n1=%dnn2=%d;36.-3;37.16;38.2,1;39.0;40.B89;
二.阅读程序写结果;三.补充程序;四.改错题;五.编程一;六.编程二; 第四章 选择结构 一.填空
1.在if, while, case, do, else 等关键字中,用于选择结构的有().2.已知 a = 1;那么 if(a = 2)printf(“%d”, 2);else printf(“%d”, 1);的输出结 果是().3.已知 char a = 'A';那么 if(a > 65)printf(“%s”, “bigger”);else printf(“%s” , “smaller”);的输出结果是().4.表示“x≥ y≥ z”的C语言表达式是()。
5.在C语言中,用于实现选择结构的语句有()语句和()语句。6.判断两个浮点型变量x和y是否相等一般用:if(<1e-6)„。7.设有程序段: t=6;a=7;b=8;if(a=b)t=a;,这段程序执行后,t的结果是()。8.设a=1,b=2,c=3,d=4,则表达式:a>b?a:c>d?a:d的结果为()。9.表达式98 && 8 && 31 &&(9812;
printf(“%dn”, y);
return 0;} 输入:12<回车> 17.#include
float x, y;
char op;
double r;
scanf(“%c%f%f”,&op,&x,&y);
switch(op)
{
case '+': r = x + y;break;
case '-': r = x1);
t = *(s + i);
*(s + i)= *(s + j);
*(s + j)= t;
} }
void main(){
int a[6] = {10, 6, 23,-90, 0, 3}, i;
invert(a, 0, 5);
for(i = 0;i < 6;i++)printf(“%d, ”, a[i]);
printf(“n”);
} 32.int func(int a[][3]){
int i,j,sum=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++){
a[i][j]=i+j;
if(i==j;
sum = sum+a[i][j];
}
return sum;} int main(){
int a[3][3]={1,3,5,7,9,11,13,15,17};
int sum;
sum=func(a);
printf(“sum=%d”,sum);
return 0;} 33.# include
int i=10;void fun();void main(){
int i;
for(i=2;i>0;i--)
fun();} void fun(){
i*=2;
printf(“i=%dn”, i);} 34.#include
int fun(int n)
{
if(n<=1)
return 1;
else
return fun(n-1)*n;
}
void main()
{
int i,j=0;
for(i=1;i<=3;i++)
j+=fun(i);
printf(“j=%dn”,j);
} 35.#include
int funa(int a, int b)
{
int t;
if(a > b)
t = a/b
else
t = a%22;
return t;
}
void main(){
int a=33, b=22,c;
c=funa(a,b);
printf(“c=%dn”, c);
} 36.# include
int i;
for(i=2;i>0;i--)
fun(i);} void fun(int i){
i*=2;
printf(“+%d+”, i);} 37.# include
int x=879;
fun(x);} void fun(int n){
int a,b,c,t;
a = n % 10;
b =(n/10)% 10;t;}
if(b < c){ t = b;b = c;c = t;}
if(a < b){ t = a;a = b;b = t;}
printf(“%d”, b);} 38.#include
int t;
c =(n/100)% 10;if(a < b){ t = a;a = b;b =
if(a > b)
{
t = a;
a = b;
b = t;
}
return t;} void main(){
int a=33, b=22,c;
c=funa(a,b);
printf(“c=%dn”, c);} 39.#include
int swap(int x, int y)
{
int z;
z=x%10;
x=y%10;
y=z;
z=x;
return z;
}
void main()
{
int a=38, b=29,c;
c=swap(a,b);
printf(“%d%dn”, a,c);} 40.#include
if(n==1)
printf(“*n”);
else
{
printf(“-”);
fun(n-1);
} } void main(){
int i,j=0;
for(i=1;i<4;i++)
fun(i);
printf(“XiaoXin!”);} 解答: 1.p=27;2.运行结果:12345;3.3
5;4.5 3,3 2;5.2;6.11 21 31;7.3
7; 8.6
5;9.012345;10.a1=1,a2=3,a3=2;11.10,20,30;
12.a=2,b=3;a=2,b=3;13.10,20,30;14.a=1.0000;15.567;16.4;17.3.000000;18.80,-20;19.-1;20.j=12;21.4,3,5;22.18; 23.Hello, world!Hello, world!Hello, world!;24.x=3;25.x=22; 26.i = 7;j = 6;x = 7 i = 2;j = 7;x = 5;27.7; 28.(1)x = 2 y = 3 z = 0(2)x = 4 y = 9 z = 5(3)x = 2 y = 3 z = 0 29.10, 20, 40, 40;30.125;31.3,0,-90,23,6,10;32.sum=6;33.i=20 i=40;34.j=9;35.c=1 36.+4++2+;37.8;38.c=33;39.389; 40.*
-*
--*
XiaoXin!三.补充程序
1.定义了一个max 函数,找两个整数的最大值,其位置在main之后.#include “stdio.h” ________________________ int main(){ int x,y,z;printf(“input two numbers:n”);scanf(“%d%d”,&x,&y);________________________;printf(“maxmum=%d”,z);return 0;} int max(int a,int b){ ________________________;if(a>b)w=a;else w= b;________________________;} 2.用函数nzp判别一个整数a的值,若大于0 则输出该值,若小于等于0则输出0值。
#include “stdio.h” ________________________nzp(________________________){ if(v>0)________________________ else printf(“%d ”,0);
} int main(){ int a;printf(“input number a:n”);scanf(“%d”,&a);________________________ return 0;} 3.主函数调f1计算n阶乘.#include “stdio.h” ________________________ int main(){ int n;long s;scanf(“%d”,&n);
________________________ printf(“ns=%ldn”,s);return 0;} long f2(int n){ ________________________ int i;for(i=1;i<=n;i++)c=c*i;________________________ } 4.主函数调fun计算1+1/2!+1/3!+...+1/30!的和.#include “stdio.h” ________________________ int main(){ int n;float s;________________________ printf(“1+1/2!+1/3!...+1/30!=%fn”,s);return 0;} float fun(){ int n;float t=1;________________________ for(n=1;n<=30;n++){
t*=1/n;s+=t;} ________________________ } 5.数组a中存放了一个学生5门课程的成绩,求平均成绩。
#include “stdio.h” ________________________ int main(){ float sco[5],av;int i;printf(“ninput 5 scores:n”);for(i=0;i<5;i++)scanf(“%f”,&sco[i]);________________________ printf(“average score is %5.2f”,av);return 0;} float aver(float a[]){ int i;float s=a[0];________________________ for(i=1;i<5;i++)s=s+a[i];av=s/5;________________________ } 6.用递归法计算n!#include “stdio.h” ________________________ int main(){ int n;long y;printf(“ninput a inteager number:n”);scanf(“%d”,&n);________________________ printf(“%d!=%ld”,n,y);return 0;}
________________________ff(int n)
{
long f;
if(n<0)printf(“n<0,input error”);
else if(n==0||n==1)f=1;else f=ff(n-1)*n;
________________________
} 7.输入正方体的长宽高l,w,h。求体积及三个面x*y,x*z,y*z的面积。
#include “stdio.h” int s1;________________________ int vs(int a,int b,int c){ ________________________ v=a*b*c;s1=a*b;s2=b*c;s3=a*c;________________________ } int main(){ int v,l,w,h;printf(“ninput length,width and heightn”);scanf(“%d%d%d”,&l,&w,&h);________________________ printf(“v=%d s1=%d s2=%d s3=%dn”,v,s1,s2,s3);return 0;} 8.输入两个正整数num1,num2,求其最大公约数.#include “stdio.h” ________________________ int main(){ int d;int num1,num2;printf(“please input two numbers:n”);scanf(“%d,%d”,&num1,&num2);________________________ printf(“gongyueshu:%dn”,d);return 0;} int gongyue(int a,int b){ ________________________ while(b){ temp=a%b;a=b;b=temp;} ________________________ } 9.利用递归函数调用方式,输出6个数字。
#include “stdio.h” ________________________ int main(){ int w=5;fun(w);printf(“n”);return 0;} ________________________fun(________________________){ if(k>0)________________________;printf(“%d”,k);
} 10.主函数调printstar打印一串星形图案.#include “stdio.h”
________________________
int main()
{
________________________;
return 0;}
________________________printstar(________________________)
{
printf(“*************n”);
} 解答: 1.int max(int a,int b);z=max(x,y);int w;return w; 2.void;int v;printf(“%d”,v);nzp(a); 3.long f2(int n);s=f2(n);long c=1;return c;4.float fun(void);s=fun();float s=0;return s;5.float aver(float a[]);av=aver(sco);float av;return av;6.long ff(int n);y=ff(n);longreturn f;7.int s2,s3;int v;return v;v=vs(l,w,h);8.int gongyue(int a,int b);d=gongyue(num1,num2);int temp;return a;9.void fun(int k);voidint k;fun(k-1);10.void printstar(void);printstar();voidvoid 四.改错题(解答)五.编程一(解答)六.编程二
1.编程实现:任意输入两个正整数,求它们的最大公约数和最小公倍数。要求最大公约数 通过自定义函数来输出。
2.编程实现:求出10~10000之内的所有素数。要求素数判断通过自定义函数来实现。3.编程实现:输出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字立 方和等于该数本身。例如:153是一个“水仙花数”,因为。要求水仙花数的判断通过自定 义函数来实现。4.编程实现:打印出2~1000之间的所有完数。所谓完数,是指这样的数,该数的各因子之和正好等于该数本身,例如:6=1+2+3;28=1+2+4+7+14;因此,6、28都是完数。要求完数的判断通过自定义函数来实现。
5.编程实现:打印出10~9999之间的所有回文数,要求每10个数一行输出。要求回文数的判断通过自定义函数来实现。
6.编程实现:打印出1~9999之间的所有同构数,所谓同构数是指一个数如果出现在该数平方的右端,该数就是同构数。如5,25都是同构数。要求同构数的判断通过自定义函数来实现。
7.给定一5*5的整型矩阵,求所有正对角线元素之和,并以矩阵的形式输出矩阵的值。要求:对角线元素之和及矩阵输出分别通过两个自定义函数来实现。
8.编程实现:输入一4*4的矩阵的值,求出每行的最大值并输出其所在列号。要求:通过通过自定义函数实现矩阵的输入输出。
9.编程实现:任意给定一个十进制的整数,将其转换成二进制,按位将其存放到数组中,然后输出,要求数制转换通过自定义函数来实现。
10.编程实现:任意输入一个正整数,编程求出它是几位数并将其逆序输出。要求通过自定 义函数实现求是几位数,该函数原形为:int ni(int x,int a[]);函数返回值是该数是几位数,x为给定的数,a中存放该数的各个位。
11.编写程序从键盘输入x和n的值,求xn(n为大于等于零的整数),要求用 递归函数求xn。
12.编写实现:输入两个正整数m,n(m>n),计算从m个元素中任意取n个元素的组合,计算机公式为:。要求通过递归函数求阶乘。
13.编程实现:从键盘任意输入10个不相同的整数,然后,输入要查找的数x,如果在这10个数中找到x,则打印“Found!”;如果找不到,则打印“Not found!”。要求通过自定义函数实现查找功能。
14.从键盘输入某班20个学生的成绩和学号,然后从键盘任意输入一个学生的学号,查找出他的成绩并输出,若未找到,给出相应提示。要求通过自定义函数实现查找功能。
15.编程实现:从键盘任意输入某班20个学生的姓名和成绩,输出最高分及不及格学生的人数。要求分别用两个自定义函数求最高分和不及格人数。
16.编程实现:输入2个降序排列的整数数列,将这两个数列合并存放到另一个数组中,要求每个数都一次到位,不得在新数组中重新排序。要求数列合并通过自定义函数来实现。17.编程实现:输入N名职工的姓名及计算机水平考试的成绩,输出及格人数和及格的职工信息。要求:职工信息的输入和输出分别通过自定义函数来实现。
18.编程实现:从键盘输入10名学生的信息,包括学号、姓名、成绩,用一个排序函数sort 完成学生成绩降序排列,并输出学生排序后的结果。
19.编程实现:任意输入一组不多于20个的升序排列的若干个整数,任意输入不多于10个的整数(-1作为输入结束标志),将其插入到该序列中,使其依然有序。要求:通过自定义函数实现将一个整数插入到一个有序序列中,使其依然有序。
20.一个班级有30个学生,每个学生有学号、姓名及数学、语文、计算机成绩、平均成绩。要求编程实现以下功能: 1)从键盘上输入30个学生的信息,平均成绩通过公式:平均成
第二篇:C语言程序设计题库
郑州大学现代远程教育
《C语言程序设计》课程
学习指导书
柳宏川 编
第1章
绪论
(一)本章学习目标
掌握结构化程序设计的思想,结构化流程图描述,算法设计基础和良好程序设计风格。
(二)本章重点、要点
C语言特点,算法概念及NS图形描述,结构化程序设计思想,三种基本结构:顺序结构、选择结构和循环结构,使用良好的程序设计风格。
(三)练习题
1_1.什么是低级语言? 1_2.什么是高级语言?
1_3.面向过程语言的特点是什么? 1_4.什么是算法? 1_5.算法有什么特点?
1_6.结构化算法的基本结构有哪些? 1_7.结构化程序设计的标准有哪些?
第2章
C语言程序的开发过程
(一)本章学习目标
熟悉C程序开发环境,熟练掌握调试工具的使用,掌握C语言程序结构与语法规则。
(二)本章重点、要点
C程序开发环境工具的使用,C语言程序结构与语法规则。
(三)Turbo C 的操作指南
开发一个C语言程序一般包括3个主要步骤:编辑,编译和连接。掌握调试C语言程序的全过程。
编辑:根据求解算法,开发人员使用文本编辑器编辑代码,生成源程序代码,扩展
1)2) 名为.C。
编译:编译时,编译器首先检查源程序中每条语句的词法和语法。当发现错误时,在屏幕上显示错误的位置、错误类型等相关信息。根据错误信息,重新使用编辑器进行查错并修改,然后重新编译直到所有的词法和语法错误都被排除。正确编译后产生二进制目标文件,扩展名为.OBJ。
连接:编译后产生的目标文件是可重定位的程序模块,但不能直接运行。连接是将目标程序、库函数和其它目标程序连接到一起,生成可执行的程序。扩展名为.EXE。运行:源代码经过编译、连接,生成可执行程序后,就可以进行程序的运行了。编译过程发现的错误可分为两类。
一类是局部语法错误。例如,缺失了分号、逗号,或者引用了错误的数据对象。另一类是程序内部上下文关系方面的错误。例如,需要使用的数据对象没有定义。连接时,也可能产生错误。例如,连接文件找不到等,具体不再叙述。
源代码经过编译、连接,生成可执行程序后,还需要进行测试。测试的目的是发现程序的错误。一般通过输入一些实际数据来验证程序执行结果的正确性。如果程序执行中出现问题,或发现程序的输出结果不正确,需要设法找到出错的原因,并修改源程序,重新进行编译、连接,再测试和调试,不断反复,直到程序正确无误。
第3章
基本数据类型
(一)本章学习目标
熟练掌握标识符的概念,基本数据(整型、实型、字符型等),常量,转义符,变量,变量的赋值。
(二)本章重点、要点
标识符的组成规则,基本数据类型及对应的名称(整型、实型、字符型等),常量,转义符,变量,变量名,变量的赋值等。
(三)练习题
3_1.基本整型数据的输出。3_2.实型数据的输出。3_3.字符型数据的输出。
3_4.C语言标识符的命名规则如何? 3_5.C语言的基本数据类型有哪些? 3_6.什么是常量? 3_7.什么是变量?
3_8.转义字符有什么作用?举例说明。
3_9.字符串常量与字符常量的表示有什么不同?
(二)本章重点、要点
循环控制语句:while语句,do…while语句,for语句,循环初始条件、循环终止条件、循环体和循环变量,循环的嵌套,辅助控制语句,continue语句,break语句,goto语句。
(三)练习题
7_1.用while语句,求连加式1 + 2 +...+ n(n > 2)的值。7_2.用do…while语句,求连加式1 + 2 +...+ n(n > 2)的值。7_3.求解奇数的连加式1 + 3 + 5 +...+ n(n > 10)的值。7_4.将如图所示的三角形图案显示到屏幕上。
7_5.判断一个整数是否为素数。
第8章
函数
(一)(一)本章学习目标
熟知函数的结构,正确进行函数定义,掌握函数头部,函数体,函数的返回值等概念,理解函数的功能,理解函数参数的意义,掌握有参函数的调用和无参函数的调用,掌握运用函数调用的方式,掌握函数的声明方法,理解函数的原型的概念。
(二)本章重点、要点
函数的定义,函数头部,函数体,函数的值,返回语句,函数的功能,函数的调用,有参函数的调用,无参函数的调用,函数调用的方式,函数的声明与函数的原型。
(三)练习题
8_1.编写程序,通过调用函数imin,求两个表达式的最小值。
8_2.编写程序,通过调用PtrStar函数,输出4行“@”号,每行10个。
8_3.编写程序,输入一个年份,通过调用函数判断其是否为闰年。
8_4.编写程序,输入两个数,输出其中绝对值最大的数。要求:求绝对值和求最大值分别使用函数完成,在求最大值的函数中调用求绝对值的函数。8_5.编写函数,完成显示下列所示的三角形图案,行数由函数参数决定。
8_6.编写程序,通过调用【实例8_5】中的函数,输出三个三角形的图案。
第9章
数组
(一)本章学习目标
张确使用一维数组和二维数组去解决问题。学会使用数组作为函数参数、数组元素作为函数的参数和数组名作为函数参数的方法。
(二)本章重点、要点
一维数组,一维数组的定义,一维数组元素的引用,一维数组在内存中的存储,一维字符数组的说明。二维数组,维数组的定义,二维数组元素的引用,二维数组在内存中的存储。数组作为函数参数,数组元素作为函数的参数,数组名作为函数参数。
(三)练习题
9_1.用随机函数产生15个100以内的随机整数存入一维数组,然后分三行输出,每行5个数
9_2.将一个一维数组a[9]中各元素值按行的顺序放入二维数组b[3][3]中。9_3.将一个二维数组b[5][5]中各元素值列优先的顺序放入一维数组a[25]中。9_4.有一个m×n矩阵,各元素值由随机数产生,求其转置矩阵并输出。
9_5.有一个m×n矩阵,找出最大元素值及其最大元素值所在的行、列位置。9_6.将矩阵M(n,n)对角线上的元素置为1,其余元素置为0。
第10章
结构体与共用体
(一)本章学习目标
掌握并正确使用结构体类型、结构体与数组,共用体,共用体类型。
(二)本章重点、要点
结构体类型的定义,结构体变量的定义,结构体变量的引用,结构体成员变量的引用,结构体变量的初始化。结构体与数组,共用体,共用体类型和共用体变量的定义,共用体变量的引用。
(三)练习题
10_1.设有学生信息如下:学号(长整型)、姓名(字符串型)、年龄(整型)、课程1成绩(实型)、课程2成绩(实型)、课程3成绩(实型)、课程4成绩(实型)、课程5-6
读写。
(三)练习题
12_1.利用文本编辑软件在磁盘上建立一个有n个学生的学号、姓名及英语、数学和计算机三门课程成绩的数据文件。编写程序将建立的数据文件读出且求出每个学生的平均成绩。12_2用定义结构类型的方法,编写程序建立一个具有学生学号、姓名、总分和联系电话的记录文件。12_3编写程序,利用第12_2建立的记录文件,从键盘上输入一个学号,查寻该位同学信息。12_4编写程序,将第12_3题建立的文件复制到另一个文件。
第13章
运算符与表达式
(一)本章学习目标
深入理解运算符和表达式,掌握位运算方法。
(二)本章重点、要点
运算符与表达式,赋值运算符,复合赋值运算符,赋值表达式,赋值运算符的优先级和结合方向。逗号运算符与逗号表达式,逗号表达式的求解顺序,逗号运算符的优先级,逗号运算符的扩展形式。条件运算符与条件表达式,条件运算符的求解顺序,条件运算符的优先级,条件运算符的结合方向,条件表达式的其它形式。自增自减运算符,前置运算,后置运算,自增自减运算符的优先级与结合方向,位运算,位运算符,位运算的功能,与位运算有关的复合赋值运算符,不同长度的数据的位运算,表达式的求解。
(三)练习题
13_1.利用条件运算符实现大小写字母的转换。
13_2.使用for循环求1至100的和。要求将所有的命令放入一个for循环结构。13_3.将下列符号函数使用一个条件表达式完成。
13_4.若int a=0,b=1,c=2,判断下列表达式执行后a,b,c及表达式的值(1)逻辑表达式
a++&&b++&&c++(2)逻辑表达式
++a&&b++&&c++(3)逻辑表达式
++a&&--b&&c++(4)逻辑表达式
a++||b++||c++(5)逻辑表达式
++a||b++||c++(6)逻辑表达式
a++||--b||c++(7)逻辑表达式
a++||b++&&(c-=2)(8)逻辑表达式
a++&&b++||(c-=2)(9)逻辑表达式
++a&&b++||(c-=2)
13_5.若a=1,b=2,c=3,d=4,m=1,n=3,则逻辑表达式(m=a>b)&&(n=c>d)13_6.解释x!= 0.0 && y/x > 1.0的功能。
第14章
变量的存储
(一)本章学习目标
掌握变量的存储概念,理解变量的类别和作用域。
(二)本章重点、要点
变量的存储单元,整型变量在内存中的存储,字符型变量在内存中的存储,实型变量在内存中的存储。变量的作用域,内部变量,外部变量,变量的生存期,auto变量,全局变量,static变量,register变量。
(三)练习题
14_1.在C语言中,变量的存储类别有哪4种? 14_2.什么是外部变量?其特点有哪些? 14_3.寄存器变量有什么特点? 14_4.什么是变量的作用域? 14_5.什么是变量的生存期?
第15章
指针
(二)(一)本章学习目标
深入理解指针,掌握高层次指针应用,掌握链表的使用。
(二)本章重点、要点
指针与数组,一维数组与一维数组指针,二维数组的指针及数组元素的访问,字符串指针。指针数组,指针数组,指向指针的指针,main函数的参数,函数指针。结构体指针,指向结构体的指针,指向结构体数组的指针,存储管理函数。链表,链表的概念,单链表的基本操作。
(三)练习题
15_1.编写一个程序,用12个月份的英文名称初始化一个字符指针数组,当键盘输入整数为1到12 时,显示相应的月份名,键入其他整数时显示错误信息。15_2.调用MaxMin函数,返回数组的最大值和最小值。
第16章
函数
(二)(一)本章学习目标
深入理解函数,从存储方面解释函数的调用。
(二)本章重点、要点
函数调用时的内存,函数的活动,程序运行时存储空间的划分,函数的活动记录。参数的传递机制,C语言参数传递,指针参数,数组参数。递归函数,直接递归与间接递归,递归函数的调用过程。
(三)练习题
16_1.设计一个函数把两个整数形参中较大的那个数的地址作为函数值返回,并编写主函数实现调用。
16_2.编写函数,比较两个字符串大小。若相等返回0,大于时返回1,否则返回-1。
第17章
预处理命令
(一)本章学习目标
正确理解预处理命令的概念,掌握预处理命令的使用方法。
(二)本章重点、要点
宏定义,无参宏定义,带参宏定义,宏的作用域。带参的宏与函数的区别,文件包含,条件编译,“# ifdef”命令,“# ifndef”命令,“# if”命令,条件编译和条件语句的比较。
(三)练习题
17_1.C语言的预处理有哪些?
17_2.预处理命令在书写格式上有什么要求?
17_3.#include <文件名>和#include “文件名”有什么不同? 17_4. 条件编译和条件语句有什么区别?
参考答案
第1章 绪论
1_1.什么是低级语言?
答:低级语言较依赖于所在的计算机系统,也称为面向机器的语言。使用低级语言编写的程序,移植性较差。低级语言主要包括机器语言和汇编语言。
机器语言是由二进制代码“0”和“1”组成的若干个数字串。用机器语言编写的程序,称为机器语言程序。机器语言程序能够被计算机直接识别并执行。但是,程序员直接编写或维护机器语言程序是很难完成的。
汇编语言是一种借用助记符表示的程序设计语言。汇编语言的每条指令都对应着一条机器语言代码。汇编语言也是面向机器的,即不同类型的计算机系统使用的汇编语言也不同。1_2.什么是高级语言?
答:高级语言编写的程序易读,易修改,移植性好。但使用高级语言编写的程序不能直接在机器上运行,必须经过语言处理程序的转换,才能被机器识别。按照转换方式的不同,可将高级语言分为解释型和编译型两大类。1_3.面向过程语言的特点是什么?
答:(1)采用模块分解与功能抽象的方法,自顶向下,逐步求精。(2)按功能划分为若干个基本的功能模块,形成一个树状结构。各模块间的关系尽可能简单,功能上相对独立。每一个功能模块内部都是由顺序、选择或循环三种基本结构组成。1_4.什么是算法?
答:问题的求解过程,是对数据对象的加工过程。问题的求解过程包括两个方面的内容,即对问题涉及的“数据”进行描述和对“加工过程”进行描述。对“数据”的描述,称为“数据结构”,对“加工过程”的描述,称为算法。1_5.算法有什么特点? 答:算法具有以下特点:
(1)有穷性。一个算法包含的操作步骤是有穷的,而不能是无穷的,并且操作时一般还要求是合理可行的。
(2)确定性。算法的每个操作都是确定的,而不应该具有二义性。
(3)有零个或多个输入。“输入”指的是执行算法时,需要从外界获取的必要信息。
(4)有一个或多个输出。算法的目的是为了得到计算的结果。一般地,计算结果即为输出。没有输出的算法是没有意义的。
(5)有效性。算法的每一个操作都应能有效地执行,并得到确定的结果。1_6.结构化算法的基本结构有哪些?
答:(1)顺序结构。(2)选择结构。(3)循环结构。
1121314num2 * num2;printf(“%d ^ 2 + %d ^ 2 = %dn”, num1, num2, SquareSum);printf(“%d ^ 264)% 26 + 65;printf(”%c's back is %cn“, ch, BackCh);return 0;} 第5章 C语言程序的输出与输入
325_1.编写程序求多项式 ax+bx+c的值(键盘输入a=2, b=3, c=4, x=1.414)。# include
y = a*x*x+b*x*c;printf(”%fx^2+%fx+%f=%fn“, a,b,c,y);getchar();getchar();return 0;} 变化二:
# include
# include
5_2.已知华氏温度,根据公式:C = 5/9(F-32),求摄氏温度C(结果保留两位小数)。#include
#include
5_4.用getchar()分别输入‘A’,‘B’,‘C’,并赋值给a,b,c, 然后将其转换成对应的小写字母,用putchar()将其输出。#include
x1=a+b+c= 3+ 4+ 5= 12 x2=a-b-c= 3-4-5=-6 #include
printf(”b=“);scanf(”%d“,&b);printf(”c=“);scanf(”%d“,&c);printf(”x1=a+b+c=%d+%d+%d=%dn“,a,b,c,a+b+c);printf(”x1=a-b-c=%d-%d-%d=%dn“,a,b,c,a-b-c);return 0;}
第6章 流程控制—选择控制结构
6_1.使用if语句,求解两个数中的最大值。/*程序功能:输入两个数,输出其中的大者*/ # include
break;/*求和完毕,退出当前switch语句*/ case '-': result = num1181932;
break;
} break;case 1: /*是大写英文字母*/ ch2 = ch1 + 32;break;} printf(”Input: %cnOutput: %cn“, ch1, ch2);return 0;} 6_6.编写程序,输入一个年份,判断其是否为闰年。
分析:一个年份,当且仅当符合下列两个条件之一的,即是闰年。能被4整除,但不能被100整除的年份。例如,1992年、2008年。能被400整除的年份。例如,2000年、2400年。
用flag的值,表示是否为闰年。如果flag的值为1,表示闰年;如果是0,表示非闰年。# include
int main(){ int year, flag;printf(”Input a year: “);scanf(”%d“, &year);if(year % 4 == 0){ if(year % 100!= 0)flag = 1;else { if(year % 400 == 0)flag = 1;else flag = 0;} } else flag = 0;if(flag)printf(”%d is a leap yearn“, year);else printf(”%d is not a leap yearn“, year);return 0;} 第7章 流程控制—循环控制结构
7_1.用while语句,求解连加式1 + 2 + „+ n(n > 2)的值。# include
printf(“Input a number: ”);
scanf(“%d”,&n); while(i <= n){ sum = sum + i;i=i+1;} printf(“1 + 2 +...+ %d = %dn”,n,sum); return 0; } 7_2.用do„while语句,求连加式1 + 2 +...+ n(n > 2)的值。# include
scanf(”%d“, &n);do { product = product * i;i = i + 1;} while(i <= n);/*累乘i,直到i超过n为止*/ printf(”1 * 2 *...* %d = %ldn“, n, product);return 0;} 7_3.求解奇数的连加式1 + 3 + 5 +...+ n(n > 10)的值。# include
{ printf(”*“);j = j + 1;} /*第i行输出2 * i23242526i;){ printf(” “);j = j + 1;} /*第i行输出n1){ printf(”*“);j = j + 1;} /*第i行输出2 * ii;){ printf(” “);j = j + 1;} /*第i行输出n271){ printf(”*");j = j + 1;} /*第i行输出2 * i2829303******4
若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是()。(注:└┘代表空格)
A.10A└┘20B
B.10└┘A20B C.10 └┘A└┘20└┘ B
D.10A20└┘B 43.若变量已正确说明为float类型,要通过语句scanf(”%f %f%f”, &a, &b, &c);给a赋予10.0,b赋予22.0,c赋予33.0,不正确的输入形式为()。
A.10<回车>
B.10.0,22.0,33.0<回车>
22<回车>
C.10.0<回车>
D.10
22<回车> 22.0
33.0<回车>
33<回车> 44.有如下程序,若要求x1、x2、y1、y2的值分别为10、20、A、B,正确的数据输入是()。(注:└┘代表空格)int x1,x2; char y1,y2;
scanf(”%d%d”,&x1,&x2);scanf(”%c%c”, &y1,&y2);A.1020AB
B.10└┘20└┘ABC C.10└┘20
D.10└┘20AB AB 45.已有定义int a=-2;和输出语句:printf(”%8lx”,a);以下正确的叙述是()。A.整型变量的输出格式符只有%d一种
B.%x是格式符的一种,它可以适用于任何一种类型的数据 C.%x是格式符
D.%8lx不是错误的格式符,其中数字8规定了输出字段的宽度 46.有如下程序段,对应正确的数据输入是()。float x,y;scanf(”%f%f”, &x,&y);printf(”a=%f,b=%f”, x,y);A.2.04<回车>
B.2.04,5.67<回车>
5.67<回车> C.A=2.04,B=5.67<回车>
D.2.055.67<回车> 47.有如下程序段,从键盘输入数据的正确形式应是()。(注:└┘代表空格)float x,y,z;scanf(“x=%d,y=%d,z=%d”,&a,&y,&z);A.123
B.x=1,y=2,z=3 C.1,2,3
D.x=1└┘ y=2└┘ z=3 48.以下说法正确的是()。
A.输入项可以为一个实型常量,如scanf(”%f”,3.5);B.只有格式控制,没有输入项,也能进行正确输入,如scanf(”a=%d,b=5d”);C.当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf(”%4.2f”,&f);D.当输入数据时,必须指明变量的地址,如scanf(”%f”,&f);49.根据定义和数据的输入方式,输入语句的正确形式为:()。(注:└┘代表空格)已有定义:float x,y;
数据的输入方式:1.23<回车>
4.5<回车> A.scan(”%f,%f”,&x,&y);
B.scanf(”%f%f”,&x,&y);C.scanf(”%3.2f└┘%2.1f”,&x,&y);
D.scanf(”%3.2f%2.1f”,&x,&y);50.根据下面的程序及数据的输入和输出形式,程序中输入语句的正确形式应该为()。#include ”stdio.h” main(){char s1,s2,s3;输入语句;
printf(”%c%c%c”,s1,s2,s3);} 输入形式:A└┘B└┘C<回车>
(注:└┘代表空格)输出形式:A└┘B A.scanf(”%c%c%c”,&s1,&s2,&s3);B.scanf(”%c└┘%└┘c%c”,&s1, &s2,&s3);C.scanf(”%c,%c,%c”,&s1,&s2,&s3);D.scanf(”%c%c”, &s1, &s2,&s3);51.以下程序的执行结果是:()。#include ”stdio.h” main(){ int x=2,y=3;printf(”x=%%d,y=%%dn”,x,y);} A.x=%2,y=%3
B.x=%%d,y=%%d C.x=2,y=3
D.x=%d,y=%d 52.以下程序的输出结果是()。(注:└┘代表空格)#include ”stdio.h” main(){ printf(”nstring1=%15s*”, ”programming”);printf(”nstring2=%-5s*”, ”boy”);printf(”string3=%2s*”, ”girl”);} A.string1=programming└┘└┘└┘└┘*
B.string1=└┘└┘└┘└┘programming*
string2=boy*
string2=boy└┘└┘*string3=gi*
string3=gi*
C.string1=programming└┘└┘└┘└┘*
D.string1=└┘└┘└┘└┘programming*
string2=└┘└┘boy*string3=girl*
string2=boy└┘└┘*string3=girl* 53.根据题目中已给出的数据的输入和输出形式,程序中输入输出语句的正确内容是()。#include ”stdio.h” main(){ int a;
float b;
748
第三篇:C语言程序设计试题 库
目录
第一章 基础知识.....................................................................................................................................................2 一.填空..............................................................................................................................................................2 第二章 常量、变量和表达式.................................................................................................................................4 一.填空..............................................................................................................................................................4 第三章 顺序结构.....................................................................................................................................................7 一.填空..............................................................................................................................................................7 第四章 选择结构...................................................................................................................................................10 一.填空............................................................................................................................................................10 二.阅读程序写结果........................................................................................................................................10 三.补充程序....................................................................................................................................................16 四.编程一........................................................................................................................................................21 第五章 循环结构...................................................................................................................................................26 一.填空............................................................................................................................................................26 二.阅读程序写结果........................................................................................................................................26 三.补充程序....................................................................................................................................................32 四.编程一........................................................................................................................................................36 第六章 函数...........................................................................................................................................................41 一.填空............................................................................................................................................................41 二.阅读程序写结果........................................................................................................................................42 三.补充程序....................................................................................................................................................56 四.编程二........................................................................................................................................................61 第七章 数组...........................................................................................................................................................74 一.填空............................................................................................................................................................74 二.阅读程序写结果........................................................................................................................................76 三.补充程序....................................................................................................................................................88 第八章 结构体.......................................................................................................................................................93 一.填空............................................................................................................................................................93 二.阅读程序写结果........................................................................................................................................95 三.补充程序..................................................................................................................................................103 第九章 指针.........................................................................................................................................................111 一.填空..........................................................................................................................................................111 二.阅读程序写结果......................................................................................................................................112 三.补充程序..................................................................................................................................................118 第十章 文件.........................................................................................................................................................124 一.改错题......................................................................................................................................................124 第一章 基础知识
一.填空
1.每个C程序都必须有且仅有一个____ main()____ 函数。
2.C语言程序开发到执行通常要经过6个阶段即编辑、预处理、___编译_____、链接、加载和执行。3.软件是程序,以及__开发____、使用和维护所需要的所有文档。
4.国标中规定:“计算机程序是按照具体要求产生的适合于计算机处理的__指令序列_______”。5.程序设计语言按照书写形式,以及思维方式的不同一般分为低级语言和___高级语言_____两大类。6.C语言是由_____函数___组成的。
7.C语言的函数可分为主函数main、标准库函数和_____自定义函数____。8.一个函数是由两部分组成的,即:___函数首部_____和 函数体。
9.编译是将C语言所编写的源程序_____翻译___成机器代码,也称为建立目标代码程序的过程。10.程序是由某种程序设计语言编制出来,体现了编程者的控制思想和对计算机执行操作的要求。不同的任务功能,就会需求不同的软件程序,如:控制计算机本身软硬件协调工作,并使其设备充分发挥效力,方便用户使用的系统软件程序,称为操作系统;而为办公自动化(OA)、管理信息系统(MIS)、人工智能、电子商务、网络互联等等应用而开发的软件程序,统称为__应用软件_______。
11.机器语言是以______二进制代码____形式表示的机器基本指令的集合,是计算机系统唯一不需要翻译可以直接识别和执行的程序设计语言。
12.与机器语言相比,使用汇编语言来编写程序可以用_助记符______来表示指令的操作码和操作对象,也可以用标号和符号来代替地址、常量和变量。
13.在编译程序之前,凡以 # ___开头的代码行都先由预处理程序预处理。14.C程序的执行均是由执行__ main函数_______开始。
15.函数体即为包含在{ }内的部分。它分为___声明部分_____和为完成功能任务由若干个C语句 组成的执行部分。
16.C语言程序中一条简单语句是以___;(或分号)_____字符作为结束符的。17.C语言是结构化、__模块化______的程序设计语言。
18.由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“__翻译_____程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。19.用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以说,用高级语言进行程序设计,其编程效率高,方便易用,但__执行速度_____没有低级语言高。20.第一个系统体现结构化程序设计思想的教学工具语言是__ PASCAL _____语言。
解答: 1.main()
6.函数
11.二进制代码
16.;(或分号)2.编译
7.自定义函数
12.助记符
17.模块化
3.开发
8.函数首部
13.#
18.翻译
4.指令序列
9.翻译
14.main函数
19.执行速度
5.高级语言
10.应用软件
15.声明部分
20.PASCAL 第二章 常量、变量和表达式
一.填空
1.以16位计算机为例,若定义long int a;则变量a占______个字节的内存空间。2.以16位计算机为例,若定义double a;则变量a占______个字节的内存空间。3.以16位计算机为例,若定义long double;则变量a占______个字节的内存空间。4.在______位机,int型占4个字节。
5.C语言的数据类型有:基本数据类型、构造数据类型、枚举类型、______、空类型。6.在C语言中,基本数据类型有:______。
7.整型常量046转换为十进制数等于______。
8.整型常量054转换为十进制数等于______。9.整型常量0x125转换为十进制数等于 ______。
10.整型常量0x7C转换为十进制数等于______。
11.整型常量39转换为八进制等于______。
12.实数473.468写成规范化指数形式,则应为 ______。
13.实数0.0453写成规范化指数形式,则应为______。
14.将0x123转换为二进制等于______。
15.字符‟A‟表示成十六进制等于______。
16.在C语言中,称代表常量的标识符为______。
17.C语言中是用编译预处理命令______ 来定义符号常量
18.在C语言中,以反斜杠符()开头,后跟字符的字符序列,称之为 ______,要用来表示控制及不可见的字符或者一些图形符号。
19.语句printf(“106”)执行的结果输出是______。
20.语句printf(“b”)执行的结果输出是______。
21.语句printf(“b”)执行的结果输出是______。
22.语句printf(“102”)执行的结果输出是 ______。
23.若有char ch1;ch1='a'+4;则语句printf(“%c”,x)的输出结果为______。
24.字符串常量“Hello, everyone!”占据的内存空间为______个字节 25.字符串常量“Hello,Bob!”占据的内存空间为 ______个字节
26.十进制整型常量由0~9个数据组成,但不能以______开始,没有小数部分。27.十六进制常量由0~9和______组成。28.unsigned long类型常量通常以______为后缀。29.实型常量通常有小数形式和______两种表达方式。30.C语言中是用编译预处理命令______来包含其他源文件。
31.为了表示字符串的结束,系统自动在字符串的最后加一个______,但不被输出。32.C语言中,其值可被改变的量称为变量,它具有三个基本要素:变量名、______和变量值 33.C语言规定,变量的标识符只能由字母、数字和下划线组成,且不能以______开头。34.在16位机中,sizeof(“hellon”)等于 ______。
35.在16位机中,printf(““hello””)等于______。
36.字符变量在内存中占用______个字节的存储空间。37.若有定义int x=27, y=6;则表达式 x/y的值为______。38.若有定义int x=47, y=8;则表达式 x%y的值为______。
39.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch1=%c, ch2=%c”,ch1,ch2);则输出为______。
40.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch2=%c, ch3=%c”,ch2,ch3);则输出为______。
41.若有定义int i=5, j, k;执行j=i--;k=--i;printf(“i=%d, j=%dn”, i, j);则输出为______。
42.表达式(int)(13.7+25.6)/4%5 的值是______。
43.表达式 3.6-5/2+1.2+5%3 的值是______。
44.表达式54%10/2+4.0*(8/5)的值是______。
45.若定义int x;double b=5.45;执行x=b后,则x的值为______。
46.若定义int y;char c='A';执行y=c后,则y的值为______。
47.若定义 int a=8;float b=2.5;则a/(int)(b)的值为______。
48.若a=5,则执行a*=7-3语句后,a的值是______。
49.若int a=1,b=0,c=4,d=2;则表达式(a>b ? a:b)&&(c-d)的值为______。
50.已知a = 0,表达式 a = 1?b = 1:b = 0;执行后,b的值是______。
51.若定义int m=7,n=12;则表达式n%=m-m%5的值是______。
52.若定义int a=8;float b=4.5;执行a*=a/=a-b后,a的值为______。53.int a=2;!a++的值为______。
54.int a=0;!++a的值为______。
55.int a=7;float b=4.5;则printf(“%d”,a*=a/=a-b)的值为 ______。
56.int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值为 ______。
57.#define MM(a,b)
(a-b)?a:b
int a=2,b=6;printf(“%dn”,MM(a,b))的值为 ______。
58.在32位机中,int a=4,b=7;printf(“%0x”,a-b)的值为:______。
59.int x,y,z;x=y=2;z=3;y=x++-1;printf(“%d,%d”,x,y)的值为: ______。
60.int i=2,j;printf(“%d”,j=i<1)的值为:______ 解答: 1.4
2.4
3.10
6.int、float、double、char 7.38
11.047
12.4.734680e+002 13.4.530000e-002 16.符号常量
17.#define 18.转义字符常量
21.b
22.B
23.e
26.0
27.A~F
28.U
31.“ ” 32.变量类型
33.数字
36.1
37.4
38.7
41.i=3, j=5
42.4
43.4.800000
46.65
47.4
48.20
51.2
52.4
53.0
56.2.500000 57.2
58.fffffffd
4.32
5.指针类型
8.44
9.293
10.124 14.100100011 15.x41或41H 19.F
20.b 24.16
25.11
29.指数形式
30.#include 34.7
35.“hello”
39.ch1=C, ch2=A 40.ch2=A, ch3=C 44.6.000000
45.5 49.1
50.1 54.0
55.4 59.3,1
60.0 6 第三章 顺序结构
一.填空
1.C语言的语句可分为5类,它们是:控制语句、____________、函数语句、符合语句和空语句。2.常用于字符输入的函数为:________________。3.常用于字符输出的函数为:________________。4.常用于字符串输入的函数为:________________。5.常用于字符串输出的函数为:________________。6.格式输入函数的一般形式为:________________。7.格式输出函数的一般形式为:________________。
8.printf和scanf是标准的库函数,它们的函数原型在头文件________________中。9.有char ch,则从键盘给ch赋值的格式输入语句为:________________。
10.如果要输出字符串常量“HelloWord!”,则格式输出语句为:________________。11.设有定义:long x=-123456L;,请写出能够正确输出变量x值的语句________________。
12.若有int a,b;,想通过scanf(“%d%d”,&a,&b);输入语句给a赋于1,给b赋于2,则从键盘输入数据的形式是________________。
13.若有int i,j;scanf(“i=%d,j=%d”;&i,&j);,要求给i赋10,给j赋20,则应该从键盘输入_______。14.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为
1、j的值为
2、k的值为3,请写出正确的输入语句________________。
15.有int m,n,p;scanf(“m=%dn=%dp=%d”,&m,&n,&p);printf(“%d%d%dn”,m,n,p);若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是________________。
16.有 int a;float b, c;scanf(“%2d%3f%4f”,&a,&b,&c);printf(“na=%d, b=%f, c=%fn”, a, b, c);,若运行时从键盘上输入9876543210<回车>,则程序的输出结果是_____________________。
17.有 int m=0256,n=256;则 printf(“%o %on”,m,n);的输出结果是_____________________。18.有int x=102,y=012;,则printf(“%2d,%2dn”,x,y);的输出结果是_____________________。19.有定义和语句:int a;char c=10;float f=100.0;double x;a=f/=c*=(x=6.5);,则printf(“%d %d %3.1f %3.1fn”,a,c,f,x);的输出结果是_____________________。
20.若有定义和语句:int m=0xabc,n=0xabc;m-=n;则printf(“%on”,m);的输出结果是_____________。21.若有int m=32,n=032;,则printf(“%d,%xn”,m,n);执行后输出结果是___________________。22.若有 int a=1234;,则 printf(“%2dn”,a);的输出结果是_____________________。
23.若变量已正确说明为float类型,要通过语句scanf(“%f %f %f ”,&a,&b,&c);给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是_____________________。
A)10 <回车>22<回车>33<回车>
B)10.0,22.0,33.0<回车> C)10.0<回车> 22.0 33.0<回车>
D)10 22<回车> 33<回车> 24.若有 int x=3,y=1;则printf(“%d %dn”,x++,y+2);的输出结果是_____________________。
25.若有定义和语句:double d;float f;long l;int i;i=f=l=d=20/3;则 printf(“%d %ld %f %f n”, i,l,f,d);的输出结果是(小数点后只写一位)_____________________。26.以下说法中正确的是 _____________________。
A)#define和printf都是C语句 B)#define是C语句,而printf不是 C)printf是C语句,但#define不是 D)#define和printf都不是C语句
27.若有 int k=17;,则 printf(“%d,%o,%x n”,k,k,k);的输出结果是_____________________。28.以下叙述中正确的是_____________________。
A)输入项可以是一个实型常量,如:scanf(“%f”,3.5);B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scakf(“a=%d,b=%d”);C)当输入数据时,必须指明变量地址,例如:scanf(“%f”,&f);29.若有定义和语句:int u=010,v=0x10,w=10;则printf(“%d,%d,%dn”,u,v,w);输出结果是_____________________。
30.若有int a=1,b=4,c=2;float x=10.5, y=4.0, z;z=(a+b)/c+sqrt((double)y)*1.2/c+x;,则printf(“%fn”,z);的输出结果是_____________________。
31.若有int a=2,c=5;,则printf(“a=%%d,b=%%dn”,a,c);的输出结果是_____________________。32.有char c;int n=100;float f=10;double x;x=f*=n/=(c=50);则printf(“%d %fn”,n,x);的输出结果是_____________________。
33.有int i=0,j=0,k=0;scanf(“%d%*d%d”,&i,&j,&k);printf(“%d%d%dn”,i,j,k);若从键盘输入:10 20 30<回车>。输出结果是_____________________。
34.若有int a,b,c;a=25;b=025;c=0x25;,则printf(“%d %d %dn”,a,b,c);的输出结果是___________。35.有以下语句段
int n1=10,n2=20;
printf(“________________”,n1,n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。n1=10 n2=20 36.若有语句int i=-19,j=i%4;则printf(“%dn”,j);的输出结果是_____________________。37.有int a=0;a+=(a=8);则printf(“%dn”,a);的输出结果是_____________________。
38.有int a=1, b=2;a=a+b;b=a-b;a=a-b;则printf(“%d,%dn”, a, b);的输出结果是______________。39.有unsigned short a=65536;int b;,则printf(“%dn”,b=a);的输出结果是______________。40.语句printf(“10289n”);的数据结果为:__________________。
解答: 1.表达式语句
2.getchar()
3.putchar()
4.gets()
5.puts()6.scanf(“格式控制字符串”,地址表列); 7.printf(“格式控制字符串”,输出表列); 8.stdio.h
9.scanf(“%c”,&ch);10.printf(“%s”,HelloWord!);或者:printf(“HelloWord!”);11.printf(“x=%1dn”,x);12.1 2 或者1(回车)2 13.i=10,j=20 14.scanf(“%d,%d,%d”,&i,&j,&k);15.m=123n=456p=789 16.a=98, b=765.000000, c=4321.000000 17.256 400 18.102,10
19.1 65 1.5 6.5 20.0
21.32,1a 22.1234
23.B
24.3 3
25.6 6 6.0 6.0 26.D
27.17,21,11 28.C
29.8,16,10 30.13.700000
31.a=%d,b=%d 32.2 20.000000 33.10300 34.25 21 37
35.n1=%dnn2=%d 36.-3
37.16 38.2,1
39.0
40.B89 第四章 选择结构
一.填空
1.在if, while, case, do, else 等关键字中,用于选择结构的有().2.已知 a = 1;那么 if(a = 2)printf(“%d”, 2);else printf(“%d”, 1);的输出结果是().3.已知 char a = 'A';那么 if(a > 65)printf(“%s”, “bigger”);else printf(“%s”, “smaller”);的输出结果是().4.表示“x≥ y≥ z”的C语言表达式是()。
5.在C语言中,用于实现选择结构的语句有()语句和()语句。6.判断两个浮点型变量x和y是否相等一般用:if(<1e-6)…。7.设有程序段: t=6;a=7;b=8;if(a=b)t=a;,这段程序执行后,t的结果是()。8.设a=1,b=2,c=3,d=4,则表达式:a>b?a:c>d?a:d的结果为()。9.表达式98 && 8 && 31 &&(9812;
printf(“%dn”, y);
return 0;} 输入:12<回车> 答案: 0
17.#include
float x, y;
char op;
double r;
scanf(“%c%f%f”,&op,&x,&y);
switch(op)
{
case '+': r = x + y;break;
case '-': r = x-y;break;
case '*': r = x * y;break;
case '/': r = x / y;break;
}
printf(“%.1f”, r);
return 0;
} 输入:/ 3 5<回车> 答案:0.6
18.#include
if(a>9 || a<10)
a=a/3;
else
a=a%3;
printf(“a=%d”, a);} 答案:a=2
19.#include
int a=20;
switch(a%3)
case 0: printf(“0”);
case 1: printf(“1”);
case 2: printf(“2”);
default: printf(“3”);15
{
}
printf(“4”);} 答案:234
20.#include
int a=2,b=5,c=8,t;
if(a < b){ t = a;a = b;b = t;}
if(b < c){ t = b;b = c;c = t;}
if(a < b){ t = a;a = b;b = t;}
printf(“%d,%dn”, a++,--c);} 答案: 8,1
三.补充程序
1.根据输入字符的ASCII码来判别字符的类别。由ASCII码表可知ASCII值小于32的为控制字符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之间为小写字母,其余则为其它字符。
#include
_____________________________________________
if(c<32)printf(“This is a control charactern”);else if _____________________________________________
printf(“This is a digitn”);else if _______________________________________
printf(“This is a capital lettern”);else if(c>='a'&&c<='z')
printf(“This is a small lettern”);____________________________________________
printf(“This is an other charactern”);
return 0;
} 答案:c=getchar();
(c>='0'&&c<='9')
(c>='A'&&c<='Z')
else 2.计算器程序。用户输入运算数和四则运算符,输出计算结果.#include
break;
'-':
printf(“%fn”,a/b);
3.输入三个整数,输出最大数和最小数(注:max总是记录最大数,而min总是记录最小数).#include
min=b;17
if(max min=c; 4.#include case 2: break; default: 5.判断a>b、a #include } 答案:if(a==b) else if(a>b) else if(a else 6.根据以下函数关系,对输入的每个x值,计算出相应的y值。 #include ________________________c=-1;else c=______________________;switch(c){ case –1 : y=0;break;case 0 : y=x;break;case 1 : y=10;break;case 2 : case 3 : y=-0.5*x+20;________________;default : y=-2;} if(c!=2)printf(“y=%f”,y); __________________ printf(“error!”); return 0;} 答案:if(x<0) c=x/10; break; else 7.找出x,y,z三个数中的最小数,并判断该数是否等于b。 #include int main() { int x=4,y=5,z=8 ,b; int u,v; scanf(“%d”,&b); u = x v = u if_____________________________________________printf(“最小数等于b!n”); _____________________________________________printf(“最小数不等于b!n”); return 0; } 答案:x:y; u:z; (v==b) else 8.输入两个运算数x,y和一个运算符号op,输出该运算结果的值,例如输入3+5↙得到结果8.#include int main() { float x,y,r; char op; scanf(“%f,%c,%f”,&x,&op,&y); switch(op) { case '+': r=x+y;_____________________________________________; _____________________________________________ r=x-y;break; case '*' :_____________________________________________;break; _____________________________________________ r=x/y;break; } printf(“%f”,r); return 0;} 答案:break; case '-': r=x*y; case '/': 9.根据输入字符的ASCII码来判别字符的类别。由ASCII码表可知ASCII值小于32的为控制字符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之间为小写字母,其余则为其它字符。 #include if(c>='0'&&c<='9') printf(“This is a digitn”);_____________________________________________ printf(“This is a capital lettern”);_____________________________________________ printf(“This is a small lettern”);_____________________________________________ 20 printf(“This is an other charactern”);return 0;} 答案:if(c<32) else if(c>='A'&&c<='Z') else if(c>='a'&&c<='z') else 10.找出a,b,c三个数中的最大数,并判断该数是否等于x。 #include u = a _____________________________________________printf(“最大数不等于x!n”); return 0; } 答案:b:a c:u (v==x) else 四.编程一 1.求分段函数 答案: 1.#include printf(“input xn”); scanf(“%f”,&x); if(x<0) y=1; else if(x<=5) y=2*x; else y=sqrt(x); printf(“x=%5.1fy=%8.3fn”,x,y);} 的值,输入x值,输出结果。2.从键盘上输入一个数x,计算并输出下列分段函数y的值。 答案: #include { printf(“无定义n”); return; } if(x<0) y=-x;else if(x<=1) y=sin(x)+x;else if(x>=10&&x<=20) y=x*x*x;printf(“x=%5.1fy=%8.3fn”,x,y);} 3.某运输公司运费计算时根据运输距离打折计算,折扣的计算方法如下: (其中,discount表示折扣,S表示运输距离)。编写一完整程序,输入运输距离,统计运费并输出。每公里的运费通过符号常量定义为2.5。答案: #include discount=0; else if(s<800) discount=0.02;else if(s<1500) discount=0.05; 4.编程输入一元二次方程的三个系数,求解一元二次方程的实根,无实根时不用求虚根,给出相应提示信息即可。答案: /*功能:求一元二次方程的解。*/ #include scanf(“%f,%f,%f”, &a, &b, &c); disc=b*b-4*a*c; if(disc==0) printf(“x1=x2=%7.2fn”,-b/(2*a));/*输出两个相等的实根*/ else if(disc>0) { x1=(-b+sqrt(disc))/(2*a);/*求出两个不相等的实根*/ x2=(-b-sqrt(disc))/(2*a); printf(“x1=%7.2f,x2=%7.2fn”, x1, x2); } else printf(“无实根n”);} 5.给定三条边,判断其是否能构成三角形,若能构成,判断其是等腰三角形、等边三角形、直角三角形还是普通三角形。答案: 5.#include printf(“等边三角形n”); else if(a==b||b==c||c==a) printf(“等腰三角形n”); else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==b*b+a*a) printf(“直角三角形n”);} else printf(“不能构成三角形 n”);} 6.从键盘输入一个三角形的三条边,判断是否能组成三角形,若能组成三角形,则输出它的面积。答案: #include discount=0.08; cost=s*(1-discount)*price;printf(“distance=%5.1f;cost=%5.1fn”,s,cost);} #include printf(“输入三条边:n”); scanf(“%f%f%f”,&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) { s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“area=%7.2fn”,area); else printf(“不能构成三角形 n”);} 7.从键盘输入一个百分制的学生成绩,输出其对应的分数等级,其中90~100为A,80~89为B,70~79为C,60~69为D,60以下为E。答案: #include int score; char d; printf(“Input scoren”); scanf(“%d”,&score); if(score>100||score<0) { printf(“data error!n”); return; } switch(score/10) { case 10: case 9:d='A';break; case 8:d='B';break; case 7:d='C';break; case 6:d='D';break; default:d='E';break;} printf(“score=%3ddengji=%cn”,score,d);} 8.编写一个程序,从键盘输入三个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b中原来的值给c,把c中原来的值给a。答案: #include int a,b,c,t; printf(“Input a,b,cn”); scanf(“%d%d%d”,&a,&b,&c);24 t=a; a=b; b=c; c=t; printf(“a=%d;b=%d;c=%d;n”,a,b,c);} 9.输入一个字符,判断其是否为英文字母,若是英文字母,则将其大小写进行转换,若不是英文字母,则不变。答案: #include char c1,c2; printf(“Input a letter: ”); c1=getchar(); if(c1>='a'&&c1<='z') c2=c1+'A'-'a'; else if(c1>='A'&&c1<='Z') c2=c1+'a'-'A'; else c2=c1; printf(“原字符:%c转换后为:%cn”,c1,c2);} 10.给定三个整数型x,y,z,输出三个数中的最大值和最小值。答案: #include int a,b,c,max,min; printf(“Input a,b,cn”); scanf(“%d%d%d”,&a,&b,&c); max=a;min=a; if(b>max) max=b; else if(b if(c>max) max=c; else if(c printf(“a=%d;b=%d;c=%d;n”,a,b,c); printf(“max=%d;min=%dn”,max,min);} 25 第五章 循环结构 一.填空 1.C语言中提供了三种循环控制语句,它们是:()、do-while语句、()。 2.break语句在C程序中只能出现在两种场合:一是用于()语句中,二是用于()语句中。3.以下程序段中的语句printf(“***”)要执行5次,请在空白处填入合适的数。for(i=1;i<=();i=i+2) printf(“***”); 4.定义int k=10;执行语句 while(k<20)k += 1 ; 后,k的值为()。5.在循环控制结构中break语句的作用是()。6.在循环控制结构中continue语句的作用是:()。 7.若已知int a[5][5];并在运行过程中a数组已经赋值;要打印次对角线元素,在空白处填入合适的值/表达式; for(i = 0;i<5;i++) for(j =();j >=0;j--) printf(“%5d”, a[i][j]);8.执行完语句sum = 0;for(i = 0;i < 10;i++){ if(i % 5 = = 0)sum += i;sum =()。 9.在使用while 语句中需要注意,为了防止“死循环”的发生,在循环体中一定要有()语句。10.do-while 语句中,判断循环条件在(),执行循环体在()。(填“先”“后”) 解答: 1.while for 2.循环,switch 3.9 4.20 5.终止并跳出最近一层的结构 6.结束本次循环,进行是否进行下一次循环的判断 7.4-i 8.5 9.使循环逐渐趋向于结束 10.后 先 二.阅读程序写结果 1.#include int number , digit; number = 1234; while(number!= 0) { digit = number%10; printf(“%d” , digit); number = number / 10; } 26 } 答案:4321 2.#include int i; for(i=1;i printf(“%dn”,i*i);} 答案:1 3.#include s=0; x=15; for(i=1;i<=5;i++) if(x%i==0) printf(“i=%d,s=%dn”,i,s);} 答案:i=6,s=9 4.#include int counter=1; while(counter <= 5) { printf(“%d n”, counter); counter++; } } 答案:1 5.#include int i,sum,m,a; sum=0; m=5; s= s + i; for(i=0;i<=3;i++) { scanf(“%d”,&a); if(a>m) sum+=a; } printf(“sum=%dn”,sum); return 0; } 输入:2 10 8 3<回车> 答案:sum=18 6.#include for(i=1;i<=4;i++) { for(j=1;j<5-i;j++) printf(“ ”); for(k=1;k<=i;k++) printf(“*”); printf(“n”); } return 0; } 答案:* ** *** **** 7.#include int i,j; i=1; while(i<5) { for(j=1;j<2*i+1;j++) printf(“%c”,'#'); printf(“n”); i++; } return 0; } 答案:## #### ###### # 8.#include do { if(i%2!=0) m=m+i; else n=n+i; i--; }while(i>=0); printf(“m=%d,n=%dn”,m,n); return 0; } 答案:m=25,n=30 9.#include scanf(“%d”,&n); while(n<=5) { sum+=n; n++; } printf(“sum=%d”,sum);} 输入:1<回车> 答案:sum=15 10.#include for(i=2;i>=0;i--) { for(j=1;j<=i;j++) printf(“*”); for(j=0;j<=2-i;j++) printf(“!”); printf(“n”); } } 答案:**! *! !! 11.#include int a,b; for(a=1,b=1;a<=100;a++)29 { if(b>20)break; if(b%4==1) { b=b+4; continue; } b=b-5; } printf(“a=%dn”,a);} 答案:a=6 12.#include int i; for(i=1;i<3;i++) { scanf(“%c”,&k); switch(k) { case '0': printf(“anothern”); case '1': printf(“numbern”); } } } 输入:01<回车> 答案:another number number 13.#include int i, s = 0; for(i = 1;i < 10;i++) { s += i * i; if(s > 10)break; } printf(“i=%d, s=%dn”, i, s); return 0; } 答案:i=3, s=14 14.#include while((ch=getchar())!='n') { if(ch>='A'&&ch<='Z') ch=ch+32; else if(ch>='a'&&ch<='z') ch=ch-32; printf(“%c”,ch); } } 输入:ABCdef<回车> 答案:abcDEF 15.#include int a, b; for(a = 1, b = 1;a <= 100;a++) { if(b >= 9)break; if(b % 3 == 1) { b += 3; continue; } b-= 5; } printf(“%d,%dn”, a, b); return 0; } 答案:4,10 16.#include int i = 0,j = 0; while(i < 10)i++; while(j++ < 10); printf(“i=%d,j=%dn”,i,j); return 0; } 答案:i=10,j=11 17.#include int i,j,t; for(i=1,j=10;i<3;i++,j--) t=i+j; t++; printf(“%d,%d”,j,t);} 答案:8,12 18.#include int i=10,j; do { j = i%2; printf(“%d”,j); i--; } while(i> 4);} 答案:010101 19.#include int i=7,j; while(i> 2) { j = i%2; printf(“%d”,j); i--; } printf(“%d”,i);} 答案:101012 20.#include int i,j,t=0; for(i=3;i>0;i--) for(j=0;j<4;j++) t+=j; printf(“t=%d”,t);} 答案: t=18 三.补充程序 1.输出100以内能被3整除的数 #include _____________________________________________; for(_________________________;n<=100;________________________) { if(n%3!=0)________________________ printf(“%d ”,n); } return 0; } 32 答案:int n n=1; n++ continue; 2.输出100以内的素数。素数是只能被1 和本身整除的数。为减少循环次数,只需对数n用2 ~ 去除来判断该数是否素数。 #include int n,i,k; for(n=2;n<=100;________________________) { k=sqrt(n); for(i=2;i<=k;________________________) if(n%i==0)________________________ if(i>k)printf(“t%2d”,n); } return 0; } 答案:#include n++ i++ break; 3.输出200以内能被5整除的数 #include for(________________________;n<=200;________________________) { if(n%5!=0)________________________ printf(“%d ”,n); } return 0; } 答案:int n; n=1 n++ continue; 4.求输入的十个整数中正数的个数及其平均值 #include int i,num=0,a; float sum=0; for(i=0;________________________;________________________) { scanf(“%d”,&a); if(a>=0) { ________________________; ________________________; } } printf(“%d plus integer's sum: %6.0fn”,num,sum); printf(“Mean value:%6.2fn”,sum/num); return 0; } 答案:i<10 i++ num++ sum+=a 5.求输入的十个整数中负数的个数及其平均值 #include float sum=0;________________________; ________________________; while(i<10) { scanf(“%d”,&a); if(a<=0) { ________________________; num++; } ________________________; } printf(“%d plus integer's sum: %6.0fn”,num,sum); printf(“Mean value:%6.2fn”,sum/num); return 0; } 答案:i=0; num=0; sum+=a; i++; 6.分解并打印出X的各个素数因子.如18=1*2*3*3.#include int i,x; scanf(“%d”,&x); printf(“%d=1”,x); for(________________________;i<=x;________________________) { while________________________ { printf(“*%d”,i); ________________________; } } return 0; } 答案:i=1 i++ (x%i==0) x=x/i; 7.输出九九乘法表.#include for(i=1;________________________;________________________) { for(________________________;________________________;j++) printf(“%2d*%2d=%2d”, j, i ,i*j); printf(“nn”); } return 0; } 答案:i<=9 i++ j=1 j<=i 8.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 #include for(n=1;________________________;________________________) { s=s+a/b; t=a; a=a+b; ________________________; } printf(“sum is %9.6fn”,s); return 0;35 } 答案:s=0 n<=20 n++ b=t; 9.求1+2!+3!+...+20!的和.#include for(n=1;________________________;________________________;) { t*=n; ________________________; } printf(“1+2!+3!...+20!=%en”,s); return 0; } 答案:s=0 n<=20 n++ s+=t; 10.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 #include float a=2, _______________________,s=0; for(________________________;________________________;n++) { s=s+a/b; t=a; ________________________; b=t; } printf(“sum is %9.6fn”,s); return 0; } 答案:b=1 n=1 n<=20 a=a+b 四.编程一 1.试编写程序求S=1+1*2+1*2*3+1*2*3*4+…+1*2*3*…*10的值。答案: #include float s=0,term=1; for(i=1;i<=10;i++) { s=s+term; term=term*(i+1); } printf(“sum%10.1fn”,s);} 2.编程利用以下公式求π的值。(取n=10000) 答案: #include float e=1,term=1; for(i=1;i<=100;i++) { term=term*i; e=e+1./term; } printf(“e=%10.6fn”,e);} 3.计算s=1+1/2+1/3+…+1/n的值,其中n的值由键盘输入。答案: #include float s=0; printf(“input nn”); scanf(“%d”,&n); for(i=1;i<=n;i++) s=s+1./i; printf(“s=%10.6fn”,s);} 4.编写程序,在屏幕上输出下面的图案(要求用for循环实现)。 * * * * * * * * * * * * * * * * * * * * * * * * * 37 答案: #include for(i=1;i<=5;i++) { for(k=1;k<=2*i;k++) printf(“ ”); for(j=1;j<=5;j++) printf(“* ”); printf(“n”); } } 5.编写程序,输入整数n,并根据n的值打印图案(要求用for循环实现)。n为中间一行的*号个数。例如,当n=4时,图案为 * * * * * * * * * * * * * * * * 答案: #include printf(“input nn”); scanf(“%d”,&n); for(i=1;i<=n;i++) { for(j=1;j<=i;j++) printf(“* ”); printf(“n”); } for(i=n-1;i>=1;i--) { for(j=1;j<=i;j++) printf(“* ”); printf(“n”); } } 6.从键盘输入若干个学生的成绩,-1作为结束标志,求出平均成绩及最高成绩并输出其结果。答案: #include i=0; printf(“please input score:n”); scanf(“%d”,&score); max=score; while(score!=-1) { sum=sum+score; if(score>max)max=score; i++; scanf(“%d”,&score); } printf(“max=%dn”,max); printf(“average=%fn”,(float)sum/i);} 7.编写一程序,从键盘输入n个数,输出其最大数和最小数,并输出它们在序列中的序号。答案: #include printf(“please input n:n”); scanf(“%d”,&n); printf(“please input x:n”); scanf(“%d”,&x); max=x;min=x; for(i=2;i<=n;i++) { scanf(“%d”,&x); if(x>max){ max=x;maxi=i;} if(x } printf(“max=%d;maxi=%dn”,max,maxi); printf(“min=%d;mini=%dn”,min,mini);} 8.编程实现:输出由0、1、2、3组成的所有的各位数字均不相同的三位数,输出时每8个数占一行。答案: #include int i,j,k,n=0; for(i=1;i<=3;i++) for(j=0;j<=3;j++) for(k=1;k<=3;k++) if(i!=j&&i!=k&&j!=k) { n++; printf(“%5d”,i*100+j*10+k); if(n%8==0) printf(“n”);39 } } 9.输入一行字符,回车作为结束,分别统计出其中英文字母、空格、数字和其它字符的个数。答案: #include char ch; ch=getchar(); while(ch!='n') { if(ch==' ') kge++; else if(ch>='0'&&ch<='9') shuzi++; else if(ch>='a'&&ch<='z'||ch>='A'&&ch<='Z')zimu++; else qita++; ch=getchar(); } printf(“数字=%d;字母=%d;空格=%d;其它%d”,shuzi,zimu,kge,qita);} 10.求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加由键盘控制。答案: #include printf(“Sn=a+aa+aaa+…+aaa…anplease input a,n:”); scanf(“%d,%d”,&a,&n);t=a; while(i { Sn=Sn+t; t=10*t+a; i++; } printf(“%ldn”,Sn);} 第六章 函数 一.填空 1.函数中的形参和调用时的实参都是数组名时,传递方式为______________;形参实参都是变量时,传递方式为______________。 2.一个函数在它的函数体内调用它自身称为______________调用。3.函数体包括函数的说明部分和______________。 4.定义在一个程序块(函数)中的变量,称为______________变量,它的作用范围只是定义它的程序块。5.在函数原型声明中,必须声明函数参数的类型,但可以省略______________。6.C语言源程序中主函数名由系统规定为______________,程序员是不能改变的。 7.已知函数首部定义为:int stat(int a , float *p)则此函数的两个参数类型分别是_______、______________。8.在c语言中,进行函数调用是,形参和实参之间有严格的规定,主要有三种要求分别是:______________相等,______________一致,并______________对应。 9.若自定义的函数要求返回一个值,则应在该函数中有一条______________语句。 10.若函数头部定义为 int foo(), 则该函数中return 语句返回的数据类型是______________。11.若函数头部定义为 struct stu * foo(), 则该函数中return 语句返回的数据类型是______________。12.若函数头部定义为 int * foo(), 则该函数中return 语句返回的数据类型是______________。13.若函数头部定义为 float foo(), 则该函数中return 语句返回的数据类型是______________。14.若函数头部定义为 char foo(), 则该函数中return 语句返回的数据类型______________。15.若函数头部定义为 char * foo(), 则该函数中return 语句返回的数据类型是______________。16.若函数头部定义为 void foo(int a[]),在主程序中有如下语句: int a[5] = {1};… foo(a[5]);这句函数调用的语句是 ______________。(填“正确”“错误”) 17.若函数头部定义为 void foo(int *a),在主程序中有如下语句: int array[5] = {1};… foo(array);这样的语句是______________。(填“正确”“错误”) 18.若函数头部定位为 void foo(char * str), 在主程序中有如下语句:char array[5] = “good”;… foo(array);这样的语句是______________。(填“正确”“错误”) 19.若一个函数中的主要语句是这样的,int a = 3;if(a > 3)return-1;return 0;那么这个函数的返回值是______________。 20.若函数头部定义为void foo(int * a), 主程序中定义 int array[10], 现在要将array 数据传进函数进行处理,正确函数调用语句是____________________________。 解答: 1.地址传递 值传递 2.递归 6.main 7.整型 浮点型指针 11.指向结构体的指针 12.指向整型的指针 16.错误 17.正确 3.执行部分 4.局部 5.形参名 8.个数 类型 一一 9.return 10.int 或整型 13.浮点型或float 14.字符型或char 15.指向字符的指针 18.正确 19.0 20.foo(array)二.阅读程序写结果 1.#include int x=3,n=3; long p; p=fun(x,n); printf(“p=%ldn”,p); return 0; } long fun(int x,int n){ int i; long p=1; for(i=0;i p*=x; return p;} 答案:p=27 2.#include char ch; while((ch=getchar())!='n') { if(isDigit(ch)) putchar(ch); } printf(“n”); return 0; } int isDigit(char ch){ if(ch>='0' && ch<='9') return 1; else return 0; } 输入:Abc1d23eF45g<回车> 42 答案:12345 3.#include scanf(“%d”,&n);odddivisor(n);return 0; } void odddivisor(int n){ int i; for(i=3;i<=n/2;i=i+2) if(n%i==0) printf(“n”);} 输入:15<回车> 答案:3 4.#include int main(){ int a=1,b=2; a=a+b; print(); printf(“%d %dn”,a,b); return 0; } void print(){ int b=3; printf(“%d %dn”,a,b);} 答案:5 3 2 5.#include x=fun1(x);printf(“%dn”,x);return 0; } 43 printf(“%5d”,i); int fun1(int x){ x++;fun2(x);return x;} void fun2(int x){ x++;} 答案:2 6.#include int a=11,b=21,c=31; fun1(a,b,c); printf(“%d %d %dn”,a,b,c); return 0; } int fun1(int a,int b,int c){ a=a+10; b=b+10; c=c+10; return c;} 答案:11 21 31 7.#include fun(7); printf(“n”); return 0; } void fun(int x){ if(x/2>1) fun(x/2); printf(“%5d”,x); } 答案:3 8.#include int i,a[5]={1,2,3}; fun(a); for(i=0;i<5;i++)44 printf(“%5d”,a[i]); printf(“n”); return 0; } void fun(int a[]){ int i; for(i=0;i<5;i++) a[i]+=5; } 答案:6 9.#include int w = 5; fun(w); printf(“n”);} void fun(int k){ if(k>0) fun(k-1); printf(“%d” , k);} 答案:012345 10.#include void main(){ int a=2; f1(); { int a=3; printf(“a2=%dn”,a); } printf(“a3=%dn”,a); } void f1(void){ printf(“a1=%dn”,a);} 答案:a1=1 a2=3 a3=2 11.#include *c=a+b; } void main(){ int a=10,b=20,c=30,d=40; f(a,b,&c); printf(“%d,%d,%dn”,a,b,c);} 答案:10,20,30 12.#include int a=2,b=3; printf(“a=%d,b=%dn”,a,b); swap(a,b); printf(“a=%d,b=%dn”,a,b);} void swap(int a,int b){ int c; c=a; a=b; b=c;} 答案:a=2,b=3 a=2,b=3 13.#include int x=10,y=20,z=30; fun(x,y,z); printf(“%d,%d,%dn”,x,y,z);} void fun(int a,int b,int c){ a=456; b=567; c=678; } 答案:10,20,30 14.#include for(i=1;i s=s+(float)1.0/i; return s;46 } void main(){ int i;float a=0.0; for(i=1;i<3;i++) a=a+f(i); printf(“a=%.4fn”, a);} 答案:a=1.0000 15.#include int a=2,i; for(i=0;i<3;i++) printf(“%d”,f(i));} int f(int a){ int b=0,c=3; b++; c++; return(a+b+c);} 答案:567 16.#include int i,x; for(i=0;i<=2;i++) x=fun(); printf(“%dn”,x); } int fun(){ int x=3; x++; return x;} 答案:4 17.#include void main(){ float a,b,c; a=1.0; b=2.0; c=add(a,b); printf(“%fn”,c);} float add(float x,float y){ float z; z=x+y; return(z);} 答案:3.000000 18.#include { cp=x++; dp=++x;} void main(void){ int a,c=80, d=-20; a=30; fun(a,c,d); printf(“%d,%dn”, c,d);} 答案:80,-20 19.#include int i=2,p; p=f(i,i+1); printf(“%dn”,p);} int f(int a,int b){ int c; if(a>b)c=1; else if(a==b) c=0; else c=-1; return(c);} 答案:-1 20.#include else return fun(n-1)+3; } void main()48 { int i,j=0; for(i=1;i<4;i++) j=j+fun(i); printf(“j=%dn”,j);} 答案:j=12 21.#include int t; if(x {t=x;x=y;y=t;} } void main(){ int a=4,b=3,c=5; f(a,b); f(a,c); f(b,c); printf(“%d,%d,%d”,a,b,c);} 答案:4,3,5 22.#include if(n==1)c=10; else c=age(n-1)+2; return(c);} void main(){ printf(“%d”,age(5));} 答案:18 23.#include int counter; for(counter =1;counter <= 3;counter++) hello_world();} void main(void){ three_hellos();49 } 答案:Hello, world! Hello, world! Hello, world! 24.#include void main(){ int x,i=1,k=3; x=f(i,k); printf(“x=%d n”,x);} int f(int a,int b){ int M=0; while(b!=0) { M=M+a; b--; } return M;} 答案:x=3; 25.#include for(i = m;i < n;i++) s += b[i]; return s;} int main(){ int x,a[ ] = {1,2,3,4,5,6,7,8,9}, *p = a; x = f(p,3,7); printf(“x=%dn”,x); return 0; } 答案:x=22 26.#include printf(“i = %d;j = %d;x = %dn”, i, j, x);} int main(){int i = 2, x = 5, j = 7; fun(j, 6);50 分类: 一、概念(13---51,54,55)、数据类型、输入输出格式、转义符、运算及表达式等:1---66 二、选择语句:67---72(其中67为条件运算,72可归于一类); 三、循环语句:73---102(其中78为输出格式可归于一类) 四、数组:103---133(其中123 – 125为与数组相关的函数调用) 五、函数调用:134---156 六、文件:157 – 183 七、指针:184---195 八、结构体:196---207(204.205,206为函数调用) 1、在C语言中,最基本的数据类型包括 (A)整型、实型、字符型(B)整型、实型、逻辑型(C)整型、字符型、逻辑型(D)实型、字符型、逻辑型 2 C语言中整常数的书写形式不能使用的数制形式是(A)十进制(B)十六进制(C)八进制(D)二进制 3 字符串常量“abncde125”包含字符的个数是(A)8(B)12(C)9(D)13 4 C语言的标识符只能由字母、数字和下划线三种字符组成,且第一个字符(A)必须为下划线(B)可以是这三种字符中的任一种(C)必须为字母或下划线(D)必须为字母 5 下列是用户自定义标识符的是(A)#x(B)_x(C)2x(D)int 6 在C语言中,下列常数不能作为常量的是(A)0xA3(B)068(C)5.6E-3(D)2e5 7 在C语言中,运算对象必须是整型的运算符是(A)%(B)>=(C)&&(D)= 8 下列表达式与x =(y++)等价的是(A)x = ++y(B)x = x + 1, y = x(C)x = y, y = y + 1(D)x += y + 1 9 若定义int x = 17;,则表达式x++ * 1 / 6的值是(A)1(B)2(C)3(D)4 10 如果在一个C语言表达式中有多个运算符,则运算时应该(A)只考虑优先级(B)只考虑结合性(C)先考虑优先级,然后考虑结合性(D)先考虑结合性,然后考虑优先级 11在C程序中,下面叙述不正确的是 (A)x和X 是两个不同的变量(B)从键盘输入数据时,对整型变量只能输入整型数据,对于实型变量只能输入实型数据(C)逗号运算符的优先级最低(D)若x、y类型相同,则执行语句y = x,后,将把x的值放入y中,而x的值不变 12 已知字符A的ASCII值为65,若定义int i;,则执行语句i = 'A' + 3.5;后,正确的叙述是(A)i的值是字符E(B)语句不合法 (C)i的值是字符A的ASCII值加上3,即68(D)i的值是字符A的ASCII值加上3.5,即68.5 13 C语言是计算机高级语言,它适合作为系统描述语言,它 (A)不以用来编写系统软件,可以用来编写应用软件(B)不以用来编写系统软件,不可以用来编写应用软件 (C)可以用来编写系统软件,不可以用来编写应用软件(D)可以用来编写系统软件,也可以用来编写应用软件 14 在纸上写好一个C语言程序后,上机运行的基本步骤为 (A)编辑、连接、编译、运行(B)编译、连接、编辑、运行(C)编译、编辑、连接、运行(D)编辑、编译、连接、运行 15 用C语言等高级语言编写的程序称为(A)可执行程序(B)编译程序(C)目标程序(D)源程序 16 一个C语言源程序经过“编译程序”翻译后生成一个二进制代码文件,它的扩展名为(A).dat(B).exe(C).c(D).obj 17 通过“连接程序”软件,把C语言目标程序与C语言提供的各种库函数连接起来生成一个文件,它的扩展名为(A).exe(B).dat(C).obj(D).c 18 下面叙述中正确的是 (A)在C语言程序中,要调用的函数必须在main()函数中定义(B)C语言程序总是从main()函数开始执行 (C)C语言程序总是从第一个函数开始执行(D)在C语言程序中,main()函数必须放在程序的开始位置 19 在一个C语言源程序中,main()函数的位置(A)必须在其他所有的函数之后(B)可以在任意位置(C)必须在其他所有的函数之前(D)必须在固定位置 20 一个C语言程序由 (A)若干个过程组成(B)若干个子程序组成(C)一个主程序和若干个子程序构成(D)一个主函数和若干个子函数构成 21一个函数的组成有 (A)函数的声明部分和执行部分(B)函数名、函数类型、函数参数名、函数参数类型(C)主函数和子函数(D)函数首部和函数体 22 下面叙述不正确的是 (A)在程序中任意合适的地方都可以加上注释以便阅读(B)C语言中的每条执行语句都需要用分号结束 (C)include命令所在行后面需要加分号(D)C语言具有高级语言的功能,也具有低级语言的一些功能 23 下面叙述正确的是 (A)在C程序中,main()函数的位置必须在其他所有的函数之前(B)C语言自身没有输入输出语句 (C)在C程序的编译过程中可以发现注释中的拼写错误(D)C程序的每一行只能写一条语句 24 在C语言中,用来表示“取地址”的符号是(A)$(B)#(C)@(D)& 25 在C语言中,用于结构化程序设计的三种基本结构是(A)顺序结构、选择结构、转移结构(B)顺序结构、条件结构、循环结构(C)顺序结构、选择结构、重复结构(D)顺序结构、选择结构、循环结构 26 一个算法应具有“确定性”等5个特性,则对另外4个特性描述错误的是(A)有效性(B)有穷性(C)有零个或多个输入(D)有零个或多个输出 27 程序设计一般可以简化为以下4个步骤,其中首先应该完成的是(A)调试并运行程序(B)编写程序(C)建立数学模型(D)设计数据结构和算法 28 以下不正确的C语言标识符是(A)ab.c(B)a_bc(C)abc(D)ABC 29 以下正确的C语言标识符是(A)a+b(B)test!(C)_123(D)%x 30 编辑程序的功能是 (A)命令计算机执行指定的操作(C)将C源程序编译成目标程序 (B)调试程序 (D)建立并修改程序 31 C语言程序的基本单位是(A)过程(B)函数(C)子程序(D)标识符 32 下列说法中错误的是 (A)主函数可以分为两部分:主函数首部和主函数体(B)主函数可以调用任何非主函数的其它函数 (C)任何非主函数可以调用其它任何非主函数(D)程序可以从任何非主函数开始执行 33 在下列数据中属于“字符串常量”的是(A)ABC(B)“ABC”(C)'abc'(D)'a' 34 在C语言中,字符'n'在内存占用的字节数是(A)1(B)2(C)3(D)4 35 字符串“ABC”在内存占用的字节数是(A)3(B)4(C)6(D)8 ·试题讲评 编译字符串“ABC”时,编译器会自动加上字符串结束标志' ',因此字符串“ABC”占用的内存为4个字节。36 在C语言中,合法的长整型常数是(A)0L(B)4321(C)0.07654321(D)2.3456e10 ·试题讲评 4321在C语言中默认为是int型数据,数据后加L或l表示该数的类型为长整型。37 char型常量在内存中存放的是(A)ASCII值(B)BCD码值 (C)内码值(D)十进制代码值 38 设m, n, a, b, c, d均为0,执行(m = a == b)||(n = c == d)后,m,n的值是(A)0,0(B)0,1(C)1,0(D)1,1 ·试题讲评 (1)在C语言中,“||”表示逻辑或,“&&”表示逻辑与。 (2)对于“m =(表达式a)||(表达式b)”,若“表达式a”为真或“表达式b”为真,则m为真。特别指出,若“表达式a”为真,则m的值肯定为真(无论“表达式b”的结果是否为真),在C语言中,为提高运算速度,此时就不再去执行“表达式b”。 (3)对于“m =(表达式a)&&(表达式b)”,若“表达式a”为假或“表达式b”为假,则m为假。特别指出,若“表达式a”为假,则m的值肯定为假(无论“表达式b”的结果如何),在C语言中,为提高运算速度,此时就不再去执行“表达式b”。 (4)在本题的表达式中,从左至右,先计算“(m = a == b)”,在此表达式中,先计算“a == b”,由于a,b的值均为0,因此“a == b”的结果是真(即1)。再将“a == b”的运算结果(即1)赋值给m,则m的值为1,因此“(m = a == b)”的结果为1,即真,按前述规则,不再对表达式“(n = c == d)”进行计算,因此结果为选项C。39 设a为5,执行下列语句后,b的值不为2的是(A)b = a / 2(B)b = 6c的值的类型是(A)float(B)int(C)char(D)double 43 在以下一组运算符中,优先级最高的运算符是(A)<=(B)=(C)%(D)&& 44 下列叙述中正确的是 (A)C程序中的所有字母都必须小写(B)C程序中的关键字必须小写,其他标识符不区分大小写 (C)C语言中的所有字母都不区分大小写(D)C语言中的所有关键字必须小写 45 下面不属于C语言关键字的是(A)integer(B)typedef(C)enum(D)union 46 以下叙述不正确的是 (A)分号是C语句的必要组成部分(B)C程序的注释可以写在语句的后面(C)函数是C程序的基本单位(D)主函数的名字是mian 47 下列能正确表示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 48 下列只有当整数x为奇数时,才是逻辑“真”的表达式是(A)x % 2 == 0(B)!(x % 2 == 0)(C)!(x % 2)(D)(x'0';printf(“%ld#”, number);ch= getchar();}(A)2#18#(B)2402#18#(C)22#1818#(D)# 103 在C语言中,数组名代表的是(A)数组中全部元素的个数(B)数组中第一个元素的值(C)数组中全部元素的值(D)数组的首地址 104 下面叙述中错误的是 (A)同一个数组中的每一个元素都属于同一个数据类型(B)对于实型数组,不可以直接用数组名对数组进行整体的输入或输出 (C)数组名代表数组所占存储区的首地址,其值不可以改变(D)在程序运行时,如果数组元素的下标超出了所定义的下标范围,系统将给出“下标越界”的出错信息 105 如果有语句:int x[3][2];,则下面能正确引用数组元素的选项是(A)x[0][2](B)x[1][2](C)x[2][1](D)x[2][2] 106 如果有语句:int x;char y[6];,则下面正确的输入语句是(A)scanf(“%d%s”, x, y);(B)scanf(“%d%s”, &x, y);(C)scanf(“%d%s”, x, &y);(D)scanf(“%d%s”, &x, &y);107 下面能正确定义一维数组的选项是(A)int num[];(B)int num[0...50];(C)int N = 50, num[N];(D)#define N 50 int num[N];·试题讲评 数组长度不能为变量。108 下面不能正确定义二维数组的选项是(A)int a[2][] = {{1, 2}, {3, 4}};(B)int a[][2] = {1, 2, 3, 4};(C)int a[2][2] = {{1}, {2}};(D)int a[2][2] = {{1}, 2, 3};109 如果有定义:int a[2][2] = {0, 1, 2, 3};,则a数组的各个元素分别为 (A)a[0][0]=0, a[0][1]=1, a[1][0]=2, a[1][1]=3(B)a[0][0]=0, a[0][1]=2, a[1][0]=1, a[1][1]=3(C)a[0][0]=3, a[0][1]=2, a[1][0]=1, a[1][1]=0(D)a[0][0]=3, a[0][1]=1, a[1][0]=2, a[1][1]=0 110 下面能正确定义一维数组的选项是 (A)int a1[] = “string”;(B)int a2[5] = {1, 2, 3, 4, 5, 6};(C)char a3 = {“string”};(D)char a4[] = {1, 2, 3, 4, 5, 6};111 如果有语句:char a[] = “string”, b[] = {'s', 't', 'r', 'i', 'n', 'g'};,则下面叙述中正确的是(A)数组a的长度大于数组b的长度(B)数组a的长度等于数组b的长度(C)数组a的长度小于数组b的长度(D)数组a和数组b二者等价 112 若定义str1、str2、str3为字符串,则语句strcat(strcpy(str1, str2), str3);的功能是 (A)把字符串str1连接到字符串str2中再把字符串str2复制到字符串str3之后(B)把字符串str1复制到字符串str2中再把字符串str2连接到字符串str3之后 (C)把字符串str2连接到字符串str1之后再把字符串str3复制到字符串str1中(D)把字符串str2复制到字符串str1中再把字符串str3连接到字符串str1之后 113 下面叙述中错误的是 (A)对于实型数组,不可以直接用数组名对数组进行整体的输入或输出(B)对于字符型数组,可以直接用数组名对数组进行整体输入或输出 (C)对于字符型数组,可以用来存放字符串(D)对于字符型数组,可以在赋值语句中运用运算符“=”进行整体赋值 114 若有以下语句,各选项中数值为4的表达式是 int a[12] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};char c = 'a', d, g;(A)a[g-c](B)a[4](C)a['d'c] 115 假设int型变量占4个字节的存储单元,对于如下定义,数组x在内存中所占字节数为 int x[10] = {0, 2, 4};(A)4(B)12(C)20(D)40 116 以下程序段的输出结果是 int j;int x[3][3] = {1, 2, 3, 4, 5, 6, 7, 8, 9}; for(j=0;j<3;j++){ printf(“%d ”, x[j][2-j]);}(A)3 5 7(B)3 6 9(C)1 5 9(D)1 4 7 117 以下程序段运行后的输出结果是 int n[3], t, j, k; for(t=0;t<3;t++){ n[t] = 0;} k = 2;for(t=0;t { n[j] = n[t] + 1; } } printf(“%dn”, n[1]);(A)0(B)1(C)2(D)3 118 以下程序段运行后的输出结果是 int p[7] = {11, 13, 14, 15, 16, 17, 18}, i=0, k=0; while(i<7 && p[i]%2){ k = k + p[i];i++;} printf(“%dn”, k);(A)58(B)56(C)45(D)24 119 以下程序段运行后的输出结果是 int m[][3] = {1, 4, 7, 2, 5, 8, 3, 6 ,9};int i, k=2; for(i=0;i<3;i++){ printf(“%d ”, m[k][i]);}(A)3 6 9(B)4 5 6(C)2 5 8(D)7 8 9 120 下列选项中正确的语句是 (A)char *s;s = “Beijing”;(B)char *s;s = {“Beijing”};(C)char s[8];s = “Beijing”;(D)char s[8];s = {“Beijing”};121 以下代码段执行后,b中的值是:2960 int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, *p = &a[3], b;b = p[5];(A)5(B)6(C)8(D)9 122 以下程序段运行后的输出结果是 char a[]=“abcdefg”, b[10]=“abcdefg”; printf(“%d %dn”, sizeof(a), sizeof(b));(A)7 7(B)8 8(C)8 10(D)10 10 123 下列程序运行后的输出结果是 #include int main(void){ int a[2]={3, 5}, b[2]={3, 5}; swap1(a); swap2(b[0], b[1]);printf(“%d %d %d %dn”, a[0], a[1], b[0], b[1]);return 0;} void swap1(int c[]){ int t; t = c[0]; c[0] = c[1]; c[1] = t;} void swap2(int c0, int c1){ int t; t = c0; c0 = c1; c1 = t;}(A)5 3 3 5(B)5 3 5 3(C)3 5 3 5(D)3 5 5 3 124 下列程序运行后的输出结果是 #include int main(void){ int aa[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, i; sort(aa, 10);for(i=0;i<10;i++)printf(“%d ”, aa[i]);printf(“n”);return 0;} void sort(int a[], int n){ int i, j, t; for(i=0;i a[i] = a[j]; a[j] = t;} }(A)9 2 7 4 5 6 3 8 1 10(B)1 2 3 4 5 6 7 8 9 10(C)10 9 8 7 6 5 4 3 2 1(D)1 10 3 8 5 6 7 4 9 2 125 下列程序运行后的输出结果是 #include int main(void){ int i, aa[5] = {1, 2, 3, 4, 5}; f(aa, 0, 4);for(i=0;i<5;i++)printf(“%d,”, aa[i]);return 0;} void f(int a[], int i, int j){ int t; if(i < j) { t = a[i]; a[i] = a[j]; a[j] = t;f(a, i+1, j-1); } }(A)5,4,3,2,1,(B)1,2,3,4,5,(C)5,4,3,2,1(D)5,2,3,4,1 126 以下程序段运行后的输出结果是 char ch[3][5] = {“AAAA”, “BBB”, “CC”}; printf(“"%s”n“, ch[1]);(A)”AAAA“(B)”BBB“(C)”BBBCC“(D)”CC“ 127 以下程序段运行后的输出结果是 int b[3][3] = {0, 1, 2, 0, 1, 2, 0, 1, 2}, i, j, t=1; for(i=0;i<3;i++){ for(j=i;j<=i;j++) { t += b[i][b[j][j]]; } } printf(”%dn“, t);(A)4(B)3(C)9(D)1 128 以下程序段运行后的输出结果是 int aa[4][4] = {{1, 2, 3, 4}, {5, 6, 7, 8}, {3, 9, 10, 2}, {4, 2, 9, 6}};int i, s=0; for(i=0;i<4;i++){ s += aa[i][1];} printf(”%dn“, s);(A)19(B)20(C)11(D)13 129 以下程序段的运行结果是: char s[10], s=”abcd“; printf(”%s“, s);(A)abcd(B)a(C)ab cd(D)编译不通过 130 对于定义char s[] = ”“NameAddress”n“;,字符串s所占字节数是(A)16(B)14(C)15(D)19 131 以下程序段的运行后结果是 char str[] = ”abn 12“"; printf(”%d“, strlen(str));(A)6(B)12(C)3(D)4 132 对于定义char c[8] = ”Tianjin“和int j,下面的输出函数调用中错误的是(A)printf(”%s“, c);(B)puts(c);(C)for(j=0;j<8;j++){ printf(”%c“, c[j]);}(D)for(j=0;j<8;j++){ puts(c[j]);} 133 对于定义char a[10] = {0};和int j;,下面输入函数调用中错误的是(A)scanf(”%s“, a);(B)gets(a);(C)for(j=0;j<9;j++){ scanf(”%c“, a[j]);}(D)for(j=0;j<9;j++){ scanf(”%c“, &a[j]);} 134 在C语言中,程序的基本单位是(A)函数(B)语句(C)程序段(D)文件 135 在C语言中,程序进行编译的单位是(A)语句(B)程序段(C)函数(D)文件 136 在C语言中,若定义函数时对函数类型未加显式说明,则函数的隐含类型为(A)void`(B)int(C)double(D)char 137 在C语言的函数调用中,如果普通变量作为函数的参数,则调用函数时(A)实参和形参共用一个存储单元(B)由用户确定是否共用一个存储单元(C)实参和形参分别占用一个独立的存储单元(D)由计算机系统确定是否共用一个存储单元 138 在C语言的函数调用中,如果普通变量作为函数的实参,则它与对应形参之间的传递方式是(A)由实参传递给形参,再由形参传递给实参(B)由用户指定传递方式(C)单向值传递(D)地址传递 139 在C语言的函数调用中,如果数组名作为函数的实参,则传递给形参的是(A)数组第一个元素的值(B)数组全部元素的值(C)数组全部元素的个数(D)数组的首地址 140 在C语言中规定,函数返回值的类型由(A)定义该函数时所指定的函数类型决定(B)return语句中的表达式类型决定(C)调用该函数的主调函数决定(D)调用该函数时系统临时决定 141 函数调用在程序中出现的位置一般有3种方式,下面叙述中错误的是 (A)函数调用可以出现在表达式中(B)函数调用可以作为独立的语句存在(C)函数调用可以作为一个函数的实参(D)函数调用可以作为一个函数的形参 142 在C语言中,下面关于函数正确的叙述是(A)函数可以嵌套定义,也可以嵌套调用(B)函数可以嵌套定义,但不可以嵌套调用(C)函数不可以嵌套定义,但可以嵌套调用(D)函数不可以嵌套定义,也不可以嵌套调用 143 在C语言中,函数调用语句function((a, b, c),(d, e));中参数的个数是(A)1(B)2(C)4(D)5 ·试题讲评 (a, b, c)和(d, e)分别都是逗号表达式 144 在函数调用中,若funA调用了函数funB,函数funB又调用了函数funA,则(A)C语言中不允许这样的递归调用(B)称为函数的直接递归调用(C)称为函数的间接递归调用(D)称为函数的循环调用 145 下面叙述中不正确的是 (A)函数中的形参是函数自己的局部变量(B)在不同的函数中可以使用相同名字的变量,它们在内存中占用不同的单元 (C)在一个函数中定义的变量只在本函数范围内有效(D)在一个函数内的复合语句中定义的变量只在本函数范围内有效 ·试题讲评 在一个函数内的复合语句中定义的变量只在本复合语句范围内有效 146 在一个源程序文件中定义的全局变量的作用域为 (A)从定义该变量的位置开始至本文件结束(B)本程序的全部范围(C)本文件的全部范围(D)本函数的全部范围 147 下面叙述中不正确的是(A)函数可以没有形参,可是函数名后的一对括号却不能省略(B)在C语言中,不能在一个函数的内部再定义函数 (C)在没有声明函数返回值类型时,函数返回值的类型默认为int(D)函数的类型可以是整型、实型、字符型,但不可以是指针型 148 下面程序的输出结果是 #include int main(void){ int x=5, y=3, s; s = function(x, y); printf(”%dn“, s);return 0;} int function(int a, int b){ return a*a-b*b;}(A)2(B)8(C)16(D)32 149 下面程序的输出结果是 #include int main(void){ printf(”%ldn“, func(5));return 0;} long func(int n){ if(n > 2){ return func(n-1)+ func(n-2);} else { return 1;} }(A)5(B)6(C)7(D)8 150 下面程序的输出结果是 #include int main(void){ int a=27, b=15, c; c = zdgys(a, b); printf(”%dn“, c);return 0;} int zdgys(int x, int y){ int w; while(y) { w = x % y; x = y; y = w; } return x;}(A)2(B)3(C)4(D)5 151 下面程序的输出结果是 #include int main(void){ double x;int a=3, b=4, c=5; x = func(a, b, c); printf(”%fn“, x);return 0;} double func(int x, int y, int z){ double t; t = x % y * z;return t;}(A)3(B)3.000000(C)15(D)15.000000 152 下面程序的输出结果是 #include int main(void){ int i, s; for(i = 0;i < 4;i++)s = func();printf(”%dn“, s);return 0;} int func(void){ static int x = 6;x++;return x;}(A)7(B)8(C)9(D)10 153 下面程序中应该补充(填写在横线位置)的代码是 #include //函数功能:求两数中的较大数 int main(void){ int a, b, c; scanf(”%d, %d“, &a, &b); c = __________________;printf(”max is %d“, c);return 0;} int max(int x, int y){ int z; if(x > y)z = x;else z = y;return z;}(A)max(a, b)(B)max(&a, &b);(C)max(x, y)(D)int max(int a, int b)154 下面程序中应该补充(填写在横线位置)的代码中,有错的是 #include int main(void){ int a, b, c; scanf(”%d, %d“, &a, &b);c = min(a, b);printf(”min is %d“, c);return 0;} //函数功能:求两数中的较大数 int min(int x, int y){ int z; z = x int x1=30, x2=40;void sub(int x, int y); int main(void){ int x3=10, x4=20; sub(x3, x4); sub(x2, x1);printf(”%d,%d,%d,%dn“, x3, x4, x1, x2);return 0;} void sub(int x, int y){ x1 = x; x = y; y = x1;}(A)10,20,40,40(B)20,10,40,30(C)20,10,40,40(D)10,20,30,40 156 下面程序的输出结果是 #include int main(void){ increment(); increment(); increment();return 0;} void increment(void){ int x = 0; x += 1;printf(”%d “, x);}(A)1 1 1(B)1 2 3(C)1(D)3 3 3 157 在C语言中,下面关于文件的存取方式正确的叙述是(A)只能从文件的开头存取(B)可以顺序存取,但不可以随机存取 (C)不可以顺序存取,但可以随机存取(D)可以顺序存取,也可以随机存取 158 下列关于C语言数据文件的叙述中正确的是 (A)文件由ASCII码字符序列组成,C语言只能读写文本文件(B)文件由二进制数据序列组成,C语言只能读写二进制文件 (C)文件由记录序列组成,可按数据的存放形式分为二进制文件和文本文件(D)文件由数据流形式组成,可按数据的存放形式分为二进制文件和文本文件 159 在C语言中,读写操作时需要进行转换的文件是(A)二进制文件(B)文本文件 (C)二进制文件和文本文件都需要转换(D)二进制文件和文本文件都不需要转换 160 在C语言中,下面关于文件操作正确的叙述是 (A)对文件操作时,必须先检查文件是否存在,然后再打开文件(B)对文件操作时需要先打开文件 (C)对文件操作时需要先关闭文件(D)对文件操作时打开和关闭文件的顺序没有要求 161 为了进行写操作而打开二进制文件wr.dat的正确写法是(A)fp = fopen(”wr.dat“, ”r“);(B)fp = fopen(”wr.dat“, ”w“);(C)fp = fopen(”wr.dat“, ”rb“);(D)fp = fopen(”wr.dat“, ”wb“);162 下面的语句中,将fp定义为文件型指针的是(A)file fp;(B)file *fp;(C)FILE fp;(D)FILE *fp;163 以下要作为fopen函数中第一个参数的正确格式是(A)”c:usertext.txt“(B)”c:usertext.txt“(C)”usertext.txt“(D)”c:user ext.txt“ ·试题讲评 字符常量反斜线()的书写形式是''(转义符方式)164 若执行fopen函数时发生错误,则函数的返回值是(A)0(NULL)(B)1(C)-1(EOF)(D)地址值 165 当顺利执行了文件关闭操作时,fclose函数的返回值是(A)-1(B)1(C)TRUE(D)0 166 如果不能实现文件“打开”的任务,fopen函数将会带回一个出错信息。以下对出错原因描述错误的是 (A)用”r“方式打开一个并不存在的文件(B)磁盘出故障 (C)磁盘已满无法建立新文件(D)用”w“方式打开文件时,没有先建立文件 167 在C语言中,标准库函数fread(buf, size, count, fp)中参数buf的含义是 (A)一个指针,指向要读入数据的存放地址(B)一个文件指针,指向要读的文件(C)一个整型变量,代表要读入的数据总数(D)一个存储区,存放要读的数据项 ·试题讲评 size:要读写的字节数;count:要读写多少个数据项(每个数据项的长度为size)。168 在C语言中,标准库函数fwrite(buf, size, count, fp)的功能是 (A)从buf所指向的文件中读取长度为size的count个数据项存入fp起始的内存(B)从fp所指向的文件中读取长度为size的count个数据项存入buf起始的内存 (C)把buf起始的内存中长度为size的count个数据项输出到fp所指向的文件中(D)把fp起始的内存中长度为size的count个数据项输出到buf所指向的文件中 169 下面程序的功能是 #include FILE *fp1, *fp2; fp1 = fopen(”c:xxxfile.c“, ”r“);if(NULL == fp1) { printf(”cannot open file in disk c!n“); exit(1); } fp2 = fopen(”d:file.c“, ”w“);if(NULL == fp2) { printf(”cannot open file in disk d!n“); fclose(fp1);exit(2); } while(!feof(fp1))fputc(fgetc(fp1), fp2);printf(”copy success!n“); fclose(fp1); fclose(fp2);return 0;}(A)将c盘xxx子目录下file.c文件复制到d盘xxx子目录下file.c文件中(B)将d盘xxx子目录下file.c文件复制到c盘xxx子目录下file.c文件中 (C)将c盘根目录下file.c文件复制到d盘xxx子目录下file.c文件中(D)将c盘xxx子目录下file.c文件复制到d盘根目录下file.c文件中 170 当已存在一个abc.txt文件时,执行函数fopen(”abc.txt“, ”r+“)的功能是 (A)打开abc.txt文件,清除原有的内容(B)打开abc.txt文件,只能写入新的内容 (C)打开abc.txt文件,只能读取原有内容(D)打开abc.txt文件,可以读取和写入新的内容 171 fopen(filename, mode)函数的mode取值”r“和”w“时,它们之间的差别是 (A)”r“可向文件输入,”w“不可向文件输入(B)”r“不可向文件输入,”w“可向文件输入(C)”r“不可由文件输出,”w“可由文件输出(D)文件不存在时,”r“建立新文件,”w“出错 172 若用fopen函数打开一个新的二进制文件,该文件可以读也可以写,则文件打开模式是(A)”ab+“(B)”wb+“(C)”rb+“(D)”ab“ ·试题讲评 ”rb+“:为了读和写,打开一个二进制文件,若指定文件不存在则出错;”wb+“:为了读和写,打开一个新的二进制文件,若指定文件不存在,则建立新文件。173 fread(buf, 64, 2, fp)的功能是 (A)从fp文件流中读出整数64,并存放在buf中(B)从fp文件流中读出整数64和2,并存放在buf中 (C)从fp文件流中读出64字节的字符,并存放在buf中(D)从fp文件流中读出2个64字节的字符,并存放在buf中 174 以下程序的功能是 #include FILE *fp;char str[] = ”HELLO“; fp = fopen(”CON“, ”w“);if(NULL == fp) { printf(”file open error!n“); exit(1); } fputs(str, fp);fclose(fp);return 0;}(A)在屏幕上显示HELLO(B)在打印机上打印出HELLO(C)把HELLO存入CON文件中(D)都不对 ..作为输出设备时,CON是标准输出设备显示器的文件名,是dos的保留字。175 C语言中文件的格式化输入输出函数对是(A)fscanf/fprintf(B)fread/fwrite(C)fgets/fputs(D)fgetc/fputc 176 C语言中文件的数据块输入输出函数对是(A)fread/fwrite(B)fscanf/fprintf(C)fgetc/fputc(D)fgets/fputs 177 feof(fp)函数用来判断文件是否结束,如果未遇到文件结束,函数值为(A)0(B)1(C)非零(D)false 178 fgetc函数的作用是从指定文件读入一个字符,关于对应文件的打开方式,不正确的是(A)只读(B)只写(C)”r“(D)读写 179 若调用fputc函数输出字符成功,则其返回值是(A)0(B)1(C)EOF(D)输出的字符 180 fseek函数的功能是 (A)改变文件位置的指针位置(即下一次读写操作从文件的什么位置开始)(B)使文件位置指针重新置于文件开头(C)返回文件位置指针的当前值(D)关闭文件 181 以下程序的功能是 #include FILE *fp;char ch; fp = fopen(”filename.txt“, ”w“);if(NULL == fp){ printf(”file open error!“); exit(1);} while((ch=getchar())!= '@') { fputc(ch ,fp); putchar(ch); } fclose(fp); return 0;}(A)把从键盘输入的字符依次输出到名为filename.txt的磁盘文件中(用@作为输入结束标志),同时在屏幕上显示这些字符。(B)把从键盘输入的字符依次输出到名为filename.txt的磁盘文件中(用@作为输入结束标志)。 (C)把从键盘输入的字符输出到屏幕(用@作为输入结束标志)。(D)从名为filename.txt的磁盘文件中读入字符(用@作为输入结束标志),并在屏幕上显示这些字符。182 下面程序的功能是将数组str的4个元素写到名为filename.dat的二进制文件中。程序中需要补充的语句是 #include FILE *fp;char str[] = ”abcd“; fp = fopen(”filename.dat“, ”wb“);if(NULL == fp){ printf(”file open error!“); exit(1);} ____________________________ fclose(fp); return 0;}(A)fwrite(str, sizeof(char), 4, fp);(B)fwrite(fp, sizeof(char), 4, str);(C)fread(str, sizeof(char), 4, fp);(D)fwrite(str[0], sizeof(char), 1, fp);183 下面的程序执行后,文件file.txt中的内容是 #include fun(”file.txt“, ”Fine, thank you!“);return 0;} void fun(char *fname, char *st){ FILE *fp;int len, i; fp = fopen(fname, ”w“);if(NULL == fp){ printf(”file open error!“); exit(1);} len = strlen(st);for(i=0;i 变量的指针即变量的地址,是指变量所占内存单元的首地址。185 如果已经定义int x;,则对指针变量pointer进行说明和初始化正确的是(A)int pointer = x;(B)int pointer = &x;(C)int *pointer = &x;(D)int *pointer = *x;186 如果已经定义int x, *pointer;,则下面赋值语句正确的是(A)pointer = &x;(B)pointer = x;(C)*pointer = &x;(D)*pointer = *x;187 即使两个指针变量的类型相同,它们也不能(A)相减(B)相加(C)比较(D)指向同一地址 188 在C语言中,对变量的访问方式是 (A)能直接访问,能间接访问(B)能直接访问,不能间接访问(C)不能直接访问,能间接访问(D)不能直接访问,不能间接访问 189 在C程序说明语句int(*pointer)[5];中,pointer表示的是一个 (A)指向整型变量的指针(B)指针数组的名字,包含5个指向整型数据的指针(C)指向包含5个整型元素的一维数组的指针(D)指向函数的指针 190 在C程序说明语句int *pointer[5];中,pointer表示的是一个 (A)指向整型变量的指针(B)指针数组的名字,包含5个指向整型数据的指针(C)指向包含5个整型元素的一维数组的指针(D)指向函数的指针 191 在C程序说明语句int(*pointer)();中,pointer表示的是一个(A)指向整型变量的指针(B)指向数组的指针 (C)返回值为指针的函数名字(D)指向函数的指针,函数返回值为一个整数 192 在C程序说明语句int *pointer();中,pointer表示的是一个(A)指向整型变量的指针(B)指向数组的指针 (C)返回值为指针(指向的对象为int)的函数名字(D)指向函数的指针,函数返回值为一个整数 193 设有定义int a=3, b, *p=&a;,则下列语句表达有错的是(A)b = *a;(B)b = *&a;(C)b = *p;(D)b = a;·试题讲评 a不是指针变量,不能使用指针运算符*。194 若有说明int i, j=7, *p=&i;,则与i = j;等价的语句是(A)i = p;(B)*p = j;(C)p = &j;(D)*p = &j;195 若有说明int a[10], *p=a;,则对数组元素引用不正确的是(A)*(a + 2)(B)p[2](C)*(p + 2)(D)p + 2 196 若有如下说明语句,则下面叙述中不正确的是 struct student { long num;char name[20];char sex;int age;} stu;(A)struct是结构体类型关键字(B)struct student是结构体类型(C)num,name,sex,age都是结构体成员名(D)stu是结构体类型名 197 若有如下说明语句,则定义了 union student { long num;char name[20];char sex;int age;};(A)结构体类型(B)结构体变量(C)共用体类型(D)共用体变量 198 当定义一个结构体变量时,系统分配给它的内存空间字节数是 (A)各成员所需内存字节数的总和(B)结构体中第一个成员所需内存字节数(C)结构体中最后一个成员所需内存字节数(D)成员中占内存字节数最大的 199 有以下三种形式可供选择,则为了表示结构体变量中的成员,各选项中叙述正确的是 1、结构体变量.成员名 2、(*结构体指针变量).成员名 3、结构体指针变量->成员名(A)只能用1或2表示(B)只能用1或3表示(C)只能用2或3表示(D)三种形式均可 200 以下程序在VC6.0下运行后的输出结果为 #include struct dt { char a[4];int b;double c;} data; int main(void){ printf(”%dn“, sizeof(struct dt)); return 0;}(A)4(B)8(C)16(D)3 201 若有以下定义,则对变量student1中“生日”的正确赋值方式是 struct student { int num;char name[20], sex;struct { int year, month, day; } birthday;}; struct student student1;(A)student1.birthday.year = 2003;student1.birthday.month = 5;student1.birthday.day = 1;(B)year = 2003;month = 5;day = 1;(C)birthday.year = 2003;birthday.month = 5;birthday.day = 1;(D)student1.year = 2003;student1.month = 5;student1.day = 1;202 若有以下定义,则下面各输出语句中能输出字母J的是 struct student { int num;char name[20];}; struct student school[10000] = {{1001, ”Mike“}, {1002, ”James“}, {1003, ”Tom“}};(A)printf(”%c“, school[0].name[0]);(B)printf(”%c“, school[1].name[0]);(C)printf(”%c“, school[2].name[0]);(D)printf(”%c“, school[1].name);203 若有以下定义,则下面各输入语句中不正确的是 struct student { int num;char name[20];char sex;float score;} student1,*p = &student1;(A)scanf(”%d“, &student1.num);(B)scanf(”%s“, &student1.name);(C)scanf(”%c“, &(*p).sex);(D)scanf(”%f“, &(p->score));204 以下程序的输出结果是: #include struct student { int num; float score;}; void fun(struct student tmp);int main(void){ struct student stu[2] = {{1001,650}, {1002,550}};fun(stu[0]);printf(”%d,%4.0fn“, stu[0].num, stu[0].score);return 0;} void fun(struct student tmp){ struct student stu[2] = {{1003, 450}, {1004, 250}}; tmp.num = stu[1].num;}(A)1001, 650(B)1002, 550(C)1004, 650(D)1004, 250 205 以下程序的输出结果是: #include struct student { int num; float score; char name[20];}; void fun(struct student *p);int main(void){ struct student stu[2] = {{1003, 450, ”Liu“}, {1004, 250, ”Tao“}};fun(stu);printf(”%d,%3.0f,%sn“, stu[0].num, stu[0].score, stu[0].name);return 0;} void fun(struct student *p){ struct student stu[2] = {{1001,650, ”He“}, {1002,550, ”Li“}},*q=stu; ++q; *p = *q;}(A)1002,550,Li(B)1004,250,Tao(C)1001,650,He(D)1003,450,Liu 206 以下程序的输出结果是: #include struct student { long num; char name[10]; int age;}; void func(struct student *p);int main(void){ struct student stu[3] = {{1101, ”Liu“, 21}, {11102, ”Tao“, 22}, {1103, ”Xu“, 23}};func(stu + 1); return 0;} void func(struct student *p){ printf(”%s“, p->name);}(A)Tao(B)Liu(C)Xu(D)11102 207 以下程序的输出结果是: #include struct student { int num;int *q;}; int main(void){ int age[3] = {16, 17, 18};struct student stu[3] = {{1001, &age[0]}, {1003, &age[1]}, {1005, &age[2]}};struct student *p = stu; printf(”%d,%d",(p+1)->num, *((p+1)->q));return 0;}(A)1003,17(B)1001,16(C)1005,18(D)1003,16 第一章 基础知识 一.填空 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.18.C语言是结构化、________的程序设计语言。 由于计算机硬件不能直接识别高级语言中的语句,因此,必须经过“_______程序”,将用高级语言编写的程序翻译成计算机硬件所能识别的机器语言程序方可执行。 19.用高级语言编写的程序需翻译成计算机硬件所能识别的机器语言程序方可执行。所以 说,用高级语言进行程序设计,其编程效率高,方便易用,但_______没有低级语言高。 20.第一个系统体现结构化程序设计思想的教学工具语言是_______语言。 解答: 1.main()2.编译 3.开发 4.指令序列 5.高级语言 6.函数 7.自定义函数 8.函数首部 9.翻译 10.应用软件 11.二进制代码 12.助记符 13.# 14.main函数 15.声明部分 16.;(或分号) 17.模块化 18.翻译 19.执行速度 20.PASCAL 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第二章 常量、变量和表达式 一.填空 1.以16位计算机为例,若定义long int a;则变量a占______个字节的内存空间。 2.以16位计算机为例,若定义double a;则变量a占______ 个字节的内存空间。 3.以16位计算机为例,若定义long double;则变量a占 ______ 个字节的内存空间。 4.在______ 位机,int型占4个字节。 5.C语言的数据类型有:基本数据类型、构造数据类型、枚举类型、______ 、空类型。 6.在C语言中,基本数据类型有:______。 7.整型常量046转换为十进制数等于______。 8.整型常量054转换为十进制数等于______。 9.整型常量0x125转换为十进制数等于 ______。 10.整型常量0x7C转换为十进制数等于 ______。 11.整型常量39转换为八进制等于 ______。 12.实数473.468写成规范化指数形式,则应为 ______。 13.实数0.0453写成规范化指数形式,则应为 ______。 14.将0x123转换为二进制等于 ______。 15.字符’A’表示成十六进制等于 ______。 16.在C语言中,称代表常量的标识符为 ______。 17.C语言中是用编译预处理命令______ 来定义符号常量 18.在C语言中,以反斜杠符()开头,后跟字符的字符序列,称之为 ______ ,主 要用来表示控制及不可见的字符或者一些图形符号 19.语句printf(“106”)执行的结果输出是 ______。 20.语句printf(“b”)执行的结果输出是______。 21.语句printf(“b”)执行的结果输出是 ______。 22.语句printf(“102”)执行的结果输出是 ______。 23.若有char ch1;ch1='a'+4;则语句printf(“%c”,x)的输出结果为 ______。 24.字符串常量“Hello, everyone!”占据的内存空间为______ 个字节 25.字符串常量“Hello,Bob!”占据的内存空间为 ______ 个字节 26.十进制整型常量由0~9个数据组成,但不能以______ 开始,没有小数部分 27.十六进制常量由0~9和______ 组成 28.unsigned long类型常量通常以______ 为后缀 29.实型常量通常有小数形式和______ 两种表达方式 30.C语言中是用编译预处理命令______ 来包含其他源文件 31.为了表示字符串的结束,系统自动在字符串的最后加一个______ ,但不被输出 32.C语言中,其值可被改变的量称为变量,它具有三个基本要素:变量名、______ 和变量值 33.C语言规定,变量的标识符只能由字母、数字和下划线组成,且不能以______ 开 头。34.在16位机中,sizeof(“hellon”)等于 ______。 35.在16位机中,printf(““hello””)等于 ______。 36.字符变量在内存中占用______ 个字节的存储空间。 37.若有定义int x=27, y=6;则表达式 x/y的值为 ______。 38.若有定义int x=47, y=8;则表达式 x%y的值为 ______。 39.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch1=%c, ch2=% c”,ch1,ch2);则输出为 ______。 40.若有定义char ch1='A',ch2,ch3;执行ch2=ch1++;ch3=++ch1;printf(“ch2=%c, ch3=% c”,ch2,ch3);则输出为 ______。 41.若有定义int i=5, j, k;执行j=i--;k=--i;printf(“i=%d, j=%dn”, i, j);则输 出为 ______。 42.表达式(int)(13.7+25.6)/4%5 的值是 ______。 43.表达式 3.6-5/2+1.2+5%3 的值是______。 44.表达式54%10/2+4.0*(8/5)的值是 ______。 45.若定义int x;double b=5.45;执行x=b后,则x的值为______。 46.若定义int y;char c='A';执行y=c后,则y的值为 ______。 47.若定义 int a=8;float b=2.5;则a/(int)(b)的值为 ______。 48.若a=5,则执行a*=7-3语句后,a的值是 ______。 49.若int a=1,b=0,c=4,d=2;则表达式(a>b ? a:b)&&(c-d)的值为______。 50.已知a = 0,表达式 a = 1?b = 1:b = 0;执行后,b的值是 ______。 51.若定义int m=7,n=12;则表达式n%=m-m%5的值是 ______。 52.若定义int a=8;float b=4.5;执行a*=a/=a-b后,a的值为 ______。 53.int a=2;!a++的值为 ______。 54.int a=0;!a++&++a的值为 ______。 55.int a=7;float b=4.5;则printf(“%d”,a*=a/=a-b)的值为 ______。 56.int k=7;float a=2.5,b=4.7;则表达式a+k%3*(int)(a+b)%2/4的值为 ______。 57.#define Max(a,b)(((a)-(b))&0x80000000)?(a):(b),int a=2,b=6;printf(“%dn”,M ax(a,b))的值为 ______。 58.在32位机中,int a=4,b=7;printf(“%0x”,a-b)的值为:______。 59.int x,y,z;x=y=2;z=3;y=x++-1;printf(“%d,%d”,x,y)的值为: ______。 60.int i=2,j;printf(“%d”,j=i<1)的值为:______ 解答: 1.0 2.4 3.10 4.32 5.指针类型 6.int、float、double、char 7.38 8.44 9.293 10.124 11.047 12.4.734680e+002 13.4.530000e-002 14.100100011 15.x41/41H 16.符号常量 17.#define 18.转义字符常量 19.F 20.b 21.b 22.B 23.e 24.16 25.11 26.0 27.A~F 28.U 29.指数形式 30.#include 31.“ ” 32.变量类型 33.数字 34.7 35.“hello” 36.1 37.4 38.7 39.ch1=C, ch2=A 40.ch2=A, ch3=C 41.i=3, j=5 42.4 43.4.800000 44.7.000000 45.5 46.65 47.4 48.20 49.1 50.1 51.2 52.4 53.0 54.0 55.4 56.2.500000 57.2 58.fffffffd 59.3,1 60.0 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第三章 顺序结构 一.填空 1.C语言的语句可分为5类,它们是:控制语句、____________、函数语句、符合语句和空 语句。 2.常用于字符输入的函数为:________________。 3.常用于字符输出的函数为:________________。 4.常用于字符串输入的函数为:________________。 5.常用于字符串输出的函数为:________________。 6.格式输入函数的一般形式为:________________。 7.格式输出函数的一般形式为:________________。 8.printf和scanf是标准的库函数,它们的函数原型在头文件________________中。 9.有char ch,则从键盘给ch赋值的格式输入语句为:________________。 10.如果要输出字符串常量“HelloWord!”,则格式输出语句为:________________。 11.设有定义:long x=-123456L;,请写出能够正确输出变量x值的语句________________。 12.若有int a,b;,想通过scanf(“%d%d”,&a,&b);输入语句给a赋于1,给b赋于2,则从键盘 输入数据的形式是________________。 13.若有int i,j;scanf(“i=%d,j=%d”;&i,&j);,要求给i赋10,给j赋20,则应该从键盘 输入_______。 14.已知i、j、k为int型变量,若从键盘输入:1,2,3<回车>,使i的值为 1、j的值为 2、k 的值为3,请写出正确的输入语句________________。 15.有int m,n,p;scanf(“m=%dn=%dp=%d”,&m,&n,&p);printf(“%d%d%dn”,m,n,p);若想 从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是_____ ___________。 16.有 int a;float b, c;scanf(“%2d%3f%4f”,&a,&b,&c);printf(“na=%d, b=%f, c= %fn”, a, b, c);,若运行时从键盘上输入9876543210<回车>,则程序的输出结果是___________________ __。 17.有 int m=0256,n=256;则 printf(“%o %on”,m,n);的输出结果是__________________ ___。 18.有int x=102,y=012;,则printf(“%2d,%2dn”,x,y);的输出结果是______________ _______。 19.有定义和语句:int a;char c=10;float f=100.0;double x;a=f/=c*=(x=6.5);,则 printf(“%d %d %3.1f %3.1fn”,a,c,f,x);的输出结果是_____________________。 20.若有定义和语句:int m=0xabc,n=0xabc;m-=n;则printf(“%on”,m);的输出结果是___ __________。 21.若有int m=32,n=032;,则printf(“%d,%xn”,m,n);执行后输出结果是______________ _____。 22.若有 int a=1234;,则 printf(“%2dn”,a);的输出结果是_____________________。 23.若变量已正确说明为float类型,要通过语句scanf(“%f %f %f ”,&a,&b,&c);给a赋于1 0.0,b赋予22.0,c赋予33.0,不正确的输入形式是_____________________。 A)10 <回车>22<回车>33<回车> B)10.0,22.0,33.0<回车> C)10.0<回车> 22.0 33.0<回车> D)10 22<回车> 33<回车> 24.若有 int x=3,y=1;则printf(“%d %dn”,x++,y+2);的输出结果是__________________ ___。 25.若有定义和语句:double d;float f;long l;int i;i=f=l=d=20/3;则 printf(“% d %ld %f %f n”, i,l,f,d);的输出结果是(小数点后只写一位)_____________________。 26.以下说法中正确的是 _____________________。 A)#define和printf都是C语句 B)#define是C语句,而printf不是 C)printf是C语句,但#define不是 D)#define和printf都不是C语句 27.若有 int k=17;,则 printf(“%d,%o,%x n”,k,k,k);的输出结果是_________________ ____。 28.以下叙述中正确的是_____________________。 A)输入项可以是一个实型常量,如:scanf(“%f”,3.5);B)只有格式控制,没有输入项,也能正确输入数据到内存,例如:scakf(“a=%d,b=%d”);C)当输入数据时,必须指明变量地址,例如:scanf(“%f”,&f); 29.若有定义和语句:int u=010,v=0x10,w=10;则printf(“%d,%d,%dn”,u,v,w);输出结果是 _____________________。 30.若有int a=1,b=4,c=2;float x=10.5, y=4.0, z;z=(a+b)/c+sqrt((double)y)*1.2/c+ x;,则printf(“%fn”,z);的输出结果是_____________________。 31.若有int a=2,c=5;,则printf(“a=%%d,b=%%dn”,a,c);的输出结果是________________ _____。 32.有char c;int n=100;float f=10;double x;x=f*=n/=(c=50);则printf(“%d %f n”,n,x);的输出结果是_____________________。 33.有int i=0,j=0,k=0;scanf(“%d%*d%d”,&i,&j,&k);printf(“%d%d%dn”,i,j,k);若 从键盘输入:10 20 30<回车>。输出结果是_____________________。 34.若有int a,b,c;a=25;b=025;c=0x25;,则printf(“%d %d %dn”,a,b,c);的输出结果 是___________。 35.有以下语句段 int n1=10,n2=20; printf(“________________”,n1,n2); 要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。 n1=10 n2=20 36.若有语句int i=-19,j=i%4;则printf(“%dn”,j);的输出结果是_____________________。 37.有int a=0;a+=(a=8);则printf(“%dn”,a);的输出结果是_____________________。 38.有int a=1, b=2;a=a+b;b=a-b;a=a-b;则printf(“%d,%dn”, a, b);的输出结果是 ______________。 39.有unsigned short a=65536;int b;,则printf(“%dn”,b=a);的输出结果是________ ______。 40.语句printf(“10289n”);的数据结果为:__________________。 解答: 1.表达式语句 2.getchar() 3.putchar() 4.gets() 5.puts() 6.scanf(“格式控制字符串”,地址表列); 7.printf(“格式控制字符串”,输出表列); 8.stdio.h 9.scanf(“%c”,&ch); 10.printf(“%s”,HelloWord!);或者:printf(“HelloWord!”); 11.printf(“x=%1dn”,x); 12.1 2 或者 1 13.i=10,j=20 14.scanf(“%d,%d,%d”,&i,&j,&k); 15.m=123n=456p=789 16.a=98, b=765.000000, c=4321.000000 17.256 400 18.102,10 19.1 65 1.5 6.5 20.0 21.32,1a 22.1234 23.B 24.3 3 25.6 6 6.0 6.0 26.D 27.17,21,11 28.C 29.8,16,10 30.13.700000 31.a=%d,b=%d 32.2 20.000000 33.10300 34.25 21 37 35.n1=%dnn2=%d 36.-3 37.16 38.2,1 39.0 40.B89 二.阅读程序写结果 解答: 三.补充程序 解答: 四.改错题 解答: 五.编程一 解答: 六.编程二 解答: 第四章 选择结构 一.填空 1.在if, while, case, do, else 等关键字中,用于选择结构的有().2.已知 a = 1;那么 if(a = 2)printf(“%d”, 2);else printf(“%d”, 1);的输出结 果是().3.已知 char a = 'A';那么 if(a > 65)printf(“%s”, “bigger”);else printf(“%s” , “smaller”);的输出结果是().4.表示“x≥ y≥ z”的C语言表达式是()。 5.在C语言中,用于实现选择结构的语句有()语句和()语句。 6.判断两个浮点型变量x和y是否相等一般用:if(<1e-6)„。 7.设有程序段: t=6;a=7;b=8;if(a=b)t=a;,这段程序执行后,t的结果是()。 8.设a=1,b=2,c=3,d=4,则表达式:a>b?a:c>d?a:d的结果为()。 9.表达式98 && 8 && 31 &&(9812; printf(“%dn”, y); return 0;} 输入:12<回车> 17.#include float x, y; char op; double r; scanf(“%c%f%f”,&op,&x,&y); switch(op) { case '+': r = x + y;break; case '-': r = x-y;break; case '*': r = x * y;break; case '/': r = x / y;break; } printf(“%.1f”, r); return 0;} 输入:3.5<回车> 18.#include “stdio.h” void main(){ int a=7; if(a>9 || a<10) a=a/3; a=a%3; printf(“a=%d”, a);} else 19.#include int a=20; switch(a%3) { case 0: printf(“0”); case 1: printf(“1”); case 2: printf(“2”); default: printf(“3”); } printf(“4”);} 20.#include int a=2,b=5,c=8,t; if(a < b){ t = a;a = b;b = t;} if(b < c){ t = b;b = c;c = t;} if(a < b){ t = a;a = b;b = t;} printf(“%d,%dn”, a++,--c);} 解答: 1.运行结果: 9,7 2.a=1,b=3 3.ch1= F 4.3,5 5.m=21 6.ch3=D 7.y=31.600000 8.Good!Best!9.A B C 10.*** 11.q=35 12.**0****2** 13.*& 14.d=20 15.**1** 16.0 17.0.6 18.a=2 19.234 20.8,1 三.补充程序 1.根据输入字符的ASCII码来判别字符的类别。由ASCII码表可知ASCII值小于32的为控制字 符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之 间为小写字母,其余则为其它字符。 #include“stdio.h” #include“string.h” int main(){ char c;printf(“input a character: ”); _____________________________________________ if(c<32)printf(“This is a control charactern”); _____________________________________________ printf(“This is a digitn”);else if _______________________________________ printf(“This is a capital lettern”);else if(c>='a'&&c<='z') printf(“This is a small lettern”); ____________________________________________ printf(“This is an other charactern”); return 0;} 2.计算器程序。用户输入运算数和四则运算符,输出计算结果.#include“stdio.h” int main(){ float a,b;____________________________________________;printf(“input expression: a+(-,*,/)b n”);scanf(“%f%c%f”,&a,&c,&b);switch(c){ case '+': printf(“%fn”,a+b);____________________________________________ case____________________________________________ printf(“%fn”,a-b);break;case '*': printf(“%fn”,a*b);break;case '/': ____________________________________________;break;default: printf(“input errorn”);} return 0;} 3.输入三个整数,输出最大数和最小数(注:max总是记录最大数,而min总是记录最小数).#include“stdio.h” int main(){ int a,b,c,max,min;printf(“input three numbers: ”);scanf(“%d%d%d”,&a,&b,&c);if(a>b){ _______________________________________ _______________________________________ } else {max=b;min=a;} ____________________________________________ max=c;if(min>c)_____________________________________ printf(“max=%dnmin=%d”,max,min);return 0;} 4.#include“stdio.h” int main(){ int a;printf(“input integer number: ”);scanf(“%d”,&a);_____________________________________________ { case 1:printf(“Mondayn”);break;_____________________________________________ printf(“Tuesdayn”);break;case 3:printf(“Wednesdayn”);break;case 4:printf(“Thursdayn”);_____________________________________________ case 5:printf(“Fridayn”);break;case 6:printf(“Saturdayn”);break;case 7:printf(“Sundayn”);break;_____________________________________________ printf(“errorn”);} return 0;} 5.判断a>b、a #include“stdio.h” int main(){ int a,b;printf(“please input a,b: ”);scanf(“%d%d”,&a,&b);_____________________________________________ printf(“A=Bn”);_____________________________________________ printf(“A>Bn”);_____________________________________________ printf(“A 6.根据以下函数关系,对输入的每个x值,计算出相应的y值。 #include“stdio.h” int main(){ int x,c,m;float y;scanf(“%d”,&x); _________________________________________c=-1;c=_____________________________________________;switch(c){ case –1 : y=0;break;case 0 : y=x;break;case 1 : y=10;break;case 2 : case 3 : y=-0.5*x+20;_____________________________________________; else 7.default : y=-2;} if(c!=2)printf(“y=%f”,y); _____________________________________________ printf(“error!”);return 0;} 找出x,y,z三个数中的最小数,并判断该数是否等于b。#include“stdio.h” int main(){ int x=4,y=5,z=8 ,b;int u,v;scanf(“%d”,&b);u = x 8.输入两个运算数x,y和一个运算符号op,输出该运算结果的值,例如输入3+5↙得到结果8.#include“stdio.h” int main() { float x,y,r; char op; scanf(“%f,%c,%f”,&x,&op,&y); switch(op) { case '+': r=x+y;_____________________________________________; _____________________________________________ r=x-y;break; case '*' :_____________________________________________;break; _____________________________________________ r=x/y;break; } printf(“%f”,r); return 0;} 9.根据输入字符的ASCII码来判别字符的类别。由ASCII码表可知ASCII值小于32的为控制字 符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母,在“a”和“z”之 间为小写字母,其余则为其它字符。 #include“stdio.h” int main(){ char c;printf(“input a character: ”);c=getchar();_____________________________________________ printf(“This is a control charactern”); if(c>='0'&&c<='9') printf(“This is a digitn”);_____________________________________________ printf(“This is a capital lettern”);_____________________________________________ printf(“This is a small lettern”);_____________________________________________ printf(“This is an other charactern”);return 0;} 10.找出a,b,c三个数中的最大数,并判断该数是否等于x。 #include“stdio.h” int main(){ int a=8,b=4,c=12,x;int u,v;scanf(“%d”,&x); u = a } 解答: 1.c=getchar(); (c>='0'&&c<='9') (c>='A'&&c<='Z') else 2.char c; break; '-': printf(“%fn”,a/b); 3.max=a; min=b; if(max min=c; 4.switch(a) case 2: break; default: 5.if(a==b) else if(a>b) else if(a else 6.if(x<0)c=x/10; break; else 7.x:y; u:z; (v==b) else 8.break; case '-': r=x*y; case '/': 9.if(c<32) else if(c>='A'&&c<='Z') else if(c>='a'&&c<='z') else 10.b:a c:u (v==x) else 四.改错题 解答: 五.编程一 1.求分段函数的值,输入x值,输出结果。 2.从键盘上输入一个数x,计算并输出下列分段函数y的值。 3.某运输公司运费计算时根据运输距离打折计算,折扣的计算方法如下: (其中,discount表示折扣,S表示运输距离)。 编写一完整程序,输入运输距离,统计运费并输出。每公里的运费通过符号常量定义为2.5。 4.编程输入一元二次方程的三个系数,求解一元二次方程的实根,无实根时不用求虚根,给出相应提示信息即可。 5.给定三条边,判断其是否能构成三角形,若能构成,判断其是等腰三角形、等边三角形、直角三角形还是普通三角形。 6.从键盘输入一个三角形的三条边,判断是否能组成三角形,若能组成三角形,则输出它 的面积。7.从键盘输入一个百分制的学生成绩,输出其对应的分数等级,其中90~100为A,80~89 为B,70~79为C,60~69为D,60以下为E。 8.编写一个程序,从键盘输入三个整数给a,b,c,然后交换它们中的数,把a中原来的值 给b,把b中原来的值给c,把c中原来的值给a。 9.输入一个字符,判断其是否为英文字母,若是英文字母,则将其大小写进行转换,若不 是英文字母,则不变。 10.给定三个整数型x,y,z,输出三个数中的最大值和最小值。 解答: 1.#include “stdio.h” #include “math.h” void main(){ float x,y;printf(“input xn”);scanf(“%f”,&x);if(x<0) y=1;else if(x<=5) y=2*x;else y=sqrt(x);printf(“x=%5.1fy=%8.3fn”,x,y);} 2.#include “stdio.h” #include “math.h” void main(){ float x,y;printf(“input xn”);scanf(“%f”,&x);if(x>20||x>1&&x<10){ printf(“无定义n”); return;} if(x<0) y=-x;else if(x<=1) y=sin(x)+x;else if(x>=10&&x<=20) y=x*x*x;printf(“x=%5.1fy=%8.3fn”,x,y);} 3.#include “stdio.h” #include “math.h” #define price 2.5 void main(){ float discount,cost,s;printf(“input distancen”);scanf(“%f”,&s);if(s<250) discount=0;else if(s<800) discount=0.02;else if(s<1500) discount=0.05;else discount=0.08;cost=s*(1-discount)*price;printf(“distance=%5.1f;cost=%5.1fn”,s,cost);} 4./*功能:求一元二次方程的解。*/ #include “math.h” #include “stdio.h” main(){float a,b,c,disc,x1,x2; scanf(“%f,%f,%f”, &a, &b, &c); disc=b*b-4*a*c; if(disc==0) printf(“x1=x2=%7.2fn”,-b/(2*a));/*输出两个相等的实根*/ else if(disc>0) { x1=(-b+sqrt(disc))/(2*a);/*求出两个不相等的实根*/ x2=(-b-sqrt(disc))/(2*a); printf(“x1=%7.2f,x2=%7.2fn”, x1, x2); } else printf(“无实根n”);} 5.#include “stdio.h” void main(){ float a,b,c;printf(“输入三条边:n”);scanf(“%f%f%f”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){ if(a==b&&b==c) printf(“等边三角形n”); else if(a==b||b==c||c==a) printf(“等腰三角形n”); else if(a*a==b*b+c*c||b*b==a*a+c*c||c*c==b*b+a*a) printf(“直角三角形n”);} else printf(“不能构成三角形 n”);} 6.#include “stdio.h” #include “math.h” void main(){ float a, b, c, s, area;printf(“输入三条边:n”);scanf(“%f%f%f”,&a,&b,&c);if(a+b>c&&a+c>b&&b+c>a){ s=(a+b+c)/2; area=sqrt(s*(s-a)*(s-b)*(s-c)); printf(“area=%7.2fn”,area);} else printf(“不能构成三角形 n”);} 7.#include int score; char d; printf(“Input scoren”); scanf(“%d”,&score); if(score>100||score<0) { printf(“data error!n”); return; } switch(score/10) { case 10: case 9:d='A';break;case 8:d='B';break; case 7:d='C';break; case 6:d='D';break;default : d='E';break; } printf(“score=%3ddengji=%cn”,score,d);} 8.#include int a,b,c,t; printf(“Input a,b,cn”); scanf(“%d%d%d”,&a,&b,&c); t=a; a=b; b=c; c=t; printf(“a=%d;b=%d;c=%d;n”,a,b,c);} 9.#include char c1,c2; printf(“Input a letter: ”); c1=getchar(); if(c1>='a'&&c1<='z') c2=c1+'A'-'a'; else if(c1>='A'&&c1<='Z') c2=c1+'a'-'A'; else c2=c1; printf(“原字符:%c转换后为:%cn”,c1,c2);} 10.#include int a,b,c,max,min; printf(“Input a,b,cn”); scanf(“%d%d%d”,&a,&b,&c); max=a;min=a; if(b>max)max=b; else if(b if(c>max)max=c; else if(c printf(“a=%d;b=%d;c=%d;n”,a,b,c); printf(“max=%d;min=%dn”,max,min);} 六.编程二 解答: 第五章 循环结构 一.填空 1.C语言中提供了三种循环控制语句,它们是:()、do-while语句、()。 2.break语句在C程序中只能出现在两种场合:一是用于()语句中,二是用于()语句中。 3.以下程序段中的语句printf(“***”)要执行5次,请在空白处填入合适的数。 for(i=1;i<=();i=i+2) printf(“***”); 4.定义int k=10;执行语句 while(k<20)k += 1 ; 后,k的值为()。 5.在循环控制结构中break语句的作用是()。 6.在循环控制结构中continue语句的作用是:()。 7.若已知int a[5][5];并在运行过程中a数组已经赋值;要打印次对角线元素,在空白处 填入合适的值/表达式; for(i = 0;i<5;i++) for(j =();j >=0;j--) printf(“%5d”, a[i][j]);8.执行完语句sum = 0;for(i = 0;i < 10;i++){ if(i % 5 = = 0)sum += i;sum =()。 9.在使用while 语句中需要注意,为了防止“死循环”的发生,在循环体中一定要有()语句。 10.do-while 语句中,判断循环条件在(),执行循环体在()。(填“先”“后 ”) 解答: 1.2.3.4.5.6.7.8.9.10.二.阅读程序写结果 1.#include int number , digit; number = 1234; while(number!= 0) { digit = number%10; printf(“%d” , digit); number = number / 10; } } 2.#include int i; for(i=1;i printf(“%dn”,i*i);} 3.#include int i,s,x; s=0; x=15; for(i=1;i<=5;i++) if(x%i==0) s= s + i; printf(“i=%d,s=%dn”,i,s);} 4.#include int counter=1; while(counter <= 5) printf(“%d n”, counter); counter++; } } 5.#include int i,sum,m,a; sum=0; m=5; for(i=0;i<=3;i++) { scanf(“%d”,&a); if(a>m) sum+=a; } printf(“sum=%dn”,sum); return 0;} { 输入:2 10 8 3<回车> 6.#include int i,j,k; for(i=1;i<=4;i++) { for(j=1;j<5-i;j++) printf(“ ”); for(k=1;k<=i;k++) printf(“*”); printf(“n”); } return 0;} 7.#include int i,j; i=1; while(i<5) { for(j=1;j<2*i+1;j++) printf(“%c”,'#'); printf(“n”); i++; } return 0;} 8.#include int i=10,m=0,n=0; do { if(i%2!=0) m=m+i; else n=n+i; i--; }while(i>=0); printf(“m=%d,n=%dn”,m,n); return 0;} 9.#include int sum=0,n; scanf(“%d”,&n); while(n<=5) { sum+=n; n++; } printf(“sum=%d”,sum);} 输入:1<回车> 10.#include int i, j; for(i=2;i>=0;i--) { for(j=1;j<=i;j++) printf(“*”); for(j=0;j<=2-i;j++) printf(“!”); printf(“n”); } } 11.#include int a,b; for(a=1,b=1;a<=100;a++) { if(b>20)break; if(b%4==1) b=b+4; } b=b-5; } printf(“a=%dn”,a);} 12.#include { continue; { char k; int i; for(i=1;i<3;i++) { scanf(“%c”,&k); switch(k) { case '0': printf(“anothern”); case '1': printf(“numbern”); } } } 输入:01<回车> 13.#include int i, s = 0; for(i = 1;i < 10;i++) { s += i * i; if(s > 10)break; } printf(“i=%d, s=%dn”, i, s); return 0;} 14.#include char ch; while((ch=getchar())!='n') { if(ch>='A'&&ch<='Z') ch=ch+32; else if(ch>='a'&&ch<='z') ch=ch-32; printf(“%c”,ch); } } 输入:ABCdef<回车> 15.#include int a, b; for(a = 1, b = 1;a <= 100;a++) { if(b >= 9)break; if(b % 3 == 1) { b += 3; continue; } b-= 5; } printf(“%d,%dn”, a, b); return 0;} 16.#include int i = 0,j = 0; while(i < 10)i++; while(j++ < 10); printf(“i=%d,j=%dn”,i,j); return 0;} 17.#include “stdio.h” void main(){ int i,j,t; for(i=1,j=10;i<3;i++,j--) t=i+j; t++; printf(“%d,%d”,j,t);} 18.#include “stdio.h” void main(){ int i=10,j; do { j = i%2; printf(“%d”,j); i--; } while(i> 4);} 19.#include “stdio.h” void main(){ int i=7,j; while(i> 2) { j = i%2; printf(“%d”,j); i--; } printf(“%d”,i);} 20.#include int i,j,t=0; for(i=3;i>0;i--) for(j=0;j<4;j++) t+=j; printf(“t=%d”,t);} 解答: 1.4321 2.1 4 9 16 3.i=6,s=9 4.1 2 3 4 5.sum=18 6.* ** *** **** 7.## #### ###### # 8.m=25,n=30 9.sum=15 10.**!*!!! 11.a=6 12.another number number 13.i=3, s=14 14.abcDEF 15.4,10 16.i=10,j=11 17.8,12 18.010101 19.101012 20.t=18 三.补充程序 1.输出100以内能被3整除的数 #include“stdio.h” int main(){ _____________________________________________;for(_________________________;n<=100;________________________){ if(n%3!=0)________________________ printf(“%d ”,n);} return 0;} 2.输出100以内的素数。素数是只能被1 和本身整除的数。为减少循环次数,只需对数n用2 ~ 去除来判断该数是否素数。 #include“stdio.h” ________________________ int main(){ int n,i,k;for(n=2;n<=100;________________________){ k=sqrt(n);for(i=2;i<=k;________________________)if(n%i==0)________________________ if(i>k)printf(“t%2d”,n);} return 0;} 3.输出200以内能被5整除的数 #include“stdio.h” int main(){ ________________________ for(________________________;n<=200;________________________){ if(n%5!=0)________________________ printf(“%d ”,n);} return 0;} 4.求输入的十个整数中正数的个数及其平均值 #include int i,num=0,a;float sum=0; for(i=0;________________________;________________________){ scanf(“%d”,&a);if(a>=0){ ________________________;________________________;} } printf(“%d plus integer's sum: %6.0fn”,num,sum);printf(“Mean value:%6.2fn”,sum/num);return 0;} 5.求输入的十个整数中负数的个数及其平均值 #include int i,num,a;float sum=0;________________________;________________________;while(i<10){ scanf(“%d”,&a);if(a<=0){ ________________________;num++;} ________________________; } printf(“%d plus integer's sum: %6.0fn”,num,sum);printf(“Mean value:%6.2fn”,sum/num);return 0;} 6.分解并打印出X的各个素数因子.如18=1*2*3*3.#include int i,x; scanf(“%d”,&x); printf(“%d=1”,x); for(________________________;i<=x;________________________){ while________________________ { printf(“*%d”,i); ________________________;} } return 0;} 7.输出九九乘法表.#include int i,j; for(i=1;________________________;________________________) { for(________________________;________________________;j++) printf(“%2d*%2d=%2d”, j, i ,i*j); printf(“nn”); } return 0;} 8.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 #include “stdio.h” int main(){ int n,t,number=20;float a=2,b=1, ________________________;for(n=1;________________________;________________________){ s=s+a/b;t=a; a=a+b;________________________;} printf(“sum is %9.6fn”,s);return 0;} 9.求1+2!+3!+...+20!的和.#include “stdio.h” int main(){ float n, ________________________,t=1;for(n=1;________________________;________________________;){ t*=n;________________________;} printf(“1+2!+3!...+20!=%en”,s);return 0;} 10.有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。 #include “stdio.h” int main(){ int n,t,number=20;float a=2, ________________________,s=0;for(________________________;________________________;n++){ s=s+a/b;t=a; ________________________;b=t;} printf(“sum is %9.6fn”,s);return 0;} 解答: 1.int n; n=1; n++ continue; 2.#include“math.h” n++ i++ break; 3.int n; n=1 n++ continue; 4.i<10 i++ num++ sum+=a 5.i=0; num=0; sum+=a; i++; 6.i=1 i++ (x%i==0) x=x/i; 7.i<=9 i++ j=1 j<=i 8.s=0 n<=20 n++ b=t; 9.s=0 n<=20 n++ s+=t; 10.b=1 n=1 n<=20 a=a+b 四.改错题 解答:第四篇:C语言程序设计基础单项选择题库
第五篇:C语言程序设计试题集及其答案