华中科技大学标准C语言程序设计及应用习题答案

更新时间:2023-07-29 10:17:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第二章

一.选择题

1.C 2.B D 3.A 4.A 5. D C

6.C 7.D 8.B 9.A 10.D

11.B 12.D 13.C 14.D 15.A

16.B 17.A 18.B

二.判断题

1.错

2.错

3.错

4.错

三.填空题

1. B 66

2. n1=%d\nn2=%d\n

3. 0

四.计算

1

(1) x|y = 0x002f

(2) x^y = 0x0026

(3) x&y = 0x0009;

(4) ~x+~y = 0xffc6

(5) x<<=3 0x0068

(6) y>>=4 0x0002

2

(1) 6

(2) 50

(3) 1

(4) –16

(5) 1

(6) 20

3

(1) 0

(2) 1

(3) 1

(4) 4

(5) 8

(6) 1

4

(1) 12

(2) 0

(3) 1

(4) 27

(6) 6

(7) 24

(8) 27

(9) –29

5

(1) 0

(2) 1

(3) 1

(4) –3

(5) 2

五.程序分析题

程序1

b=20 a=3600

程序2

一.填空题

1.s=6

2.96

3.(1) scanf("%c",&c);

(2) c-32 更好的答案:c-('a'-'A')

2.1

main()

{

int a,b;

printf("please input a & b:");

scanf("%d%d",&a,&b);

printf("\nmax is %d\n",(a>b)?a:b);

}

2.2

int max(int x,int y);

main()

{

int a,b,c,max;

printf("please input a & b & c:");

scanf("%d%d%d",&a,&b,&c);

max=a>b?a:b;

max=c>max?c:max;

printf("\nmax is %d\n",max);

}

2.3 第三章

{

int i=0,sum=0;

while(i<=100)

{

sum+=i;

i++;

}

printf("1+2+3+......+100=%d\n",sum);

}

2.4

main()

{

int i;

int a=10,b=-3;

int c;

printf("%6d%6d",a,b);

for(i=2;i<10;i++)

{

c=3*b+a;

printf("%6d",c);

a=b;

b=c;

}

printf("\n");

}

2.5

main()

{

int i;

while(1)

{

printf("please input a data(0:exit):");

scanf("%d",&i);

if(i==0)

break;

if(i%2==0)

printf("the data %d is a even number.\n",i);

else

printf("the data %d is a odd number.\n",i);

}

}

2.6

#include <stdio.h>

main()

{

int i;

int a=8,b=1;

int sum=0;

for(i=0;i<10;i++)

{

b+=3;

sum += a;

a+=b;

printf("a%8d b:%8d\n",a,b);

}

printf("The Sum Of Is:%d\n",sum);

}

2.7

#include <stdio.h>

main()

{

float x,y;

printf("please input x:");

scanf("%f",&x);

if(x<1.0)

y=x;

else if(x<10)

y=2*x-1;

else

y=3*x-11;

printf("y=%f\n",y);

}

2.8

#include <stdio.h>

main()

{

long a,i,b,a1;

while(1)

{

printf("please input data(1-99999):");

scanf("%ld",&a);

printf("a:%ld\n",a);

if(a<=0||a>=100000)

break;

i=0;

a1=0;

while(a!=0)

{

b=a%10;

printf("%8d",b);

a/=10;

i++;

a1=a1*10+b;

}

printf("\n i:%ld a1:%ld\n",i,a1);

}

}

2.9

#include <stdio.h>

#include <time.h>

#include <stdlib.h>

main()

{

int a,b,i,k=0;

randomize();

a=random(1001);/*create a random data(0-1000)*/

for(i=0;i<20;i++)

{

printf("please guess a number:");

scanf("%d",&b);

if(a>b)

{

k++;

printf("\n%d:Smaller,guess again!\n",k);

}

else if(a<b)

{

k++;

printf("\n%d:Bigger,guess again!\n",k);

}

else

{

printf("\nYou guess right,congraturation!") ;

printf("\nYou have guessed %d times",k);

break;

}

}

if(k==20)

printf("\nsorry,you failed!");

}

2.10

#include <stdio.h>

main()

