C语言程序设计基础教程 - 习题答案 下载本文

{int i,k,m;

scanf(“%d”,&m); k=sqrt(m);

for(i=2; i<=k; i++) if(m%i==0) break;

if(i>=k+1) printf(“%d is a prime number\\n”,m ); else printf(“%d is not a prime number\\n”,m );} (2)输出3~100之间的所有素数 #include void main() { int i,k,m,n;

for(m=3;m<=100;m=m+2) { k=sqrt(m);

for(i=2;i<=k;i++) if(m%i==0) break;

if(i>k) { printf(“%d”,m); n++;} if(n==0) printf(“\\n”); } }

5.3.9 求解爱因斯坦数学题。有一条长度不多于1000步的阶梯,若每步跨2阶,则最后

剩1阶,若每步跨3阶,则最后剩2阶,若每步跨5阶,则最后剩4阶,若每步跨6阶,则最后剩5阶,若每步跨7阶,最后一阶都不剩,问总共有多少级阶梯? #include void main( ) {

int n;

for(n=1;n<=1000;n++)

if(n%7==0&&n%6==5&&n%5==4&& n%3==2&&n%2==1) printf(\}

5.3.10 100匹马驮100担货,大马一匹驮3担,中马一匹驮2担,小马两匹驮1担,求大、

中、小马的数目,要求列出所有的可能。

#include void main() {

int x,y,z;

for (x=0;x<=19;x++) for (y=0;y<=33;y++) { z=100-x-y;

if (5*x+3*y+z/3.0==100 )

printf(“cocks=%d,hens=%d,chickens=%d\\n\}

}

5.3.11 假设我国国民经济总值按每年8%的比率增长,问几年后翻番。 #include void main( ) {

float old=1,n; int i;

for(i=0,n=old;n<2*old;i++) n=n*(1+0.08);

printf(\}

5.3.12 编写程序,求1~99之间的全部同构数。同构数是这样一组数;它出现在平方数的

右边。例如:5是25的右边的数,25是625右边的数,5和25都是同构数。

#include Void main() { int n, k;

for(n=1;n<10;n++) { k=n*n;

if (k==n) printf(“d”,n); } for(n=10;n<100;n++) { k=n*n0;

if (k==n) printf(“d”,n); } }

5.3.13 编写程序,对数据进行加密。从键盘输入一个数,对每一位数字均加2,若加2后

大于9,则取其除10的余数。如,2863加密后得到4085。 #include #include void main() {

int i,s,m,n; printf(\ scanf(\ for(i=0,s=0;n>0;i++) { m=n;

m=(m+2); s=s+m*pow(10,i); n=n/10; } printf(\}

5.3.14 从键盘输入n,打印n行倒等腰三角形,如n=4,则打印:

*******

*****

***

*

#include void main() {

int i,j,N;

printf (\请输入N=\ scanf(\ for ( i=1 ; i<=N ; i++) { for (j=1; j<=i - 1; j++)

printf(“ ”); //空格 for (j=1; j<=2*N-(2* i -1); j++) printf(“*”); //星号 printf(“\\n”); } //换行 }

5.3.15 打印如下的九九乘法表

1 2 3 4 5 6 7 8 9 ---------------------------------------- 1 2 4 3 6 9

4 8 12 16 5 10 15 20 25

???????????..

9 18 27 36 45 54 63 72 81

#include void mian() { int i,j;

for (i=1;i<=9;i++) printf(“%-5d”,i); printf(“\\n”);

for (i=1;i<=9;i++) {for (j=1;j<=i;j++)

printf(“%-5d”,i); printf(“\\n”); }

习题六

6.1 填空题

6.1.1 C语言中,数组名代表 数组首地址 。

6.1.2 在c语言中,引用数组元素时,其数组下标的数据类型允许是 整型常量

6.1.3 在c语言中,一维数组的定义形式为:存储类型 类型说明符 数组名 [常

量表达式] 。 6.1.4 若有说明:int a[][3]={1,2,3,4,5,6,7}; 则a数组第一维的大小是

3 。

6.1.5 下面程序段的运行结果是 f 。

char a[7]=\char b[4]=\strcpy(a,b);

printf(\6.1.6 下面程序段的运行结果是 3 。

char c[]=\printf(\

6.1.7 假设字符串s1和s2均定义过并初始化,判断字符串s1是否大于字符串

s2,应当使用语句为:

if( strcmp(s1,s2)>0) 6.1.8 定义int arr[5]={1,2,3};则引用数组元素a[4]的值是: 0 。 6.1.9 数组的长度若为N,则可以访问的数组下标范围为: 0~(N-1) 。 6.1.10 数组元素引用时,下标为整型的表达式,可以使用 变量 。 6.2 选择题

6.2.1 合法的数组定义是(D)。

A.int a[ ]=”string”; B.int a[5]={0,1,2,3,4,5}; C.char a=”string”; D.char a[ ]={0,1,2,3,4,5}; 6.2.2 若有定义和语句:char s[10]; s=”abcd”; printf(“%s\\n”,s); 则

结果是(以下u代表空格)(A)。

A.输出abcd B.输出a

C.输出abcd u u u u u D.编译不通过 6.2.3 数组a[2][2]的元素排列次序是(A)。

A.a[0][0],a[0][1],a[1][0],a[1][1] B.a[0][0],a[1][0],a[0][1],a[1][1]

C.a[1][1],a[1][2],a[2][1],a[2][2] D.a[1][1],a[2][1],a[1][2],a[2][2] 6.2.4 有以下语句,则下面正确的描述是(B)。

static char x [ ]=“12345”; static char y[ ]={?1?,?2?,?3?,?4?,?5?};

A.x数组和y数组的长度相同。 B.x数组长度大于y数组长度。 C.x数组长度小于y数组长度 D.x数组等价于y数组。

6.2.5 列不能正确进行字符串赋值操作的语句是(C)。

A.char str[10];gets(str); B.char*str;str=“a”; C.char*str;str=?a?;

D.charstr[10];strcpy(str,“hello”);

6.2.6 若数组的长度为n,则该数组中的元素最多有n个。若[3][5]是一个二维

数组,则最多可使用的元素个数为(C)