一、 填空题
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. #include {w=u % v; u=v ; v=w;} printf(\"%d\\n\} 输出结果为: 8 2. void main() { char s[]\"Yes\\n/No\ 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(\"%d\\n\} 输出结果: 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}; 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 5. 给出以下程序的运行结果: void main() { int a,b,c; a=25b=025;c=0x25;printf(\"%d, %d, %d\\n\} 运行结果: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(\"%d\\n\} 运行结果:24 7. 给出有下面一段程序的运行结果。 #include static int f=1; 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(\"%d\\n\} 运行结果:92 三、程序填空题 1.以下程序可判断输入的一个整数是否能被5或13整除,若能整除,输出“yes”并换行,否则输出“no”并换行。请填空。 int i; for(i=1;i<=5;i++) printf(\"%d!=%d\\n\ #include printf(“Enter a int number:”); scanf(“%d”,&k); if____(k%5==0||k%13==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(\"%c\ } printf(\"\\n\"); } 3.有一个一维数组score,内放10个学生成绩,求平均成绩,请填空。 #include float average(float array[10]); void main() {float score[10],aver; int i; printf(\"input 10 scores:\\n\"); for(i=0;i<10;i++) scanf(\"%f\printf(\"\\n\"); aver=average(score); printf(\"average score is %5.2f\} float average(float array[10]) {int i; float aver,sum=array[0]; for( i=1;i<10;i++ ) sum=sum+array[i]; aver=sum/10 ; return aver ; } 4.以下程序从终端读入数据到数组中,统计其中正数的个数,并计算它们之和。请填空。 Void main() { int i,a[20],sum,count; sum=count=0; for(i=0;i<20;i++) scanf(\"%d\ for (i=0;i<20;i++) { if(a>0) { count++; sum+= a[i] ; } } printf(\"sum=%d,count=%d\\n\} 5.下面程序可以逐行输出由language数组元素所指向的5个字符串。请填空。 #include { char * language[]={ “BASIC”, “FORTRAN”, “PROLOG”, “JAVA”, “C++”}; char ** q ; int k; for (k=0;k<5;k++) { q= language+k ; printf(“%s\\n”,*q); } } 6.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串,请填空。 #include { char str[81],*sptr; int i; for(i=0;i<80;i++) { str[i]=getchar(); if(str[i]=='\\n') break; } str[i]= '\\0' ; sptr=str; while(*sptr) putchar(*sptr ++ ); } 7、程序的功能是用递归方法计算第五位学生的年龄,请填空。 递归公式如下: 10 (n=1) age(n)= age(n-1)+2 (n>1) 程序: int age(int n) { int c; if( n==1 ) c= 10 ; else c= age(n-1)+2 ; return (c); } void main() { printf(“age:%d\\n”, age(5)); } 8)下面程序的功能是在三个字符串中找出最小的,请填空: #include { char s[20],str[3][30]; int i; for (i=0;i<3;i++) gets(str[i]); strcpy ( s, (strcmp(str[0],str[1])<0?str[0]:str[1]) ); if (strcmp(str[2],s)<0) strcpy( s,str[2]); print(“%s\\n”, s ) ; } 9)以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出。请填空。 #include void main( ) { int *a,*b,*c, num,x,y,z; a=&x; b=&y; c=&z; printf(“输入3个整数:”); scanf(“%d%d%d”,a,b,c); printf(“%d,%d,%d\\n”, *a,*b,*c); num=*a; if (*a>*b) num=*b ; if (num>*c) num=*c ; printf(“输出最小整数:%d\\n”, num); } 10. C语言源程序文件的后缀是__.cpp_________,经编译后生成的文件的后缀是__.obj_______,连接后生成的文件的后缀是.exe。 11.从键盘输入一个大写字母,要求改用小写字母输出。请填空: #include c1= getchar() ; printf(“%c, %d\\n”,c1,c1); c2=c1+32 ; printf(“%c, %d\\n”,c2,c2); } 12.以下程序的功能是:从键盘上输入一行字符,存入一个字符数组中,然后输出该字符串。请填空: #include { char str[81],*sptr; int i; for(i=0;i<80;i++) { str[i]=getchar(); if(str[i]=='\\n') break; } str[i]= '\\0' ; sptr=str; while(*sptr) putchar(*sptr ++ ; } 13.输入三角形的三边长,求三角形面积。请填空: void main() { float a, b, c, s, area ; scanf(“%f, %f, %f”, &a, &b, &c); s=1.0/2*(a+b+c); area = sqrt(s*(s-a)*(s-b)*(s-c)) ; printf(“a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2f\\n”,a,b,c,s); printf(“area=%7.2f\\n”,area); } 14.判断m是否素数。请填空: #include int m, i, k; scanf(\"%d\ k=sqrt(m) ; for(i=2;i<=k;i++) if( m%i==0 ) break; if( i>k ) printf(\"%d is a prime number\\n\ else printf(\"%d is not a prime number\\n\} 15.以下程序对输入的一个小写字母,将字母循环后移5个位置后输出。如’a’变成‘f’,’w’变成’b’。请填空: #include if (c>=’a’ && c<=’u’) c=c+5 ; else if (c>=’v’ && c<=z) c =c-21 ; putchar(c); } 16.输入三个整数x,y,z,请把这三个数由小到大输出。请填空: #include \"stdio.h\" #include \"conio.h\" main() { int x,y,z,t; scanf(\"%d%d%d\ if (x>y) { t=x;x=y;y=t; } /*交换x,y的值*/ if(x>z) { t=z;z=x;x=t; } /*交换x,z的值*/ if(y>z) { t=y;y=z;z=t; } /*交换z,y的值*/ printf(\"small to big: %d %d %d\\n\} 17.求1!+2!+3!+4!+…+20!的值。请填空: #include { float s=0,t=1; int n; for(n=1;n<=20;n++) { t=t*n ; s=s+t ; } printf(\"1!+2!+...+20!=%c\\n\} 18.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。请填空: #include \"stdio.h\" #include \"conio.h\" main() { char c; int letters=0,space=0,digit=0,others=0; printf(\"please input some characters\\n\"); while( (c=getchar()) !='\\n') { if( c>='a'&&c<='z'||c>='A'&&c<='Z' ) letters++; else if(c==' ') space++; else if(c>='0'&&c<='9') digit++; else others++; } printf(\"all in all:char=%d space=%d digit=%d others=%d\\n\ space,digit,others); } 19.以下程序是通过指针操作,找出三个整数中的最小值并输出。请填空: #include { int *a,*b,*c, num,x,y,z; a=&x; b=&y; c=&z; printf(“输入3个整数:”); scanf(“%d%d%d”,a,b,c); printf(“%d,%d,%d\\n”, *a,*b,*c); num=*a; if (*a>*b) num=*b ; if (num>*c) num=*c ; printf(“输出最小整数:%d\\n”, num); } 20.下面程序的功能是打印100以内个位数为6且能被3整除的所有数。请填空。 #include for(i=0; i<10 ;i++) { j=i*10+6; if( j%3!=0 ) continue; printf(“%d ”,j); } } 四、编程题 1.给学生成绩,要求输出成绩等级‘A’‘B’‘C’‘D’‘E’。90分以上为‘A’,80-89分为‘B’,70-79分为‘C’,60-69分为‘D’,60分以下为‘E’。 #include float score; char grade; printf(\"请输入学生成绩:\"); scanf(\"%f\ while(score>100||score<0) { } switch((int)(score/10)) { case 10: case 9: grade='A';break; printf(\"\\n输入有误,请重输!\"); scanf(\"%f\ case 8: grade='B';break; case 7: grade='C';break; case 6: grade='D';break; case 5: case 4: case 3: case 2: case 1: case 0: grade='E'; } printf(\"成绩是%5.1f,相应的等级是%c.\\n\} 2.输入一数组各元素值,将这个数组中的值按逆序重新存放(如原来顺序为5,4,3,2,1 要求改为1,2,3,4,5)。 #include 3、将一个2×3的二维数组中行与列的元素互换并存到另一个二维数组中。 设原数组的初值为{{1,2,3},{4,5,6}}。 int a[N],i,temp; printf(\"Enter array:\\n\"); for(i=0;i for(i=0;i #include {for (j=0;j<=2;j++) {printf(\"%5d\",a[i][j]); b[j][i]= a[i][j]; /*行列元素互换*/ } printf(\"\n\"); } printf(\"array b:\n\"); for (i=0;i<=2;i++) {for(j=0;j<=1;j++) printf(\"%5d\",b[i][j]); printf(\"\n\"); } } 4.用选择法对10个数排序(由小到大)。要求从键盘输入这10个数。 #include int i, j, min, temp, a[11]; printf(“enter data: \\n”); for(i=1;i<=10;i++) { printf(“a[%d]=”, i); scanf(“%d”,&a[i]); } printf(‘\\n”); printf(“The orginal numbers:\\n”); for(i=1;i<=10;i++) printf(“%5d”,a[i]); printf(“\\n”); for(i=1;i<=9;i++) { min=i; for(j=i+1;j<=10;j++) if(a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf(“\\nThe sorted numbers:\\n”); for(i=1;i<=10;i++) printf(“%5d”,a[i]); printf(“\\n”); } 因篇幅问题不能全部显示,请点此查看更多更全内容