C语言程序设计第四版答案谭浩强Word文件下载.docx

上传人:b****6 文档编号:18818123 上传时间:2023-01-01 格式:DOCX 页数:18 大小:18.89KB
下载 相关 举报
C语言程序设计第四版答案谭浩强Word文件下载.docx_第1页
第1页 / 共18页
C语言程序设计第四版答案谭浩强Word文件下载.docx_第2页
第2页 / 共18页
C语言程序设计第四版答案谭浩强Word文件下载.docx_第3页
第3页 / 共18页
C语言程序设计第四版答案谭浩强Word文件下载.docx_第4页
第4页 / 共18页
C语言程序设计第四版答案谭浩强Word文件下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

C语言程序设计第四版答案谭浩强Word文件下载.docx

《C语言程序设计第四版答案谭浩强Word文件下载.docx》由会员分享,可在线阅读,更多相关《C语言程序设计第四版答案谭浩强Word文件下载.docx(18页珍藏版)》请在冰豆网上搜索。

C语言程序设计第四版答案谭浩强Word文件下载.docx

printf(enterdata:

\n);

for(i=1;

=10;

{printf(a[%d]=,i);

scanf(%d,&

a[i]);

printf(Theorginalnumbers:

printf(],a[i]);

=9;

{min=i;

if(a[min]>

a[j])min=j;

temp=a[i];

a[i]=a[min];

a[min]=temp;

Thesortednumbers:

3、求一个3×

3的整型矩阵对角线元素之和。

{

inta[3][3],sum=0;

inti,j;

for(i=0;

3;

for(j=0;

scanf(=,&

a[i][j]);

sum=sum+a[i][i];

printf(sum=m\n,sum);

4、有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。

{inta[11]={1,4,6,9,13,16,19,28,40,100};

inttemp1,temp2,number,end,i,j;

printf(arraya:

10;

printf(insertdata:

number);

end=a[9];

if(number>

end)

a[10]=number;

else

{for(i=0;

i++)

{if(a[i]>

number)

{temp1=a[i];

a[i]=number;

11;

{temp2=a[j];

a[j]=temp1;

temp1=temp2;

break;

printf(Nowarraya:

printf(\

5、将一个数组中的值按逆序重新存放。

例如,原来顺序为8、6、5、4、1。

要求改为1、4、5、6、8。

解:

#includestdio.h

#defineN5

voidmain()

{inta[N],i,temp;

printf(enterarrya:

for(i=0;

N;

printf(arrya:

printf(M,a[i]);

N/2;

{temp=a[i];

a[i]=a[N-i-1];

a[N-i-1]=temp;

Now,arrya:

6、输出以下的杨辉三角形(要求输出10行)。

1

11

121

1331

14641

15101051

{inti,j,n=0,a[31][31]={0};

while(n<

1||n>

30)/*最多可输出30行*/

灻楲瑮?

请输入杨辉三角形的行数:

n);

n;

a[i][0]=1;

/*第一列全置为一*/

for(i=1;

for(j=1;

=i;

a[i][j]=a[i-1][j-1]+a[i-1][j];

/*每个数是上面两数之和*/

i++)/*输出杨辉三角*/

{for(j=0;

printf(],a[i][j]);

7、输出“魔方阵”。

所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。

例如,三阶魔方阵为

816

357

492

{inta[15][15],i,j,k,p,n;

p=1;

while(p==1)

{printf(entern(n=1--15):

if((n!

=0)&

(n<

=15)&

(n%2!

=0))

p=0;

=n;

for(j=1;

a[i][j]=0;

j=n/2+1;

a[1][j]=1;

for(k=2;

k<

=n*n;

k++)

{i=i-1;

j=j+1;

if((i<

1)&

(j>

n))

{i=i+2;

j=j-1;

{if(i<

1)i=n;

if(j>

n)j=1;

if(a[i][j]==0)

a[i][j]=k;

{for(j=1;

8、找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。

也可能没有鞍点。

#defineN4

#defineM5/*数组为4行5列*/

inti,j,k,a[N][M],max,maxj,flag;

printf(pleaseinputmatrix:

i++)/*输入数组*/

M;

{max=a[i][0];

/*开始时假设a[i][0]最大*/

maxj=0;

/*将列号0赋给maxj保存*/

j++)/*找出第i行中的最大数*/

if(a[i][j]>

max)

{max=a[i][j];

/*将本行的最大数存放在max中*/

maxj=j;

/*将最大数所在的列号存放在maxj中*/

flag=1;

/*先假设是鞍点,以flag为1代表*/

for(k=0;

if(max>

a[k][maxj])/*将最大数和其同列元素相比*/

{flag=0;

/*如果max不是同列最小,表示不是鞍点令flag1为0*/

continue;

if(flag)/*如果flag1为1表示是鞍点*/

{printf(a[%d][%d]=%d\n,i,maxj,max);

/*输出鞍点的值和所在行列号*/

if(!

flag)/*如果flag为0表示鞍点不存在*/

printf(Itisnotexist!

9、有15个数按由大到小顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。

如果该数不在数组中,则输出“无此数”。

#defineN15

{inti,number,top,bott,mid,loca,a[N],flag=1,sign;

charc;

a[0]);

i=1;

while(i<

N)

{scanf(%d,&

if(a[i]>

=a[i-1])

i++;

printf(enterthisdataagain:

while(flag)

{printf(inputnumbertolookfor:

sign=0;

top=0;

//top是查找区间的起始位置

bott=N-1;

//bott是查找区间的最末位置

if((number<

a[0])||(number>

a[N-1]))//要查的数不在查找区间内

loca=-1;

//表示找不到

while((!

sign)&

(top<

=bott))

{mid=(bott+top)/2;

if(number==a[mid])

{loca=mid;

printf(Hasfound%d,itspositionis%d\n,number,loca+1);

sign=1;

elseif(number<

a[mid])

bott=mid-1;

top=mid+1;

}

sign||loca==-1)

printf(cannotfind%d.\n,number);

;

printf(continuornot(Y/N)?

scanf(%c,&

c);

if(c=='

N'

||c=='

n'

flag=0;

10、有一篇文章,共有3行文字,每行有80个字符。

要求分别统计出其中英文大写字母、小写字母、数字、空格以及其他字符的个数。

{inti,j,upp,low,dig,spa,oth;

chartext[3][80];

upp=low=dig=spa=oth=0;

{printf(pleaseinputline%d:

\n,i+1);

gets(text[i]);

for(j=0;

80&

text[i][j]!

=0;

{if(text[i][j]>

='

A'

text[i][j]<

Z'

upp++;

elseif(text[i][j]>

a'

z'

low++;

0'

9'

dig++;

elseif(text[i][j]=='

'

spa++;

oth++;

uppercase:

%d\n,upp);

printf(lowercase:

%d\n,low);

printf(digit:

%d\n,dig);

printf(space:

%d\n,spa);

printf(other:

%d\n,oth);

11、输出以下图案:

*****

*****

{chara[5]={'

*'

'

};

inti,j,k;

charspace='

5;

{printf(\

printf();

printf(%c,space);

printf(%c,a[k]);

12、有一行电文,已按下面规律译成密码:

A→Za→z

B→Yb→y

C→Xc→x......

即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不变。

要求编程序将密码译回原文,并输出密码和原文。

(1)

{intj,n;

charch[80],tran[80];

printf(inputciphercode:

gets(ch);

ciphercode:

%s,ch);

j=0;

while(ch[j]!

\0'

{if((ch[j]>

)&

(ch[j]<

))

tran[j]=155-ch[j];

elseif((ch[j]>

tran[j]=219-ch[j];

else

tran[j]=ch[j];

j++;

n=j;

originaltext:

putchar(tran[j]);

(2)

{intj,n;

charch[80];

ciphercode:

%s\n,ch);

ch[j]=155-ch[j];

ch[j]=219-ch[j];

ch[j]=ch[j];

printf(originaltext:

putchar(ch[j]);

13、编一程序,将两个字符串连接起来,不要用strcat函数。

{chars1[80],s2[40];

inti=0,j=0;

printf(inputstring1:

scanf(%s,s1);

printf(inputstring2:

scanf(%s,s2);

while(s1[i]!

i++;

while(s2[j]!

s1[i++]=s2[j++];

s1[i]='

Thenewstringis:

%s\n,s1);

14、编一个程序,将两个字符串s1和s2比较,若s1>

s2,输出一个正数;

若s1=s2,输出0;

若s1<

s2,输出一个负数。

不要用strcpy函数。

两个字符串用gets函数读入。

输出的正数或负数的绝对值应是相比较的两个字符串相应的ASCII码的差值。

例如,“A”与“C”相比,由于“A”<

“C”,应输出负数,同时由于‘A'

和‘C'

的ASCII码差值为2,因此应输出“-2”。

同理:

“And”“Aid”比较,根据第2个字符比较结果,“n”比“i”大5,因此应输出“5”。

{inti,resu;

chars1[100],s2[100];

gets(s1);

inputstring2:

gets(s2);

i=0;

while((s1[i]==s2[i])&

(s1[i]!

))i++;

if(s1[i]=='

&

s2[i]=='

resu=0;

resu=s1[i]-s2[i];

result:

%d.\n,resu);

15、编写一个程序,将字符数组s2中的全部字符复制到字符数组s1中。

不用strcpy函数。

复制时,‘/0'

后面的字符不复制。

#include<

string.h>

main()

inti;

charstr1[100],str2[100];

printf(inputstring2:

scanf(%s,str2);

=strlen(str2);

str1[i]=str2[i];

printf(str1:

%s\n,str1);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1