tceic.com
学霸学习网 这下你爽了
赞助商链接
当前位置:首页 >> 工学 >>

C语言程序设计教程——课后习题答案


习题 1
1、算法描述主要是用两种基本方法:第一是自然语言描述,第二是使用专用工具进行算法 描述 2、c 语言程序的结构如下: 1、c 语言程序由函数组成,每个程序必须具有一个 main 函数作为程序的主控函数。 2、"/*"与"*/"之间的内容构成 c 语言程序的注释部分。 3、用预处理命令#include 可以包含有关文件的信息。 4、大小写字母在 c 语言中是有区别的。 5、除 main 函数和标准库函数以外,用户可以自己编写函数,程序一般由多个函数组成, 这些函数制定实际所需要做的工作。 例如: void main() { int a,b,c,s; a=8;b=12;c=6; s=a+b*c; printf("s=%d\n",s); } 3、c 语言的特点: 1、c 语言具有结构语言的特点,程序之间很容易实现段的共享; 2、c 语言的主要结构成分为函数,函数可以在程序中被定义完成独立的任务,独立地编 译成代码,以实现程序的模块化。 3、c 语言运算符丰富,运算包含的范围很广; 4、c 语言数据类型丰富。 5、c 语言允许直接访问物理地址,即可直接对硬件进行操作,实现汇编语言的大部分功 能; 6、c 语言语法限制不太严格,程序设计自由度大,这样是 c 语言能够减少对程序员的束 缚; 7、用 c 语言编程,生成的目标代码质量高,程序执行效率高,可移植性好; 4、合法标识符:AB12、leed_3、EF3_3、_762、PAS、XYZ43K2 不合法标识符:a*b2、8stu、D.K.Jon、if、ave#xy、#_DT5、C.D 5、F2:将当前编辑器中文件存盘 F10:调用主菜单 F4:程序运行到光标所在行 Ctrl+F9:当前编辑环境下,进行编译、连接且运行程序; Alt+F5:将窗口切换到 DOS 下,查看程序运行结果 6、(1): ******************** welcome you very good ******************** (2): please input three number;5,7,8

max number is:8 7、main 8、User screen、Alt+F5 9、标识符必须是字母或下划线开头,大小写字母含义不同。由数字、字母和下划线组成; 关键字是一种语言中规定具有特定含义的标识符。 关键字不能作为变量或函数名来使用, 用户只能根据系统的规定使用它们。 10、选择主菜单 File 项下拉子菜单中 Save 项或直接按 F2 键存盘。

习题 2
1、符合 C 语法规定的常数为:"ab\n"、1.e5 2、(1): 错误如下:int x,y=5,z=5,aver; x=7; aver = (x+y+x)/3; printf("AVER=%d\n",aver); 结果如下:AVER=5 (2): 错误如下:char c1='a',c2='b',c3='c'; int a=3.5,b='A'; printf("a=%db=\'%c\'\"end\"\n",a,b); 结果如下:a=3b='A'"end" aabcc abc 3 、 -------------------------------------------------------------------------------------------------------------------int 99 104 66 55 68 -1 -----------------------------------------------------------------------------------------------------------------char 'c' 'h' 'B' '7' 'D' -----------------------------------------------------------------------------------------------------------------unsigned int 99 104 66 55 68 65535 -----------------------------------------------------------------------------------------------------------------float 99.000000 104.000000 66.000000 55.78 68.000000 -1.000000 -----------------------------------------------------------------------------------------------------------------long int 99 104 66 55 68 -1

-----------------------------------------------------------------------------------------------------------------4、(1):9,11,9,10(tc) 如在 vc 上运行,结果为:9,10,9,10 (2):3,1,0,0 (3):11,19,30,1 5、(1):0 (2):0 (3):9.500000 (4):90 (5):10 (6):10 (7):'A' (8):2 (9):4.500000(TC) 6.500000(VC) (10):1 (11):0 (12):20 (13):0 6、(3)、(5) 7、求 x 的绝对值 8、c>(max=a>b?a:b)?c:max; 9、B 10、D

习题 3
1、输入函数 scanf 的参数错误,应该为:scanf("%f",&k); 2、|1234 1234 | 3、ff,10 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() { char a; scanf("%c",&a); printf("%c,%c,%c\n",a+1,a,a-1); printf("%d,%d,%d\n",a+1,a,a-1); } 12、#include <math.h> 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"); } 1: 0 2: 20 3: 4: 5: 6: (x<30&&x>20)||(x<-100) ***a=25,b=14,c=19*** 37 if(a<=b) else printf("1"); printf("2");

7、 #include<stdio.h> void main() { char a,b,t1,t2; scanf("%c,%c",&a,&b); t1=a>b?a:b; t2=a<b?a:b; if((t1-t2)%2==0)printf("%c,%c",a+1,b+1); else printf("%c,%c",a-1,b-1); getch(); } 8、 #include<stdio.h> 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++; } if(temp1) printf("%d / %d = %d",x,y,i); else printf("%d / %d---> shang=%d,yushu=%d",x,y,temp2,x-y*temp2); getch(); } 9、

#include<stdio.h> 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<stdio.h> 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<stdio.h> void main() { 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<stdio.h> void main() { int x,y; scanf("%d",&x); if(x<8&&x>-5) { if(x==0)y=x; else if(x>0&&x<8) y=y=x+1; else y=x-1; printf("%d",y); } else printf("Input error!!!"); getch(); } 方法三: #include<stdio.h> void main() { int x,y,i; scanf("%d",&x); if(x<8&&x>-5) { if(x==0)i=1; else if(x>0&&x<8) i=2; else i=3; } else i=4; switch(i) { case 1:y=x;printf("%d",y);break; case 2:y=x+1;printf("%d",y);break; case 3:y=x-1;printf("%d",y);break; case 4:printf("Input error!!");break; }getch(); } 1、void main() { int n,value; int i,count=0;

