(一)填空, 在___N___中填空。
1.将数组x中原有数据为:1、-2、3、4、-5、6、-7,调用函数f后数组x中数据为:1、3、4、6、0、0、0,输出结果为:1 3 4 6。 #include
void f(int *a,___1___) { int i,j;
for(i=0;___2___; ) if(a[i]<0) {
for(j=i;j<*m-1;j++) ____3_____; a[*m-1]=0; (*m)--; }
else i++; }
void main()
{ int i,n=7,x[7]={1,-2,3,4,-5,6,-7}; ____4_____; for(i=0;i 2.输入10个数到数组a中,计算并显示所有元素的平均值,以及其中与平均值相差最小的数组元素值。 #include { double a[10],v=0,x,d; int i; printf(\ for(i=0;i<10;i++) { scanf(\ v=v+___2____; } d=_____3_____; x=a[0]; for(i=1;i<10;i++) if(fabs(a[i]-v) 3.循环输入正整数n(直到输入负数或者0结束),计算并显示满足条件2^m≤n≤2^(m+1)的m值。 #include #define F (t<=n && t*2>=n) void main() { int m,t,n; while(scanf(\{ m=0;___2___; while(___3___){ ___4___; m++; } printf(\ } } (二)改错, 在/*********** n**************/下一行有错,请改正。 7.显示两个数组中,数值相同的元素。 #include { /******** 1 *******/ int i; int a[6]={1,3,5,7,9,11}; int b[7]={2,5,7,9,12,16,3}; /******* 2 *******/ for(i=0;i<=6;i++) { for(j=0;j<7;j++) /******** 3 *******/ if(a[i]=b[j]) break; /******* 4 ********/ if(j>=7) printf(\ } printf(\ } 8.逐个显示字符串中各字符的机内码。提示:英文字符字母的机内码首位为0,汉字的每个字节首位为1。程序正确运行后,显示如下:a[0]的机内码为:0110001;a[1]的机内码为:00110010;a[2]的机内码为:10111010;a[3]的机内码为:10111010;a[4]的机内码为:11010111;a[5]的机内码为:11010110。 #include { /******** 1 *******/ char a[7]='a2汉字'; ; int i,j,k; /******** 2 *******/ for(i=0;i printf(\的机内码为:\ for(j=1;j<=8;j++) { k=a[i]&0x80; if(k!=0) putchar('1'); /****** 3 *****/ else putchar(0); /****** 4 *****/ a[i]=a[i]>>1; } printf(\ } } 14.输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。 #include { char str[81]; int i,flag; /******* 1 ******/ get(str); for(i=0;str[i]!='\\0';) { flag=tolower(str[i])>='a' && tolower(str[i])<='z'; /********* 2 *********/ flag=not flag; if(flag) { /******* 3 ********/ strcpy(str+i+1,str+i); /******* 4 ********/ break; } i++; } printf(\ } 15.(1)输入一个整数mm作为密码,将字符串中每个字符与mm做一次按位异或操作进行加密,输出被加密后的字符串(密文),(2)再将密文的每个字符与mm做一次按位异或操作,输出解密后的字符串(明文)。 #include { char a[]=\汉字\ int mm,i; /******** 1 *******/ printf(“请输入密码:”); /******** 2 *******/ scanf(\ for(i=0;a[i]!='\\0';i++) /*各字符与mm作一次按位异或*/ a[i]=a[i]^mm; puts(a); /*** 各字符与mm再作一次按位异或 ***/ /******** 3 *******/ for( ;a[i]!='\\0';i++) /****** 4 ******/ a[i]=a[i]^mm^mm; puts(a); } 三、设计 1.编制函数f计算下列表达式的值,函数main提供了一个测试用例。函数原型为double.f(double*,double,int) a0+a1sin(x)+a2sin(x^2)+a3sin(x^3)+??+an-1sin(x^n-1)。 #include /*****考生在以下空白处编写函数f ******/ 2.统计并显示500至800之间所有素数的点个数以及总和。 #include /****考生在以下空白处写入执行语句 编写函数f判断与形参相应的实参是否素数****/ /****考生在以上空白处写入执行语句******/ printf(\素数个数%d 素数总和%d\\n\ fp=fopen(\ fwrite(&k,4,1,fp);fwrite(&s,4,1,fp); fclose(fp); }