一、选择题
CCCBB
二、填空题
1、 1 、main() 、main()
2、源可执行(目标)
习题2参考答案
1: …\101?0x1e “ab\n”(2+3)e(4-2)
2: (1) 缺#include
(2) 缺#include
(2) 3, 0, 0, 0
5:
(1)0
(2)0
(3)9.500000
(4)90
(5)10
(6)10
(7)65
(8) 2
(9) 6.500000
(10)0
(11)20
(12)0
6:
(1) (3) (5) (6)
7: 求x的绝对值
8: max=(a>b)?(a>c?a:c) : (b>c?b:c)
9: (1)计算图2-6:h=((fabs(x)-2)* (fabs(x)-2)+ (fabs(y)-2)* (fabs(y)-2)<=1)?10:0;
(2)计算图2-7:h=(fabs(x)<=2&&fabs(y)<=2)?10:0
一、选择题CCDCDA
二、填空题
1、 1
2、 1
3、 2.500000
4、8
三、编程题
(1)
#include
void main()
{
float a=0.11,v0=0.0,v;
int t=50;
v=v0+a*t;
printf("v=%f\n",v);
}
(2)
#include
#include
void main()
{
float a,b,c,s1,s;
printf("Please input a,b,c:");
scanf("%f,%f,%f",&a,&b,&c);
s1=(a+b+c)/2.0;
s=sqrt(s1*(s1-a)*(s1-b)*(s1-c));
printf("s=%f\n",s);
} (3)
#include
void main()
{
char c;
printf("Please input a char:");
scanf("%c",&c);
c=c+32;
printf("%c\n",c);
}
(4)
#include
void main()
{
int a,b;
printf("Please input two numbers:");
scanf("%d,%d",&a,&b);
printf("%d*%d=%d\n",a,b,a*b);
printf("%d/%d=%d\n",a,b,a/b);
printf("%d%%%d=%d\n",a,b,a%b); }
一、选择题
DCCAD AABDD
二、填空题
1、score/10 c prinft(…D?) prinft(…C?) prinft(…B?) prinft(…A?)
2、1, 2
3、(a+b)>c&&(b+c)>a&&(a+c)>b
三、编程题
(1)
#include
void main()
{
int a;
printf("Please input a numbers:");
scanf("%d",&a);
if(a%2==0&&a%4==0&&a%6==0)
printf("%d\n",a);
else
printf("%d is no a asked number!\n",a);
}
(2)
#include
void main()
{
int a;
printf("Please input a numbers:");
scanf("%d",&a);
switch(a)
{
case 97:printf("%c\n",a);break;
case 98:printf("%c\n",a);break;
case 67:printf("%c\n",a);break;
default :printf("ERROR\n");
}
}
(3)
#include
void main()
{
int a,b,c,d,t;
printf("Please input four numbers:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
if(a
{t=a;a=b;b=t;}
if(a {t=a;a=c;c=t;} if(a {t=a;a=d;d=t;} if(b {t=b;b=c;c=t;} if(b {t=b;b=d;d=t;} if(c {t=d;d=c;c=t;} printf("%d,%d,%d,%d\n",a,b,c,d); } (4) #include void main() { int year; printf("Please input a year:"); scanf("%d",&year); if((year%4==0&&year%100!=0)||(year% 400==0)) printf("The year is a leap year.\n"); else printf("The year is not a leap year. \n"); } (5*) #include void main() { int a=13,b=17,i,j; for(i=1;i<30;i++) for(j=1;j<25;j++) if(a*i+b*j==411) printf("a=%d,b=%d\n",a*i,b*j); } 一、选择题 ACCBD DADBC 二、程序填空 1、f = -f m 2、x<0 3、2 4、f=f1+f2 i%5==0 f2=f 三、编程题 1、 #include "stdio.h" void main() { int a,b,n1,n2,r; printf("input 2 numbers:\n"); scanf("%d,%d",&n1,&n2); if(n1 { r=n1; n1=n2; n2=r; } a=n1; /*保存原始数据*/ b=n2; while(b!=0) /*采用碾转除法*/ { r=a%b; a=b; b=r; } printf("最小公倍数:%d\n",n1*n2/a); } 2、 #include "stdio.h" void main() { int n,i,sum=0,j,k; for(n=2;n<=1000;n++) { sum=0; for(i=1;i if(n%i==0) sum=sum+i; if(sum==n) { printf("%d its factors:",n); for(k=1;k if(n%k==0) printf("%d\t",k); printf("\b\n"); } } } 3、 #include "stdio.h" void main() { int x,y,n=1; printf("Please input an integer:"); scanf("%d",&x); y=x; /*保存x的值*/ while(y>10) /*计算x的位数*/ { y=y/10; n++; } printf("digit=%d\n",n); do { printf("%d\t",x%10); n--; x=x/10; }while(n>=1); } 4、 #include "stdio.h" void main() { int x,y,z; for(x=1;x<33;x++) for( y=1;y<50;y++) for(z=2;z<100;z=z+2) if((3*x+2*y+z/2==100)&&(x+y+z==100) ) { printf("大马数量为%d,\t",x); printf("中马数量为%d,\t:",y); printf("小马数量为%d\n",z); } } 5、 方法一: #include "stdio.h" #include "math.h" main() { int x,y,r,temp,result=0,count=0; printf("enter x,r:\n"); scanf("%d,%d",&x,&r); y=x; do{ temp=y%r; result=result+temp*pow(10,count++); y=y/r; }while(y); if(r==16)printf("%d转成%d进制为%x:\n",x,r,x); else printf("十进制整数%d转换成%d进制数为%d:\n",x,r,result); } 方法二: #include void dto2(int n,int r) { if(n>1) dto2(n/r,r); printf("%d",n%r); } void dto8(int n,int r) { if(n>7) dto8(n/r,r); printf("%d",n%r); } void dto16(int n,int r) { if(n>15) dto16(n/r,r); printf("%x",n%r); } void main() { int n,r; printf("请输入整数和进制数n,r: "); scanf("%d,%d",&n,&r); if(r==2) dto2(n,r); else if(r==8) dto8(n,r); else dto16(n,r); printf("\n"); } 第6章习题参考答案 一、选择题 BBAAC C BBBB AABCD B 说明第5小题要改为“说法正确” 二、填空题 1、2,5,1,2,3,-2 2、2468 3、12 4、9.000000 5、n=1 s 三、编程题 1、 #include int f(int x) { int i, s=0; for(i=1;i if(x%i==0) s=s+i; if(s==x) return 1; else return 0; } void main() { int i, flag; for(i=2;i<=1000;i++) { flag=f(i); if(flag==1) printf("i=%d\n", i); } } 2、 #include #include void f(int x) { double y; int i; for(i=0; i<=x; i=i+10) { y=sin(i*3.1415926/180); printf("i=%d, y=%lf\n", i, y); } } void main() { int i=360; f(i); } 3、#include int f(int x) { int i; for(i=2; i if(x%i==0) break; if(i==x)return 1; else return 0; } void main() { int x; scanf("%d", &x); if(f(x)) printf("%d是一个素数!\n", x); else printf("%d不是一个素数!\n", x); } 4、 #include int f(int x) { int i; for(i=2; i if(x%i==0) break; if(i==x)return 1; else return 0; } void main() { int x, c=0; for(x=1000;x>=0;x--) if(f(x)) { printf("%d是一个素数!\n", x); c++; if(c==5)break; } } 5、 #include int f1(int x, int y) { if(y==0) return x; else return f1(y, x%y); } int f2(int x, int y) { int r; r=f1(x, y); return x*y/r; } void main() { int x, y, t; printf("请输入两个正整数x, y: "); scanf("%d, %d", &x, &y); if(x { t=x; x=y; y=t;} printf("两个正整数%d, %d的最大公约数是%d\n",x,y,f1(x, y)); printf("两个正整数%d, %d的最小公倍数是%d\n",x,y,f2(x, y)); } 6、 #include void f(int x,int r) {/*利用函数的递归调用*/ if(x) { f(x/r, r); if(r<10) printf("%d", x%r); else printf("%x", x%r); } } void main() { int x, r; printf("请输入1个十进制正整数x: "); scanf("%d", &x); printf("请输入要转换的进制数r: "); scanf("%d", &r); printf("十进制正整数%d转换成%d进制后的数值为: ",x, r); f(x, r); printf("\n"); } 7、 #include int f(int m, int n) { int s; if(m==n) s=n; else s=n+f(m,n+1); return s; } void main() { int m, n, t, s=0; printf("请输入两个正整数m, n: "); scanf("%d, %d", &m, &n); if(m { t=m; m=n; n=t;} s=f(m, n); printf("s=%d\n", s); } 8、 #include long f(int m) { long s=1; if(m==1||m==0) s=1; else s=m*f(m-1); return s; } void main() { int m, n, t; long cnm; printf("请输入两个正整数m, n: "); scanf("%d, %d", &m, &n); if(m { t=m; m=n; n=t;} cnm=f(m)/f(n)/f(m-n); printf("cnm=%ld\n", cnm); } 9、 #include int f(int m) { int i, j, s=0; for(i=0;i<=20;i++) for(j=0;j<=20;j=j+2) if( i + j ==20) { s++; printf("走法%d: 单步走%d,双步走%d\n",s,i,j/2); } return s; } void main() { int count=0, m=20; count=f(m); printf("count=%d\n", count); } 第7章习题参考答案 一、选择题 ABCCB DADDA ACCAC D 二、填空题 1、标识符 2、常量常量表达式 3、m-1 n-1 4、字符数组 5、数组名 6、s[j++]=s[i] 7、c2= = ?… 三、阅读程序,写出结果 1、1, 2, 3, 2、2, 3, 4, 3、f 4、-4 0 4 4 5、 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 四、编程题 1、 #include void main() { int a[100],i,j,k=0; for(i=1;i<99;i++) a[i]=i+2; for(i=1;i<99;i++) for(j=2;j<=i+1;j++) if(a[i]%j==0) a[i]=0; for(i=1;i<99;i++) if(a[i]!=0) printf("%4d",a[i]); printf("\n"); } 2、 #include void main() { int a[5]={8,6,5,4,1},i,t; for(i=0;i<=5/2;i++) { t=a[i];a[i]=a[4-i];a[4-i]=t;} for(i=0;i<5;i++) printf("%4d",a[i]); printf("\n"); } 3、 #include "stdio.h" void main() { int a[11]={1,3,5,7,9,34,36,67,89,100}; int i,j,x; scanf("%d",&x); for(i=0;i<10;i++) printf("%6d",a[i]); printf("\n"); for(i=0;i<10;i++) if(x for(j=10;j>=i;j--) a[j]=a[j-1]; a[i]=x; for(i=0;i<11;i++) printf("%6d",a[i]); printf("\n"); } 4、 #include "stdio.h" #define size 5 void main() { int a[size][size]; int i,j,s=0; for(i=0;i for(j=0;j scanf("%d",&a[i][j]); for(i=0;i { for(j=0;j printf("%-4d",a[i][j]); printf("\n"); } for(i=0;i s=s+a[i][i]; for(i=0;i s=s+a[i][size-i-1]; s=s-a[size/2][size/2]; printf("sum is %d \n",s); } 5、 #include "stdio.h" #define n 4 #define m 3 void main() { int a[n][m],b[n]; int i,j,num=0; for(i=0;i for(j=0;j scanf("%d",&a[i][j]); for(i=0;i { printf("%d:",i+1); for(j=0;j printf("%4d",a[i][j]); printf("\n"); } for(i=0;i { num=0; for(j=1;j if(a[j][i]>a[num][i]) num=j; b[i]=num; } for(i=0;i printf("The %dth lesson:the highest score:%d,Num:%d\n",i+1,a[b[i]][i],b[i]+1); } 6、#include void main() { int a[3][4],i,j,max,t,c; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); for(i=0;i<3;i++) { max=a[i][0];t=0; for(j=0;j<4;j++) { if(a[i][j]>max) { max=a[i][j]; t=j; } } c=1; for(i=0;i<3;i++) if(max>a[i][t]) c=0;break; } if(c==0)printf("No"); if(c==1)printf("max=%d",max); } 7、 #include "stdio.h" #include "string.h" void main() { int a=0,b=0,c=0,d=0,n; char str[255]; gets(str); n=0; while(str[n]!='\0') { if(str[n]>='A'&&str[n]<='Z'||str[n]>='a'& &str[n]<='z')a++; else if(str[n]==' ')b++; else if(str[n]>='0'&&str[n]<='9')c++; else d++; n++; } printf("English letter:%d,Blank:%d,Digital letter:%d,the other letter:%d\n",a,b,c,d); } 8、 #include "stdio.h" int slen(char ss[]) { int len=0; while(ss[len]!='\0') len++; return len; } void main() { char s[255]; gets(s); printf("The string lenght is:%d\n",slen(s)); } 9、 #include "stdio.h" #include "string.h" void fun(char ss[],char ch) { int i,j,len; len=strlen(ss); for(i=0;i { if(ss[i]==ch) { for(j=i;j ss[j]=ss[j+1]; len--; } ss[len]='\0'; } } void main() { char s[255],ch; gets(s); scanf("%c",&ch); printf("\n"); puts(s); fun(s,ch); puts(s); } 10、 #include "stdio.h" #include "string.h" void fun(char ss1[],char ss2[]) { int i,j=0,len; len=strlen(ss1); for(i=0;i { if(i%2==0) { ss2[j]=ss1[i]; j++; } i++; } ss2[j]='\0'; } void main() { char s1[255],s2[255]; gets(s1); puts(s1); fun(s1,s2); puts(s2); } 第8章习题参考答案 一、选择题 CCCBD DDDBA 二、填空题 1、First: This is FUN! Scond: FUN 2、全局性 3、#include 4、文件包含条件编译 第9章习题参考答案 一、选择题 DDDDD AADCB 二、填空题 1、指向二维数组的行指针变量函数名(该函数返回一个指针!) 2、(本题有错,请删除“请指出….定义中q是____。”)p=a; 3、7 1 4、指针变量 5、6 980 6、15 4 12 7、a teacher 8、原程序错误,需要修改其main()中的第1和第2条语句,如下: char pp1[10]=”two”,pp2[10]=”three”,str[80]=”one”,*p1,*p2; p1=pp1;p2=pp2; 之后的运行结果为:onworee 9、6,6 三、编程题 1、 #include "stdio.h" void main() { int a[5]={2,4,6,8,10},*p,i,mul=1; p=a; for(i=0;i<5;i++) mul=mul*(*p++); printf("%d\n",mul); } 2、 #include "stdio.h" void fun(int *p,int n) { int t,i,j; for(i=0;i { for(j=i+1;j if(p[i]>p[j]) { t=p[i]; p[i]=p[j]; p[j]=t; } } } void main() { int a[10],*pa=a,i; for(i=0;i<10;i++) scanf("%d",pa++); pa=a; fun(pa,10); for(i=0;i<10;i++) printf("%4d",*pa++); } 3、 #include "stdio.h" void fun(int *p,int n) { int t,i,max=p[0],min=p[0],m1=0,n1=0; for(i=1;i { if(p[i]>max) { max=p[i]; m1=i; } if(p[i] { min=p[i]; n1=i; } } t=p[m1];p[m1]=p[n1];p[n1]=t; } void main() { int a[10],*pa=a,i; for(i=0;i<10;i++) scanf("%d",pa++); pa=a; fun(pa,10); for(i=0;i<10;i++) printf("%4d",*pa++); } 4、 #include "stdio.h" #include "string.h" void fun(char *p1) { char t; int i,len=strlen(p1); for(i=0;i { t=p1[i];p1[i]=p1[len-i-1];p1[len-i-1]=t; } } void main() { char c[30],*p=c; gets(p); fun(p); puts(p); } 5、 #include "stdio.h" #include "string.h" void main() { int w=1,n; char str[255]; gets(str); n=0; while(str[n]!='\0') { if(str[n]==' '&&str[n+1]!=' ')w++; n++; } printf("The words is :%d\n",w); } 6、 #include "string.h" void fun(char *ss1,char *ss2,int w) { char p[80],q[80]; int i; for(i=0;i p[i]=ss1[i]; p[i]='\0'; for(i=w;i q[i-w]=ss1[i]; q[i-w]='\0'; strcat(p,ss2); strcat(p,q); strcpy(ss1,p); } void main() { int w; char s1[255],s2[80]; printf("Please input a first string:"); gets(s1); printf("Please input a second string:"); gets(s2); printf("Please insert position:"); scanf("%d",&w); fun(s1,s2,w); printf("%s\n",s1); } 7、 #include "stdio.h" int fun1(int (*s)[3],int a,int b) { int i,j,s1=0; for(i=0;i for(j=0;j if(j>i)s1=s1+*(*(s+i)+j); return s1; } int fun2(int (*s)[3],int a,int b) { int i,j,s2=0;