float average = 0; long int sum = 0; scanf("%d",&n); for(i = 0; i < n; i++) { scanf("%d",&value); if(value%2 == 0) { sum+=value; count++; } } average = sum / (float)count; printf("the average is %f\n",average); } 2、 #include "stdio.h" void main() { char ch; int zm = 0, sz = 0; ch = getchar(); while(ch != '*') { if((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch < 'z') ) zm++; if(ch >= '0' && ch <= '9') sz++; ch = getchar(); } printf("zm = %d ; sz = %d\n",zm,sz); } 3、 void main() { long i_value; int sum = 0; int temp = 0; scanf("%ld",&i_value); if(i_value <= 0) {printf("you input the int is error!\n");return;} for(;;)

{ temp = i_value%10; i_value = i_value/10; sum+=temp; printf("%d+",temp); if(i_value == 0)break; } printf("\b=%d\n",sum); } 4、 #include "stdio.h" void main() { char ch; ch = getchar(); while(ch!='\n') { if((ch >= 'A' && ch <= 'Z')) { ch = ch + 32; putchar(ch); } else if((ch >= 'a' && ch < 'z') ) { ch = ch - 32; putchar(ch); } else { putchar(ch); } ch = getchar(); } printf("\n"); } 5、 void main() { float sum = 200; int count = 0; for(;;)

{ sum = sum+ sum*0.045; count++; if(sum > 500)break; } printf("the %d years later complete!\n",count); } 6、 void main() { int i,temp=0,bit=0; for(i = 1 ; i <= 999; i++) { if(i%3 == 0) { temp = i; for(;temp != 0;) { bit = temp%10; if(bit == 5){printf("%d,",i);break;} temp = temp/10; } } } printf("\b \n"); } 7、 #include <stdio.h> int main(void) { int steps = 29, i = 1; while ( steps % 7 ) { steps = (30 * ++i) - 1; } printf("Total steps: %d\n", steps); return 0; }

8、 main() { int i,j,k,n; printf("the narcissus number is:\n"); for(n=100;n<1000;n++) {i=n/100; j=n/10-i*10; k=n%10; if(i*i*i+j*j*j+k*k*k==n) printf("%d\n",n); } } 9、 main() { float i,j,temp,n,sum; int t; i=2;j=1;sum=0; scanf("%d",&t); for(n=1;n<=t;n++) {sum=sum+i/j; temp=i;i=i+j;j=temp; } printf("2/1+3/2+5/3+8/5+13/8+...=%f\n",sum); } 10、 void main() { int nWidth,a,b; scanf("%d",&nWidth); for(a=(nWidth%2);a<=nWidth;a+=2) { for(b=0;b<nWidth;b++) { char chOut =' '; int nleft =(nWidth -a)/2; int nright = (nWidth+a)/2; if(b>=nleft&&b<nright) { chOut ='*'; } printf("%c",chOut); } printf("\n"); }

} 11、 void main() { int i=1,j=1; for(i=1;i<=9;i++) { for(j=1;j<=i;j++) printf("%d*%d=%d",i,j,i*j); printf("\n") } } 12、 #include "stdio.h" void main() { char c; //count1 是正数的个数 //count2 是负数的个数 int count1=0,count2=0; //sum1 是正数之和 //sum2 是负数之和 int sum1=0,sum2=0; int flage = 0; c=getchar(); while(c != '*') { if(c == '-')flage = 1; if(flage == 0) {sum1+=(c-48);count1++;} else {if(c != '-'){sum2-=(c-48);flage=0;count2++;}} c = getchar(); } printf("%d,%d\n",count1,count2); printf("%f,%f\n",sum1/count1,sum2/count2); } 13、 void main() { int i,j; int s = 0; for(i = 100 ; i <= 999; i++) {

s = 0; for(j=1; j < i-1 ; j++) { if( i%j == 0 ) s = s + j; } if(s == i)printf("%5d",i); } } 14、 #include <stdio.h> #include <math.h> void main() { int n; long k = 1; float e = 1; n = 1; clrscr(); while ( fabs(1.0/k) >= 0.000001) { n++; e = e+ 1.0/k; k = k * n; } printf("%f\n",e); } 15、 #include "math.h" main() {float x0,x1,x2,f0,f1,f2; x1=-10; f1=2*x1*x1*x1-4*x1*x1+3*x1; x2=10; f2=2*x2*x2*x2-4*x2*x2+3*x2; do { x0=(x1+x2)/2; f0=2*x0*x0*x0-4*x0*x0+3*x0; if((f0*f1)<0) {x2=x0; f2=f0;} else {x1=x0; f1=f0;} } while(fabs(f0)>1e-6); printf("______2*x*x*x-4*x*x+3*x=0______\n");

printf("the root is %f\n",x0); } 1、 #include<stdio.h> int divisor(int a,int b) { int r; while((r=a%b)!=0) { a=b; b=r; } return b; } int multiple(int a,int b) { int d; d=divisor(a,b); return a*b/d; } void main() { int a,b,c,d; printf("intput (a,b): "); scanf("%d,%d",&a,&b); c=divisor(a,b); d=multiple(a,b); printf("\ndivisor=%d\t\tmultiple=%d",c,d); } 2、 #include<stdio.h> void tongji(char a[]) { int b[3]={0,0,0},i=0; while(a[i]!='\0') { if((a[i]<=90&&a[i]>=65)||(a[i]<=122&&a[i]>=97)) b[0]++; else if(a[i]<=57&&a[i]>=48) b[1]++; else b[2]++; i++; } printf("zimu have: %d; shuzi have: %d; qita have: %d",b[0],b[1],b[2]); getch(); } void main() { char a[100]; printf("Please input a string: ");

