版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
习题1和参考解答1.什么是程序?【答案】在计算机中,程序是指导计算机执行某个功能或功能组合的一组指令。每一条指令都让计算机执行完成一个具体的操作,一个程序所规定的操作全部执行完毕后,就能产生计算结果。2.计算机语言经历了哪几个阶段?【答案】计算机语言按其发展的先后顺序,经历了机器语言、汇编语言和高级语言三个阶段。3.程序的翻译方式有哪几种?【答案】按翻译方式的不同,程序的翻译方式有解释和编译两种,其中C语言采用的是编译的方式。4.编写一个简单的C程序,使得在屏幕上显示下列信息:***************************************************Cisveryfun.****************************************************【参考源程序】#include<stdio.h>intmain(){ printf(“***************************************************\n”); printf(“Cisveryfun.\n”); printf(“****************************************************\n”); return0;}5.编写一个简单的C程序,使得在屏幕上显示下列信息:****************【参考源程序】#include<stdio.h>intmain(){ printf(“*”); printf(“***”); printf(“*****”); printf(“*******”); return0;}习题2和参考解答求下列表达式的值。(1)3.5+1/2(2)设intx=18,k=14;,表达式为x%=k-k%5(3)(int)((double)(5/2)+2.5)(4)设x=2.5,a=7,y=4.7,表达式为x+a%3*(int)(x+y)%2/4(5)设a=2,b=3,x=3.5,y=2.5,表达式为(float)(a+b)/2+(int)x%(int)y(6)设a=2,b=5,表达式为a++,b++,a+b(7)a为int类型,且其值为3,表达式为a+=a-=a*a(8)x=y=6,x+y,x+1(9)x=(y=6,y*2,y+1)【答案】(1)3.5(2)8(3)4(4)2.5(5)3.5(6)9(7)-12(8)7(9)7编写程序:输入一个矩形的长和宽,计算该矩形的面积。【参考源程序】#include<stdio.h>intmain(){ floatlength,width,area; scanf(“%f%f”,&length,&width); area=length*width; printf(“area=%f\n”,area); return0;}编写程序:输入半径的值,计算并输出球的体积。【参考源程序】#include<stdio.h>intmain(){ floatr,v; scanf(“%f”,&r); v=4*3.1415*r*r*r/3; printf(“v=%f\n”,v); return0;}编写程序:输入一个三位整数,求其百位、十位、个位上的数字,并求出各位数字之和以及各位数字之积。【参考源程序】#include<stdio.h>intmain(){ intn,g,s,b; scanf(“%d”,&n); b=n/100; s=n/10%10; g=n%10; printf(“sum=%d,product=%d\n”,b+s+g,b*s*g); return0;}习题3和参考解答1.从键盘输入任意一个整数,判断其是否为偶数。【参考源程序】#include<stdio.h>intmain(){ intn; printf(“pleaseinputanumber:\n”);scanf(“%d”,&n); if(n%2==0) printf(“Yes!”); else printf(“No!”); return0;}2.有如下函数:x(x﹤1)y=2x-1(1≤x﹤10)3x-1(x≥10)编写程序,使输入x时,输出相应的y值。【参考源程序】#include<stdio.h>intmain(){ intx,y; printf(“pleaseinputthex:\n”); scanf(“%d”,&x); if(x<1) y=x; elseif(x>=1&&x<10) y=2*x-1; elseif(x>=10) y=3*x-1; printf(“yis%d”,y); return0;}3.输入一个整数,若该数能够被3和7整除,则输出2;若只能被3和7中的任意一个整除,则输出1;若不能被3和7中的任意一个整除,则输出0。【参考源程序】#include<stdio.h>intmain(){ intn,m; printf(“pleaseinputn:\n”); scanf(“%d”,&n); if(n%3==0&&n%7==0) m=2; elseif(n%3==0||n%7==0) m=1; else m=0; printf(“theresultis%d”,m); return0;}4.爱因斯坦的阶梯问题。爱因斯坦曾提出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶,最后剩1阶;若每步上3阶,最后剩2阶;若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶,最后刚好一阶不剩。问该阶梯至少有多少阶?编写程序解决这个问题。【参考源程序】#include<stdio.h>intmain(){ inti,n=1,m=1; while(m) { if(n%2==1) if(n%3==2) if(n%5==4) if(n%6==5) if(n%7==0) { printf(“%d”,n); m=0; } n++; }return0;}5.输出所有的水仙花数。所谓水仙花数是一个3位整数,它的各位数字的立方和等于该数本身。【参考源程序】#include<stdio.h>intmain(){ inti,a,b,c; for(i=100;i<1000;i++) { a=i%10; b=i/10%10; c=i/100; if(a*a*a+b*b*b+c*c*c==i) printf(“%d”,i); } return0;}6.编写程序,打印九九乘法表。【参考源程序】#include<stdio.h>intmain(){ inti,j; for(i=1;i<10;i++) { for(j=1;j<=i;j++)printf(“%3d”,i*j);printf(“\n”);}return0;}7.编写程序,打印如下图形。*************************【参考源程序】#include<stdio.h>intmain(){ inti,j; for(i=1;i<=4;i++) { for(j=1;j<=4-i;j++) printf(““);for(j=1;j<=2*i-1;j++) printf(“*”);printf(“\n”); } for(i=1;i<=3;i++) { for(j=1;j<=i;j++) printf(““); for(j=1;j<=7-2*i;j++) printf(“*”); printf(“\n”); } return0;}8.用π/4=1-1/3+1/5-1/7+…求π的近似值,直到最后一项的绝对值小于10-6为止。【参考源程序】#include<stdio.h>intmain(){ floatsum=0.0,t=1.0,s=-1; inti=1; while(t>1e-6) { s=s*(-1); t=t*s; sum+=t; t=1.0/(2*i+1); i++; } sum=sum*4; printf("%f",sum); return0;}9.一个数如果恰好等于它的因子之和,就称其为完数。例如,6的因子为1、2、3,而6=1+2+3,因此6是完数。编写程序找出1000以内的所有完数,并按下面格式输出其因子:6itsfactorsare1,2,3。【参考源程序】#include<stdio.h>intmain(){ inta,i,m; for(a=1;a<=1000;a++) { for(m=0,i=1;i<=a/2;i++) if(!(a%i)) m+=i; if(m==a) { printf("%4ditsfactorsare",a); for(i=1;i<=a/2;i++) if(!(a%i)) printf("%d",i); printf("\n"); } } return0;}10.给出任意一个不多于5位的正整数,要求如下:=1\*GB3①求出它是几位数。=2\*GB3②分别输出每一位数字。=3\*GB3③按逆序输出各位数字。例如,原数为321,应输出123。【参考源程序】#include<stdio.h>intmain(){ intn,m,i,a,b,c,d,e,j=0; scanf("%d",&n); m=n; while(n) { j++; n/=10; } printf("%d\n",j); a=m/10000; if(a!=0) printf("%d",a); b=m%10000/1000; if(b!=0) printf("%d",b); c=m%1000/100; if(c!=0) printf("%d",c); d=m%100/10; if(d!=0) printf("%d",d); e=m%10; if(e!=0) printf("%d\n",e); n=m; while(n) { i=n%10; printf("%d",i); n/=10; } return0;}习题4和参考解答1.有十五个数按由大到小的顺序放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素。如果该数不在数组中,则输出“无此数”。【参考源程序】#include<stdio.h>intmain(){ intx[10],i,t,low=0,high=9,mid; for(i=0;i<10;i++) scanf("%d",&x[i]); printf("inputthesearchnumber:"); scanf("%d",&t); while(low<=high) { mid=(low+high)/2; if(x[mid]==t) { printf("%d",mid); break; } if(x[mid]>t) low=mid+1; else high=mid-1; } if(low>high) printf("无此数!"); return0;}2.编写程序,将字符数组s2中的全部字符复制到字符数组s1中。【参考源程序】#include<stdio.h>intmain(){ inti=0,j=0; chars1[20],s2[20]; gets(s2); while(s2[i]) s1[j++]=s2[i++]; s1[j]=s2[i]; puts(s1); return0;}3.编写程序,从键盘任意输入20个整数,统计其中非负数个数,并计算非负数之和。【参考源程序】#include<stdio.h>intmain(){ inta[5],i,j=0,sum=0; for(i=0;i<5;i++) { scanf("%d",&a[i]); if(a[i]>=0) { j++; sum+=a[i]; } } printf("j=%d,sum=%d",j,sum); return0;}4.输入一字符串,长度小于50,统计其中相邻字符对出现的频次,然后输出统计结果。例如,输入“abcs123”,因为a与b、b与c、1与2、2与3都是相邻字符对,所以结果输出4【参考源程序】#include<stdio.h>intmain(){ chars[50]; inti,n; gets(s); i=0; n=0; while(s[i+1]!='\0') { if(s[i]+1==s[i+1]) n++; i++; } printf("%d\n",n); return0;}5.编写程序,找出一个二维数组中的鞍点,即该位置上的元素在该行上最大、在该列上最小。也可能没有鞍点。【参考源程序】#include<stdio.h>intmain(){ inti,j,k,flag1,flag2,a[3][4],max,maxj; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); flag2=0; for(i=0;i<3;i++) { max=a[i][0]; for(j=0;j<4;j++) if(a[i][j]>max) { max=a[i][j]; maxj=j; } for(k=0,flag1=1;k<3&&flag1;k++) if(max>a[k][maxj]) flag1=0; if(flag1) { printf("\n第%d行,第%d列的%d是鞍点\n",i,maxj,max); flag2=1; } } if(!flag2) printf("\n矩阵中无鞍点!\n"); return0;}6.有十个字符串,编程序在每个字符串中,找出最大字符按一一对应的顺序存入一维数组a中,即第i个字符串中的最大字符放入a[i]中,输出每个字符串中的最大字符。【参考源程序】#include<stdio.h>intmain(){ chars[10][20],a[10]; inti,j; for(i=0;i<10;i++) gets(s[i]); for(i=0;i<10;i++) { a[i]=s[i][0]; for(j=1;s[i][j]!='\0';j++) if(a[i]<s[i][j]) a[i]=s[i][j]; } for(i=0;i<10;i++) printf("%d%c",i,a[i]); return0;}7.编写程序将将二维数组a中每个元素右移一列,最右一列换到最左一列,移后的数组存到另一数组b中,并按矩阵形式输出b。【参考源程序】#include<stdio.h>intmain(){ inta[2][3]={1,2,3,4,5,6},b[2][3]; inti,j; for(i=0;i<=1;i++) for(j=1;j<3;j++) b[i][j]=a[i][j-1]; for(i=0;i<2;i++) b[i][0]=a[i][2]; printf("arrayb:\n"); for(i=0;i<2;i++) { for(j=0;j<3;j++) printf("%5d",b[i][j]); printf("\n"); } return0;}8.编写程序为一个5×5的二维数组a赋1到25的自然数,然后输出该数组的左下半三角元素。【参考源程序】#include<stdio.h>intmain(){ inta[5][5],i,j,k=1; for(i=0;i<5;i++) for(j=0;j<5;j++) a[i][j]=k++; for(i=0;i<5;i++) { for(j=0;j<=i;j++) printf("%3d",a[i][j]); printf("\n"); } return0;}9.从键盘上接收十个三位的正整数(各个数位都不包括0)存入一个数组当中,试将数组中的每个数的百位与个位进行交换(例123交换后成为321),将组合成的新数仍存入原数组中。【参考源程序】#include<stdio.h>intmain(){ inta[10],i; for(i=0;i<10;i++) { scanf(“%d”,&a[i]); a[i]=a[i]%10*100+a[i]/10%10*10+a[i]/100; } for(i=0;i<10;i++) printf(“%d”,a[i]); return0;}习题5和参考解答编写程序,调用函数求一个圆柱体的表面积和体积。【参考源程序】#include<stdio.h>voidfun(intr,inth){ floatarea; area=2*3.14*r*h; vol=3.14*r*r*h; printf("area=%.2f,vol=%.2f}intmain(){ intr,h; scanf("%d%d",&r,&h); fun(r,h); return0;} 编写一个函数,输出一个整数的全部素数因子。例如:m=120时,因子为2,3,5。【参考源程序】#include<stdio.h>intfun(intn){ intflag=1,i; for(i=2;i<n;i++) if(n%i==0) flag=0; returnflag;}intmain(){ intm,i; scanf("%d",&m); for(i=2;i<m;i++) if(m%i==0) if(fun(i)) printf("%d",i); return0;}编写程序,调用函数使输入的一个字符串反序存放并输出。【参考源程序】#include<stdio.h>#include<string.h>voidfun(chars[]){ inti=0,n; chart; n=strlen(s)-1; while(i<=n) { t=s[i];s[i]=s[n];s[n]=t; i++;n--; }}intmain(){ chars[20]; gets(s); fun(s); puts(s); return0;}编写一个函数,输入一个十六进制数,输出相应的十进制数。【参考源程序】#include<stdio.h>intfun(chars[]){ inti=0,n,m=0; if(s[i]>='a') n=s[i]-'a'+10; else n=s[i]-'0'; while(s[++i]!='\0') { if(s[i]>='a') m=s[i]-'a'+10; else m=s[i]-'0'; n=n*16+m; } returnn;} voidmain(){chars[6];intn;gets(s);n=fun(s);printf("%d\n",n);}编写程序完成以下功能:在主函数中通过键盘输入10个互不相同的整数并存入在一维数组中,调用函数找出数组中的最大值,并从数组中删除该值,在主函数中输出删除后的数组。【参考源程序】#include<stdio.h>voidfun(inta[10]){ inti,j=0,max=a[0]; for(i=1;i<10;i++) { if(max<a[i]) { max=a[i];j=i; } } for(i=j;i<9;i++) a[i]=a[i+1];}intmain(){ inti,a[10]; for(i=0;i<10;i++) scanf("%d",&a[i]); fun(a); for(i=0;i<9;i++) printf("%d",a[i]); return0;}编写程序,调用函数输出如下杨辉三角形: 【参考源程序】#include<stdio.h>voidyhui(inta[7][7]){ inti,j; for(i=1;i<7;i++) { a[i][1]=1;a[i][i]=1; } for(i=3;i<7;i++) for(j=2;j<i;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; for(i=1;i<7;i++) { for(j=1;j<=i;j++) printf("%3d",a[i][j]); printf("\n"); }}intmain(){ inta[7][7]; yhui(a); return0;}用递归法计算的值,n的值由键盘输入。【参考源程序】#include<stdio.h>intsum(intn){intr;if(n<=0)printf("dataerror\n");if(n==1)r=1;elser=sum(n-1)+n*n;returnr;}intmain(){ intn; scanf("%d",&n); printf("result=%d\n",sum(n)); return0;}用递归法计算的值,n的值由键盘输入。【参考源程序】#include<stdio.h>intsum(intn){intr;if(n<=0)printf("dataerror\n");if(n==1)r=1;elser=sum(n-1)+n;returnr;}intmain(){ intn; scanf("%d",&n); printf("sum(%d)=%d\n",n,sum(n)); return0;}已知可以用下面的公式表示:编写函数求,要求最后一项近似到。利用该函数求,,。【参考源程序】#include<stdio.h>floatfun1(intn){ inti; floatr=1; for(i=1;i<=n;i++) r=r*i; returnr;}floatfun2(floatx,intn){ inti; floatr=1; for(i=1;i<=n;i++) r=r*x; returnr;}floatfun(floatx){ floatp,s=0; intn=0; p=fun2(x,n)/fun1(n); while(p>1e-4) { s+=p; n++; p=fun2(x,n)/fun1(n); } returns;}intmain(){ printf("%f",fun(1));printf("%f",fun(2));printf("%f",fun(-0.5)); return0;}习题6和参考解答编写程序,将一无符号八进制数字字符串转换为十进制整数。例如,输入的字符串为“556”,则输出十进制整数366。【参考源程序】#include<stdio.h>intmain(){char*p,s[6];intn;p=s;gets(p);n=*p-'0';while(*(++p)!='\0')n=n*8+*p-'0';printf("%d\n",n); return0;}编写程序,从键盘上接收一个字符串,判断其是否是回文(顺读和倒读都一样的字符串称为回文,如“level”)。【参考源程序】#include<stdio.h>#include<string.h>intmain(){ chars[81],*p1,*p2; intn; gets(s); n=strlen(s); p1=s; p2=s+n-1; while(p1<p2) { if(*p1!=*p2) break; else { p1++; p2--; } } if(p1<p2) printf("NO\n"); else printf("YES\n"); return0;}编写程序,将一字符串中的内容按逆序输出,但不改变字符串中的内容。【参考源程序】#include<stdio.h>intinverp(char*a){ if(!*a) return0; inverp(a+1); printf("%c",*a);}voidmain(){ chars[10]; gets(s); inverp(s);}编写程序,找出二维数组中的最大元素并输出。【参考源程序】#include<stdio.h>intmain(){ inta[3][4],i,j,max,(*p)[4]; for(i=0;i<3;i++) for(j=0;j<4;j++) scanf("%d",&a[i][j]); max=a[0][0]; for(p=a;p<a+3;p++) for(j=0;j<4;j++) if(*(*p+j)>max) max=*(*p+j); printf("max=%d",max); return0;}编写程序,输入10个整数,将其中最小的数与第一个数对换,将最大的数与最后一个数对换。【参考源程序】#include<stdio.h>intmain(){ inta[10],*min,*max,i,t; for(i=0;i<10;i++) scanf("%d",&a[i]); min=a;max=a; for(i=1;i<10;i++) { if(*min>a[i]) min=&a[i]; if(*max<a[i]) max=&a[i]; } t=*min;*min=a[0];a[0]=t; t=*max;*max=a[9];a[9]=t; for(i=0;i<10;i++) printf("%d",a[i]); return0;}有n个整数,编写程序使前面各数顺序向后移m个位置,最后m个数变成最前面m个数。【参考源程序】#include<stdio.h>voidexchange(inta[],intn,intm){ inti,j,e,t; for(i=0,e=n-m;e<n;e++,i++) { t=*(a+e); for(j=e;j>=i;j--) *(a+j)=*(a+j-1); *(a+i)=t; }}intmain(){ inta[100],i,n,m; printf("pleaseinputn,m:"); scanf("%d%d",&n,&m); for(i=0;i<n;i++) scanf("%d",&a[i]); exchange(a,n,m); for(i=0;i<n;i++) printf("%d",a[i]); return0;}编写程序,输入月份,输出该月的英文月名。例如,输入3,则输出March,要求用指针数组处理。【参考源程序】#include<stdio.h>intmain(){ char*months[]={"January","February","March","April","May","June","July","August","September","October","November","December"}; intn; scanf("%d",&n); if(n<=12&&n>=1) printf("%d月的英文名称是:%s\n",n,months[n-1]); else printf("输入的月份无效!"); return0;}编写程序,将一字符串正序反序连接,连接后仍存入原数组中。例如,字符数组s中存有字符串“abcde”,连接后s中的内容为“abcdeedcba”。【参考源程序】#include<stdio.h>intmain(){ chars[100],*p,*q; p=s;q=s; gets(s); while(*q) q++; p=q-1; while(p>=s) { *q=*p;p--;q++; } *q='\0'; puts(s); return0;}编写函数,实现去掉一个字符串前后空格字符的功能,并在主函数中调用该函数。【参考源程序】#include<stdio.h>voiddelnum(char*s){inti,j;for(i=0,j=0;s[i]!='\0';i++)if(s[i]!=''){s[j]=s[i];j++;} s[j]='\0';}voidmain(){char*item,s[80];item=s;printf("\ninputastring:\n");gets(item);delnum(item);printf("\n%s",item);}10.编写一个函数insert(s1,s2,n),其功能是在字符串s1中的指定位置n处插入字符串s2。【参考源程序】#include<stdio.h>#include<string.h>voidinsert(char*s1,char*s2,intn){ inti,j; char*t,*p; t=s1; i=strlen(s1); j=strlen(s2); while(t<s1+n-1) t++; for(p=s1+i+j+2;p>t;p--) *p=*(p-j); for(;*s2;t++,s2++) *t=*s2;}intmain(){charstr1[50],str2[20];intn;gets(str1);gets(str2);scanf("%d",&n);insert(str1,str2,n);puts(str1);return0;}习题7和参考解答定义一个结构体变量,其成员包括年、月、日。计算该日在本年中是第几天。【参考源程序】#include<stdio.h>struct{intyear; intmonth; intday;}date;intmain(){ inti,days; intday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; scanf(“%d%d%d”,&date.year,&date.month,&date.day); days=0; for(i=1;i<date.month;i++) days+=day_tab[i] days+=date.day; if((date.year%4==0&&date.year%100!=0||date.year%400==0)&&date.month>=3) days+=1; printf(“%d/%disthe%dthdayin%d”,date.month,date.month.day,days,date.year); return0;}定义一个结构体变量,其成员包括职工姓名、职工号、性别、工资、婚姻状况和家庭地址。【参考源程序】structemployee{ charname[20]; charnumber[10]; charsex; floatwage; charmarry; charaddress[50];}zhang;建立一个职工情况统计表,包括职工的工作证号、姓名、年龄、工资等内容。输出该单位职工的平均年龄、平均工资和各年龄段职工人数的分布情况。【参考源程序】#include<stdio.h>structemployee{ charnumber[10]; charname[20]; intage; floatwage;}e[100];intmain(){ floats1=0,s2=0; inta1=0,a2=0,a3=0,a4=0,i; for(i=0;i<100;i++) scanf(“%s%s%d%f”,e[i].number,e[i].name,&e[i].age,&e[i].wage); for(i=0;i<100;i++) { if(e[i].age<30) a1++; elseif(e[i].age<40) a2++; elseif(e[i].age<50) a3++; elseif(e[i].age<60) a4++; s1+=e[i].age; s2+=e[i].wage; } printf(“平均年龄:%.2f,平均工资:%.2f,20岁:%d,30岁:%d,40岁:%d,50岁:%d”,s1/100,s2/100,a1,a2,a3,a4); return0;}建立一个链表,每个结点包括职工号、姓名、性别和年龄,输入一个退休年龄,如果链表中的结点所包含的年龄等于此年龄,就删除该结点。【参考源程序】#include<stdio.h>#include<malloc.h>structemployee{ charnumber[10]; charname[20]; charsex[2]; intage; structemployee*next;}emp[10];voidmain(){ structemployee*p,*pt,*head; inti,length,iage,flag=1; intfind=0; while(flag==1) { printf(“inputlengthoflist:”); scanf(“%d”,&length); if(length<10) flag=0; } for(i=0;i<length;i++) { p=(structemployee*)malloc(sizeof(structemployee)); if(i==0) head=pt=p; else pt->next=p; pt=p; scanf(“%s%s%s%d”,p->number,p->name,p->sex,&p->age); } p->next=NULL; p=head; pt=p; printf(“inputage:”); scanf(“%d”,&iage); if(pt->age==iage) { p=pt->next; head=pt=p; find=1; } else pt=pt->next; while(pt!=NULL) { if(pt->age==iage) { p->next=pt->next; find=1; } else p=pt; pt=pt->next; } if(!find) printf(“notfind%d.”,iage); p=head; printf(“\nNo.Namesexage\n”); while(p!=NULL) { printf(“%6s%8s”,p->number,p->name); printf(“%6s%6d\n”,p->sex,p->age); p=p->next; }}习题8和参考解答编写程序,从键盘输入100个字符,存入名为file.txt的文件中。【参考源程序】#include<stdio.h>intmain(){FILE*fp;charch;inti;if((fp=fopen(“file.txt”,”W”))==NULL){ printf(“cannotopenfile\n”); exit(0);}for(i=0;i<100;i++){ ch=getchar(); fputc(ch,fp);}fclose(fp);return0;}编写程序,从键盘输入一个字符串,将其中的小写字母全部转换成大写字母,然后输出到文件file.txt中保存,输入的字符串以#结束。【参考源程序】#include<stdio.h>#include<stdio.h>intmain(){FILE*fp;charch;if((fp=fopen(“file.txt”,”W”))==NULL){ printf(“cannotopenfile\n”); exit(0);}while((ch=getchar())!=’#’){ if(ch>=’a’&&ch<=’Z’)ch=ch-32; fputc(ch,fp);}fclose(fp);return0;}现有5个学生,从键盘输入如下数据:学号、姓名、语文成绩、数学成绩和英语成绩,计算出每个学生3门课的平均成绩,将原有数据和计算出的平均分都存放在文件score.txt中。【参考源程序】#include<stdio.h>#include<stdio.h>structstudent{ charnum[10]; charname[20]; floats[4];}stu[5];intmain(){FILE*fp;charch;inti;if((fp=fopen(“score.txt”,”W”))==NULL){ printf(“cannotopenfile\n”); exit(0);}for(i=0;i<5;i++){ scanf(“%s”,stu[i].num); scanf(“%s”,stu[i].name); scanf(“%f%f%f”,&stu[i].s[0],&stu[i].s[1],&stu[i].s[2]); stu[i].s[3]=(stu[i].s[0]+stu[i].s[1]+stu[i].s[2])/3;fwrite(&stu[i],sizeof(structstudent),1,fp);}fclose(fp);return0;}编写程序,将文件filename.dat中的内容复制到文件newfile.dat中。【参考源程序】#include<stdio.h>#include<stdio.h>intmain(){intc;FILE*fp1,*fp2;fp1=fopen(“filename.dat”,”rb”);fp2=fopen(“newfile.dat”,“wb”);c=fgetc(fp1);while(c!=EOF){fputc(c,fp2);c=fgetc(fp1);}fclose(fp1);fclose(fp2);return0;}编写程序,统计用户指定文件的长度。【参考源程序】#include<stdio.h>#include<stdio.h>intmain(){FILE*fp;longf1;fp=fopen(“test.dat”,”rb”);fseek(fp,0,SEEK_END);f1=ftell(fp);fclose(fp);printf(”%d\n”;f1);return0;}习题9和参考解答编写一个宏定
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年国家执业兽医从业资格考试全真模拟试卷及答案(共四套)
- 2026年安全生产消防应急预案演练总结报告
- 对外贸易科2026年上半年工作总结
- 客户优先服务态度承诺书8篇范文
- 职业技能提升与行业交流研讨会活动方案
- 多场景报告分析标准化工具
- 企业守法诚信经营承诺函7篇
- 网络安全防护策略制定与执行指南
- 压力性损伤护理质量评价标准
- 口鼻吸痰的护理心理
- 中小学寒假安全教育主题班会课件
- 2024商铺转租转让合同
- PICC置管技术及管路维护
- DB13(J)T 8446-2021 建筑施工安全技术资料管理标准
- 2024-2030年中国寺庙经济市场运行态势与发展战略建议报告
- DL∕T 5783-2019 水电水利地下工程地质超前预报技术规程
- 小学安全监督检查工作计划
- 体育统计学复习题库
- 雨水节气课件
- JJG 631-2013 氨氮自动监测仪
- 《电工电子技术与技能》课程标准
评论
0/150
提交评论