#define len(x1,y1,x2,y2) sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)) void main()
{ FILE *p; int i,j; float c,minc;
float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33}; minc=len(x[0],y[0],x[1],y[1]);
/****以下要求考生写的代码****/
p=fopen(“design.dat”,”w”); for(i=0;i<10;i++)
for(j=i+1;j<10;j++)
{c=len(x[i],y[i],x[j],y[j]); if(c fprintf(p,”%f”,minc); fclose(p); } 试题三 设计程序:数组元素x[i]、y[i]表示平面上某点坐标,统计10个点中处在圆 (x-1)*(x-1)+(y+0.5)*(y+0.5)=25内的点数k,并将变量k的值 以格式\写到考生目录中Paper子目录下的新建文件design.dat中。 #include { FILE *p; int i,k=0; float x[]={1.1,3.2,-2.5,5.67,3.42,-4.5,2.54,5.6,0.97,4.65}; float y[]={-6,4.3,4.5,3.67,2.42,2.54,5.6,-0.97,4.65,-3.33}; //考生在这里添加代码 p=fopen(\ for(i=0;i<10;i++) if((x[i]-1)* (x[i]-1)+ (y[i]-0.5)* (y[i]-0.5)<25) k++; fprintf(p,\ fclose(p); } 试题四 程序设计题:考生目录下有Design.c程序,请完成以下功能:x[i],y[i]表示点d(i)的平面坐标,求d(0)至d(1)、d(1)至d(2)、??d(4)至d(0)的连线所构成的边形面积,并将所求面积以格式“%.4f”写到考生目录下新建文件design.dat。 #include { FILE 8p; int i; float s,a,b,c,sdim=0; float x[5]={-4.5,0.5,4.2,2.7,-3}; 16 of 41 float y[5]={2.3,4.7,1.3,-2.5,-3.3}; p=fopen(“design.dat”, “w”); // 此处起要求考生自己编制程序 for(i=1;i<4;i++) { a=sqrt((x[0]-x[i])*(x[0]-x[i])+(y[0]-y[i])*(y[0]-y[i])); b=sqrt((x[i]-x[i+1]) *(x[i]-x[i+1])+(y[i]-y[i+1])*(y[i]-y[i+1])); c= sqrt((x[0]-x[i+1]) *(x[0]-x[i+1])+(y[0]-y[i+1])*(y[0]-y[i+1])); s=(a+b+c)/2; sdim+=sqrt(s*(s-a)*(s-b)*(s-c)); } fprintf(p, “%.4f”, sdim); fclose(p); } 七、数制转换 1、程序调试题 试题一 将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符串形式输出。例如:输入十进制数79,将输出十六进制4f。 # include if(x<10) return '0'+x; /********1********/ else return 'a'+x; //?a?+x---??a?+x-10 } int DtoH(int n,char *str) { int i=0; while(n!=0) { str[i]=trans(n); /********2********/ n%=16; //%-----?/ i++;} return i-1; } void main() { 17 of 41 int i,k,n; char *str; scanf(\k=DtoH(n,str); for (i=0;i<=k;i++) printf(\} 2、程序填空题 试题一 该程序功能:将输入的十进制正整数n通过函数Dec2Bin转换为二进制数,并将转换结果输出。 #include int bin[32],j; for(j=0;m!=0;j++) { bin[j]= ______1______; //m%2 m=m/2; } for(;j!=0;j--) printf(\ //bin[j-1] } void main() { int n; scanf(\ Dec2Bin(n); } 试题二 将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符串形式输出。例如:输入十进制数79,将输出十六进制4f。 # include if(x<10) return '0'+x; else _____1______;//return x+?a?-10; } int DtoH(int n,char *str) { int i=0; while(n!=0) { 18 of 41 ______2______; //str[i]=trans(n); n/=16;i++;} return i-1; } void main() { int i,k,n; char *str; scanf(\k=DtoH(n,str); for (i=0;i<=k;i++) printf(\} 八、字符串处理 1、程序调试题 试题一 该程序功能: 输入一个字符串,将组成字符串的所有非英文字母的字符删除后输出。 例如:输入\,应输出\。 #include char str[256]; int i,j,k=0,n; gets(str); n=strlen(str); for(i=0;i /********1********/ if (tolower(str[i])<'a' || tolower(str[i])>'z') //=?a? >?z??<=?z? ||-〉&& { /********2********/ str[n]=str[i]; n++; //n--?k } str[k]='\\0'; printf(\} 试题二 该程序功能:输入1个字符串,按字母首次出现次序输出其中所出现过的大写英文字母。 *如运行时输入字符串\,应输出\。 #include { char x[80],y[26]; int i,j,ny=0; 19 of 41 gets(x); for(i=0;x[i]!='\\0';i++) if(x[i]>='A'&&x[i]<='Z') { for(j=0;j if(y[i]==x[j]) continue; //i ?-?j continue--?break if(j==ny) { y[ny]=x[i]; ny++; } } /***** 2 *****/ for(i=0;i<26;i++) //26---?ny printf(\ printf(\} 试题三 该程序功能:将两个字符串连接起来。 #include char s1[80],s2[40]; int i=0,j=0; printf(\ scanf(\ printf(\ scanf(\ while (s1[i] !='\\0') /****** 1 ******/ i+1; //i+1----?i++ while (s2[j] !='\\0') /****** 2 ******/ s1[++i]=s2[++j]; /* 拼接字符到s1 */ ++i----?i++ ++j---?j++ s1[i] ='\\0'; printf(\} 试题四 该程序功能:用递归法将一个六位整数n转换成字符串,例如输入123456,应输出字符串\。 #include void itoa(long i,char *s) { if(i==0) return; /****** 1 ******/ *s = '1'+i; //?1?---??0? itoa(i/10,s-1); 20 of 41