gets(a); tongji(a); } 3、 #include<stdio.h> int flower(int n) { int x=0,i,j,k; i=(n%10); j= (n/10%10); k=(n/100); x=i*i*i+j*j*j+k*k*k; if(x==n) return 1; else return 0; } void main() { int i,n; printf("Please intput n: "); scanf("%d",&n); if(n>999||n<100)printf("Input error!!!"); else { for(i=100;i<n;i++) if(flower(i))printf("%d ",i); }getch(); } 4、 #include<stdio.h> #define SWAP(a,b) t=b;b=a;a=t; main() { 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<stdio.h> 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<stdio.h> long fac(int n) { 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<stdio.h> 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<stdio.h> int he(int n) { int i,s=0; for(i=1;i<n;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); }

} 9、 #include<stdio.h> #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<size-1-2;i++) { k=i; for(j=i;j<size-2;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); break;

} } if(found)printf("\n\nNO this sid!!!"); getch(); } void main() { struct work *p; p=set_list(); paixu(p); select(p); } 10、 #include<stdio.h> 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(); } 1: (1) (2) (3) (4) (5) D A D B D 5 6 4 7 2 4 8 3 4

2: (1) 1

(2) 6333 3: (1)a[8]=data; (2) "%s" k>=0 a[k]=temp break k<=8 i+'a'

str[i]<='Z'

c[str[i]+26-'a']++

4、/*题目:求一组成绩的平均分数以及高于平均分的成绩。*/ #include<stdio.h> #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<n;i++) { scanf("%f",&a[i]); s+=a[i]; } average = s / n; printf("\naverage = %.2f\n",average); /*输出 81.00*/ for(i=0;i<n;i++) if(a[i]>average) printf("%.2f ",a[i]); /*输出 90.00 ,85.00 ,92.00*/ } 5、 /*题目:编写程序,输入一组整数,将他们排序后由小到大输出。*/ #include<stdio.h> #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<n;i++) scanf("%d",&a[i]); for(i=0;i<n-1;i++) /*比较 n-1 遍*/ { k=i; for(j=i+1;j<n;j++) /*每遍比较 n-(i+1)次*/ 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<n;i++) printf("%d ",a[i]); } 6、 /*题目:从键盘输入一个 4x4 的整数矩阵,以主对角线(\)为对称轴*/ /*将左下角元素中较大者替换右上角元素,并将右上角含对称轴输出。*/ #include<stdio.h> #include<string.h> 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<stdio.h> #include<string.h> 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<stdio.h> #include<string.h> 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<stdio.h> #include<string.h> #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') flage=1; 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<stdio.h> /*相对于第一种方法,这种方法能把同为最大的字符串全部打印出来。*/ #include<string.h> int paixu(int a[],int n) /*构造对长度为 n 的数组排序的函数*/ { int i,j,t,k,temp; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;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]++;}} if(i==3) { 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<stdio.h> 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<m;s++) scanf("%d",&a[s]); printf("\nPlease input n ge shu: "); for(s=0;s<n;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<m+n;s++) printf("%d ",c[s]); getch(); }

1: (1) A (2) B (3) D 2: (1) 10||10||10 (2) pogam (1) *p!=0&&*q!=0 (2) i<11 &a[i] *p>=*q; q++ {i--;if(i==0)break;}

3:

i!=0

4、 /*题目:输入一个字符串,再删除指定的字符*/ /*如果字符串中没有指定字符,则输出原字符串。*/ #include<stdio.h> void fun(char *str,char c) { char *p; for(p=str;*p!='\0';p++) if(*p!=c) *str++=*p; *str='\0'; } void main() { char str[80],c; printf("\nPlease input a string: "); gets(str); printf("\n\nPlease input delete char: "); scanf("%c",&c ); fun(str,c);

puts(str); getch(); } 5、 /*从键盘输入单词,每个单词之间用空格隔开,“.”号结束输入,*/ /*将每个单词的第一个字母转化成大写字母。*/ #include<stdio.h> #include<string.h> char zhuanhua(char c) /*定义将小写字母转化为大写字母的函数*/ { char C; if(c>='a'&&c<='z') /*是小写字母就转化,不是则原样返回*/ C=c-32; else C=c; return C; } /*此函数防止有标点符号或者第一个字母本身是大写字母*/ void main() { char a[100],*p=a; int i=1,j; a[0]=' ';p++; /*为方便下面的 if 语句,初始化 a[0]为空格*/ printf("\nPlease input a string: "); for(;;) { scanf("%c",p); if(*p=='.') break; p++;i++; } a[i]='\0'; for(j=1;j<i;j++) { if(a[j-1]==' '&&a[j]!=' ')/* 第一个字母前面可能有很多空格*/ a[j]=zhuanhua(a[j]); /*调用转化函数,使其变为大写字母*/ } p=a; while(*p) {printf("%c",*p);p++;} getch(); } 6、 /*输入 8 个数,排序后输出。*/ #include<stdio.h> #include<string.h> void main() { int data[8],i,*p1,*p2,temp; p1=data; printf("\nInput 8 number: ");

