1、 华中科技大学标准C语言程序设计及应用习题答案 第二章 一.选择题 1.C 2.B D 3.A 4.A 5. D 6.C 7.D 8.C 9.A 10.D 11.B 12.D 13.C 14.D 15.A 16.B 17.A 18.B 100011 001111 二.判断题 1.错 2.错 3.错 4.错 三.填空题 1. B 66 2. n1=%d\nn2=%d\n
2、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 (7) 12 (8) 0 (9) 1 (10) 27 (11) 1 (12) 6 (13) 24 (14) 27 (15) –
3、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(i
4、nt 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 main() { int i=0,sum=0; while(i<=100) { sum+=i; i++; } printf("1+2+3+......+100=%d\n",sum); } 2.4
5、 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(
6、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
7、 printf("a%8d b:%8d\n",a,b);
}
printf("The Sum Of Is:%d\n",sum);
}
2.7
#include
8、
9、 a1=a1*10+b;
}
printf("\n i:%ld a1:%ld\n",i,a1);
}
}
2.9
#include
10、"); scanf("%d",&b); if(a>b) { k++; printf("\n%d:Smaller,guess again!\n",k); } else if(a
11、ve guessed %d times",k);
break;
}
}
if(k==20)
printf("\nsorry,you failed!");
}
2.10
#include
12、5||b==5||c==5))
printf("%8d",num);
}
}
}
printf("\n\n\n");
}
2.11
#include
13、 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
14、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
15、 {
x=2*(x+1);
}
printf("The first day:%d",x);
}
2.15
#include
16、)
{
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
17、 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("Thursda
18、y.\n");break;
case 5:printf("Friday.\n");break;
case 6:printf("Saturday.\n");break;
}
}
2.18
#include
19、a*x;
b=(i+1)*b;
}
printf("\nsum=%lf",sum);
}
2.19
#include
20、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] 21、'
(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 22、)
sum=sum+a[i][i];
printf("sum=%d\n",sum);
}
void main()
{
fun();
}
5.2
#include 23、er(0-80) Input=");
scanf("%f",&Input);
if((Input<0)||(Input>70)==1)
goto Loop1;
for(i=0; i<10; i++ )
{
if(Input 24、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 numb 25、ers 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 a 26、s: 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;
}
27、
}
}
}
5.4
#include 28、put2);
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++;
29、 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])& 30、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 31、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 i 32、f(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 33、t 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'; 34、k++,j++)
str1[j]=str2[k];
str1[i+k]='\0';
puts(str1);
}
5.6
#include 35、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" 36、stu[i].score,stu[i].name);
}
5.7
#include 37、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] 38、s %d\\n",p);
else
printf("There is no andian.\\n");
}
5.8
#include 39、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 40、ude 41、put1[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] 42、)&&(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: 43、
二、 填空题
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 44、dio.h>
#include 45、)
{
int count = 0;
char str1[100],str2[100];
char *p1,*p2;
printf("please enter string 1:");
gets(str1);
printf("please enter string 2:");
gets(str2);
printf("str1:%s\n",str1);
printf("str2:%s\n",str2);
p1 = str1;
p2 = str2;
while(*p1!='\0'&&*p2!='\0')
{
46、
if(*p1++==*p2++)
count++;
}
printf("count:%d\n",count);
}
4.2
#include 47、j= i+1;j<3;j++)
{
if(a[j]
#include 48、r s1[N], s2[N],*p;
int m;
printf("please enter string1:");
gets(s1);
p = s1;
printf("enter m:");
scanf("%d",&m);
strcpy(s2,p+m);
printf("string2:%s\n",s2);
}
4.4
#include 49、
char data[100][100]={{0}};
int count=0;
int i;
p = s;
/*
printf("please enter a string:");
gets(p);
*/
printf("sssss:%s\n",s);
while(*p!='\0')
{
i=0;
while(*p>='0'&&*p<='9')
{
data[count][i] = *p;
i++;
p++;
}
if(i!=0)
50、
count++;
p++;
}
printf("count:%d\n",count);
for(i=0;i






