程序设计基础复习题答案
一、 填空题
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=i
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 {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 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 printf(“Enter a int number:”); scanf(“%d”,&k); if____(k%5==0||k==0)__________ printf(“yes\\n”); else printf(__“no\\n”______); } 2.下面程序是将键盘输入的英文字符全改为小写英文字符输出, 用换行符结束循环。请填空。 #include 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