for(i=0;i<8;i++) { scanf("%d",p1); p1++; } for(p1=data;p1<data+8-1;p1++) for(p2=p1+1;p2<data+8;p2++) if(*p1<*p2) { temp=*p1;*p1=*p2;*p2=temp;} for(i=0,p1=data;i<8;i++,p1++) printf("%d ",*p1); getch(); } 7、 /*题目:输入一个字符串,将此字符串的 m 个字符开始的第 n 个字符复制到另一个字符串。 */ #include<stdio.h> void main() { int m,n,i; char a[100],b[100],*p,*q; printf("Please input a string: "); gets(a); p=a;q=b; printf("\n\nPlease input m and n(like 1,1): "); scanf("%d,%d",&m,&n); if( (strlen(a)>=m) && ((strlen(a)-m+1)>=n) )/*复制的位置要符合要求*/ { p+=m-1; /*指针指向第一个要复制的字符*/ for(i=0;i<n;i++) { *q=*p; p++; q++; } *q='\0'; printf("String a is: %s\n",a); printf("string b is: %s\n",b); } else printf("\nError!!!!"); /*复制的位置不符合要求,打印错误*/ getch(); } 8、 /*输入 8 个数,将最大的数与第一个数对换。*/ /*将最小的数与最后一个数对换*/ #include<stdio.h> void main() { int a[100],temp1=0,temp2=0,max=0,min=0,k; printf("\nPlease input 8 ge shu: "); for(k=0;k<8;k++) { scanf("%d",&a[k]); if(a[k]<a[min])min=k; /*用标记 min 最小值的下标*/

if(a[k]>a[max])max=k;

/*用标记 max 最大值的下标*/

} if(min==0) { if(max==7) { temp1=a[0]; a[0]=a[7];a[7]=temp1; } else { temp2=a[7];a[7]=a[min]; a[0]=a[max];a[max]=temp2; } } else if(max==0) { if(min!=7) { temp2=a[7]; a[7]=a[min];a[min]=temp2;} } else { if(min==7) { temp1=a[0];a[0]=a[max];a[max]=temp1;} else if(max==7) { temp2=a[7];a[7]=a[min]; a[min]=a[0];a[0]=temp2; } else { temp1=a[0];temp2=a[7]; a[0]=a[max];a[7]=a[min]; a[min]=temp2;a[max]=temp1; } } for(k=0;k<8;k++) printf("%d ",a[k]); getch(); } 9、 /*输入 n 个数,并排序后输出。*/ #include<stdio.h> #include<string.h> int *paixu(int data[],int n) { int i,*p1,*p2,temp; p1=data; for(p1=data;p1<data+n-1;p1++) for(p2=p1+1;p2<data+n;p2++) if(*p1<*p2) { temp=*p1;*p1=*p2;*p2=temp;} p1=data; return p1;

} void main() { int n,a[100],i,*p=a; printf("Please input n: "); scanf("%d",&n); printf("\n\nPlease enter %d ge shu: ",n); for(i=0;i<n;i++) { scanf("%d",p); p++; } p=paixu(a,n); for(i=0;i<n;i++,p++) printf("%d ",*p); getch(); } 10、 #include"stdio.h" #define max 1042 main() { float j,a[max];int t,i=0; char b[max],*p=b; clrscr(); printf("Enter a string:"); gets(b); while(*p!='\0') { a[i]=0; while(((*p)<='9'&&(*p)>='0')&&((*p)!='\0')) { t=(int)(*p-48); a[i]=a[i]*10+t; p++; if((*p)>'9'||(*p)<'0') i++; } p++; } for(j=0;j<i;j++) printf("\t%.0f",a[j]); printf("\nALL %d",i); } 1、 li 45 chang 30 chang 300.0 200.0

2、 #include<stdio.h> struct students { char sid[100]; char name[100]; float score[3]; }student; void main() { int i; float j; printf("\nPlease input sid: "); scanf("%s",student.sid); printf("\nPlease input name: "); scanf("%s",student.name); printf("\nPlease input 3 score:(like1,1,1) ");/*输入逗号隔开*/ scanf("%f,%f,%f",&student.score[0],&student.score[1],&student.score[2]); printf("\nsid = %s",student.sid); printf("\nname = %s",student.name); j=(student.score[0]+student.score[1]+student.score[2])/3.0; printf("\naverage = %.2f",j); getch(); } 3、 #include<stdio.h> #include<string.h> #define F sizeof(student) #define NULL 0 typedef struct scores { int english; int math; int c_language; int all; }TP; typedef struct students { char sid[15]; char name[15]; TP score; struct students *next; }student; student *input() { student *head,*p1,*p2; int n=0; char ch; clrscr(); head=(student *)malloc(F);head->next=NULL;