{

int a,b,c;

int num;

for(a=0;a<10;a++)

{

for(b=0;b<10;b++)

{

for(c=1;c<10;c++)

{

num=a*100+b*10+c;

if((num%3==0)&&(a==5||b==5||c==5))

printf("%8d",num);

}

}

}

printf("\n\n\n");

}

2.11

#include <stdio.h>

main()

{

int i;

int a,b;

printf("please input a,b:");

scanf("%d%d",&a,&b);

for(i=a<b?a:b;i>0;i--)

{

if(a%i==0&&b%i==0)

{

printf("The max=%d",i);

break;

}

}

for(i=a>b?a:b;i>0;i++)

{

if(i%a==0&&i%b==0)

{

printf("\nThe min=%d",i);

break;

}

}

2.12

#include <stdio.h>

main()

{

int a,k=0;

printf("please input data:");

scanf("%d",&a);

while(a%2==0)

{

a=a/2;

k++;

}

printf("\nthe number of factor(2) is %d",k);

}

2.13

main()

{

long i,t=1;

long sum=0;

for(i=1;i<=10;i++)

{

t*=i;

sum+=t;

printf("%ld!=%ld\n",i,t);

}

printf("sum:%ld\n",sum);

}

2.14

#include <stdio.h>

void main()

{

int i,x=0;

for(i=9;i>=1;i--)

{

x=2*(x+1);

}

printf("The first day:%d",x);

}

2.15

#include <stdio.h>

#define PI 3.141593

main()

{

float r,h;

float v;

printf("please input r,h:");

scanf("%f%f",&r,&h);

v=1.0/3*PI*r*r*h;

printf("V=%.2f",v);

}

2.16

#include<stdio.h>

#include<math.h>

main()

{

long int sn=0;

long int m=0,t=0;

int a,n,i;

printf("please input a n:");

scanf("%d%d",&a,&n);

for(i=0;i<n;i++)

{

m=m*10+a;

sn+=m;

}

printf("a+aa+aaa+...+aa...a=%ld\n\n",sn);

}

2.17

#include <stdio.h>

main()

{

int k;

printf("please input k:");

do

{

scanf("%d",&k);

if(k>=0&&k<=6)

break;

}while(1);

switch(k)

{

case 0:printf("Sunday.\n");break;

case 1:printf("Monday.\n");break;

case 2:printf("Tuesday.\n");break;

case 3:printf("Wednesday.\n");break;

case 4:printf("Thursday.\n");break;

case 5:printf("Friday.\n");break;

case 6:printf("Saturday.\n");break;

}

}

2.18

#include <stdio.h>

main()

{

int i;

double x,a,b=1,sum=1;

printf("please input x:");

scanf("%lf",&x);

a=x;

for(i=1;a/b>=1e-6;i++)

{

sum=sum+a/b;

a=a*x;

b=(i+1)*b;

}

printf("\nsum=%lf",sum);

}

2.19

#include <stdio.h>

#include <math.h>

main()

{

float a,x1,x2;

printf("input a:");

scanf("%f",&a);

x1=1.0;

while(1)

{

x2=1.0/2*(x1+a/x1);

if(fabs(x2-x1)<1e-5)

break;

x1=x2;

}

printf("sqrt(a)=%f",x2);

}

第四章

写出下列程序输出结果

1.no 1 a=1no 1 a=0no 1 a=1no 1 a=0

2.

a=0 b=0 c=0

a=1 b=0 c=0

a=2 b=0 c=0

3.

main:x=5,y=1,n=1

func:x=6,y=21,n=11

main:x=5,y=1,n=11

func:x=8,y=31,n=21

1.D

2.D

3.C

4.6

5.CDABC

6.(1)j+=2

(2)a[i]<a[j]

7.(1)s[i++]!='\0'

(2)s[i-1]

8.D

9.B

10.6(同题4)

11.s[i]>='0'&&s[i]<='9'

12. (1)'\0' (2)str1[i]-str2[i]

5.1

#include<stdio.h>

int fun();

int fun()

{

int a[3][3],sum; 第五章

int i,j;

sum=0;/*error*/

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

scanf("%d",&a[i][j]);/*error*/

}

for(i=0;i<3;i++)

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

printf("sum=%d\n",sum);

}

