C程序设计复习题答案 下载本文

内容发布更新时间 : 2024/5/16 15:23:26星期一 下面是文章的全部内容请认真阅读。

程序设计基础复习题答案

一、 填空题

1、C语言所提供的实型变量分为两种类型,它们是 float和double 。 2、一个C源程序中至少应包含一个 主函数或main函数 。

3.已知字母a的ASCII码为十进制数97,且设ch为字符型变量,则表达式ch=’a’+’8’-’3’的值为 102 。

4.在标准C语言中,输入操作是由库函数 scanf() 完成的,输出操作是由库函数 printf() 完成的。

5.对以下说明:int c[10] = {116, 125, 218, 312, 100, 40, 13, 67, 186};

c[4]的值为 100 。

6.在C语言中,引用数组元素时,引用数组元素时,其数组下标的数组类型允许

是 整型常量或整型表达式 。

7.设y为int 型变量,请写出描述“y是偶数”的表达式 (y%2)==0 。

8.设int i=0,j=1,k=2,a=3,b=4; 执行表达式(a=ik)的值为 0 。 9.与表达式 a+=b 等价的另一书写形式是 a=a+b 。 10.有以下定义和语句

int a[3][2]={1,2,3,4,5,6,},*p[3]; p[0]=a[1];

则*(p[0]+1)所代表的数组元素是 a[1][1] 。 11.代表一个反斜杠字符“\\”的转义字符是 '\\\\' 。

12.变量的指针就是变量的地址,存放变量地址的变量就是 指针变量 ,它用来指向另一个变量。

13.++i和i++的不同之处在于 i++是先使用i的值后,再执行i=i+1;而++i是先执行i=i+1后,再使用i的值 。

14.设x、y和z是int 型变量,且x=3,y=4,z=5, 则表达式! ((x

16.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为 字母或下划线 。

17.计算表达式:x=(i=4, j=10, k=24)后,x的值为 24 。

18.若a和b均是int型变量,且a和b的初值均为5,则计算表达式 a+=b++ 后,a的值为 10 ,b的值为 6 。

19.设int a[10]={0,1,2,3,4,5,6,7,8,9}, *p=a; 则表达式*(p+8)的值是 9 。 20.若有以下定义:

char a; int b; float c; double d;

则表达式a*b+d-c值的类型为 double 。 21.*(p++)和*(++p)作用不同,它们的意义分别是 *(p++)先取*p的值,后使p加1,*(++p)先使p加1,再取*p

1

二、程序理解题

请给出运行以下程序的输出结果: 1.

#include void main() { int u=24,v=16,w; while(v)

{w=u % v; u=v ; v=w;} printf(\}

输出结果为: 8 2.

void main()

{ char s[]\ puts(ps+4); *(ps+4)=0; puts(s); }

输出结果:/No Yes 3. main()

{ int p[7]={11,13,14,15,16,17,18}; int i=0,j=0;

while(i<7 && p[i]%2==1) j+=p[i++]; printf(\}

输出结果: 24 。

4、下列程序的运行结果是 total=144 。 void main()

{ int arr_sum(int arr[],int n);

int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};

2

int *p,total; p=a[0];

total= arr_sum (p,12); printf(“total=%d\\n”,total); }

int arr_sum(int arr[],int n) { int i,sum=0;

for(i=0;i

sum=sum+arr[i]; return(sum); }

5. 给出以下程序的运行结果:

void main()

{ int a,b,c; a=25b=025;c=0x25;printf(\}

运行结果:25, 21, 37

6. 给出有下面一段程序的运行结果。

void main()

{ int p[7]={11,13,14,15,16,17,18}; int i=0, ,j=0;

while(i<7 && p[i]%2==1) j+=p[i++]; printf(\}

运行结果:24

7. 给出有下面一段程序的运行结果。 #include int fac(int n) {

static int f=1;

3

}

f=f*n; return(f);

void main() { }

答案:1!=1 2!=2 3!=6 4!=24 5!=120

8. 给出有下面一段程序的运行结果。

main()

{ int a[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}}; int i=0,j=0,s=0; while(i++<4) {

if(i==2||i==4) continue; j=0;

do{ s+= a[j]; j++; } while(j<4); }

printf(\}

运行结果:92

三、程序填空题

1.以下程序可判断输入的一个整数是否能被5或13整除,若能整除,输出“yes”并换行,否

4

int i;

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

printf(\

则输出“no”并换行。请填空。 #include void main() { int k;

printf(“Enter a int number:”); scanf(“%d”,&k);

if____(k%5==0||k==0)__________ printf(“yes\\n”); else

printf(__“no\\n”______); }

2.下面程序是将键盘输入的英文字符全改为小写英文字符输出, 用换行符结束循环。请填空。 #include void main() {

char c;

while( (c=getchar())!='\\n' ) {

if( c >='A'||c<='Z' ) c=c+32; printf(\ }

printf(\}

3.有一个一维数组score,内放10个学生成绩,求平均成绩,请填空。 #include

float average(float array[10]); void main()

{float score[10],aver; int i;

printf(\for(i=0;i<10;i++)

scanf(\

5