do { n++; printf("\n\nPlease input %d student message: \n\n",n); printf("\t%d student sid: ",n); p1=(student *)malloc(F);p1->next=NULL; scanf("%s",p1->sid); printf("\n\t%d student name: ",n); scanf("%s",p1->name); printf("\n\t%d student scores(englesh,math,c_language): ",n); scanf("%d,%d,%d",&p1->score.english,&p1->score.math,&p1->score.c_language); p1->score.all=p1->score.english+p1->score.math+p1->score.c_language; if(n==1) { head->next=p1;p2=p1; } else { p2->next=p1; p2=p1; } printf("\n\n\t\t\tContinue or back (press y/n): "); ch=getch(); }while(ch=='y'||ch=='Y'); return head; } void average1(student *head) { student *p; int j; clrscr(); p=head->next; while(p) {j=p->score.all/3; printf("\n\nname: %s\taverage: %d",p->name,j); p=p->next; } printf("\n\n\nPress eny key return."); getch(); } void average2(student *head) { student *p;int n=0,temp1=0,temp2=0,temp3=0; p=head->next; while(p) { temp1+=p->score.english; temp2+=p->score.math; temp3+=p->score.c_language; p=p->next;n++; }

printf("\n\naverage english is : %d\naverage math is : %d\naverage c_language is : %d\t",temp1/n,temp2/n,temp3/n); } student *sort(student *head) { student *head1,*p,*q,*r; int temp1=0,temp2=0,temp3=0,temp4; char s[15],n[15]; head1=head; for(p=head1->next;p->next!=NULL;p=p->next) { r=p; for(q=p->next;q;q=q->next) if(q->score.all>r->score.all) r=q; if(r!=p) { strcpy(s,p->sid);strcpy(n,p->name); temp1=p->score.english; temp2=p->score.math; temp3=p->score.c_language; temp4=p->score.all; strcpy(p->sid,r->sid);strcpy(p->name,r->name); p->score.english=r->score.english; p->score.math=r->score.math; p->score.c_language=r->score.c_language; p->score.all=r->score.all; strcpy(r->sid,s);strcpy(r->name,n); r->score.english=temp1; r->score.math=temp2; r->score.c_language=temp3; r->score.all=temp4; } } return head1; } void output(student *head) { student *head2,*p;int i=1; clrscr(); head2=sort(head); for(p=head2->next;p!=NULL;p=p->next) printf("\n\nname: %s\tsid: %s\tenglish: %d\tmath: %d\tc_language: %d\taverage: %d\tmingci: %d ",p->name,p->sid,p->score.english,p->score.math,p->score.c_language,p->score.all/3,i++); average2(head); printf("\n\n\n\t\tPress eny key back."); getch(); } void main()

{

student *head,*p1,*p2; int i=0,j=1; head=input(); do { clrscr(); printf("\n\n(1): average1.\n\n(2): average2.\n\n(3): sort.\n\n(4): output.\n\n\n Please choose: "); scanf("%d",&i); switch(i) { case 1: average1(head); break; case 2: clrscr();average2(head); printf("\n\n\nPress eny key retuen.");getch(); break; case 3: clrscr();p1=sort(head); for(p2=p1->next;p2!=NULL;p2=p2->next) printf("\n\t\tname: %s\tmingci:%d",p2->name,j++);printf("\n\n\nPress eny key back.");getch(); break; case 4: output(head); break; default: printf("\nYour choose is not right.");break; } }while(i!=-1); } 4、 #include<stdio.h> #include<string.h> #define NULL 0 #define F sizeof(worker) typedef struct work { char sid[15]; char name[15]; int money; struct work *next; }worker; int min=0,max=0; char a[15],b[15]; worker *input() { worker *head,*p,*q;int n=0; char ch; head=(worker *)malloc(F); head->next=0; do { n++; p=(worker *)malloc(F); p->next=0; printf("\n\n\tPlease input %d worker message : ",n); printf("\n%d worker sid: ",n);scanf("%s",p->sid); printf("\n%d worker name: ",n);scanf("%s",p->name); printf("\n%d worker money: ",n);scanf("%d",&p->money);

if(n==1) { head->next=p; q=p; max=p->money;strcpy(a,p->name); min=p->money;strcpy(b,p->name); } else { q->next=p; if(p->money>max) {max=p->money;strcpy(a,p->name);} if(p->money<min) {min=p->money;strcpy(b,p->name);} q=p; } printf("\n\t\ty/n");ch=getch(); }while(ch=='y'||ch=='Y'); return head; } void output() { clrscr(); printf("\nThe max money is: %d\t\tname is: %s\n\n",max,a); printf("\nThe min money is: %d\t\tname is: %s",min,b); } void main() { input(); output(); getch(); } 5、6、 #include"stdio.h" #define F sizeof(stu) #define NULL 0 typedef struct student { int sid; int average; struct student *next; }stu;stu *head; stu *create() { stu *p1,*p2; int n=0; char ch; head=(stu *)malloc(F);head->next=NULL; do { n++; printf("\n\nPlease input %d student message: \n\n",n); printf("\t%d student sid: ",n);

