第四版第7章《C程序設計》的課后答案大家找到了嗎?以下是小編為大家整理推薦關于《C程序設計》譚浩強第四版第7章課后答案,希望對大家有所幫助。
《C程序設計》譚浩強第四版第7章課后答案【1】
7.1 用篩法求之內的素數。
main()
{ int i,j,a[100];
for(i=2;i<100;i++)
{ a[i]=i;
for(j=2;j<=i;j++)
{if(j
if(a[i]%j==0)
break;
if(a[i]-j==0)
printf("%5d",a[i]);
}
}
printf("\n");
}
或
#include"math.h"
main()
{static int i,j,k,a[98];
for(i=2;i<100;i++)
{a[i]=i;k=sqrt(i);
for(j=2;j<=a[i];j++)
if(j
break;
if(j>=k+1)
printf("%5d",a[i]);
}
printf("\n");
}
7.2用選擇法對10個整數從小到大排序。
main()
{ int i,j,a[10],t;
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=0;i<=9-j;i++)
if(a[i]>a[i+1])
{t=a[i+1];a[i+1]=a[i];a[i]=t;}
for(i=0;i<10;i++)
printf("%5d",a[i]);
}
或
main()
{static int a[10],i,j,k,t;
for(i=1;i<11;i++)
scanf("%d",&a[i]);
for(j=1;j<10;j++)
for(i=1;i<=10-j;j++)
if (a[i]>a[i+1])
{t=a[i+1];a[i+1]=a[i];a[i]=t;}
for(i=1;i<11;i++)
printf("%d",a[i]);
printf("\n");
}
7.3求一個3×3矩陣對角線元素之和。
main()
{int i=0,j=0,a[3][3],s1,s2;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
s1=a[0][0]+a[1][1]+a[2][2];
s2=a[0][2]+a[1][1]+a[2][0];
printf("s1=%d,s2=%d\n",s1,s2);
}
或
main()
{
static int i,j,s1,s2,a[3][3];
for(i=1;i<=3;i++)
for(j=1;j<=3;j++)
scanf("%d",&a[i][j]);
s1=a[1][1]+a[2][2]+a[3][3];
s2=a[1][3]+a[2][2]+a[3][1];
printf("%d,%d\n",s1,s2);
}
7.4已有一個已排好的數組今輸入一個數要求按原來排序的規律將它插入數組中。
main()
{ static int a[10]={1,7,8,17,23,24,59,62,101};int i,j,t;
scanf("%d",&a[9]);
for(i=9;i>0;i--)
if(a[i]
{t=a[i-1];a[i-1]=a[i];a[i]=t;}
for(i=0;i<10;i++)
printf("%5d",a[i]);printf("\n");
}
或
main()
{
static int a[5]={1,4,5,6,7};
int i,t,b;
scanf("%d",&b);
for(i=0;i<5;i++)
{if(b<=a[i])
{t=a[i];a[i]=b;b=t;}
printf("%d ",a[i]);}
printf("%d",b);
}
7.5將一個數組的值按逆序重新存放,例如,原來順序為:8,6,5,4,1。要求改為:1,4,5,6,8。
main()
{ int i,b[10];
for(i=0;i<10;i++)
scanf("%d",&b[i]);
for(i=9;i>-1;i--)
printf("%5d",b[i]);
printf("\n");}
《C程序設計》譚浩強第四版第7章課后答案【2】
7.6打印出以下楊輝三角形(要求打印出10行)。
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
∶
∶
main()
{ static int m,n,k,b[15][15];
b[0][1]=1;
for(m=1;m<15;m++)
{for(n=1;n<=m;n++)
{ b[m][n]=b[m-1][n-1]+b[m-1][n];
printf("%-5d",b[m][n]);}printf("\n");
}
}
}
或
main()
{ int i,j,n,k,a[10][10];
static a[][1]={{1},{1},{1},{1},{1},{1},{1},{1},{1},{1}};
a[1][1]=1;
for(k=2,k<11;k++)
for(i=2;i<=k;i++)
for(j=2;j<=i;j++)
a[i][j]=a[i-1][j-1]+a[i-1][j];
for(k=1;k<11;k++)
for(i=1;i<=k;i++)
for(j=1;j<=i;j++)
printf("%d",a[i][j]);
}
7.7 打印“魔方陣”,所謂魔方陣是指這樣的方陣,它的每一行、每一列和對角線之和均相等。例如,三階魔方陣為
8 1 6
3 5 7
4 9 2
要求打印出由1~n2的自然數構成的魔方陣。
解:
#include
main()
{ int a[16][16],i,i,k,p,m,n;
p=1;
while(p==1) /*要求階數為1~15的商數*/
{ printf("Enter n(n=1~15):");
scanf("%d",&n);
if((n!=0)&&(n<=15)&&(n%2!=0)) p=0;
}
for(i=1;i<=n;i++) /*初始化*/
for(j=1;j<=n;j++) 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;
}
else
{ if(i<1) i=n;
if(j>n) j=1;
}
if(a[i][j]==0) a[i][j]=k;
else
{ i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++) /*輸出魔方陣*/
{ for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
7.8找出一個二位數組中的鞍點,即該位置上的元素在該行上最大,在該列上最小,也可能沒有鞍點。
main()
{int a[5][5],b[5],c[5],d[5][5],k=0,l=0;int i,j;
for(i=0;i<5;i++)
for(j=0;j<5;j++)
scanf("%d",&d[i][j]);
for(i=0;i<5;i++)
for(j=0;j<5;j++,a[i][j]=d[i][j]);
for(i=0,k=0;i<5;i++,k++)
for(j=0;j<4;j++)
{if(a[i][j]>=a[i][j+1])
b[k]=a[i][j+1]=a[i][j];
else
b[k]=a[i][j+1];
}
for(j=0,l=0;j<5;j++,l++)
for(i=0;i<4;i++)
{if(a[i][j]<=a[i+1][j])
c[l]=a[i+1][j]=a[i][j];
else
c[l]=a[i+1][j];
}
for(i=0,k=0;i<5;i++,k++)
for(j=0,l=0;j<5;j++,l++)
if(d[i][j]-b[k]==0)
{if(d[i][j]-c[l]==0)
printf("d[%d][%d]=%d\n",i,j,d[i][j]);
else
printf("d[%d][%d]=%d isnot andi\n",i,j,d[i][j]);
}
}
7.9有個15數按由小到大順序存放在一個數組中,輸入一個數,要求用折半查找法找出該數組中第幾個元素的值。如果該數不在數組中,則打印出"無此數"
#include"math.h"
main()
{static int i,j,m,a[15]={1,4,9,13,21,34,55,89,144,233,377,570,671,703,812};
scanf("%d",&m);
for(j=0;j<15;j++)
printf("%4d",a[j]);
printf("\n");
i=7;
while(fabs(i-7)<8)
{if(m
{if(a[i]-m==0)
{printf("it is at (%d)\n",i+1);break;}i--;}
else if(m>a[7])
{if(a[i]-m==0)
{printf("it is at (%d)\n",i+1);break;}i++;}
else
printf("8\n");
}
if(fabs(i-7)-8==0)
printf("There is not\n");
}
7.10有一篇文章,共有3行文字,每行有個80字符。要求分別統計出其中英文大寫字母、小寫字母、空格以及其它字符的個數。
main()
{int i,j=0,k=0,l=0,m=0,n=0;char str0[301],str1[100],str2[100],str3[100];
gets(str1);gets(str2);gets(str3);
strcat(str0,str1);strcat(str0,str2);strcat(str0,str3);
for(i=0;str0[i]!=’\0’;i++)
{if(str0[i]>=65&&str0[i]<=90) j++;
else if(str0[i]>=97&&str0[i]<=122) k++;
else if(str0[i]>=48&&str0[i]<=57) l++;
else if(str0[i]==32) m++;
else n++;}
printf("Daxie Xiaoxie Shuzi Kongge Qita\n");
printf("%5d %7d %5d %6d %4d\n",j,k,l,m,n);
}
《C程序設計》譚浩強第四版第7章課后答案【3】
7.11打印以下圖案
* * * * *
* * * * *
* * * * *
* * * * *
* * * * *
main()
{int i,j,k;char a[5][5];
for(i=0;i<5;i++)
{for(j=0;j<5;j++)
{a[i][j]=’*’;printf("%c",a[i][j]);}
printf("\n");
for(k=1;k<=i+1;k++)
printf("\40");}
printf("\n");
}
7.12有一行電文譯文下面規律譯成密碼:
A->Z a->z
B->Y b->y
C->X c->x
…
即第一個字母變成第26個字母,第i個字母變成第(26-i+1)個字母。非字母字符不變,要求編程序將密碼回原文,并打印出密碼和原文。
main()
{ int i;char str1[100],str2[100];
gets(str1);
for(i=0;str1[i]!=’\0’;i++)
if(str1[i]>=65&&str1[i]<=90)
str2[i]=155-str1[i];
else if(str1[i]>=97&&str1[i]<=122)
str2[i]=219-str1[i];
else
str2[i]=str1[i];
printf("%s\n%s\n",str1,str2);
}
7.13編一程序,將兩個字符串連接起來,不要strcat函數。
main()
{ int i,j;char str1[100],str2[100],str3[201];
gets(str1);
gets(str2);
for(i=0;str1[i]!=’\0’;i++)
str3[i]=str1[i];
for(j=0;str2[j]!=’\0’;j++)
str3[j+i]=str2[j];
printf("%s\n%s\n%s\n",str1,str2,str3);
}
7.14編一個程序,將兩個字符串S1和S2比較,如果S1>S2,輸出一個正數;S1=S2,輸出0;S1
#include
#include
main()
{ int i,resu;
char s1[100],s2[100];
printf("\n input string1:");
gets(s1);
printf("\n Input string2:");
gets(s2);
i=0;
while(s1[i]==s2[i]&&s1[i]!=’\0’) i++;
if(s1[i]==’\0’&&s2[i]==’0’) resu=0;
else resu=s1[i]-s2[i];
printf("\n result:%d\n",resu);
}
7.15 編寫一個程序,將字符數組s2中的全部字符拷貝到字符數組s1中,不用strcpy函數。拷貝時,’\0’也要拷貝過去,’\0’后面的字符不拷貝。
解:
#include "stdio.h"
main()
{ char s1[80],s2[80];
int i;
printf("Input s2:");
scanf("%s",s2);
for(i=0;i
s1[i]=s2[i];
printf("s1:%s\n",s1);
}
猜你感興趣:
4.《C程序設計》譚浩強 第四版第7章課后答案 清華大學出版社
5.《C程序設計》譚浩強 第四版第6章課后答案 清華大學出版社