《二级C语言复习》由会员分享,可在线阅读,更多相关《二级C语言复习(113页珍藏版)》请在人人文库网上搜索。

1、C程序设计复习,(一)要点 (二)概念 50% -疑难举例 (三)编程 50% -部分编程题解,衷心祝愿各位取得好成绩!,学好C程序设计关键 在于用好“两脑两手”: 两脑-大脑和电脑 两手-左手和右手 除了多编程多上机外 别无选择!,C程序设计复习,阅读讲义(含例题) 复习习题(55道) (一)要点,C语言基础,1 C 语言基础 基本数据类型(int, float, double, char) 变量(命名规则,类型,值,占用内存大小,地址) 变量(作用域,存储类,生存期,可见性) 表达式 表达式的种类 表达式的计算规则 逗号表达式 赋值语句 C程序的基本结构-顺序结构,选择结构,循环结构 运算。

2、符的优先级和结合性 一维数组和二维数组,2 函数-C程序的基本积木块,如何编写(定义)函数? 如何使用(调用)函数? 函数的类型和返回值 函数的形式参数和实在参数 函数的参数传递(单向传值) 哪些类型的变量可以作函数的参数? 如何编写递归函数?,3 指针-C语言的一大特色,指针与指针变量的概念 运算符则 *(p+i)与si等价, p+i与 则*(p+i),*(a+i),pi,ai同值; *(*(p+i)+j),*(*(a+i)+j),*(pi+j),pij,aij同值。 指向函数的指针变量,4 结构体-有广泛的应用背景,结构体类型与结构体变量的定义 结构体类型与结构体变量的区别 如何引用结构体。

3、变量(即存取数据)? 如何计算结构体变量的大小? 单向链表的建立,插入,删除与排序,5 文件-有广泛的应用背景,文本文件与二进制文件 文本文件的打开与关闭(fopen , fclose) 文本文件的读与写操作(fgetc,fputc,fgets,fputs,fscanf,fprintf) 二进制文件的读与写操作(fread,fwrite) 其它的文件操作(fseek),C程序设计复习,(二)基本知识疑难举例 做完习题集中的选择题部分对掌握C语言的基本知识大有助益。若能加做其中的填空题更有好处。,标识符大小区分 Sum=i=j=5; sum=(j-,i+,i+); printf(“%d”,Sum。

4、); 关键字不能作为标识符(用户标识符) 指出不合法的标识符: A)nameB)_oldC)charD)turbo_c,赋值号不能与等号相混淆 下述循环的循环次数是 int k=2; while(k=0) printf(%d,k), k-; printf(n); A) 无限次B) 0 次C)1 次D)2 次 数学中的不等式不能与C语言中关系表达式相混淆 00.51 00.5 i=10;j=15; k=10*MIN(i,j); printf(%dn,k); A)15B)100C)10D)150,(2)执行下列语句后a,b,c的值分别为 a=1;b=2;c=3; a=(a+)+(b+)+(c+);。

5、 1)2 3 4 2)7 3 4 3)6 3 44)10 3 4 (3)设a,b,c为整型变量,且a=2,b=3,c=4,则执行完以下语句: a*=16+(b+)-(+c);后,a的值是 28,如何计算字符串常量的长度? main() char m =ABC,x7a107A,%m659; clrscr(); printf(%d,%d,%dn,strlen(m0),strlen(m1),strlen(m2); printf(%s,%s,%sn,m0,m1,m2); ,7,5,5 ABC ,zGA ,%m59,有符号整数与无符号整数,指出下列程序的输出 main() int i=65536,j=6。

6、5535,k=-1; clrscr(); printf(%dn,i);/* 0 */ printf(signed j=%d,unsigned j=%un,j,j); printf(signed k=%d,unsigned k=%un,k,k); ,switch 语句的执行规则 (1) main() int c; while(c=getchar()!=n) switch(c-2) case 0: case 1: putchar(c+4); case 2:putchar(c+4);break; case 3:putchar(c+3); default:putchar(c+2);break; 若执行。

7、时从键盘上输入2473,则程序的输出结果____________。 /*668977*/,(2)有以下程序: main() int i; scanf(%d, 输入数据1,则执行以上程序输出结果是 1234,for循环(continue语句的作用) (1) main() int y=9; for(;y0;y-) if(y%3=0) printf(%d,-y);continue; A)741B)852C)963D)875421,(2) void main( ) (break语句的作用) int s=0,k; for(k=7;k 4;k-) switch(k) case 1: case 4: cas。

