6.以下程序可把输入的十进制数以十六进制数的形式输出,请填空。 main( ) { char b[17]={"0123456789ABCDEF"}; int c[64],d,i=0,base=16; long n; printf("Enter a number:\n");. scanf("%ld", &n): do { c[i]=________;i++;n=n/base;} while(n!=0); printf("Transmite new base:\n"); for(--i; i>= 0;--i) {d=c[i]; printf("%c",b);} printf("\n"); 【解】程序中,字符数组b存储十六进制的 16个数字符,整型数组C存储泽出的十六进制数的各位数值.从整数n译出它的各位十六进制数值,需采用除16取余的方法,即求n除16 的余.得到它的十六进制的个位数,接着将n除以16。在n不等于0的情况下循环,能顺序求出n的十六进制的个位数、十位数、百位数等等。程序中变量base已预置16,所以在第一个空框处可填代码nºse或n。当n的十六进制数的个位、十位、百位等数字依次存放于数组C中后,就从最高位至最低位,参照数组c[i]的内容d(以其内容为下标),取十六进制数字符表中的字符b[d]输出。所以在第二个空框处可填入代码[d]。 4.3 程序分析题 1.阅读程序,写出程序运行结果。, main() { static int a[][3]={9,7,5,3,l,2,4,6,8}; int i,j,sl=0,s2=0; for(i=0; i<3;i++) for(j=0;j<3;j++) { if(i==j) s1=s1+a[i][j]; if(i+j== 2) s2=s2+a[i][j]; } printf("%d\n%d\n", sl,s2); } 【解】已知数组。共有3行3列席一行依次是9,7,5;每二行是3,1,2;第三行是4,6,8。程序引用数组元素的游标变量是i和j,外循环控制变量i是数组的行下桥,内循环控制变量j是数组的列下标。循环体的工作是将数组的某些元素累计到sl,某些元素累计到S2。将行下标i和列下标j相同的元素累计到sl,sl=a[0][0]+a[l][1]+a[2][2]。将行下标i与列下标j的和为 2的元素累计到 s2,s2=a[0][2]+a[l][l]+a[2][0]。所以sl是18,s2是10。程序输出: 18 10
2.说明下列程序的功能。 main() { int i,j; float a[3][3],b[3][3],x; for(i=0;i<3;i++) for(j=0;j<3 ;j++) { scanf("%f",&x); a[i][j]= x; } for(i=0;i<3;i++) for(j=0;j<3;j++) b[j][i]=a[i][j]; for(i=0;i<3;i++) {printf("\n"); for(j=0;j<3;j++) printf("%f",b[i][j]); } printf("\n"); } 【解】程序第一段两重循环,实现按行顺序输入数组a的全部元素的值。程序第二段两重循环是将数组a转置复制到数组b。程序第三段两重循环实现按行输出数组b的全部元素。所以程序的功能是按行顺序输入3*3二维数组的全部元素,然后按列顺序输出。
3.写出下列程序的运行结果。 main() {static char a[]={’*’,’*’,’*’,’*’,’*’,’*’}; int i,j,k; for( i=0;i<5;i++) { printf("\n") for(j= 0;j for(j=0;j<5 ;j++)printf("%c",a[k]); } printf( "\n"); } 【解】程序的外循环控制循环五次,每次开始先输出一个换行符,共输出5行信息。对于i(自0开始计算)行,先输出i个空白符,接着输出字符数组a中的五个字符,由于a中的五个字符都是字符。,所以输出五个*字符。这样程序是输出以下形式的图案: * * * * * * * * * * * * * * * * * * * * * * * * *
4.说明下列程序的功能。 main() { int i,j ; float a[3][3],b[3][3],c[3][3],x; for(i=0;i<3;i++) for(j=0;j<3;j++) { scanf("%f", &x); a[i][j]= x; } for(i=0;i<3;i++) for(j=0;j<3;j++) {scanf("%f",&x);b[i][j]=x; } for(i=0; i<3; i++) for(j=0;j<3;j++) c[i][j]=a[i][j]+ b[i][j] ; for(i=0; i<3;i++) { printf("\n"); for(j=0;j<3;j++) printf("%f", c[i][j]); } printf("\n"); } 【解】程序第一段的功能是按行顺序输入数组a 的元素。程序第二段的功能是按行顺序输入数组b的元素。程序第三段的功能是顺序累加数组a和数组b的对应元素,并将和存于数组C的对应元素中。最后,按行顺序输出数组C的全部元素。 |