void main()

{

fun();

}

5.2

#include <stdio.h>

void main( void )

{

float Num[10];

float Input,GetNum[11];

int i,j;

float a=6;

for(i=0; i<10; i++)

{

Num[i]=a;

a=a+7.5;

}

Loop1: printf("Please input a Number(0-80) Input=");

scanf("%f",&Input);

if((Input<0)||(Input>70)==1)

goto Loop1;

for(i=0; i<10; i++ )

{

if(Input<Num[i])

goto Loop2;

}

Loop2: for(j=0; j<i; j++ )

GetNum[j]=Num[j];

GetNum[j]=Input;

for(j=i; j<=10; j++,i++)

GetNum[j+1]=Num[i];

for(j=0; j<11; j++ )

printf("%3.3f ",GetNum[j]);

}

5.3

#include "stdio.h"

#include "stdlib.h"

main()

{

int a1,a2,a3,a4,a5,a6,a7,a8,a9;

int a[3];

int i;

for(;;)

{

for (i=0;i<3;i++)

{

a[i]=rand()%3;

}

while((a[0]!=a[1]) && (a[0]!=a[2]) && (a[1]!=a[2]))/*get three different numbers 0,1,2*/

{

a1=a[0]+1;/*divide 1~9 into three groups,a1~a3,a4~a6,a7~a9*/

a2=a[1]+1;

a3=a[2]+1;

a4=a1+3;

a5=a2+3;

a6=a3+3;

a7=a1+6;

a8=a2+6;

a9=a3+6;

/* make sure that each line and each row is made up with three members in different group.*/

/* such as: a9 a1 a5

a2 a6 a7

a4 a8 a3 */

if(((a1+a5+a9) == (a2+a6+a7)) && ((a1+a5+a9) == (a3+a4+a8))

&& ((a1+a6+a8) == (a5+a7+a3)) && ((a1+a5+a9) == (a2+a4+a9))) {

printf("%d %d %d\n%d %d %d\n%d %d %d\n",a9,a1,a5,a2,a6,a7,a4,a8,a3); return;

}

}

}

}

5.4

#include <stdio.h>

void main(void)

{

char input1[100],input2[100],input3[100];

int i,Eng=0,eng=0,num=0,blank=0,other=0;

printf("Input 3 rows of character,each row don't exceed 80 characters:\n");

gets(input1);

printf("The second row:\n");

gets(input2);

printf("The third row:\n");

gets(input3);

/*test the first row*/

for(i=0; i<100; i++)

{

if(input1[i]=='\0')

goto Loop1;

else if(('A'<=input1[i])&&(input1[i]<='Z')==1)

Eng++;

else if(('a'<=input1[i])&&(input1[i]<='z')==1)

eng++;

else if(('0'<=input1[i])&&(input1[i]<='9')==1)

num++;

else if(input1[i]==32)

blank++;

else other++;

}

/*test the second row*/

Loop1: for(i=0; i<100; i++)

{

if(input2[i]=='\0')

goto Loop2;

else if(('A'<=input2[i])&&(input2[i]<='Z')==1)

Eng++;

else if(('a'<=input2[i])&&(input2[i]<='z')==1)

eng++;

else if(('0'<=input2[i])&&(input2[i]<='9')==1)

num++;

else if(input2[i]==32)

blank++;

else other++;

}

/*test the third row*/

Loop2: for(i=0; i<100; i++)

{

if(input3[i]=='\0')

goto Loop3;

else if(('A'<=input3[i])&&(input3[i]<='Z')==1)

Eng++;

else if(('a'<=input3[i])&&(input3[i]<='z')==1)

eng++;

else if(('0'<=input3[i])&&(input3[i]<='9')==1)

num++;

else if(input3[i]==32)

blank++;

else other++;

}

Loop3: printf("Upper english character:%d\nLower english character:%d\nNumber:%d\nBlank:%d\nOther characters:%d\n",Eng,eng,num,blank,other); }

5.5

#include <stdio.h>

void main(void)

char str1[80],str2[40];

int i,j,k;

/*Input two string*/

printf("Please input the first string\n str1=");

gets(str1);

printf("Please input the second string\n str2=");

gets(str2);

