1、输入函数scanf的参数错误,应该为:scanf("%f",&k);
2、|1234 1234 |
3、ff10
4、1,3,1
5、原字符串左边加空格再加字符串本省,字符个数总和为5个
6、scanf("%d,%d,%c,%c",&a1,&a2,&c1,&c2);
7、
printf("a+b=%d\n",a+b);
printf("a-b=%d\n",a-b);
printf("a*b=%d\n",a*b);
printf("a/b=%d\n",a/b);
printf("(float)a/b=%f\n",(float)a/b);
printf("a%b=%d\n",a%b);
8、
void main()
{ float r; float s,c;
printf("please input the number:");
scanf("%f",&r);
if(r>=0)
{ s = 3.14*r*r;
c = 2*3.14*r;
printf("s = %f, c = %f\n",s,c);
}
else
printf("you input number is error!");
}
9
void main()
{int n;
printf("please input the number:");
scanf("%d",&n);
if(n>=100 && n <= 999)
printf("%d%d%d",n%10,(n/10)%10,n/100);
else
printf("you input number is error!");
}
10、
void main()
{ int i,j,k;
scanf("%d,%d,%d",&i,&j,&k);
((i%2 != 0?1:0) + (j%2 != 0?1:0)+(k%2 != 0?1:0)) == 2?printf("YES\n"):printf("NO\n"); }
11、
void main()
scanf("%c",&a);
printf("%c,%c,%c",a-1,a,a+1);
printf("%d,%d,%d",a-1,a,a+1);
}
12、void main()
{float a,b,c,s,Area;
scanf("%f,%f,%f",&a,&b,&c);
if(a+b > c || a+c > b || b+c >a)
{ s = (a+b+c)/2;
Area = sqrt(s*(s-a)*(s-b)*(s-c));
printf("%f\n",Area);
}
else
printf("you input the number is error!\n"); }
习题4
1:0
2:20
3:(x<30&&x>20)||(x<-100)
4: ***a=25,b=14,c=16***
5: 37
6: if(a<=b) printf("1");
else printf("2");
7、
#include
void main()
{ char a,b,t1,t2;
scanf("%c,%c",&a,&b);
t1=a>b?a:b;
t2=a
if((t1-t2)%2==0)printf("%c,%c",a+1,b+1); else
printf("%c,%c",a-1,b-1);
getch();
}
8、#include
void main()
{ int temp1=0,temp2=0,x,y,i=1;
printf("Please input (x,y): ");
scanf("%d,%d",&x,&y);
while((i*y)<=x)
{ if(x==(i*y)) {temp1=1;break;}
temp2=i; i++; }
printf("%d / %d = %d",x,y,i);
else
printf("%d / %d---> shang=%d,yushu=%d",x,y,temp2,x-y*temp2); getch();
}
9、#include
void main()
{ float x,y,m=0,n=0;
scanf("%f,%f",&x,&y);
n=(x-2)*(x-2);
m=(y-2)*(y-2);
if((m+n)<=1)
printf("(%.3f,%.3f)In the yuan",x,y);
else
printf("(%.3f,%.3f)out of the yuan",x,y);
getch();
}
10、#include
void main()
{
int temp=0,month,year;
printf("Please input (year,month): ");
scanf("%d,%d",&year,&month);
if((year%400==0)||(year%4==0&&year%100!=0))
temp=1;
if(month==2)
{ if(temp)printf("%d year %d month have 29 ",year,month);
else printf("%d year %d month have 28 ",year,month);
}
else if(month%2==0)
printf("%d year %d month have 30 ",year,month);
else printf("%d year %d month have 31 ",year,month);
getch();
}
11、switch(a/10)
{ case 5:m=4;break;
case 4:m=3;break;
case 3:m=2;break;
case 2:m=1;break;
default:m=5;
}
12、方法一:
#include
{ int x,y;
scanf("%d",&x);
if(x<0&&x>-5)
y=x-1;
else if(x==0)
y=x;
else if(x>0&&x<8)
y=x+1;
printf("%d",y);
getch();
}
方法二:
#include
void main()
{ int x,y;
scanf("%d",&x);
if(x<8&&x>-5)
if(x==0)y=x;
{
float x,y,t;
printf("Enter two number (x,y): "); scanf("%f,%f",&x,&y);
SWAP(x,y);
printf("\n\nExchanged:x=%f,y=%f",x,y); getch();
}
5、
#include
int fib(int n)
{int p;
if(n==0) p=0;
else if(n==1) p=1;
else p=fib(n-1)+fib(n-2);
return p;
}
void main()
{int n;
printf("Please input fib: ");
scanf("%d",&n);
printf("\n\nfibonacci=%d",fib(n));
}
6、
#include
{long f;
if(n==0)
f=1;
else
f=n*fac(n-1);
return f;
}
void main()
{int m,n;long f;
printf("Please input (m,n): "); scanf("%ld,%ld",&m,&n);
f=fac(n+m)+fac(n);
printf("\n\nfibonacci=%ld",f);
}
7、
#include
void list()
{int i,j;
for(i=1;i<=9;i++)
{ for(j=1;j<=i;j++)
printf("%d*%d=%d ",i,j,i*j); printf("\n");
}
}
void main()
{list();}
8、
#include
int he(int n)
{int i,s=0;
for(i=1;i if(n%i==0)s+=i; return s; } void main() { int i,j; for(i=1;i<30000;i++) {for(j=1;j<30000;j++) if((he(i)==j)&&(he(j)==i)&&(i!=j)) printf("%d<--->%d ",i,j); } } #include #define max 100 struct work { long sid; char name[15]; }worker[max]; int size=0; struct work *set_list() { do { printf("\n\nPlease input (sid,name): "); scanf("%ld,%s",&worker[size].sid,worker[size].name); size++; }while(worker[size-1].sid!=0); return worker; } void paixu(struct work a[]) { int i,j,k;long t;char v[15]; for(i=0;i {k=i; for(j=i;j if(a[i].sid>a[j].sid)k=j; if(k!=i) {t=a[i].sid; a[i].sid=a[j].sid; a[j].sid=t; strcpy(v,a[i].name);strcpy(a[i].name,a[j].name);strcpy(a[j].name,v); } } for(i=0;i<=size-2;i++) printf("sid: %ld\tname:%s\n\n",a[i].sid,a[i].name); getch(); } void select(struct work a[]) {int i=0,found=1;long num; printf("Input select sid: "); scanf("%ld",&num); for(i=0;i<=size-2;i++) { if(a[i].sid==num) { found=0; printf("%ld: %s",num,a[i].name); } } if(found)printf("\n\nNO this sid!!!"); getch(); } void main() {struct work *p; p=set_list(); paixu(p); select(p); } 10、 #include float jiecheng(int n) { long s=1;int i; for(i=1;i<=n;i++) s=s*i; return s; } float chengfang(float x,int n) { float s=1;int i; for(i=1;i<=n;i++) s=s*x; return s; } float f(float x,int n) { float s=1,t=0;int i=1,j=-1; for(i=1;i<=n;i++) { t=j*chengfang(x,2*i)/jiecheng(2*i); s+=t; j=j*j; } return s; } main() { float s1=0,s2=0,s3=0,s4=0,x=5.6;int n=7; s1=f(x,n); s2=f(x+2.3,n); s3=f(x-3.2,n+3); s4=s1/(s2+s3); printf("%f",s4); getch(); } 习题7 1:(1)D(2)A(3)D(4)B(5)D 2:(1)1 5 4 46 7 82 34(2)6333 3:(1)a[8]=data; k>=0 a[k]=temp break k<=8 (2) "%s" str[i]<='Z' c[str[i]+26-'a']++ i+'a' 4、/*题目:求一组成绩的平均分数以及高于平均分的成绩。*/ #include #define max 100 void main() {float a[max],s=0,average=0; int i,n; printf("Please input N: "); /*输入要处理元素的个数*/ scanf("%d",&n); printf("\nPlease input %d ge shu: ",n); /*输入90,85,92,77,80,62*/ for(i=0;i {scanf("%f",&a[i]); s+=a[i]; } average = s / n; printf("\naverage = %.2f\n",average); /*输出81.00*/ for(i=0;i if(a[i]>average) printf("%.2f ",a[i]); /*输出90.00,85.00,92.00*/ } 5、/*题目:编写程序,输入一组整数,将他们排序后由小到大输出。*/ #include #define max 100 void main() { int a[max],j,i,k=0,t=0,n=0; printf("Please input N: "); /*输入要处理元素的个数*/ scanf("%d",&n); for(i=0;i scanf("%d",&a[i]); for(i=0;i { k=i; for(j=i+1;j if(a[k]>a[j]) k=j; if(k!=i) /*元素排序前下标与排序后下标不符,则交换其值*/ { t=a[i]; a[i]=a[k]; a[k]=t; } } printf("\n\n"); for(i=0;i printf("%d ",a[i]); } 6、/*题目:从键盘输入一个4x4的整数矩阵,以主对角线(\)为对称轴*/ /*将左下角元素中较大者替换右上角元素,并将右上角含对称轴输出。*/ #include #include void main() { int d[4][4]={{0,0,0,0}},i,j; clrscr(); printf("\nPlease input 16 num: "); for(i=0;i<4;i++) for(j=0;j<4;j++) scanf("%d",&d[i][j]); for(i=0;i<4;i++) for(j=0;j<4;j++) if(d[i][j]>d[j][i]) /*左下角元素大于右上角元素则交换*/ d[j][i]=d[i][j]; for(i=0;i<4;i++) { printf("\n\n\n\n\n");/*为了保持每行的间隔与每列的相同*/ for(j=0;j<4;j++) if(j>=i) printf("\t%d",d[i][j]);/*为了使位数不同的数输出依然保持三角型*/ else printf("\t"); } } 7、*题目:输入一个3x4的二维数组,然后分别按行和按列输出。*/ #include #include void main() { int d[3][4]={{0,0,0,0}},i,j; printf("Please input 12 num: "); for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&d[i][j]); printf("\n\nAn hang: "); for(i=0;i<3;i++) for(j=0;j<4;j++) printf("%d ",d[i][j]); printf("\n\nAn lie: "); for(i=0;i<4;i++) for(j=0;j<3;j++) printf("%d ",d[j][i]); } 8、/*题目:编写程序,将两个字符串连接起来,不用strcat函数。*/ #include #include void main() { char s1[50],s2[50]; int i=0,j=0,t=0; printf("Input one: "); gets(s1); while(s1[i]!='\0') i++; /*统计s1中字符个数*/ printf("\n\nInput second: "); gets(s2); while(s2[j]!='\0') j++; /*统计s2中字符个数*/ for(t=0;t<=j;t++) /*把s2中字符连接到s1后面*/ { s1[i]=s2[t]; i++;} printf("\n\none + second: "); puts(s1); } 9、/*输入一行字符串,统计字符对ab的个数。*/ #include #include #define MAX 100 void main() { char str[MAX]; int i=0,flage=0; int count=0; printf("\nPlease input a string: "); gets(str); while(str[i]) { if(str[i]=='a') else if(str[i]=='b') { if(flage==1) { count++;flage=0;} } else flage=0; i++; } printf("the double char \"ab\" count is %d\n",count); } 10、#include #include int paixu(int a[],int n) /*构造对长度为n的数组排序的函数*/ { int i,j,t,k,temp; for(i=0;i { k=i; for(j=i+1;j if(a[k]>a[j]) k=j; if(k!=i) { t=a[i]; a[i]=a[k]; a[k]=t; } } temp=a[n-1]; return temp; /*返回最大字符串的长度的值*/ } void main() { char str1[50],str2[50],str3[50],str4[50],str5[50],str6[50]; char str7[50],str8[50],str9[50],str10[50]; int count[10]={0},temp[10]={0},i,j; int paixu(int a[],int n); for(i=1;i<=10;i++) /*输入10个字符串*/ { printf("\nPlease input %d string: ",i); if(i==1) { gets(str1);while(str1[count[0]]){count[0]++;temp[0]++; }} if(i==2) { gets(str2);while(str2[count[1]]){count[1]++;temp[1]++;}} { gets(str3);while(str3[count[2]]){count[2]++;temp[2]++; }} if(i==4) { gets(str4);while(str4[count[3]]){count[3]++; temp[3]++;}} if(i==5) { gets(str5);while(str5[count[4]]){count[4]++; temp[4]++;}} if(i==6) { gets(str6);while(str6[count[5]]){count[5]++; temp[5]++;}} if(i==7) { gets(str7);while(str7[count[6]]){count[6]++; temp[6]++;}} if(i==8) { gets(str8);while(str8[count[7]]){count[7]++; temp[7]++;}} if(i==9) { gets(str9);while(str9[count[8]]){count[8]++; temp[8]++;}} if(i==10) { gets(str10);while(str10[count[9]]){count[9]++;temp[9]++;}} } j=paixu(temp,10); for(i=1;i<=10;i++) { if(count[i-1]==j) { /*只要字符串长度与最大长度相等就打印出来*/ switch(i) { case 1:puts(str1); printf("\n"); break; case 2:puts(str2); printf("\n"); break; case 3:puts(str3); printf("\n"); break; case 4:puts(str4); printf("\n"); break; case 5:puts(str5); printf("\n"); break; case 6:puts(str6); printf("\n"); break; case 7:puts(str7); printf("\n"); break; case 8:puts(str8); printf("\n"); break; case 9:puts(str9); printf("\n"); break; case 10:puts(str10); printf("\n"); break; 11、/*给数组a输入m个按升序排列的数,给数组b输入n个按降序排列的数*/ /*将a与b中的元素按降序排列存在数组c中。*/ #include void main() { int a[100],b[100],c[100],i,m,n,j,k,temp=0,s; printf("\nm = ");scanf("%d",&m); /*确定M的个数*/ printf("\nn = ");scanf("%d",&n); /*确定N的个数*/ printf("\nPlease input m ge shu: "); for(s=0;s scanf("%d",&a[s]); printf("\nPlease input n ge shu: "); for(s=0;s scanf("%d",&b[s]); i=m-1;j=0;k=0; /*i,j,分别标记a[]与b[]且都是从最大元素开始做标记*/ for(;;) { if(i==0) /*a[]中只有一个数或者a[]处理到了最后一个元素*/ { if(a[i]<=b[j]) /*如果a[]的最后一个元素<=b[]中当前元素*/ { c[k]=b[j]; k++; j++; } else { c[k]=a[i]; k++; for(;;) /*把b[]数组接到c[]后面*/ { c[k]=b[j]; j++; k++; if(j==n) /*如果b[]处理完,结束。并做标记temp=1*/ { temp=1;break; } } } } if(temp==1)break; /*标记temp=1,全部处理结束*/ if((a[i]<=b[j])&&(i!=0)&&(j!=n)) { c[k]=b[j]; j++; k++; } if((a[i]>b[j])&&(i!=0)&&(j!=n)) { c[k]=a[i]; i--; k++; } if(j==n) /*b[]处理到完*/ { for(;;) /*把b[]数组接到c[]后面*/ { if(i==0) /*如果a[]处理完,结束。并做标记temp=1*/ { c[k]=a[i];temp=1;break; } c[k]=a[i]; i--; k++; } }if(temp==1) break;/*标记temp=1,全部处理结束*/ } for(s=0;s printf("%d ",c[s]); getch(); } /21 1、用筛选法求100之内的素数。解: #include {printf("a[%d]=",i); scanf("%d",&a[i]); } printf("\n"); printf("The orginal numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); for (i=1;i<=9;i++) {min=i; for (j=i+1;j<=10;j++) if (a[min]>a[j]) min=j; temp=a[i]; a[i]=a[min]; a[min]=temp; } printf("\nThe sorted numbers:\n"); for (i=1;i<=10;i++) printf("%5d",a[i]); printf("\n"); return 0; } 3、求一个3×3的整型矩阵对角线元素之和。解: #include 1.6 编写一个程序,输入a、b、c 三个值,输出其中最大值。 课后习题答案完整版 第一章 1.5 请参照本章例题,编写一个C 程序,输出以下信息: ************************** Very Good! ************************** 解:mian() {int a,b,c,max; printf( “请输入三个数a,b,c:\n ” ); scanf( “%d,%d,%”d ,&a,&b,&c); C语言程序设计第三版谭浩强 解: mian() {printf( ”); “************************** printf( “”X “ n” ); printf( “Very Good!” \ n”); printf( “”X “ n” ); printf( “************************** ); max=a; if(max {char #include 7.1 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 参考程序如下: #include return(flag); } main() { int n,flag; // flag标志 printf("\nInput n:"); scanf("%d",&n); flag=aa(n); if(flag==1) printf("%d is a prime number.\n",n); else printf("%d is not a prime number.\n",n); } 7.4 写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。 参考程序如下: #include 练习6-1答案 一、选择题 1.已知函数abc的定义为: void abc() {……} 则函数定义中void的含义是( A )。 A.执行函数abc后,函数没有返回值B.执行函数abc后,函数不再返回C.执行函数abc后,可以返回任意类型 D.以上三个答案全是错误的 2.已知:int p();,p是( C )。 A.int型变量 B.函数p的调用 C.一个函数声明,该函数的返回值是int型的值 D.强制类型转换表达式中的变量 3.以下正确的函数形式是( D )。 A.double fun(int x, int y) B.fun(int x, y) { z=x+y; return z; } { int z; return z; } C.fun(x, y) D.double fun(int x, int y) { int x, y; double z; z=x+y; return z; } { double z; z=x+y; return z; } 4.以下说法正确的是( C )。 A.定义函数时,形参的类型说明可以放在函数体内 B.return后边的值不能为表达式 C.如果函数值的类型与返回值表达式的类型不一致,以函数值类型为准 D.如果形参与实参的类型不一致,以实参类型为准 5.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是( B )。 A.float 型B.int型C.long型D.double型6.下面函数调用语句含有实参的个数为( B )。 func((exp1, exp2), (exp3, exp4, exp5)); A.1 B.2 C.4 D.5 7.以下程序的功能是计算函数F(x, y, z)=(x+y)/(x-y)+(z+y)/(z-y)的值,请选择填空。 #include 第一章程序设计和C语言【第15页】 1-5 #include 3-2-1 #include C 语言程序设计(第三版)习题库 1、设圆半径r=,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。用scanf 输入数据,输出计算结果,输出时要求文字说明,取小数点后两位数字。请编程序。 #include<> main(){ floatr,h,C1,Sa,Sb,Va,Vb; scanf(__”%f ”__,&r); scanf(”%d ”,__&h _);; C1=2**r; Sa=*r*r; Sb=4*Sa; Va=4**r*r*r/3; Vb=Sa*h; printf(___”Cl=%.2fSa=%.2fSb=%.2fVa=%.2fVb=%.2f ”,Cl,Sa,Sb,Va,Vb ); } 2、输入一个华氏温度,要求输出摄氏温度。公式为c=5(F-32)/9 输出要求有文字说明,取位2小数。 #include<> main(){ floatF,c; scanf("%f",&F); ____c=5*(F-32)/9______; printf("c=%.2f",c); } 3、有一函数:?? ???≥-<≤-<=10113101121x x x x x x y 写一程序,输入x 值,输出y 值。 #include<> main(){ intx,y; printf("输入x :"); scanf("%d",&x); if(x<1){/*x<1*/ y=x; printf("x=%3d,y=x=%d\n",x,y); }elseif(____x<10_______){/*1≤x-10*/ _____y=2*x-1_______; printf("x=%3d,y=2*x-1=%d\n",x,y); }else{/*x≥10*/ y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d\n",y); }#include"" main() { intx,y; scanf("%d",&x); if(x<1) {y=x;} elseif(x>=1&&x<10) {y=2*x-1;} else {y=3*x-11;} printf("%d",y); }scanf("%d",&x); 第1章程序设计和C语言1 1.1什么是计算机程序1 1.2什么是计算机语言1 1.3C语言的发展及其特点3 1.4最简单的C语言程序5 1.4.1最简单的C语言程序举例6 1.4.2C语言程序的结构10 1.5运行C程序的步骤与方法12 1.6程序设计的任务14 1-5 #include 2.5结构化程序设计方法34 习题36 第章最简单的C程序设计——顺序程序设计37 3.1顺序程序设计举例37 3.2数据的表现形式及其运算39 3.2.1常量和变量39 3.2.2数据类型42 3.2.3整型数据44 3.2.4字符型数据47 3.2.5浮点型数据49 3.2.6怎样确定常量的类型51 3.2.7运算符和表达式52 3.3C语句57 3.3.1C语句的作用和分类57 3.3.2最基本的语句——赋值语句59 3.4数据的输入输出65 3.4.1输入输出举例65 3.4.2有关数据输入输出的概念67 3.4.3用printf函数输出数据68 3.4.4用scanf函数输入数据75 3.4.5字符数据的输入输出78 习题82 3-1 #include 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。 hcf(u,v) int u,v; { int a,b,t,r; if(u>v) { t=u;u=v;v=t; } a=u;b=v; while((r=b%a)!=0) { b=a;a=r; } return(a); } lcd(u,v,h) int u,v,h; { int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%dn",h); l=lcd(u,v,h); printf("L.C.d=%dn",l); return(u*v/h); } #include void main() { int u,v,h,l; scanf("%d,%d",&u,&v); h=hcf(u,v); printf("H.C.F=%dn",h); l=lcd(u,v,h); printf("L.C.D=%dn",l); } 7.2 求方程根 float x1,x2,disc,p,q; greater_than_zero(a,b) float a,b; { x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); } equal_to_zero(a,b) float a,b; { x1=x2=(-b)/(2*a);} smaller_than_zero(a,b) float a,b; { p=-b/(2*a); q=sqrt(disc)/(2*a); } main() { float a,b,c; printf("n输入方程的系数a,b,c:n"); scanf("%f,%f,%f",&a,&b,&c); printf("n 方程是:% 5.2f*x*x+%5.2f*x+%5.2f=0n",a,b,c); disc=b*b-4*a*c; printf("方程的解是:n"); if(disc>0) { great_than_zero(a,b); printf("X1=%5.2ftX2=%5.2fnn",x1,x2); } else if(disc==0) { zero(a,b); printf("X1=%5.2ftX2=%5.2fnn",x1,x2); } else { small_than_zero(a,b,c); printf("X1=%5.2f+%5.2fitX2=%5.2f-%2.2fin",p,q,p,q); 第七章函数 7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果两个整数由键盘输入。 maxyueshu(m,n) int m,n; { int i=1,t; for(;i<=m&&i<=n;i++) {if(m%i==0&&n%i==0) t=i; } return(t); } minbeishu(m,n) int m,n; {int j; if(m>=n) j=m; else j=n; for(;!(j%m==0&&j%n==0);j++); return j; } main() {int a,b,max,min; printf("enter two number is: "); scanf("%d,%d",&a,&b); max=maxyueshu(a,b); min=minbeishu(a,b); printf("max=%d,min=%d\n",max,min); } 7.2求方程的根,用三个函数分别求当b2-4ac大于0、等于0、和小于0时的根,并输出结果。从主函数输入a、b、c的值。 #include"math.h" float yishigen(m,n,k) float m,n,k; {float x1,x2; x1=(-n+sqrt(k))/(2*m); x2=(-n-sqrt(k))/(2*m); printf("two shigen is x1=%.3f and x2=%.3f\n",x1,x2); } float denggen(m,n) float m,n; {float x; x=-n/(2*m); printf("denggen is x=%.3f\n",x); } 教材习题答案 第一章 习题 一、单项选择题 1. C 2. B 3. B 4. C 5. D 6. A 7. C 8. A 二、填空题 1. 判断条件 2. 面向过程编程 3. 结构化 4. 程序 5. 面向对象的程序设计语言 6. 基本功能操作、控制结构 7. 有穷性 8. 直到型循环结构 9. 算法 10.可读性 11.模块化 12.对问题的分解和模块的划分 习题 一、单项选择题 1. B 2. D 3. C 4. B 5. A 6. A 7. B 8.C 二、填空题 1. 主 2. C编译系统 3. 函数、函数 4. 输入输出 5. 头 6. .OBJ 7. 库函数 8. 文本 第三章 习题 一、单项选择题 1. D 2. B 3. A 5. C 6. D 7. D 8. B 9. B 10.C 11.A 12.D 13.C 14.C 15.C 16.A 17.C 18.C 19.C 20.D 21.A 22.D 23.D 24.D,A 25.D 26.A 27.B 二、填空题 1. 补码 2. 308 10 - ± ~)308 10 ,15 —6 2. 308 10 - ± (~)308 10 ,15 6 3. 逻辑 4. 单目,自右向左 5. 函数调用 6. a 或 b ( 题目有错 , 小括号后面的 c<=98 改成( c>=97&&c<=98 )就可以得到所给的答案了) 7. 8. 65 , 89 第四章 习题 一、单项选择题 1. D 2. C 3. D 4. A 5. D 6. B 7. A 8. C 9. B 10.B 二、填空题 1. 一 实验四参考答案(参考答案) (1) 设计程序sy5-1.c,从键盘上输入一个3行3列矩阵各个元素的值,输出其主对角线元素和反向对角线元素之和。 算法分析: 对角线上的元素,1维和2维下标相同,反对角线元素,如果行下标为i,列下标就为2-i; 参考答案: #include printf("\n"); } min=a[0][0];row=0;colum=0; //首先把第一个数a[0][0]看成最小数 for(i=0;i<3;i++) //双重循环逐一遍历每个元素a[i][j] for(j=0;j<4;j++) if(min>a[i][j]) //如果当前值a[i][j]比最小值还要小 {min=a[i][j];row=i;colum=j;} //用a[i][j]改写最小值,并记下他们的下标printf("矩阵中最小元素是:%d,行下标是:%d,列下标是%d\n",min,row,colum); return 0; } 运行结果: (3) 设计程序sy5-3.c,定义一个3×3的二维数组,通过随机函数自动赋值。然后输入一个整数n,使数组左下三角(含对角线元素)元素中的值乘以n 。例如:若n的值为3,a 数组中的值为 | 1 9 7 |则程序运行后a数组中的值应为| 3 9 7 | | 2 3 8 | | 6 9 8 | | 4 5 6 | | 12 15 18 | 算法分析: 主要理解到对角线即以下元素包含哪些元素,即他们的下标变化。对每一行i来说,对角线以下的元素,他们的列下标是0,1,2,---,i;所以用外循环i遍历行,内循环j(从0到i),逐一遍历每一个a[i][j],并给a[i][j]赋值为他的n倍。最后输出矩阵。 参考答案: #include C语言程序设计第三版谭浩强 课后习题答案完整版 第一章 1.5请参照本章例题,编写一个C程序,输出以下信息:************************** V ery Good! ************************** 解: mian() {printf(“**************************”); printf(“\n”); printf(“V ery Good!\n”); printf(“\n”); printf(“**************************”); } 1.6 编写一个程序,输入a、b、c三个值,输出其中最大值。解: mian() {int a,b,c,max; printf(“请输入三个数a,b,c:\n”); scanf(“%d,%d,%d”,&a,&b,&c); max=a; if(max main() { char c1=?C?,c2=?h?,c3=?i?,c4=?n?,c5=?a?; c1+=4; c2+=4; c3+=4; c4+=4; c5+=4; printf("密码是%c%c%c%c%c\n",c1,c2,c3,c4,c5); } 运行结果: 密码是Glmre 3.9求下面算术表达式的值。 (1)x+a%3*(int)(x+y)%2/4 设x=2.5,a=7,y=4.7 (2)(float)(a+b)/2+(int)x%(int)y 设a=2,b=3,x=3.5,y=2.5 (1)2.5 (2)3.5 3.10写出程序运行的结果。 main() {int i,j,m,n; i=8; j=10; m=++i; n=j++; printf(“%d,%d,%d,%d”,i,j,m,n); } 解: 9,11,9,10 3.12 写出下面表达式运算后a的值,设原来a=12。设a和n都已定义为整型变量。 (1)a+=a (2)a-=2 (3)a*=2+3 (4)a/=a+a (5)a%=(n%=2),n的值等于5 (6)a+=a-=a*=a 解: (1) 24 (2) 10 (3) 60 (4) 0 (5) 0 (6) 0 第四章 4.4若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。想得到以下输出格式和结果,请写出程序(包括定义变量类型和设计输出)。 a=_3_ _b=_4_ _c=_5 x=1.200000,y=2.400000,z=-3.600000 x+y=_3.600_ _y+z=-1.20_ _z+x=-2.40 c1=ˊaˊ_or_97(ASCII) 1.下列对C语言字符数组的描述中错误的是( )。 (A)字符数组可以存放字符串 (B)字符数组中的字符串可以整体输入、输出 (C)可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值 (D)不可以用关系运算符对字符数组中的字符串进行比较 2.不能把字符串:Hello!赋给数组b的语句是( )。 (A)char b[10]={'H','e','l','l','o','!'}; (B)char b[10];b="Hello!"; (C)char b[10];strcpy(b,"Hello!"); (D)char b[10]="Hello!"; 3.若有以下说明: int a[12]={1,2,3,4,5,6,7,8,9,10,11,12}; char c='a',d,g; 则数值为4的表达式是( )。 (A)a[g-c] (B)a[4] (C)a['d'-'c'] (D)a['d'-c] 4.以下程序的输出结果是( ) (A) 20 (B) 21 (C) 22 (D)23 main() { int i, k, a[10], p[3]; k=5; for (i=0;i<10;i++) a[i ]=i; for (i=0;i<3;i++) p[i ]=a[i *(i+1)]; for (i=0;i<3;i++) k+=p[i] *2; printf("%d\n",k); 5.以下程序的输出结果是( )。 (A) 1,5,9 (B) 1,4,7 (C) 3,5,7 (D)3,6,9 main() { int i, x[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++) printf("%d,",x[i][2-i]); 6.下面程序运行的结果是( )。 (A) 2ba56 (B) 6521 (C) 6 (D) 62 main() { char ch[7]={“65ab21“}; int i,s=0 for(i=0;ch[i]>='0' && ch[i]<='9';i+=2) s=10*s+ch[i]-'0'; printf("%d\n",s); } 7.合法的数组定义是( )。 (A)int a[]="string"; (B)int a[5]={0,1,2,3,4,5}; (C)char s[6]="string"; (D)char a[]={0,1,2,3,4,5}; 8.函数调用:strcat(strcpy(str1,str2),str3)的功能是( )。 (A)将串str1复制到串str2中后再连接到串str3之后 (B)将串str1连接到串str2之后再复制到串str3之后 (C)将串str2复制到串str1中后再将串str3连接到串str1之后 习题 第三章 #include } } } return 0; } 第四章 计算分段函数值 #include C语言第六章数组习题 第六章数组 6.1 选择题 [题]在C语言中,引用数组元素时,其数组下标的数据类型允许是_____. A)整型常量B)整型表达式 C)整型常量或整型表达式D)任何类型的表达式 [题]以下对一维整型数组a的正确说明是_____。 A)int a(10);B)int n=10,a[n]; C)int n;D)#define SIZE 10 scanf(\%d,&n);int a[SIZE]; int a[n]; [题]若有说明:int a[l0];则对a数组元素的正确引用是_____。 A) a[10] B)a[3.5] C)a(5) D)a[10-10] [题]在C 语言中,一维数组的定义方式为:类型说明符数组名_____。 A)[常量表达式] B)[整型表达式] C)[整型常量]或[整型表达式] D)[整型常量] [题]以下能对一维数组a进行正确初始化的语句是_____。 A)int a[l0]=(0,0,0,0,0); B)int a[l0]={}; C)int a={0};D)int a[10]={10*1}; [题]以下对二维数组a的正确说明是_____。 1 A)int a[3]; B)float a(3,4); C)double a[1][4]; D)float a(3)(4); [题]若有说明:int a[3][4];则对a数组元素的正确引用是_____。 A)a[2][4] B)a[1,3] C)a[1+1][0] D)a(2)(1) [题]若有说明:int a[3][4];则对a数组元素的非法引用是_____。 A)a[0][2*1] B)a[1][3] C)a[4-2][0] D)a[0][4] [题]以下不能对二维数组a进行正确初始化的语句是_____。 A)int a[2][3]={0}; B)int a[3]={{1,2},{0}}; C)int a[2][3]={{l,2},{3,4},{5,6}}; D)int a[3]={1,2,3,4,5,6}; [题]若有说明:int a[3][4]={0};则下面正确的叙述是_____。 A)只有元素a[0][0]可得到初值0 B)此说明语句不正确 C)数组a中各元素都可得到初值,但其值不一定为0 D)数组a中每个元素均可得到初值0 [题]若有说明:int a[3][4];则数组a中各元素_____。 2 书面作业8 专业理科学号3120101717 姓名马凌浩 习题6 一、选择题 1.设float x=2.5, y=4.7; int a=7;,printf(“%.1f”, x+a%3*(int)(x+y)%2/4)的结果为 A 。 A.2.5 B.2.8 C.3.5 D.3.8 2.执行下列程序段的输出结果是 C 。 int a = 2; a += a *= a -= a *= 3; printf("%d", a); A.-6 B.12 C.0 D.2 3.设字符型变量x 的值是064,表达式“~ x ^ x << 2 & x”的值是 A 。 A.0333 B.333 C.0x333 D.020 4.设a 为整型变量,不能正确表达数学关系:1010 && a<15 D.!(a<=10) && !(a>=15) 5.设以下变量均为int 类型,表达式的值不为9 的是 C 。 A.(x=y=8,x+y,x+1) B.(x=y=8,x+y,y+1) C.(x=8,x+1,y=8,x+y) D.(y=8,y+1,x=y,x+1) 二.填空题 1 .-127 的原码为11111111 、反码为10000000 、补码为10000001 。 2.逻辑表达式x && 1 等价于关系表达式if(x==0) 表达式的值为0;else 表达式的值为1;。3.设int a=5, b=6; 则表达式(++a==b--)? ++a : --b 的值是7 。 4.设c = 'w', a = 1, b = 2, d = -5, 则表达式'x'+1>c, 'y'!=c+2, -a-5*b<=d+1, b==(a=2)的值 分别为 1 、0 、 1 、 1 。 5.运行以下程序后,如果从键盘上输入china#<回车>,则输出结果为c1=2,c2=5 。 #include C语言程序设计第四版第六章答案-谭浩强
C语言程序设计第三版谭浩强课后习题答案完整版
c语言第二版第七章答案
C语言第六章习题带答案
C语言程序设计(谭浩强)第四版-课后答案
C语言程序设计第三版习题库答案
《C语言程序设计》课后习题答案(第四版)谭浩强
C语言第七章习题答案
C语言程序设计第四版第七章答案-谭浩强
C语言程序设计教程第三版(李凤霞)习题答案
大学生C语言程序设计(第四版 谭洪强)实验5答案
C语言程序设计第三版谭浩强课后习题答案完整版
C语言第七章复习题(不含答案)
C语言课后习题
C语言第六章数组习题
c语言 第6章作业