8、e 7: s+; break; case 2: case 3: case 6: break; case 0: case 5: s+=2;break; printf(s=%d,s);/*s=3*/ ,(3)执行语句for(i=0;i+10;);后变量 i 的值是 (表达式中自加) A)9B) 10 C) 11D) 不变 若有以下定义语句,则sizeof(x) 和sizeof(y)的值是 struct int hour; int minute;int second x, *y ; y= A) 6,2B)6,6 C)3,2D)3,3,函数的定义与调用,内部静态变量 运行以下程序,输出的结果是 #in。

9、clude main() int a=1,b=2; printf(%d,func(a,b); printf(%d,func(a,b); func(int x,int y) static int a=0,b=1; a=b*2;,b=a+x+y; return(b); A)5,5B)4,7 C)5,13D)5,7 变量的作用域 下面程序的输出是 #inckude int a5,k; main() fun1(); fun3(); fun2(); fun3();,fun1() for(k=0;k5;k+) ak=0; fun2() int a5; for(k=0;k5;k+) ak=k; fun3()。

10、 for(k=0;k5;k+) printf(%d,*(a+k); A)0000000000B)0000001234 C)0000012345D)0123400000,用下列语句定义a,b,c,然后执行b=a,c=b+b,则b,c的值为 (宽度不同的整数之间相互赋值) long a=0 xffffff; int b; char c; A) 0 xffffff 和 ox61B) -1 和 98 C)-1 和 97 D)指向同一地址 执行下面程序片段后的输出结果是 float f1=111.111; printf(%f f1=%8.3fn,f1); A)%f f1= 111.111 B)%f f1。

11、=111.111 C)f1=111.111 D)f1= 111.111,设x,y为int型变量,z为float型变量,有以下语句: scanf(%2d%*2d%2d%f, A) 100 B) 200 C) 100,200D) 编译出错,下列程序输出结果是 (阅读程序的方法) #include main() int n2,i,j,k; for(i=0;i2;i+) ni=0; k=2; for(i=0; ik ; i+) for(j=0; jk; j+) nj=ni+1; printf(%dn,nk); 上面程序的 )不确定的值),下列程序运行结果为 。 #define P 3 #define 。

12、S(a) P*a*a main() int ar; ar=S(3+5); printf(n%d,ar); A) 192B) 29 C) 27D) 25,设有以下程序: #include main() int a9=1,2,3,4,5,6,7,8,9, *p; p=a; printf(%d,p); printf(%x,p+5); 执行此程序,如果第一个printf语句输出的值是200,则第二个printf语句的输出是 A)210 B)205 C)D2D)195,若有以下说明和语句,则对a数组元素的正确引用的选项是 int a45, (*p)5; p=a; A) p+1B) *(p+3) C) *。

13、(p+1)+3D) *(*p+2) 执行下面语句后,表达式*(p0+1)+*(q+2)的值为 。 int a=5,4,3,2,1,*p4=a+3,a+2,a+1,a,*q=p; /*p0=a+3;p1=a+2;p2=a+1;p3=a;*/ /* p01+q20=1+4=5 */ A) 8B) 7 C) 6D) 5,若有以下程序片段: int a12=0,*p3, *pp,i; for(i=0;i3;i+) pi= 则对数组的错误引用是 A) pp01B) a10 C) p31D) *(*(p+2)+2),以下程序执行结果是 。 point(cahr *pt); main() char b4=a。

14、,c,s,h, *pt=b; point(pt); printf(%cn,*pt); point(char *p) p+=3; A) sB) c C) hD) a,下面程序的输出是 main() struct cmplx int x; int y; cnum2=1,3,2,7; printf(%dn,cunm0.y/cnum0.x*cnum1.x); A) 0B) 1 C) 3 D) 6,下列语句中可以完成建立n个结点的单向链表的功能的选项是 。 (其中,head 指向链表的第一个结点,new指向新结点) A) head-next=new; new-next=head; B) new-next。

15、=head; head=new; C) new-next=head; head=new; new-next=NULL; D) head-next=NULL; head-next=new; new-next=head;,若有运算符,sizeof, x=xy; y=yx; x=xy; 则执行完以上语句后x和y 的值分别是 A) x=1,y=2B) x=2,y=2 C) x=2,y=1D) x=1,y=1,C程序设计复习 (三)编程重点,选择语句,循环语句 数组 函数 结构体 文件,复习上机题(55题),需要掌握的上机题(谭浩强著,C程序设计): P65: 6, 8, 9, 10, 12 P85: 。

