第二章
一.选择题
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>