p1=(stu *)malloc(F);p1->next=NULL; scanf("%d",&p1->sid); printf("\n\t%d student average: ",n); scanf("%d",&p1->average); if(n==1) { head->next=p1;p2=p1; } else { p2->next=p1; p2=p1; } printf("\n\n\t\t\tContinue or back (press y/n): ch=getch(); }while(ch=='y'||ch=='Y'); return head; } stu *select(stu *head,int x) { stu *s; s=head->next; while(s) { if(s->sid==x) break; s=s->next; } return s; }

");

stu *insert(stu *head,int x,int y) { stu *p,*r,*q; clrscr(); p=head->next; r=(stu *)malloc(sizeof(stu)); r->sid=x; r->average=y; if(p==NULL)/*如果插入空表*/ { p=r; r->next=NULL; printf("\ninsert success!!"); } else { while(x>p->sid) /*找到插入的位置,按学号大小。 (找到位置或者到了表尾都

会跳出循环)*/ { if(p->next==NULL)break; p=p->next; } if(x<p->sid) /*插到中间位置*/ { r->sid=p->sid; r->average=p->average; p->sid=x; p->average=y; r->next=p->next; p->next=r; printf("\ninsert success!!"); } else if(x==p->sid) /*学号不能相同*/ printf("\nError--->your input this same sid."); else /*插到末尾*/ { p->next=r; r->next=NULL; printf("\ninsert success!!"); } } return head; } stu *get(stu *head,int n) /*得到位置为 n 的结点的指针*/ { stu *p;int i; p=head->next; if(n==0) return head; else { for(i=1;i<n;i++) p=p->next; return p; } } stu *delete(stu *head,int sid) { stu *p,*q;int temp=0,i=0; p=head->next; if(!p) { printf("\nlist is empty. press eny key back.");getch();return head;}/*表空*/ else { while(p) /*查找学号为 sid 的结点的指针*/ {i++; /*标记学号为 sid 的结点的位置*/ if(p->sid==sid) {temp=1;break;} /*temp=1 标记找到了*/ p=p->next; }

if(temp==1) /*如果有学号为 sid 的结点*/ { q=get(head,i-1);/*得到 sid 的前一个结点的指针*/ q->next=p->next; free(p); printf("\n\ndelete sucess !!!"); return head; } else /*没有找到*/ { printf("\n\nNO this data.\n"); return head; } } } void print(stu *head) { stu *p; p=head->next; if(!p){printf("\nlist is empty. press eny key back.");getch();} while(p) { printf("\n%d :\t%d ",p->sid,p->average); p=p->next; } } main() { stu *p1,*p2; char ch1; int n,i=0,j=0; head=create(); do {clrscr(); printf("\n1. insert. "); printf("\n2. select."); printf("\n3. delect."); printf("\n4. print list. "); printf("\n5. EXIT "); printf("\n ............choice (1-5)............."); ch1=getch(); switch(ch1) { case '1': { clrscr(); printf("\nplease input insert sid. and average(like 1,1):");

scanf("%d,%d",&i,&j); head=insert(head,i,j); printf("\n\n\nPress eny key back.");getch(); break; } case '2': { clrscr(); printf("\ninput you want to selete sid: "); scanf("%d",&n); p1=select(head,n); { if(p1) printf("\nsid:%d\taverage:%d",p1->sid,p1->average); else printf("\nNo this data."); } printf("\n\n\nPress eny key back.");getch(); break; } case '3': { clrscr();printf("\nPlease input you want delete sid: "); scanf("%d",&n); head=delete(head,n); printf("\n\n\nPress eny key back.");getch(); break; } case '4': { clrscr(); printf("All information :"); print(head); printf("\n\n\nPress eny key back.");getch(); break; } case '5': return; default: printf("\n\nYour enter is not right. press eny key back.");getch(); } }while(n); } 7、 #include<stdio.h> #define F sizeof(L) typedef struct list { char data; struct list *next; }L; L *set_list()

{

L *head,*p1,*p2; char c; int n=0; head=(L *)malloc(F); head->next=0; /*建立链表*/ p1=p2=head; printf("\nPlease input char(press * finish):"); scanf("%c",&c); while(c!='*') { n++; if(n==1) p1->data=c; else { p1=(L *)malloc(F); p1->data=c; p2->next = p1; p2 = p1; p1->next = 0; } scanf("%c",&c); } p1=head; while(p1) { printf("%c ",p1->data);p1=p1->next; } printf("\n\n\n"); return head;

} void change_list(L *head1) /*算法:p2 指向最后一个元素,p1 指向第一个元素。交换他 们的值,p1,p2 同时往中间靠拢。*/ { L *p1,*p2,*p3; int i,j,k,n=1; char temp; p1=head1;p2=head1;p3=head1; while(p3->next) { p3=p3->next;n++; }/*求链长*/ for(i=n;i>(n/2);i--) /*外循环使 p1 后移,p2 前移。*/ { p2=head1; for(j=1;j<i;j++) p2=p2->next; /*p2 指向最后一个元素*/ temp=p1->data;p1->data=p2->data;p2->data=temp;/*交换他们的值*/ p1=p1->next;/*p1 向后移*/ } while(head1) { printf("%c ",head1->data); head1=head1->next; }

} void main() { L *head; head=set_list(); change_list(head); getch(); } 1: 答: 共用体使几种不同类型的值存放在同一内存区域中。 例如, 把 一个整型值和字符值放在同一个存储区域, 既能以整型存储, 又能以字符存储。共用体类 型的定义形式与结构体的定义形式相同, 只是其类型关键字不同, 共用体的关键字为 union. 一般 形式为: union 共用体类型名 { 成员列表 }; 例如: union data { int i; char ch; float f; };

2: 答: 共用体不同与结构体,某一时刻,存与共用体的只有一种数据,而结构体 是所有成分都存储着的。 即共用体是几种数据值的覆盖存储, 几种不同类型的数据值从同一 地址开始存储,但是任一时刻只能存储其中一种数据,而不是同时存储多种数据。分配给共 用体的存储区域大小至少要有存储其中最大的一种数据所需要的存储空间量。

3: 答: 在实际应用中,有的变量只有几种可能的取值。如表示颜色的名称,表示 月份的名称等。为了提高程序描叙问题的直观性,ANSI C 引入允许程序员定义枚举类型的 机制。 程序用枚举方法列举一组标识符作为枚举类型的值的集合。 当一个变量具有这种枚举 类型的时,它就能取枚举类型的标识符值。枚举类型的一般形式为: enum 枚举类型名(标识符 1,标识符 2,标识符 3,...... 标识符 n); 例如:定义一个枚举类型和枚举变量如下: enum colorname(red,yellow,blue,white,black); enum colorname color; 4: (1) :16 (2) :15 (3) :5 (4) :1

5: 答: 在使用标准类型定义或者说明变量时,可只写标准名指明变量数据类型。 c 语言也提供使用 typedef 定义类型, 为类型定义命名的机制。 typedef 定义新的类型名后, 用 对于结构体, 共用体或者枚举类型, 使用他们定义或说明变量时不必说明变量时不必再冠以 类型类别关键字。 (1)简单的名字替换 例如:typedef int INEEGER (2) 定义一个类型名代表一个结构体类型 例如: typedef struct { long num; char name[2]; float score; }stu; (3)定义数组类型:例如: typedef int count[20]; count a,b; (4)定义指针类型: 例如:typedef char *stri; stri p1,p2,p[10];

(1) : 0,4,5,-2 (2) : 177771,177777 (3) : C language 404 (4) : 0000000001000001 1: /*c 语言数据文件有几种存储形式?每种存储形式个有什么特点?*/ 答:在 C 语言使用的文件系统中,数据文件的数据存储形式有两种:一种以字符形 式存放,这种文件称为字符文件 ,也称为文本文件或者是正文文件;另外一种是以二进制代码形式存放,这种文 件称为二进制文件。 一般的说, 二进制文件节省存储空间, 并且在输入时不需要把字符代码先转化成 二进制代码形式再送入内存, 在输出时也不需要把数据由二进制代码转化成字符代码再输出, 因而输入输出速 度快。用户程序在实用中,从 节省时间和空间的要求考虑,一般选用二进制文件。但是,如果用户准备的数据 是作为文档使用阅读时,则一 般使用字符文件,他们可以方便,快捷的通过显示器或打印机直接输出。 6

2: /*打开文件,关闭文件的含义是什么?为什么要打开关闭文件?*/ 答: 打开文件的含义:要把文件使用方式写入 FILE 结构体变量中;返回一个 FILE 结 构体指针,指向该文件的 FILE 结构 体变量,通过该文件指针可以对文件进行操作。 关闭文件的含义:文件指针不再指向原来指向的文件。 为什么要打开文件: (1)要确定文件的使用方式; (2)要得到一个指向文件的指

针; (3)还需检测文件是否存在, 磁盘是否出故障等。 为什么要关闭文件: (1)防止文件被误用; (2)具体系统中同时打开的文件的数 目是有限的。

3: /*C 语言标准的 I/O 接口操作提供了几种文件存取方式?每种方式各有什么特点?*/ 答: 标准 I/O 提供了 4 种文件存取方法: (1) :读写一个字符。 (2) :读写一个字符串,将多个字符组成的字符串写入文件或从文件中读出。 (3) :格式化读写,根据格式控制指定的数据格式对数据进行转换存取。 (4) :成块读写,也称做按记录读写。C 语言的文件虽然是按字节流存放,但可 以按记录存取多个字节的数据。

4:/*什么是文件型指针?通过文件指针访问文件有什么好处?*/ 答: 系统定义 FILE 结构体类型,建立文件相当于定义了一个 FILE 结构体变量,该结 构体变量存放文件的有关信息。打开 文件返回一个 FILE 结构体指针,指向该文件的 FILE 结构体变量。所以,文件型 指针就是指向文件的 FILE 结构体变量的 指针。 通过文件指针访问文件,也即用 FILE 结构体变量成员,比较方便。

5:

(1)

[1]: fopen(fname,"w") [2]: ch [3]: fclose(fp)

(2)

[1]: "r+" [2]: str[i]-32 [3]: "r"

6、 #include<stdio.h> main() { FILE *p; char ch; if((p=fopen(file.c,"w"))==NULL) { printf("cannot open file.\n"); exit(1); } ch=getch(); while(ch!='#') { if(ch>=65&&ch<=90)ch+=32;fputc(ch,p);putchar(ch);ch=getchar();}

fclose(p); } 7、 #include<stdio.h> void main() { FILE *fp; int i,j,n,k; char x[160],ch,t; if((fp=fopen("file1","r"))==NULL) { printf("Can't open file1\n"); exit(1); } for(i=0;(ch=fgetc(fp))!=EOF;i++) { x[i]=ch; } fclose(fp); if((fp=fopen("file2","r"))==NULL) { printf("Can't open file2\n"); exit(1); } while((ch=fgetc(fp)!=EOF)) { x[i]=ch; i++; } n=i; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(x[i]>x[j]) k=j; if(k!=i) { t=x[i];x[i]=x[j];x[j]=t;} } if((fp=fopen("file3","w"))==NULL) { printf("Can't open file3\n"); exit(1); } for(i=0;i<n;i++) fputc(x[i],fp); fclose(fp); } 8、 9、 #include<stdio.h> main()

