while ((ch = getchar()) != '\\n') if (ch >= '0'&&ch <= '7') a[ch - '0']++; for (i = 0; i<8; i += 2) printf(\}
a[0],1 a[2],2 a[4],2 a[6],2 【程序2】
#include 四、程序设计 1. 将一个字符串中的所有数字字符组合成一个整数(如“a1bc23d4”,组合成整数1234)。 #include 2. 将输入的十进制数转换为二进制数输出。 #include 16/28 3. 计算200以内的其平方具有回文性质的正整数输出。例如11^2=121,111^2=12321都是 满足条件的正整数。 #include 第六章 函数 一、选择题: 1. 在C程序中,若对函数类型未加说明,则函数的隐含类型为( A ) A、int B、double C、void D、char 2. C语言中的函数( D ) A、可以嵌套定义 B、不可以嵌套调用 C、可以嵌套定义,但不能递归调用 D、嵌套调用和递归调用都可以 3. C语言auto型变量是( A ) A、存储在动态存储区中 B、存储在静态存储区中 C、存储在外存储器中 D、存储在计算机CPU的寄存器中 4. 有以下函数定义: void fun( int n, double x) { …………} 下面函数调用正确的是( A ) A、fun( x, n) B、k=fun(10,12.5) C、fun(int x, double y) D、void fun(n, x) 5. 有以下程序 int f1(int x,int y){return x>y?x:y;} int f2(int x,int y){return x>y?y:x;} main() { int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d)); f=f1(f2(a,b),f2(c,d)); g=a+b+c+d-e-f; printf(\} 程序运行后的输出结果是 ( A ) A、4,3,7 B、3,4,7 C、5,2,7 D、2,5,7 6. 以下叙述中错误的是 ( C ) A、对于double类型数组,不可以直接用数组名对数组进行整体输入或输出 B、数组名代表的是数组所占存储区的首地址,其值不可改变 C、当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界” 的出错信息 17/28 D、可以通过赋初值的方式确定数组元素的个数 7. 有以下程序 #define N 20 fun(int a[],int n,int m) { int i,j; for(i=m;i>=n;i--) a[i+1]=a[i]; } main() { int i,a[N]={1,2,3,4,5,6,7,8,9,10}; fun(a,2,9); for(i=0;i<5;i++) printf(\} 程序运行后的输出结果是( C ) A、10234 B、12344 8. 有以下程序 int a = 2; int f(int n) { static int a = 3; int t = 0; if (n % 2){ static int a = 4; t+=a++; } else { static int a = 5; t+=a++; } return t+a++; } main() { int s = a, i; for (i = 0; i<3; i++) s += f(i); printf(\}?? 程序运行后的输出结果是 ( C ) ?? A、26 B、28 9. 有以下程序 void sum(int a[]) { a[0] = a[-1] + a[1]; } main() { int a[10] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; sum(&a[2]); printf(\} ??程序运行后的输出结果是( A ) ?? A、6 B、7 10. 有以下程序 18/28 C、12334 C、29 C、5 D、12234 D、24 D、8 int f(int a) { return a%2; } main() { int s[8]={1,3,5,2,4,6},i,d=0; for (i=0;f(s[i]);i++) d+=s[i]; printf(\} 程序运行后的输出结果是( A ) A、9 B、11 C、19 D、21 二、程序填空 下面程序实现删除字符串中某个字符,请将程序补充完整。 # include < stdio.h> char s[] = \void main() { void sdelete (char s[] , char c); char c =','; //这里说的是可以删除的字符,这里删除的是“,”,可以更改 printf(\ sdelete( s,c ); printf(\ } void sdelete (char s[] , char c) { int i,j; for(i=j=0;s[i]!= '\\0'; ++i) if (s[i]!= c) s[j++]=s[i] ; s[j]=?\\0? ; } 三、写出程序运行的结果: 【程序1】以下程序运行后的输出结果是: #include\ int f(int c) { static int a=10; int b=++a; printf(“%d,%d,%d\\n”,a,b,c); return (a+b+c); } main() { printf(\11,11,5 12,12,27 51 19/28 【程序2】以下程序运行后的输出结果是: #include\int fun( int n) { if(n<10) return n; else return (n)*fun(n/10); } main() { printf(\16 //将218给n,n=218,n>10,所以(218)*fun(218/10)=8*fun(22) fun(22),n=22>10,所以(22)*fun(22/10)=2*fun(2) fun(2),n<10,所以返回n,8*2=16 【程序3】以下程序运行后的输出结果是: int w=2; int f(int x) { int y=1; static int z=3; y++;z++; return(x+y+z); } main() { int k; for(k=0;k<3;k++) printf(\} 8 10 12 【程序4】以下程序运行后的输出结果是: #include if( n== 1|| n==2) s=2; else s=n+ fun(n-1); return s; } void main ( ) { printf(\ 14 【程序5】以下程序运行后的输出结果是: void swap(int x,int y) 20/28