16、9, 10 P104: 3, 5, 7, 9 P120: 1, 2, 3, 4, 6, 7, 8, 14 P141: 2, 4, 5, 6, 8, 11, 13, 14, 15 P186: 1, 3, 5, 6, 9, 10, 16, 17 P199 1, 2 P258: 3, 4, 5, 7, 8, 14, 17, 20 P296: 3, 5, 8, 12 P327: 5, 6, 7, 10, 12,main() /*讲解p105习题5.7(用循环结构更简单)*/ int a,b,c,d,e,count=0; long m; clrscr(); printf(Input m:); scanf。

17、(%ld,printf(nleft to right:); switch(count) case 5:printf(%2d,a); case 4:printf(%2d,b); case 3:printf(%2d,c); case 2:printf(%2d,d); case 1:printf(%2d,e); break; case 0:printf(error data!); printf(nright to left:); switch(count), case 5:case 4:case 3:case 2: case 1:printf(%2d,e); if(count=1) break; p。

18、rintf(%2d,d); if(count=2) break; printf(%2d,c); if(count=3) break; printf(%2d,b); if(count=4) break; printf(%2d,a); ,5.7 解法2 main() int a5,count=0; long n; printf(“Input n:”); scanf(“%ld”,for(n=count-1;n=0;n-) printf(“%2d”,an); printf(“ncount=%d”,count); ,/*6.1*/讲解 main() int a,b,temp,product; print。

19、f(“Input two positive integers:”); scanf(“%d%d”, ,习题6.3求S=a+aa+aaa+aaaa 的值。假设a的值是2。 讲解:tn =tn-1*10+a main( ) int n,a,i; long s,t; printf(Enter a ,/*ex0604*/讲解 main() float fac,sum; int j; for(sum=0,j=1,fac=1;j=20;j+) fac*=j; sum+=fac; printf(“sum=%fn”,sum); ,/*ex0606*/讲解 main() int i,j,k,m; for(m=10。

20、0;m=999,m+) i=m%10;/*个位*/ j=m/10%10;/*十位*/ k=m/100;/*百位*/ if(m=i*i*i+j*j*j+k*k*k) printf(%-4d”,m); printf(“n”); ,/*ex0608*/前项分子+分母为后项分子;前项分子为后项分母 main() int m; float a=2.0,b=1.0,sum=0.0;/*a为分子b为分母*/ for(m=1;m=20;m+) sum+=a/b; a=a+b; /*前项分子+分母为后项分子*/ b=a-b; /*前项分子为后项分母*/ printf(“sum=%fn”,sum); ,main(。

21、)/*ex0614*/讲解 int i,k; for(k=1;k5;k+) for(i=0;i4-k;i+) printf( ); for(i=0;i2*k-1;i+) printf(*); printf(n); for(;k8;k+) for(i=0;ik-4;i+) printf( ); for(i=0;i15-2*k;i+) printf(*); printf(n); ,#include stdio.h” #define N 10 main( )/*习题7-2*/讲解 int i,j,k,t, aN; printf(nn input is ); for(i=0;iaj) k=j; /*修。

22、改k*/ if(k!=i) t=ak;ak=ai;ai=t; for(i=0;iN;i+) printf(%4d,ai); ,#include “stdio.h” /* 习题7.4 */讲解 #define N 5 main( ) int aN+1=1,4,6,8,10,x,i,j; printf(“Enter x: ”); /*输入一个数*/ scanf(%d, ,#include stdio.h #define N 10 main( )/*习题7-5 */ int aN; int i,j,t; for(i=0;iN;i+) scanf(%d, ,#define N 10 main( )/*。

23、习题7.6 方法一 */ int aNN, i,j; for(i=0;iN;i+) ai0=aii=1;/*第0列和对角线上元素置1*/ for(i=2;iN;i+)/*从第二行开始*/ for(j=1;ji;j+)/*前行j-1与j列之和为本行j列的值*/ aij=ai-1j+ai-1j-1; for(i=0;iN;i+) for(j=0;ji+1;j+) printf(%6d,aij); printf(n); ,main()/*习题7.8找鞍点,用宏定义指定M,N的值*/ int i,j,k,aMN,a,maxj; 输入数组a的数据。 for(i=0;iaimaxj) maxj=j;/*循。

24、环结束后,aimaxj是i行上最大者*/ for(k=0;kakmaxj) break;/*不是maxj列上的最小者*/ if(k=M) break;/*aimaxj是鞍点*/ if(i=M) 无鞍点,否则aimaxj是鞍点 ,/* 打印图案 7.11 */ #include stdio.h #define N 5 main( ) int i,j; printf(nn); for(i=0;iN;i+) for(j=0;ji+20;j+) putchar( ); for(j=0;jN;j+) putchar(*); printf(n); ,#include stdio.h” #include #。

25、define N 20 main()/*习题7-13*/ char str1N,str2N; int i,j; printf(ninput string1:); gets(str1); printf(ninput string2:); gets(str2); for(i=0;str1i!=0;i+) ; j=0; while(str1i+=str2j+)!=0); printf(n new string1 is: t %st,str1); ,#include #sefine MAX 100 main() /*习题7.14*/ char s1MAX,s2MAX; int i=0; printf(。

26、“Input the first string:”); gets(s1); printf(“Input the second string:”); gets(s2); while(si!=0 ,#include stdio.h“ #include #define N 20 main()/*习题7-15 */ char str1N,str2N; int i=0; printf(ninput string2:); gets(str2); while(str1i=str2i)!=0) i+; printf(nstring1 is: t %s,str1); ,#include stdio.h /*-*。

27、/ int maxM(int m,int n) int r; while(n!=0) r=m%n; m=n; n=r; return (m); /*-*/ int minM(int m,int n) return (m*n/maxM(m,n); ,void main() int a,b; printf(nt Enter two integers:); scanf(%d%d, ,讲解习题8-1,#include stdio.h” #include math.h“/*讲解习题8-3*/ int isPrimeNum(int n) int i,k; k=sqrt(n); for(i=2;i=k;i+。

28、) if(n%i=0) return 0; return 1; /*-*/ void main() int m; printf(ntInput an integer :); scanf(%d, ,#include stdio.h” /*讲解习题8-5*/ #include string.h void reverse(char s) int i=0, j=strlen(s)-1; char c; while(ij) c=si;si=sj;sj=c; i+; j-; void main() char str100; printf(ntInput a string :); gets(str); re。

29、verse(str); printf(nt New string is %s ,str); ,#include stdio.h“/*讲解习题8-6*/ void stringcat(char s,char t) int i,j; i=j=0; while(si!=0) i+; while(si=tj)!=0) i+; j+; /* while(si+=tj+)!=0) */ /*-*/ void main() char s1100,s230; printf(ntInput two strings :); scanf(%s %s,s1,s2); stringcat(s1,s2); printf(。

30、nt New string is %s : %s,s1,s2); ,#include “stdio.h“ /*习题8-9*/ int alpha,digit,blank,others; int is_pha(char c) /* if c is a char ,return true, else return false*/ return(c=A /*-*/,void count(char s) int is_pha(char),is_digit(char c),is_blank(char ); int i; alpha=digit=blank=others=0; for(i=0;si!=0;。

31、i+) if(is_pha(si) alpha+; else if(is_digit(si) digit+; else if(is_blank(si) blank+; else others+; void main() char s100; gets(s); count(s); printf(nt alpha: %d , digit: %d ,alpha,digit); printf(nt balnks: %d ,others: %d ,blank,others); ,#include stdio.h#include string.h#include ctype.h void getMaxLe。

32、nWord(char s,char t)/*习题8-10 */ int i=0,j; char sub30; /* 临时变量*/ strcpy(t ,); /*strset(t,0);*/ while(si!=0) while(si= ) i+ ; /*skip the blanks */ j=0; while(isalpha(si) /*save current word to sub*/ subj+=si+; subj=0; if(strlen(sub)strlen(t) strcpy(t,sub); void main() char str200,t30; gets(str); getM。

33、axLenWord(str,t); printf(ntMax length word : %s n,t); ,#include stdio.h“/*习题8-16 */ /*高位部*16+本位值*/ long int covert(char s) int i ; long int n=0; for(i=0;si!=0;i+) if(si=A ,#include stdio.h“/*讲解习题8-17 */ void print(int n) int i; if(i=n/10)!=0) print(i); putchar(t); putchar(n%10+0); /*-*/ void main() 。

34、int n; printf(nt Enter a integer:); scanf(%d, ,习题9.1 #define exchange(x,y)t=x,x=y,y=t main() int a,b,t; scanf(“%d%d”, ,/*P199 9.2 习题*/ #define Mod(a,b) (a)%(b) main( ) int x,y,t; printf(Input two integers: ); scanf(%d %d, ,p,begin,/* 10.3 */ /* 要求用 3 个函数,一个输入,一个处理,一个输出 */ #define N 10 /*-*/ void inp。

35、ut(int *p ) int *begin ; printf(n Enter 10 numbers: ); for(begin=p;pbegin+N;p+) scanf(%d,p); ,/*-*/ /* 将最大的一个与最后一个互换,将最小的一个与第一个数互换*/ void process(int *p)/*此算法有错,如下图的数据,则结果错*/ int *max,*min,*begin,t; max=min=p; /* 开始时,将最大和最小指针指向第一数 */ for(begin=p;p*max) max=p; if(*p*min) min=p; /* 交换操作:最大数 */ t=*(beg。

36、in+N-1); *(begin+N-1)=*max; *max=t; /* 交换操作:最小数 */ t=*begin; *begin=*min; *min=t; ,max,min,void process(int *p) /*修改后*/ int *max,*min,*begin,t; begin=p; max=min=p; /* 开始时,将最大和最小指针指向第一数 */ for(;p*max) max=p; /* 交换操作:最大数 */ t=*(begin+N-1); *(begin+N-1)=*max; *max=t; for(p=begin;pbegin+N;p+) if(*p*min)。

37、 min=p; /* 交换操作:最小数 */ t=*begin; *begin=*min; *min=t; ,/*-*/ void output(int *p ) int *begin ; printf(n The result are: ); for(begin=p;pbegin+N;p+) printf(%4d,*p); /*-*/ main( ) int aN; input(a); process(a); output(a); ,/* 10.4 */ #define N 10 /*-*/ void exchange(int *a,int m ) int i,t,j; for(i=0;i=。

38、0;j-) *(a+j+1)=*(a+j);/*从倒数第二个数开始各数右移一位*/ *a=t;/*将t存入第一个位置*/ ,/*-10.4的主函数-*/ main( ) int i,m,aN; printf(n Enter %d numbers: ,N); for(i=0;iN;i+) scanf(%d, /*-*/,#define MAX 50 /*10.5的解法*/ int ex1005(int *p,int n) int i,k=0,m=n;/*k记报数,m记在位人数*/ for(i=0;i1) if(*(p+i)=1) k+;/*报数*/ if(k=3) *(p+i)=0;k=0;m-。

39、; i=(i+1)%n; /*未完,接下页*/,for(i=0;in;i+) if(*(p+i)=1) return i; main( ) int aMAX,n; clrscr(); printf(“Input the numbers of people:”); scanf(“%d”, ,/* 10.7 */ #define N 10 /*-*/ void copystring(char *s,int m ,char *t) char *p; for(p=s+m;p=s+strlen(s);p+,t+) *t=*p; /*-*/ main( ) char s100,t100; int m; p。

40、rintf(n Enter a string: ); gets(s); printf(n Enter m: ); scanf(%d, ,void count(char *p,int *pu,int *pl,int *pb,int *pd,int *po) /*10.8*/ *pu=*pl=*pb=*pd=*po=0; while(*p!=0) if(*p=A ,/*习题10.8的主函数*/ main( ) char s100; int upper,lower,blank,digiter,other; printf(“Input a string:”); gets(s); count(s, ,/。

41、* 10.14 */ #define N 10 /*-*/ void reverse(int *a,int n) int *p,t; p=a+n-1; while(ap) t=*a; *a=*p; *p=t; a+;p-; /*-*/ main( ) int i,aN; printf(nt Enter %d numbers: ,N); for(i=0;iN;i+) scanf(%d,a+i); reverse(a,N); printf(nt Results: ); for(i=0;iN;i+)printf(%4d,*(a+i); ,/*10.17*/ int strcomp(char *s1,。

42、char *s2) for(;*s1=*s2 ,/* 10.20 希望大家仔细阅读 */ #define N 5 /*-选择排序-*/ void sort(char *str , int n) char *t1,*t2,*p1,*p2; for(p1=str;p10) t1=p2;/*让t1始终指向小者*/ t2=*p1;/*p1中的地址与t1中的地址交换*/ *p1=*t1; *t1=t2; ,/*-*/ main( ) char *sN=Pascal,C,Basic,Fortran,Java; int i; sort(s,N); printf(nt Results: ); for(i=0;。

43、iN;i+) printf( %st,si); /*-*/,“Pascal” “C” “Basic” “Fortran” “Java”,S0 S1 S2 S3 S4,“Pascal” “C” “Basic” “Fortran” “Java”,S0 S1 S2 S3 S4,习题11.3 struct student int num; char name20; int score3; stu5; main() int i,j; for(i=0;i5;i+) printf(“nInput num,for(j=0;jnum,pst-name); printf(“%d,%d,%d”,pst-score0。

44、,pst-score1, pst-score2); pst+;,11.5#define N 10 /*有N个学生数*/ #define M 3 /*各修M门课程*/ typedef struct /*学生结构*/ int no; char name20; int scoreM; int ave; STUD; /*-*/ void input(STUD *s)/*从键盘上输入N个学生的信息*/ int i,j,temp; /*计算各学生的平均成绩*/ for(i=0;ino,s-name); for(temp=0,j=0;jscorej); temp+=s-scorej; s-ave=temp/。

45、M; ,/*-*/ void printAver(STUD *s)/*输出N个学生的总平均成绩*/ int i,sum=0; for(i=0;iave; printf(tTotal average is :%dn,sum/N); ,/*-*/ void printMax(STUD *s)/*输出N个学生中平均分最高的学生信息*/ int i; STUD *p=s; for(i=0;iaveave) p=s; printf(tThe top student %d %s ,p-no,p-name); for(i=0;iscorei); printf(%dn,p-ave); ,/*-*/ main(。

46、) STUD stuN; system(cls); input(stu); /*输入N个学生的信息*/ printAver(stu); /*输出N个学生的总平均成绩*/ printMax(stu); /*输出N个学生中平均分最高的学生信息*/ ,11.8 #include stdio.h #define LEN sizeof(struct student) typedef struct student int no; int score; struct student *next; STUD;,/*输出head指针所指的链表(带头结点)*/ void print(STUD * head) ST。

47、UD *p; p=head-next; if(p!=NULL) printf(ntThe list is : n); while(p!=NULL) printf(tNum=%d Score=%dn,p-no,p-score); p=p-next; ,STUD *create( ) STUD *head,*last,*new; head=last=(STUD *)malloc(LEN);/* 申请一个头节点 */ last-next=NULL; while(new=(STUD *)malloc(LEN)!=NULL) /* 申请一个数据节点 */ printf(“nEnter No /* 返回链。

48、表的表头 */ ,void insert(STUD *head,STUD *pt) /*将pt节点按学号从小到大插入到head为头指针的链表*/ STUD *p; p=head; while(p-next!=NULL ,STUD * merge(STUD *pA,STUD *pB) /*将PA,PB两个链表合并*/ STUD *pH,*pT; pH=pA;pA=pA-next;pH-next=NULL; while(pA!=NULL)/*将pA链表按要求插入pH链表*/ pT=pA; pA=pA-next; insert(pH,pT); pB=pB-next; while(pB!=NULL)/。

49、*将pB链表按要求插入pH链表*/ pT=pB; pB=pB-next; insert(pH,pT); return pH; ,main() STUD *pa,*pb,*pc; system(cls); printf(tCreate link An);pa=create(); printf(ntCreate link Bnn);pb=create(); pc=merge(pa,pb); print(pc); ,11.12 将单链表倒置 将带表头结点的单链表倒置(先看下页的算法思想) STUD *reverse(STUD *head) STUD *movenode,*remains; remai。

50、ns=head-next;/*remains指向剩余部分*/ head-next=NULL;/*此时head指向的链表只有一个表头结点*/ while(remains!=NULL)/*若链表未处理完*/ movenode=remains;/*movenode指向卸下的结点*/ remains=remains-next;/*remains指向剩余部分*/ movenode-next=head-next; /*movenode的下一个结点应是原第一个结点*/ head-next=movenode;/*movenode作为新的第一个结点*/ return head; ,head,head,remai。

51、ns,head,remains,head,remains,movenode,movenode,将不带表头结点的单链表倒置(先看下页的算法思想) STUD *reverse(STUD *head) STUD *movenode,*remains; remains=head;/*remains指向剩余部分*/ head=NULL;/*此时head指向的链表为空*/ while(remains!=NULL)/*若链表未处理完*/ movenode=remains;/*movenode指向卸下的结点*/ remains=remains-next;/*remains指向剩余部分*/ movenode-n。

52、ext=head; /*movenode的下一个结点应是原第一个结点*/ head=movenode;/*movenode作为新的第一个结点*/ return head; ,head,head=NULL,remains,head,remains,head,remains,movenode,movenode,13.5 A,B为两个文本文件,各存放一行字母,试将A,B中的字母按字典顺序合并后输出到新文件C中。 #include stdio.h main() FILE *fpA,*fpB,*fpC; char s200; int i,j,k,t; if(fpA=fopen(“A.txt”,rt)=N。

53、ULL) abort(); if(fpB=fopen(“B.txt”,rt)=NULL) abort(); if(fpC=fopen(“C.txt”,wt)=NULL) abort();,i=0;/*将文件A和B中的字符装入内存*/ while(si=fgetc(fpA)!=EOF) i+; while(si=fgetc(fpB)!=EOF) i+; si=0; for(i=0;si!=0;i+)/*对字符串中的字符排序*/ k=i; for(j=i+1;sj!=0;j+) if(sksj)k=j; t=si;si=sk;sk=t; printf(“%sn”,s); fprintf(fpC,%。

54、s,s); fcloseall(); ,获得“获得知识的能力”比获得知识更重要。,学习方法之一:,举一反三,触类旁通,思考题: A,B为两个文本文件,各存放若干整数,试将A,B中的字母 按字从小到大顺序合并后输出到新文件C中。 注:空格为整数的分隔符,#include stdio.h“ #define MAX200 main() FILE *fpA,*fpB,*fpC; int sMAX; int i,j,k,t,n; if(fpA=fopen(“A.txt”,rt)=NULL) abort(); if(fpB=fopen(“B.txt”,rt)=NULL) abort(); if(fpC=f。

55、open(“C.txt”,wt)=NULL) abort();,i=0;/*将文件A和B中的整数装入内存*/ while(fscanf(fpA,”%d”, 问题:如果A.txt B.txt中整数数据很多sMAX容纳不了怎办?,13.6有五个学生,每个学生有3门课成绩,从键盘输入数据包括学号,姓名,三门课成绩,计算出平均成绩,将原有数据和平均成绩存入磁盘文件stud中。 #include stdio.h #define N 5 /*学生数*/ #define M 3 /*课程数*/ typedef struct /*学生结构*/ int no; char name20; int scoreM; 。

56、float ave; STUD;/*定义结构体类型*/,main() STUD stu;/*定义结构体变量*/ FILE *fp; int i,j,temp; if(fp=fopen(stud.dat,wb)=NULL) abort(); for(i=0;iN;i+) printf(tEnter No Name and %d scoresn“,M); scanf(“%d %s”, ,13.7将13.6题文件stud中的学生成绩,按平均成绩进行排序处理,将已排序的学生数据存入另一新文件stu_sort中。 #include stdio.h #define N 5/*N 个学生*/ #define。

57、 M 3 /*M 门课*/ typedef struct /*学生结构*/ int no; /*学号*/ char name20; /*姓名*/ int scoreM; /*成绩数组*/ float ave; /*平均成绩*/ STUD;,main()/*按平均分从高到低排序,写入二进制文件stu_sort.dat中*/ STUD stuN,temp;FILE *fp1,*fp2; int i,j,k; if(fp1=fopen(stud.dat,rb)=NULL) abort(); if(fp2=fopen(stu_sort.dat,wb)=NULL) abort(); for(i=0;!f。

58、eof(fp1);i+) fread( ,13.10 从职工文件中抽取姓和工资并存入另一文件。假定都是文本文件,原文件格式如下: 姓 名 工 号 年 龄 工 资 name1 0001 25 1200 name2 0002 30 1500 main() char name20; int num,age; float sal; FILE *fp1,*fp2; createf();/*建立工资文件,另行编写的函数*/ if(fp1=fopen(employee.txt,rt)=NULL) abort(); if(fp2=fopen(emp_des.txt,wt)=NULL) abort(); whi。

59、le(!feof(fp1) fscanf(fp1,%s%d%d%f,name, ,createf( ) /*建立工资文件,另行编写的函数*/ FILE *fp; char line100=0; if(fp=fopen(“employee.txt”,”wt”)=NULL) abort(); printf(“Input data like Robert 0007 40 2000:n”); while(gets(line) if( line0=0) break; fprintf(fp,”%sn”,line); line0=0; fclose(fp); ,#include stdio.h /*13.1。

60、2*/ #include “ctype.h ” /*islower( )在其中定义*/ main() FILE *fp;char c,line100=0; if(fp=fopen(aa.txt,w+t)=NULL)abort(); while(gets(line) /*键盘输入若干行*/ if(line0=0) break; /*空行表示输入结束*/ fprintf(fp,”%sn”,line);/*写文件,注意:写入n*/ line0=0; fseek(fp,0L,0); /* 相当于rewind(fp);*/ while(c=fgetc(fp)!=EOF) if(islower(c) c=c-32;/*小写改大写*/ putchar(c);/*显示*/ fclose(fp); ,衷心祝愿各位取得好成绩!,学好C程序设计关。

c语言中换行符的ans2码,二级C语言复习相关推荐

  1. c语言中不用换行读符而直接换行,C语言中换行符与回车符的区别

    1.C 语言中换行符与回车符的区别能不能说"换行符就是输入完一行内容后,光标转到下一行的起始位置",而"回车符就是输入完一行后光标转到该行的起始位置,其并不换行" ...

  2. c语言中换行符与回车符的区别,C语言中换行符与回车符的区别

    本文章详细介绍了回车与换行符的由来和区别.讲解,通俗易懂,可以使自己深入理解它们 C语言中换行符与回车符的区别 能不能说"换行符就是输入完一行内容后,光标转到下一行的起始位置",而 ...

  3. c语言常量换行符,C语言中换行符问题

    在缓冲输入中,换行符的确是个麻烦的问题,在这里做一个总结. 1.getchar() 记住:getchar()函数 读取每一个字符!每一个!包括空格,制表符和换行符. 错误代码: while(getch ...

  4. C语言输入函数换行符赋给变量B,C语言程序设计第3章顺序结构程序设计.pptx-资源下载在线文库www.lddoc.cn...

    C语言程序设计第3章 顺序结构程序设计.pptx 第 6章 数组第 7章 函数第 8章 结构体.共用体和枚举类型第 9章 指针第 10章 文件目录页 Contents page第 1章 初识 C语言第 ...

  5. mysql如何替换字符串中换行符及回车符

    mysql如何替换字符串中换行符及回车符 mysql如何替换字符串中换行符及回车符 替换字符串中回车符 update mscto.table set bodyhtml= replace(bodyhtm ...

  6. 计算机中阶符,阶码,数符,尾数是什么?

    计算机中阶符,阶码,数符,尾数是什么: 一个十进制数可写成一个纯小数乘上10的若干次方,相似的,一个二进制可写成一个纯小数乘上2的若干次方.例如,11.01=22×0.1101: 一般地,任一个二进制 ...

  7. Excel中换行符替换,非常简单

    Excel中换行符替换 大家有没有踩过坑,便是当在Excel中想将换行符去掉或者是将其他符合替换成换行符时,怎么都打不出来换行符,而我们常知道的是word中的换行符是^P,但是在Excel中却不是,这 ...

  8. c语言中不能编译,为什么`int;`可以在C语言中很好地编译,而在C ++中却不能?

    考虑以下程序(请参见此处的现场演示). #include int main(void) { int ;  // Missing variable name puts("Surprise&qu ...

  9. c语言中函数名可不可以由用户命名,C语言中变量名及函数名的命名规则与驼峰命名法...

    在程序设计中,变量名.函数名.数组名等统称为标识 符.简单地说,标识符就是一个名字.除库函数的函数名由系统定义外,其余都由用户自定义.C语言规定,标识符只能由字母(a-z,A-Z).数字 (0-9). ...

最新文章

  1. DGL-LifeSci:面向化学和生物领域的 GNN 算法库
  2. Xamarin.Android 使用 SQLite 出现 Index -1 requested, with a size of 10 异常
  3. OpenGL交互——菜单控制(基础教程)
  4. java自定义字段_自定义字段的设计与实现(Java实用版)
  5. docker学习笔记(一)docker入门
  6. 《嵌入式C编程:PIC单片机和C编程技术与应用》一1.2 注释
  7. java lambda::_基准测试:Java 8 Lambda和流如何使您的代码慢5倍
  8. 从交换机浅谈安防视频会卡顿现象
  9. c++中istream类型到bool类型的隐式转换
  10. Atitit 深入理解耦合Coupling的原理与attilax总结 目录 1.1. 耦合作为名词在通信工程、软件工程、机械工程等工程中都有相关名词术语。 2 1.2. 所有的耦合形式可分为5类:
  11. 软考网络工程师备考经验分享
  12. Elasticsearch自定义插件
  13. 差分进化算法(Differential Evolution)概述
  14. NetXRay 工具
  15. 关于SQL:已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行
  16. [n年以前的诗] 回想那一次
  17. idea设置类注释和方法注释模板
  18. windwos使用代理软件的问题
  19. 五彩斑斓的 Black —— Python代码格式化工具
  20. 添加到收藏夹和设置首页代码大全

热门文章

  1. LintCode_138——子数组和为零
  2. Windows无法访问 请检查名称的拼写。否则,网络可能有问题...错误代码:0x80004005
  3. 3D MAX入门篇(2)制作飞船绕山飞行动画
  4. html上传后门,网站查后门软件 WebShellKiller
  5. 二十三种设计模式-----归纳篇(JAVA)
  6. RocEDU.阅读.写作《苏菲的世界》书摘(四)
  7. 从今天起,每天写一篇日志,记录我的学习!
  8. Augmented Dickey–Fuller (ADF)Test 详解
  9. 用vs2015和qt5实现飞舞的蝴蝶
  10. Java安全(十三) SSM-Spring框架