{

FILE *fp; char str; if((fp=fopen("text.txt","w"))==NULL) { printf("Can't open this file.\n"); exit(1); } printf("\nInput char: "); while((str=fgetc(stdin))!='#') fputc(str,fp); fclose(fp); fp=fopen("text.txt","r"); while((str=fgetc(fp))!=EOF) { if(str>=97&&str<=122) str-=32; fputc(str,stdout); } fclose(fp);

} 10、 #include<stdio.h> struct student { char sid[15]; char name[15]; int score[3]; float ave; }stu[100]; void main() { int i,j,n,sum=0,all[3]={0}; FILE *fp; printf("How many student you want to input?: "); scanf("%d",&n); for(i=0;i<n;i++) { printf("Input the message of %d student\n",i+1); printf("\tsid:\t");scanf("%s",stu[i].sid); printf("\tname:\t");scanf("%s",stu[i].name); sum=0; for(j=0;j<3;j++) { printf("%d score:\t",j+1); scanf("%d",&stu[i].score[j]); sum=sum+stu[i].score[j];/*各个同学的总分*/ all[j]+=stu[i].score[j];/*该班各门课程的总分*/ } stu[i].ave=sum/3.0; }

if((fp=fopen("stud1","wb"))==NULL)/*文件以二进制形式打开*/ { printf("Can't open stud file\n"); exit(1); } for(i=0;i<n;i++) { if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)/*该班各门课程总分还没有输入文件 */ printf("file write error.\n"); fclose(fp); } } 11、 #include<stdio.h> struct student { char sid[15]; char name[15]; int score[3]; float ave; }stu1[100],change; main() { FILE *fp; int i,j,n,k; if((fp=fopen("stud1","rb"))==NULL) { printf("Can't open file\n"); exit(1); } for(i=0;fread(&stu1[i],sizeof(struct student),1,fp)!=1;i++) fclose(fp); n=i; for(i=0;i<n-1;i++) { k=i; for(j=i+1;j<n;j++) if(stu1[i].ave<stu1[j].ave)k=j; if(k!=i) { change=stu1[i];stu1[i]=stu1[j];stu1[j]=change;} } fp=fopen("stu2","wb"); for(i=0;i<n;i++) fwrite(&stu1[i],sizeof(struct student),1,fp); fclose(fp); } 12、