/*Get the end of str1*/

for(i=0; i<80; i++)

{

if(str1[i]=='\0')

break;

}

/*Copy str2 to str1*/

for(j=i,k=0; str2[k]!='\0';k++,j++)

str1[j]=str2[k];

str1[i+k]='\0';

puts(str1);

}

5.6

#include <stdio.h>

struct student

{char name[20];

int score;

}stu[5],stu1;

void main(void)

{ int i,j;

printf("Input student's score and name(5),seperate using the character of ',' :\n");

for(i=0; i<5; i++)

scanf("%d,%s",&stu[i].score,&stu[i].name);

/*sorting*/

for(i=0; i<5; i++)

for(j=0; j<4-i; j++)

if(stu[j].score>stu[j+1].score)

{stu1=stu[j];stu[j]=stu[j+1];stu[j+1]=stu1;}

printf("After sotred,score and name:\n");

for(i=0; i<5; i++)

printf("%d,%s\n",stu[i].score,stu[i].name);

}

5.7

#include<stdio.h>

main()

{ int a[3][3],i,j,m,n,o,p;

printf("Please input a 3*3 shuzu:\n");

for (i=0;i<=2;i++)

for (j=0;j<=2;j++)

scanf("%d",&a[i][j]);

for (i=0;i<=2;i++)

{ m=(a[i][0]>a[i][1])? a[i][0]:a[i][1];

n=(m>a[i][2])? m: a[i][2];

}

for (j=0;j<=2;j++)

{ o=(a[0][j]<a[1][j])? a[0][j]:a[1][j];

p=(o<a[2][j])? o: a[2][j];

}

if (n==p)

printf("Andian is %d\\n",p);

else

printf("There is no andian.\\n");

}

5.8

#include <stdio.h>

void main(void)

{ int a[4][3],b[3][4],i,j;

for(i=0; i<4; i++)

{ for(j=0; j<3; j++)

scanf("%d",&a[i][j]);

}

for(i=0; i<4; i++)

{

printf("\n");

for(j=0; j<3; j++)

printf("%5d ",a[i][j]);

}

for(i=0; i<4; i++)

{

for(j=0; j<3; j++)

b[j][i]=a[i][j];

}

printf("\n");

for(i=0; i<3; i++)

{

printf("\n");

for(j=0; j<4; j++)

printf("%5d ",b[i][j]);

}

5.9

#include <stdio.h>

#include<math.h>

void main(void)

{ char str[6];

int i,j=0,m=0,n=0;

gets(str);

while(str[j]!='\0') j++;

for(i=j-1;i>=0;i--)

{

m=(str[i]-'0')*(pow(8,j-i-1));

n+=m;

}

printf("shijinzhi %d",n);

}

5.10#include <stdio.h>

void main(void)

{

char input1[100];

int i,num=0,blank=0;

printf("Please input a row character:\n");

gets(input1);

/*test the first row*/

for(i=0; i<100; i++)

{

if(input1[i]=='\0')

goto Loop;

else if(('A'<=input1[i])&&(input1[i]<='Z')==1)

num++;

else if(('a'<=input1[i])&&(input1[i]<='z')==1)

num++;

else if (input1[i]==32)

blank++;

}

Loop: printf("Character:%d\nBlank:%d\n",num,blank);

}

第六章

一、选择题

1.D :p中记录的是a的地址,*p访问地址a的值

2.D :指针数组

3.D:指针可以进行是否相等判断,空指针可以进行指针变量初始化,指针可以偏移;

4.C:

5.C、D:a[5]不存在,若*&a[4]则正确;C,D正确;

6.D:

7.B:

8.B:

二、填空题

1.*(p+3) 2 22

2. cdefg

bcdefg

abcdefg

7

3. 6385

三、程序分析题

1.p = s[0] ; 错误,应改为:p = s; 或 p = &s[0];

2.int x , *p;错误,应改为:double x, *p;

3.*p = x ;错误,应改为:p = &x ;

4. 声明顺序错误;应该改为:

void main(void)

{

int a;

int *p = &a;

a = 10;

printf(“%d\n”,*p);

}

2.3 #include <stdio.h>

本文来源:https://www.bwwdw.com/article/glfm.html

Top