C语言程序设计实训教程习题和实验解答.pdf_第1页
C语言程序设计实训教程习题和实验解答.pdf_第2页
C语言程序设计实训教程习题和实验解答.pdf_第3页
C语言程序设计实训教程习题和实验解答.pdf_第4页
C语言程序设计实训教程习题和实验解答.pdf_第5页
已阅读5页,还剩78页未读 继续免费阅读

C语言程序设计实训教程习题和实验解答.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C 语言程序设计实训教程习题和实验解答 C 语言概述 1.【习题解答】 1 结构化程序有三大基本结构:顺序、分支和循环. 2算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成 按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。 。 有穷性:一个算法应包含有限的操作步骤而不能是无限的。 确定性:算法中每一个步骤应当是确定的,而不能应当是含糊的,有零个或多个输入 输出,有一个或多个输出。 有效性:算法中每一个步骤应当能有效地执行,并得到确定的结果。 对于程序设计人员,必须会设计算法,并根据算法写出程序。可以用自然语言、流程 图、伪代码和计算机语言表示算法。 3.C 语言的主要特点有:语言简洁、紧凑,使用方便、灵活。ANSI C 一共只有 32 个 关键字;控制语句丰富,程序书写自由,主要用小写字母表示,压缩了一切不必要的成分; 运算符丰富, 共有 34 种; 数据结构类型丰富; 具有结构化的控制语句; 语法限制不太严格, 程序设计自由度大;C 语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语 言的大部分功能,可以直接对硬件进行操作。因此有人把它称为中级语言;生成目标代码 质量高,程序执行效率高;与汇编语言相比,用 C 语言写的程序可移植性好。 4.用传统流程图表达如下: 数据类型与表达式 1.【习题解答】 一、选择题 1.C2.B3.A4.B5.A6.B7.D8.B9.D10.C 二、填空题 1.整型、实型、字符型、枚举类型 2.3.000000 3.逗号运算符 4.三,自右向左 5.1,0 6.32767 三、编程题 1.已知球的半径为 1.5cm,计算球的体积。 #include void main() float r=1.5,volume; volume=4.0/3*r*r*r; printf(“%fn”,volume); 2.输入两个数 a 和 b,求 a 除以 b 的商和余数? #include void main() int a,b,c,d; scanf(“%d,%d”, c=a/b; d=a%b; printf(“%d,%d”,c,d); 3.输入三个学生的成绩,求这三个学生的总成绩和平均成绩。 #include void main() int a,b,c,sum; float average; printf(“please input students score:”); scanf(“%d,%d,%d”, sum=a+b+c; average=sum/3.0; printf(“sum=%d,average=%fn”,sum,average); 2.【实验解答】 1.c=10 2. 程序功能为输入两个数,求两数的差 c=10 3. #include void main() int a,b ,c; a=b=5 ; c=a+b ; printf(“a+b=%d”,c) ; 4.运行结果 i=8,j=10,m=9,n=10,u=9,v=-10(回车) 5.x=16,y=24,z=24 6. 10068 10068 dD 10068 dD 120112 xp 出错 304321 0A 7.编写一个 C 程序,输入 a,b,c 三个整数,求这三个数之和。 具体要求: 1) 在 Turbo C 环境或其他编译环境下编辑该程序,然后进行编译连接。 2) 运行该程序,检查你所编写的程序是否正确。 #include void main() int a,b,c,sum; scanf(“%d,%d,%d”, sum=a+b+c; printf(“sum is : %dn”,sum); 顺序结构程序设计 1.【习题解答】 一、选择题 1. B2. C3.A4.A5.D6.B 二、填空题 1. y=2 2.666.006.00(表示空格) 3. k=11,k8=13,k16=b。 4. ! ! ahpu ahpu 5. 5,4,c=3 6. i=56,j=789.000000,x=12345.000000,y=a,c=72 三、编程题 1.已知 x=3.2,y=7,z=2,计算 y/3*x-2 的值。 #include void main() float x=3.2; int y=7,z=2; printf(“%f”, y/3*x-2); 2.输入一个华氏温度,要求输出摄氏温度(结果保留 2 位)。公式为 c=5/9*(f-32)。 #include void main() float f,c; scanf(“%f”, c=5.0/9*(f-32); printf(“c=%.2f”,c); 3.从键盘输入一个小写字母,用大写形式输出该字母。 #include void main() char a,b; printf(“please input a little letter:”); scanf(“%c“, b=a-32; printf(“%c“,b); 4.把 16 进制数 12a 以 10 进制形式输出。 #include void main() int a=0x12a; printf(“%d“,a); 5.输入两个整数,将其值交换。 #include void main() int a,b,t; scanf(“a=%d,b=%d“, t=a; a=b; b=t; printf(“a=%d,b=%d“,a,b); 2.【实验解答】 实验名称 顺序结构程序设计 1. 结果为 0,因为 a,b 被定义为实型,而却以整型输入,类型不匹配。 2. 错误之处:s=3 /(a+b)*(a+b);应改为:s=3.0/(a+b)*(a+b); 3. 运行结果-1,177777,ffff,65535 b=-2 4.编程并上机调试运行 1) 设圆半径为 r=1.5,求圆周长、面积。要求用 scanf 函数输入数据,输出时取小数点 后两位。 #include void main() float r,l,s,v; scanf(“%f“, l=2*3.14*r; s=3.14*r*r; printf(“l=%.2f,s=%.2f,v=%.2f“,l,s); 2) 输入一个 3 位十进制整数,分别输出百位、十位以及个位上的数。 #include void main() int a,b,c,d; scanf(“%d“, b=a/100; c=a/10%10; d=a%10; printf(“%d %d %d“,b,c,d); 3) 从键盘输入一个带 2 位的实数,将其整数部分和小数部分分离后输出。例如:输入 321.54,输出 321.54=321+0.54。 #include void main() int a; float b,c; scanf(“%f“, a=(int)b; c=b-a; printf(“%.2f=%d+%.2f“,b,a,c); 4) 用 getchar 函数读入两个字符,然后分别用 putchar 和 printf 函数输出这两字符。 #include void main() char a,b; a=getchar(); b=getchar(); putchar(a); putchar(b); printf(“n%c%c“,a,b); 选择结构程序设计 1.【习题解答】 一、选择题 1.A。2. D。3.A。4. B。5. C。6.A。 二、填空题 1. (x20 scanf(“%d%d%d“, max=a; if(max void main() float a,b,c,l; printf(“please input a,b,cn“); scanf(“%f,%f,%f“, if(a+b)c printf(“l=%fn“,l); else printf(“It is not triangle!n“); 3.从键盘上输入一个整数判断其奇偶以及正负。 #include “stdio.h“ void main() int a; scanf(“%d“, if(a0) if(a%2=0)printf(“It is PLUS even number“); else printf(“It is PLUS oddnumber“); else if(a0)printf(“2“); else if(b*b-4*a*c=0) printf(“1“); else printf(“0“); 5.从键盘输入表示年份的整数,判断是否为闰年。 #include “stdio.h“ void main() int year; scanf(“%d“, if(year%400=0)|(year%4=0 else printf(“It is not runnian“); 2.【实验解答】 实验名称 选择结构程序设计 1. if(0 void main() int n; printf(“Input a num(0 void main() int score; scanf(“%d“, if(score100) printf(“Error!“); else score=score/10; switch(score) case 10: case 9:printf(“An“);break; case 8:printf(“Bn“);break; case 7:printf(“Cn“);break; case 6:printf(“Dn“);break; default:printf(“En“); 3) 输入四个数,要求按从大到小顺序输出。 #include void main() int a,b,c,d,t; scanf(“%d%d%d%d“, if(a void main() int a,b,c,t; int max,min; scanf(“%d%d%d“, max=min=a; if(max=0 float s=0; for(i=1;i void main() int i,j; for(j=5;j=1;j-) for(i=1;i void main() float s=100,m=100,i; for(i=2;i void main() int m,n,i,t; scanf(“%d %d“, if (m void main() long s=1,i,t=1; for(i=2;i void main() int i,j; for(i=1;i=j) printf(“ “); else printf(“*“); printf(“n“); 3) 猴子吃桃。猴子第一天摘若干桃子,当即吃了一半,又加一个。第二天吃了剩下桃 子一半又多一个。以后每天早上都吃前一天剩下的一半多一个。第十天,只剩一个。问第 一天共摘多少个桃子。 #include void main() int s=1,i; for(i=2;i void main() int i,j; for(i=1;i void main() int i,j; for(i=10;i void main() int i,j,k; for(i=0;i void main() char c; int letter=0,space=0,digtal=0,other=0; while(c=getchar()!=n) if(c=A for(i=1;i void main() int n,i=2; scanf(“%d”, printf(“%d=“,n); while(n1) if(n%i=0) printf(“%d*”,i); n=n/i; else i+; printf(“b “); 5.利用循环语句编写程序:对一个正整数,将各位数字反序后的数组成一个整数输出。 例如:输入 12345,输出 54321。 #include void main() long m,n,sum=0; scanf(“%ld”, while(m0) n=m%10; m=m/10; sum=sum*10+n; printf(“%ld”,sum); 6.一个素数加上 1000 以后是 37 的倍数,求满足这个条件的最小素数。 #include void main() int n=1,i; while(1) n+; for(i=2;in/2) break; 7.”完数”。找 1000 以内的所有完数。一个数如果恰好等于它的因子之和,这个数就称为”完 数”。 #include void main() int i,j,sum,m; for(i=2;i void main() int a100; int i,j,n,t,num=0; scanf(“%d”, for(i=0;i #include void main() char a50; int i,j,n,t,num=0; gets(a); n=strlen(a); for(i=0;i=a int i,j,m,d20; scanf(“%ld”, m=0; while(n!=0) n=n/10; m+; for(i=0,j=m-1;i void main() int a10,i; for(i=0;i=10) printf(“5 is not in data.n”); 5.任意输入 20 个正整数,找出其中的素数,将这些素数由小到大排序并输出。 #include void main() int a20,b20,i,j,k,m; for(i=0;i=ai-1) bk=ai; k+; for(i=0;i void main() int a45,i,j,k,m; for(i=0;iaij) m=aik; aik=aij; aij=m; for(i=0;i void main() int i,j,t,n,a100; scanf(“%d”, for(i=0;i void main() int i,j,a88; for(i=0;i void main() int i,j,a44,b44,s=0; for(i=0;i void main() long a20=1,1; int i; for(i=2;i void main() long a20=1,1; int i; for(i=2;i void main() int a10; int i,j,t; for(i=0;i #include void main() char a100,b50; int i,j,t; gets(a); gets(b); t=strlen(a); for(i=0;bi!=0;i+,t+)at=bi; at=0; puts(a); 3) 输入一行字符串,统计其中的单词个数,单词之间用空格隔开。如:输入 I ama boy !其中单词的个数为 4 个(不考虑大写字母) 。 #include #include void main() char a100; int i,t; gets(a); t=0; for(i=0;ai!=0;i+) if(ai=a scanf(“%d,%d”, for(i=0;imax) max=aij; anj=j; for(k=0,flag=1;kakanj) flag=0; if(flag) ani=i; printf(“a%d%d=%dn”,ani,anj,max); break; if(!flag)printf(“没有鞍点”); 5) 已有一个排序好的数组(从小到大排序) ,现输入一个数,要求按原来排序的规律 将它插入数组中。 #include void main() int a50,n,x; int i; scanf(“%d”, for(i=0;ix) break; if(i= =n) ai=x; else for(j=n-1;j=i;j-) aj+1=aj; ai=x; for(i=0;i=a int max3(int x,int y,int z) int t; t=max(x,y); return zt?z:t; void main() int a,b,c,t; printf(“input three numbers:”); scanf(“%d%d%d, t=max3(a,b,c); printf(“The max number is %d”,t); 2.写一个函数,对数列 s=1*2*3+3*4*5+n(n+1)(n+2)求和。 #include int sum(int n) int i,s; s=0; for(i=1;i void triangle(int n) int i,j; for(i=0;i #include void change(int b,int n) int len,i,j; int t; for(i=0,j=n-1;i #define N 100 int sum(int a,int n) int s; if(n=1) s=an-1; else s=sum(a,n-1)+an-1; return s; void main() int aN,n,i,k; scanf(“%d”, for(i=0;ii+1) bj=bj-1; j-; bj= ; 7.编写一个函数,计算 ! ( , ) !()! m c m n n mn 。 #include long fact(int x); void main() int m,n; long cmn; printf(“Input m,n:”); scanf(“%d,%d”, cmn=fact(m)/(fact(n)*fact(m-n); printf(“The combination is %ldn”,cmn); long fact(int x) long y; for(y=1;x0;-x) y*=x; return(y); 2.【实验解答】 实验名称 函数程序设计 I 1. n*f(n-1)x=f(i) 2. power*=im #include double x1,x2,p,q,disc; void greater_than_zero(double a,double b) x1=(-b+sqrt(disc)/(2*a); x2=(-b-sqrt(disc)/(2*a); void equal_to_zero(double a,double b) x1=x2=-b/(2*a); void smaller_than_zero(double a,double b) p=-b/(2*a); q=sqrt(-disc)/(2*a); void main() double a,b,c; printf(“Please input a,b,c:”); scanf(“%lf,%lf,%lf”, disc=b*b-4*a*c; printf(“root:n”); if(disc0) greater_than_zero(a,b); printf(“x1=%f,x2=%fn”,x1,x2); else if(disc=0) equal_to_zero(a,b); printf(“x1=x2=%fn”,x1); else smaller_than_zero(a,b); printf(“x1=%f+%fi,x2=%f-%fin”,p,q,p,q); 2) 写一个判断素数的函数,在主函数输入一个整数,输出是否为素数的信息。 #include int prime(int n) int i; for(i=2;i=n) return 1; else return 0; void main() int n; printf(“Input a integer:”); scanf(“%d”, if(prime(n) printf(“%d is a primen”,n); else printf(“%d is not a primen”,n); 3) 用递归法求 n 阶勒让德多项式的值,递归公式为: 12 1(0) (1) (21)( )(1)( )/(1) nn n xn nxpxnpxn n #include double p(int n,double x) if(n=0) return 1; else if(n=1) return x; else return (2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x)/n; void main() int n; double x; printf(“Input n and x:n”); scanf(“%d,%lf”, printf(“%f”,p(n,x); 实验名称 函数程序设计 II 1.此程序功能是将数组中元素按从大到小排序,本题运行结果是 10753-7 。 2.此程序考查的是带参数的宏展开,代入宏,展开得 a/=k+m*k+m/k+m*k+m。代入值 得程序运行结果是 3。 3.编程并上机调试运行 1) 编写一函数,由实参传递一个字符串,统计此字符串中字母、数字、空格和其他字 符的个数,在主函数中输入字符串以及输出上述结果。 #include #include int letter=0,digit=0,space=0,other=0; void count(char s) int i=0; while(si!=0) if(si=A double num=0; lenght=strlen(s); for(i=0;i=0a=b;b=t; void main() int a,b,t; scanf(“%d%d”, swap(a,b); printf(“%d,%d”,a,b); 4) 编写函数,实现两个字符串连接,在主函数中输入两个字符串以及输出连接后的结 果(不要用库函数是 strcat) #include #include void main() void connect(char s1,char s2); char s120,s220; printf(“Please input string1:”); gets(s1); printf(“Please input string2:”); gets(s2); connect(s1,s2); printf(“The connected string is:”); puts(s1); void connect(char s1,char s2) int length1,i,j; length1=strlen(s1); for(i=length1,j=0;s2j!=0;i+,j+) s1i=s2j; s1i=0; 5) 编写函数 fun,函数的功能是求出二维数组周边元素之和,作为函数值返回。二维 数组中的值在主函数中赋予。 例如,二维数组如下,则函数值为 77。 13579 246810 34567 45678 #include #include #define M 4 #define N 5 int fun(int aMN) int i,j,s=0; for(i=0;i voidmain( ) int a10,*p,*head,*end,temp; printf(“please input 10 numbers:n“); for(p=a;p void main( ) int a33=1,2,3,4,5,6,7,8,9; int b33, i, j,*p=a; printf(“array a:n”); for ( i = 0; i void main() char*alpha6=“a”,”bc”,”def”,”1”,”23”, “qq”,*p; int i;p=alpha; for(i=0;i void main() int strcmp(char *p1,char *p2); int i; char str110,str210; puts(“请输入两个字符串:“); puts(“字符串 1:“); gets(str1); puts(“字符串 2:“); gets(str2); printf(“比较结果为: %dn“,strcmp(str1,str2); int strcmp(char *p1,char *p2) int i=0; while(*(p1+i)=*(p2+i) return(*(p1+i)-*(p2+i); 5.编程实现对两个字符串进行交叉连接。例如:有两个字符串“abcd” 、”1234”,交叉连 接后结果为“a1b2c3d4“。 #include void mystrcat(char *s,char *ct) while(*(s+); s-; while(*ct) *(s+) = *(ct+); *s = 0; int main() char na100,nb100; gets(na); gets(nb); mystrcat(na,nb); printf(“%sn“,na); return 0; 2.【实验解答】 实验一 1) a 或 a0j=kajk=1ajk=0 2) temp=*pointer1, *pointer1=*pointer2, *pointer2=temp; /*主函数 main()*/ void main() int num1,num2,num3; /*从键盘上输入 3 个整数*/ printf(“Input the first number: “); scanf(“%d“, printf(“Input the second number: “); scanf(“%d“, printf(“Input the third number: “); scanf(“%d“, printf(“num1=%d, num2=%d, num3=%dn“, num1, num2, num3); /*输出 3 个变量的初值*/ /*排序*/ if( num1 max )max = *p ; elseif( *p wp) p+ ; for(i=*n;ip;i-) wi= *(w+i-1); wp=x; + *n; 实验二 1. 运行结果为:book 处填 *处填 ps+10处填 ps 2. 程序功能:在输入的字符串中查找有无k字符。 3.编程并上机调试运行 1) 输入 5 个国名并按字母顺序排列后输出 #include“string.h“ void main() void sort(char*name,int n); void print(char *name,intn); static char*name=“CHINA“,“AMERICA“,“AUSTRALIA“, “FRANCE“,“GERMANY“; int n=5; sort(name,n); print(name,n); voidsort(char *name,intn) char*pt; inti,j,k; for(i=0;i0) k=j; if(k!=i) pt=namei; namei=namek; namek=pt; void print(char *name,intn) int i; for(i=0;i int len(char* str) int i=0; while(*str+) i+; return i; void main() char s80; int num; gets(s); num=len(s); printf(“%d”,num); 3) 用函数调用方式,实现字符串的复制。 void string_copy(char *str_from, char *str_to) int i=0; for(; (*(str_to+i)=*(str_from+i)!=0; i+) ;/*循环体为空语句*/ void main() static char array_str120=“I am a teacher.“; char array_str220; string_copy(array_str1, array_str2);/*数组名作实参*/ printf(“array_str2=%sn“, array_str2); /*string_copy()函数:复制一个字符串*/ /*形参:字符指针 str_from 接收源串,字符指针 str_to 存储目标串 */ 4) 编写函数将字符串 s 中的子字符串 s1 全部替换为子字符串 s2.用指针、函数实现。 #include #include #define MAXLENGTH 100 void replace(char *s, char *s1, char *s2) int len1 = strlen(s), len2=strlen(s1), len3 = strlen(s2); char bufMAXLENGTH; int i, j, k, l; for(i=0, k=0; i #include int fun (char *); int main() char a256; printf(“请输入字符串:n“); gets(a); fun(a); printf(“逆序转换后的字符串是:n“); puts(a); int fun(char *s) int n,i;char c; n=strlen(s); printf(“%d“,n); for(i=0;i #define N 100 void fun(char *strA, char *strB); void main(void) char strAN; char strBN; printf(“请输入字符串:n“); gets(strA); fun(strA, strB); printf(“复制后的字符串:n“); puts(strB); void fun(char *strA, char *strB) int i; int k = 0; for (i=0; strAi != 0; i+) if (strAi = A) ; void calculate(struct dat*); void main () int n; struct dat date; printf(“please input year:”); scanf(“%d”,date.year); printf(“please input year:”); scanf(“%d”,date.month); printf(“please input year:”); scanf(“%d”,date.day); calculate( void calculate(struct dat*date) int a,b,c,i; int sum=0; a=date-year; b=date-month; c=date-day; if(a%4=0)i #define NUM 20 struct mem char name20; char phone10; char addr100; ; void main() struct mem manNUM int i; for(i=0;i #include struct person char name10; int count; leader3=“zhang”,0,”wang”,0,”li”,0; void main() int i,j; char leader_name10; for(i=1;i union word charch2; intn; ; void main() union word w; w.n=0x1234; printf(“the low is =%xn”,w.ch0); printf(“the high is =%xn”,w.ch1); w.ch0=a; printf(“the number is %xn”,w.n); 5. 动态分配一块内存区域,输入并存放一个学生的数据,学生数据包括学号、姓名、 性别和一门课的成绩。 #include void main() struct stu int num; char *name; char sex; float score; *ps; ps=(struct stu *)malloc(sizeof(struct stu); ps-num=101; ps-name=“zhang ming”; ps-sex=M; ps-score=85.5; printf(“Number=%dnName=%snSex=%cnScore=%.1fn”,ps-num,ps-name, ps-sex,ps-score); free(ps); 6. 求两个链表中相同元素的集合。 #include #include typedef struct node int info; struct node *next; HeadLink; HeadLink *jj(HeadLink *h1,HeadLink *h2) HeadLink *pa,*pb,*pc,*u; pa=h1-next; pb=h2-next; pc=h1; while(pa pc=pa; pa=pa-next; u=pb; pb=pb-next; free(u); else if(pa-infoinfo) u=pa; pa=pa-next; free(u); else u=pb; pb=pb-next; free(u); while(pa) u=pa; pa=pa-next; free(u); while(pb) u=pb; pb=pb-next; free(u); pc-next=NULL; return (h1); HeakLink *headcreat() HeadLink *head,*p; int c; head=(struct node *)malloc(sizeof(struct node); head-next=NULL; scanf(“%d”, while(c!=0) p=(struct node *)malloc(sizeof(struct node); p-info=c; p-next=head-next; head-next=p; scanf(“%d”, return head; void print(HeadLink *head) HeadLink *p; p=head-next; printf(“n”); while(p) printf(“%3d”,p-info); p=p-next; void main() HeadLink *h1,*h2; clrscr(); h1=headcreat(); h2=headcreat(); printf(“find the same list :n”); h1=jj(h1,h2); print(h1); 2.【实验解答】 实验名称 结构体与共用体 1.略 2. i=0if(studi.score struct student long num; char name20; float chinese; float math; float english; ; void main() void ave(struct student stu,float a); struct student stu5; float a 3,b5; intnum,i; for(i=0;i struct number int p1;int p2; void main() struct number a,b; int x,y; scanf(“%d,%d,%d,%d”, printf(“(%d+%di)*(%d+%di)n”,a.p1,a.p2,b.p1,b.p2); x=a.p1*b.p1-a.p2*b.p2; y=a.p1*b.p2+a.p2*b.p1; printf(“resutl : %d+%di”,x,y); 3) 工资管理系统中,有结构类型描述员工的编号、姓名、实际工资的表单,称之为表 单 1,由于操作失误,导致两个工人的数据颠倒,编写程序改正过来。 #include struct employeel longnum; charname20; floatrwage; ; void main() struct employeel w1,w2,w; w1.num=1001; strcpy(,”zhang pin”); w1.rwage=1200; w2.num=1003; strcpy(,”wang hong”); w2.rwage=1400; printf(“w1:%ld%s%.2fn”,w1.num,,w1.rwage); printf(“w2:%ld%s%.2fn”,w2.num,,w2.rwage); w=w1; w1=w2; w2=w; printf(“w1:%ld%s%.2fn”,w1.num,,w1.rwage); printf(“w2:%ld%s%.2fn”,w2.num,,w2.rwage); 实验二 结构体与共用体 1. union un 2. 编程并上机调试运行 1) 口袋中有黑、白、红、黄、绿 5 种颜色的球若干个,每次从口袋中取四个球,求得 到四种不同颜色的球的可能取法,打印出每种取法的 4 种颜色。 #include voidmain() enum color black,white,red,yellow,green; enum color a,b,c,d,t; int count=0,i; for(a=black;a #include struct nodeint pname; int wnum; struct node *next; ; void main() struct node *create(); void print(); struct node *head; head=NULL; head=create(head); print(head); struct node *create(struct node *head) struct node *p1,*p2; int i=0; p1=p2=(struct node *)malloc(sizeof(struct node); scanf(“%d”, scanf(“%d”, p1-next=NULL; i+; while(inext=p1; p2=p1; p1=(struct node *)malloc(sizeof(struct node); scanf(“%d”, scanf(“%d”, i+; p1-next=NULL; return head; void print(struct node *head) struct node *temp; temp=head; while(temp!=NULL) printf(“%6d%6d”,temp-pname,temp-wnum); temp=temp-next; 3) listA 和 listB 是两个按学号升序排列的有序链表,每个链表中的结点包括学号和总 成绩。要求把两个链表合并,并使链表仍有序。 #include #include struct nodeint num; float score; struct node *next; ; void main() struct node *create(); struct node *listC; void print(); struct node *link(); struct node *head; head=NULL; listA=create(head); listB=create(head); listC=(struct node *)malloc(sizeof(struct node); listC-next=NULL; head=link(listA,listB,listC); print(head); struct node *create(struct node *head) struct node *p1,*p2; p1=p2=(struct node *)malloc(sizeof(struct node); scanf(“%d”, scanf(“%f”, p1-next=NULL; while(p1-num!=0) if(head= =NULL) head=p1; else p2-next=p1; p2=p1; p1=(struct node *)malloc(sizeof(struct node); scanf(“%d”, scanf(“%f”, p1-next=NULL; return head; void print(struct node *head) struct node *temp; temp=head; while(temp!=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论