推荐相关:

C语言程序设计教程_李含光_郑关胜_清华大学出版社习题....doc

C语言程序设计教程_李含光_郑关胜_清华大学出版社习题答案习题答案[完美打印版]


C语言程序设计教程(第2版)杨路明课后习题答案_图文.pdf

C语言程序设计教程(第2版)杨路明课后习题答案_理学_高等教育_教育专区。 您的评论 发布评论 用户评价 这篇文档有word格式吗?C语言程序设计教程(第2版)杨路明...


C语言程序设计教程(第2版)课后习题答案杨路明.pdf

C语言程序设计教程(第2版)课后习题答案杨路明 2018-06-22 04:44:04 赞!,C语言程序设计教程(第2版)课后习题答案杨路明 2018-06-21 20:15:10 ...


C语言程序设计教程_杨路明__课后习题答案.doc

C 语言程序设计教程 杨路明 课后习题答案 北京邮电大学出 版社第一章 1、算法


《C语言程序设计教程》(第三版)课后习题参考答案.doc

C语言程序设计教程》(第三版)课后习题参考答案。此文档是《C语言程序设计教程》(第三版)(李凤霞主编)的课后答案。希望对大家有帮助。 ...


C语言程序设计教程 课后习题参考答案.doc

C语言程序设计教程 课后习题参考答案 - 《C 语言程序设计教程课后习题参考答案 习题 1 1. (1)编译、链接 .exe (2)函数 主函数(或 main 函数) (3)编辑...


c语言程序设计教程课后题及模拟题参考答案.doc

c语言程序设计教程课后题及模拟题参考答案 - 习题 1 1-1 填空题 1. 2


C语言程序设计项目教程习题答案.doc

C语言程序设计项目教程习题答案_IT认证_资格考试/认证_教育专区。C 语言程序设计项目教程习题答案说明:本文档在“文档结构图”视图方式下应用比较方便。 第1章 ...


C语言程序设计教程北京理工大学出版社-部分课后习题答案.doc

C语言程序设计教程北京理工大学出版社-部分课后习题答案 - CP5 /*4、编写


C语言程序设计教程 李含光 郑关胜 清华大学出版社习题答案.doc

C语言程序设计教程 李含光 郑关胜 清华大学出版社习题答案 - 第 1 章习题参


《C语言程序设计教程(第二版)》习题答案_图文.pdf

C语言程序设计教程(第二版)》习题答案 - http://www.ppc90.


C语言程序设计教程习题答案1.pdf

C语言程序设计教程习题答案1 - 查看文章 《C 语言程序设计教程习题答案 A


C语言程序设计基础教程_习题答案.doc

C语言程序设计基础教程_习题答案_其它_高等教育_教育专区。习题答案 第1章 1


C语言程序设计教程(第2版)课后题及模拟题参考答案.pdf

C语言程序设计教程(第2版)课后题及模拟题参考答案 - c 语言程序设计教程(第 2 版)课后题及模拟题参考答案 习题 1......


C语言程序设计教程第一章习题答案.doc

C语言程序设计教程第一章习题答案 - C 语言程序设计教程第一章习题答案 1、算


C语言课后习题参考答案.doc

附录F 课后题参考答案习 题 1 1.1 填空题 1.函数 2.主函数 main();主...} 270 C 语言程序设计教程(第 3 版) 习题 2 2.1 单选题 DBDCA DCABB ...


C语言程序设计教程李凤霞第三版课后答案.doc

C语言程序设计教程李凤霞第三版课后答案_工学_高等教育_教育专区。1 【C 语言】《C 语言程序设计教程(第二版)》习题答案 说 明 1. 本文所指的《C 语言程序...


C语言程序设计案例教程(程立倩 主编)课本练习答案 模块五.doc

C语言程序设计案例教程(程立倩 主编)课本练习答案 模块五_工学_高等教育_教育专区。《C 语言程序设计案例教程课后部分习题答案模块 5 循环结构程序设计一、选择...


高等教育出版社出版社c语言程序设计实践教程习题参考答....doc

高等教育出版社出版社c语言程序设计实践教程习题参考答案(1) - 高等教育出版社出版社 C 语言实践教程习题 参考答案 4.2 练习题 p58-59 一、选择题 1~5.DBADC...


C语言程序设计案例教程(程立倩 主编)课本练习答案 模块九.doc

C语言程序设计案例教程(程立倩 主编)课本练习答案 模块九 - 《C 语言程序设计案例教程课后部分习题答案 模块 9 结构体和其他构造类型 一、选择题 1.C 2.B...

网站首页 | 网站地图
All rights reserved Powered by 学霸学习网 www.tceic.com
copyright ©right 2010-2021。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com