当前位置:首页 > c语言上机实验题
a f c o e n g p h t j i l u n d p e \\0 \\0 【含有错误的源程序】 #include
void encode(char s1[], char s2[]) void encode(char s1[], char s2[]) { { int n,i,j; int n,i,j; for(n=0;s1[n]!='\\0';n++) for(n=0;s1[n]!='\\0';n++) { {
for(i=0;i<10 && s1[n]!=cs[0][i]; for(i=0;i<10 && s1[n]!=cs[0][i]; i++ );
if(i<10) s2[n]=cs[1][i] ; i++ );
if(i<10) s2[n]=s1[n] ; else s2[n]=s1[n]; else s2[n]=cs[1][i]; } } s2[n]='\\0'; s2[n]='\\0'; } } main() main() { { char ts[80]=\ char ts[80]=\ encode(ts,td); encode(ts,td); puts(td); puts(td); getch(); } }
49. 请编辑调试下列2个程序,观察、理解其运行结果,并叙述它们各自的功能。 【源程序2】
#include
#include
50. 两个等长的二进制数之间的海明距离是指对应位数字不同的位数。如二进制数100101和001110之间的海明距离为4。设计算机系统使用16位二进制位表示一个十进制整数,请按下列要求完善程序:
(1) 完善函数void DecToBin(char str[], int n),其功能是将非负整数n转换成16位二进制数字字符串,按由低位向高位存入数组str中;
(2) 完善函数int Hymin(char *x , char *y),其功能是统计x、y指向的两个16位二进制数字字符串对应位数字不同的位数,并返回统计结果; (3) 在主函数中输入两个十进制正整数39和15,分别调用函数DecToBin将它们转换为二进制数字字符串,再调用函数Hymin计算它们之间的海明距离并输出。 【源程序】
void DecToBin(char str[] , int n) { void DecToBin(char str[] , int n) int i=0,j; { while(n!=0) int i=0,j; { str[i++]=___________; while(n!=0) n=_______; { str[i++]=n%2+48; } n=n/2; for(j=i ; j<16 ; j++) } str[j]= '0'; for(j=i;j<16;j++) } str[j]= '0'; } int Hymin(char x[] , char y[]) int Hymin(char x[] , char y[]) { int count=0, i ; { int count=0, i ; for(i=0; i<16 ; i++) for(i=0; i<16 ; i++) if(____________) count++; if(x[i]!=y[i]) count++; return count; return count; } } void main() void main() { { int m,n; int m,n; char a[17],b[17]; char a[17],b[17]; scanf(\ scanf(\ _______________; DecToBin(a,m); _______________; DecToBin(b,n); printf(\of %d and %d printf(\of %d and %d = %d\\n\= %d\\n\} getch();
} 测试数据:39 15↙
输出结果:distance of 39 and 15 = 2
51. 请编写函数int fun(int x[],int m,int n),其功能是:求出m到n中满足条件千位上的数减百位上的数减十位上的数减个位上的数大于零的数,将这些数依次存储到x所指向的数组中,函数返回满足条件的数的个数。编写main函数,声明一长度为1000的一维数组,并从键盘上输入m和n的值,用a、m、n作为实在参数调用函数fun。调试程序时,请输入m
和n的值分别为5000和6000,以每行5个输出满足条件的数及该类数的个数。
#include
int fun(int x[],int m,int n) {
int i,a,b,c,d,t=0; for(i=m;i<=n;i++) {
a=i/1000; b=i/100; c=i/10; d=i; if(a-b-c-d>0) x[t++]=i; }
return t; }
main() {
int x[1000],m,n,i;
scanf(\m=fun(x,m,n); for(i=0;i printf(\ if((i+1)%5==0) printf(\ } printf(\ getch(); } 52. 请编写函数void fun(int a[],int n),其功能是:生成并一个数列的前20项。该数列的第一、二项分别为2、3,其后继项按下列规则生成:若前两项的乘积是一位数,则取该乘积为后继项;若前两项的乘积是二位数,则取该乘积的十位数字和个位数字依次作为数列的两个后继项。编写main函数,声明一个足够大的数组a(数组长度为100),并从键盘上输入待生成数列中元素的个数n,用a和n作为实在参数调用函数fun,按每行5个依次输出数列中的各数。 #include a[0]=2,a[1]=3; for(i=2;i<20;i++) { t=a[i-2]*a[i-1]; if(t<10) a[i]=t; else { a[i++]=t/10; a[i]=t; } } } main() { int a[100],n,i; fun(a,n); scanf(\for(i=0;i printf(\if((i+1)%5==0) printf(\getch(); } 55. 要求40名学生对学生食堂的饭菜质量按照从1到10(1意味着非常不好,10表示非常好)进行打分,分别统计出打各分数的人数。请按下列要求编写程序:(1)编写void cont (int a[],int n, int b[]),其功能是对a指向的长度为n的整型数组中存储的分值作统计,统计结果依次存入b所指向的数组中;(2)设计main函数,声明一个长度为40的整型数组并用下列测试数据初始化,声明一个长度为11的数组b,用a、40和b作为实在参数调用cont函数,输出统计结果至屏幕。注意:b[1]中存放打分值1的人数,b[2]中存放打分值2的人数,依次类推。 测试数据:1,2,6,4,8,9,10,2,3,4,2,3,4,5,4,6,7,8,6,9,1,6,7,8,7,6,9,10,8,6, 7,6,8,9,5,4,3,9,8,7 #include void cont(int a[],int n,int b[]) { int i; for(i=0;i main() { int a[40]={1,2,6,4,8,9,10,2,3,4,2,3,4,5,4,6,7,8,6,9,1,6,7,8,7,6,9,10,8,6,7,6,8,9,5,4,3,9,8,7}, b[11]={0},i; cont(a,40,b); for(i=1;i<=10;i++) printf(\ getch(); } 56. 请按下列要求编写程序:(1)编写int fun(int a[],int n, int b[]),其功能是将a指向的长度为n的数组中的整数中下标是奇数且该位元素值大于10的整数依次写到b指向的数组
共分享92篇相关文档