6.以下程序可把輸入的十進(jìn)制數(shù)以十六進(jìn)制數(shù)的形式輸出,請(qǐng)?zhí)羁铡?
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");
【解】程序中,字符數(shù)組b存儲(chǔ)十六進(jìn)制的 16個(gè)數(shù)字符,整型數(shù)組C存儲(chǔ)澤出的十六進(jìn)制數(shù)的各位數(shù)值.從整數(shù)n譯出它的各位十六進(jìn)制數(shù)值,需采用除16取余的方法,即求n除16 的余.得到它的十六進(jìn)制的個(gè)位數(shù),接著將n除以16。在n不等于0的情況下循環(huán),能順序求出n的十六進(jìn)制的個(gè)位數(shù)、十位數(shù)、百位數(shù)等等。程序中變量base已預(yù)置16,所以在第一個(gè)空框處可填代碼nºse或n。當(dāng)n的十六進(jìn)制數(shù)的個(gè)位、十位、百位等數(shù)字依次存放于數(shù)組C中后,就從最高位至最低位,參照數(shù)組c[i]的內(nèi)容d(以其內(nèi)容為下標(biāo)),取十六進(jìn)制數(shù)字符表中的字符b[d]輸出。所以在第二個(gè)空框處可填入代碼[d]。
4.3 程序分析題
1.閱讀程序,寫出程序運(yùn)行結(jié)果。,
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(luò)) s1=s1+a[i][j];
if(i+j== 2) s2=s2+a[i][j];
}
printf("%d\n%d\n", sl,s2);
}
【解】已知數(shù)組。共有3行3列席一行依次是9,7,5;每二行是3,1,2;第三行是4,6,8。程序引用數(shù)組元素的游標(biāo)變量是i和j,外循環(huán)控制變量i是數(shù)組的行下橋,內(nèi)循環(huán)控制變量j是數(shù)組的列下標(biāo)。循環(huán)體的工作是將數(shù)組的某些元素累計(jì)到sl,某些元素累計(jì)到S2。將行下標(biāo)i和列下標(biāo)j相同的元素累計(jì)到sl,sl=a[0][0]+a[l][1]+a[2][2]。將行下標(biāo)i與列下標(biāo)j的和為 2的元素累計(jì)到 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");
}
【解】程序第一段兩重循環(huán),實(shí)現(xiàn)按行順序輸入數(shù)組a的全部元素的值。程序第二段兩重循環(huán)是將數(shù)組a轉(zhuǎn)置復(fù)制到數(shù)組b。程序第三段兩重循環(huán)實(shí)現(xiàn)按行輸出數(shù)組b的全部元素。所以程序的功能是按行順序輸入3*3二維數(shù)組的全部元素,然后按列順序輸出。
3.寫出下列程序的運(yùn)行結(jié)果。
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");
}
【解】程序的外循環(huán)控制循環(huán)五次,每次開始先輸出一個(gè)換行符,共輸出5行信息。對(duì)于i(自0開始計(jì)算)行,先輸出i個(gè)空白符,接著輸出字符數(shù)組a中的五個(gè)字符,由于a中的五個(gè)字符都是字符。,所以輸出五個(gè)*字符。這樣程序是輸出以下形式的圖案:
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
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");
}
【解】程序第一段的功能是按行順序輸入數(shù)組a 的元素。程序第二段的功能是按行順序輸入數(shù)組b的元素。程序第三段的功能是順序累加數(shù)組a和數(shù)組b的對(duì)應(yīng)元素,并將和存于數(shù)組C的對(duì)應(yīng)元素中。最后,按行順序輸出數(shù)組C的全部元素。
更多軟考資料請(qǐng)?jiān)L問:考試吧軟件水平考試欄目
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |