admin管理员组文章数量:1530846
2023年12月26日发(作者:)
C语言程序设计课后答案
第1章 C语言概述
一、选择题
1.D 2.C 3.D 4.C 5.A 6.C 7.D
二、填空题
1..c .obj .exe
2.需求分析 算法设计 编写程序 编译程序 连接程序 编写程序文档
3./* */
三、编程题
1.参考代码如下:
#include
int main()
{
}
2.参考代码如下:
#include
int main()
{
}
/*编译预处理指令*/
/*主函数的函数头*/
/*函数体的开始标记*/
/*输出要显示的字符串*/
/*程序返回值0*/
/*函数的结束标记*/
printf("***这是我的第一个C语言程序!***n");
return 0;
printf("***这是我的第一个C语言程序!***n");
return 0;
1
C语言程序设计课后答案
第2章 算法
一、选择题
1.A 2.A 3.C 4.B
二、简答题
1.计算n!算法的流程图如图2-1所示。
开始输入n的值赋初值i=1;S=1;i<=nYesS=S*i;i++;No输出S的值结束
图2-1 计算n!算法的流程图
2.计算n!算法的N-S流程图如图2-2所示。
输入n的值赋初值i=1;S=1;当i<=nS=S*i;i++;输出S的值
图2-2 计算n!算法的N-S流程图
3.计算两个数a和b最大公约数算法的流程图如图2-3所示。
2
C语言程序设计课后答案
开始输入a、b是否c=a;b=a;a=cc=a/b的余数判断a>bc是否等于0是否a=b;b=c输出b结束
图2-3 求最大公约数流程图
4.计算两个数a和b最大公约数算法的N-S流程图如图2-4所示。输入a、b是判断a>b否c=a;b=a;a=cc=a/b的余数当c不为0时a=bb=cc=a/b输出最大公约数b
图2-4 求最大公约数N-S流程图
3
C语言程序设计课后答案
第3章 数据类型及其运算
一、选择题
1.A 2.A 3.A 4.B 5.C
6.D 7.D 8.C 9.C 10.B
二、填空题
1.整型 浮点型
2.0
3.26
4.9
5.1.5 6.7
6.9,11,9,10
三、编程题
1.参考代码如下:
#include
int main()
{
}
2.参考代码如下:
#include
int main()
{
int a,b,c;
a=10;
b=20;
c=a;
a=b;
b=c;
printf("a=%d,b=%dn",a,b);
return 0;
int num,a,b,c;
printf("Please input the number:");
scanf("%d",&num);
a=num/100;
b=(num-100*a)/10;
c=num-100*a-10*b;
a+= b*10+c*100;
printf("The result is%dn",a);
4
C语言程序设计课后答案
}
return 0;
3.参考代码如下:
#define PI 3.14159
#include
int main()
{
}
float r,l,s,v;
printf("请输入圆半径:");
scanf("%f",&r);
l=2*PI*r;
s=PI*r*r;
v=4*PI*r*r*r/3;
printf("半径为%f的圆周长为%f,面积为%f,圆球体积为%f n",r,l,s,v);
return 0;
5
C语言程序设计课后答案
第4章 顺序结构程序设计
一、选择题
1.D 2.C 3.D 4.B 5.B
二、填空题
1.27n
2.12
3.scanf("%d",&a);
三、编程题
1.参考代码如下:
#include
int main()
{
}
2.参考代码如下:
#include
int main()
{
}
3.参考代码如下:
6
int x;
float y,s;
printf("请输入商品的单价");
scanf("%f",&y);
scanf("%d",&x);
s=x*y;
printf("商品总价为: %fn",s);
return 0;
printf("请输入购买商品的个数");
int a,b;
printf("请输入a和b的值");
scanf("a=%d,b=%d",&a,&b);
a=a+b;
b=a-b;
a=a-b;
printf("a=%d,b=%dn",a,b);
return 0;
C语言程序设计课后答案
#include
int main()
{
}
4.参考代码如下:
#include
int main()
{
}
int a=5;
float b=1.332;
char c='A';
printf("a=%4d b=%.3fn",a,b);
printf("a+b=%.1fn",a+b);
printf("c='%c' or %dn",c,c);
return 0;
printf(" ****n");
printf(" *n");
printf(" * n");
printf(" ****n");
return 0;
7
C语言程序设计课后答案
第5章 选择结构程序设计
一、选择题
1.C 2.D 3.B 4.B 5.D
二、填空题
1.0
3.20,30,30
5.①a>b
2.a的值为2;b的值为1
4.1
②a=b;b=t;
三、编程题
1.参考代码如下:
#include
int main()
{
}
2.参考代码如下:
#include
int main()
{
int x,y;
/*定义整型变量x、y*/
/*输出屏幕提示*/
/*从键盘输入x的值*/
/*根据x的取值计算y的值*/
/*根据x的取值计算y的值*/
/*输出y的值*/
printf("Please input x:");
scanf("%d",&x);
if(x<0)
else
y=-x+1;
printf("y=%dn",y);
y=3*x+2;
int a;
printf("Please enter an integer :");
scanf("%d",&a);
switch(a)
{
case 1:printf("Mondayn");break;
case 2:printf("Tuesdayn");break;
case 3:printf("Wednesdayn");break;
case 4:printf("Thursdayn");break;
case 5:printf("Fridayn");break;
case 6:printf("Saturdayn");break;
8
C语言程序设计课后答案
}
case 7:printf("Sundayn");break;
default:printf("Error!n");
}
return 0;
3.参考代码如下:
#include
int main()
{
}
4.参考代码如下:
#include
int main()
{
float a,b;
printf("inpute the income:");
scanf("%f",&a);
if(a<=3500)
else
b=(5000-3500)*0.03+(9500-5000)*0.1+(a-9500)*0.2;
printf("the tax is:%.2f",b);
return 0;
b=0;
b=(a-3500)*0.03;
b=(5000-3500)*0.03+(a-5000)*0.1;
else if(a<=5000)
else if(a<=9500)
int c,s;
float p,w,d,f;
printf("Please enter price,weight,distance:");
scanf("%f,%f,%d",&p,&w,&s);
if(s>=3000)
else
{
case 0:d=0;break;
case 1:d=2;break;
case 2:
9
/*提示输入数据*/
/*输入单价、重量、距离*/
/*3000km以上为同一折扣*/
/*3000km以下各段折扣不同,c的值不相同*/
c=12;
c=s/250;
switch(c)
/*c=0,代表250km以下,折扣d=0*/
/*c=1,代表250km~500km,折扣d=2%*/
C语言程序设计课后答案
}
case 3:d=5;break;
case 4:
case 5:
case 6:
case 7:d=8;break;
case 8:
case 9:
case 10:
case 11:d=10;break;
case 12:d=15;break;
}
/*c=2和3,代表500km~1000km,折扣d=5%*/
/*c=4~7,代表1000km~2000km,折扣d=8%*/
/*c=8~11,代表2000km~3000km,折扣d=10%*/
/*c=12,代表3000km以上,折扣d=15%*/
/*计算总运费*/
/*输出总运费,取两位小数*/
f=p*w*s*(1-d/100.0);
return 0;
printf("freight=%10.2fn",f);
5.参考代码如下:
#include
int main()
{
}
int a,i,j,k;
printf("inpute the number(100-999):");
scanf("%d",&a);
if(a%3==0&&a%5==0&&a%7==0)
else
printf("not can be divided by 3 or 5 or 7 ");
10
printf("can be divided by 3,5,7 ");
printf("can be divided by 3,5 ");
printf("can be divided by 3,7 ");
printf("can be divided by 5,7 ");
printf("can be divided by 3 ");
printf("can be divided by 5 ");
printf("can be divided by 7 ");
else if(a%3==0&&a%5==0)
else if(a%3==0&&a%7==0)
else if(a%5==0&&a%7==0)
else if(a%3==0)
else if(a%5==0)
else if(a%7==0)
return 0;
C语言程序设计课后答案
第6章 循环结构程序设计
一、选择题
1.D 2.A 3.A 4.D 5.C 6.C 7.C 8.B
二、填空题
1.do-while语句
3.10
5.15
2.55
4.x>0
三、编程题
1.参考代码如下:
#include
int main ()
{
}
2.参考代码如下:
#include
int main()
{
int i, k, max;
printf("Please input k:");
scanf ("%d",&max);
for (i=2;i<6;i++)
{
}
printf ("max=%dn",max);
return 0;
scanf ("%d",&k);
if (max max=k; int n, i, j, k; for( n=100; n<1000; n++ ) /* 对所有的3位数循环 */ { i=n/100; /* 的百位数字 */ j=n/10%10; /* 的十位数字 */ k=n%10; /* 的个位数字 */ if(n==i*i*i+j*j*j+k*k*k) { 11 C语言程序设计课后答案 } } } printf ("%d=%d*%d*%d+%d*%d*%d+%d*%d*%dn",n,i,i,i,j,j,j,k,k,k); break; /* 只要求找第一个满足条件的数,所以找到后立即退出循环 */ return 0; 3.参考代码如下: #include int main() { } 4.参考代码如下: #include int main() { } 5.参考代码如下: #include int main ( ) { int n; for( n=10;n<100;n++) { } return 0; if (n%3!=0 || n%5!=0) continue ; /* n不满足要求,结束本次循环*/ printf (" %5d", n); int i,j; for(i=1;i<=10;i++) { } return 0; for(j=1;j<=i;j++) printf("#"); printf("n"); int i,j; for(i=1;i<=9;i++) /*外循环控制输出的行数*/ { for(j=1;j<=i;j++) /*内循环输出表中的一行*/ 12 C语言程序设计课后答案 } } printf("%d*%d=%-3d",j,i,i*j); printf("n"); /*换行控制,使下一次的式子输出在新行上*/ return 0; 6.参考代码如下: #include int main() { 相等*/ } 7.参考代码如下: #include int main() { int A,B,C,D,E;/*定义5个整型变量*/ for(A=1;A<6;A++)/*将A在1~5的名次中循环*/ for(B=1;B<6;B++)/*将B在1~5的名次中循环*/ if(A!=B)/*判断变量与已有变量值不相等*/ for(C=1;C<6;C++)/*将C在1~5的名次中循环*/ if(C!=A&&C!=B)/*判断变量与已有变量值不相等*/ for(D=1;D<6;D++)/*将D在1~5的名次中循环*/ if(D!=A&&D!=B&&D!=C)/*判断变量与已有变量值不 for(E=1;E<6;E++)/*将E在1~5的名次中循环*/ if(E!=D&&E!=C&&E!=B&&E!=A)/*判断变量 if((C!=1)&&(D-E==2)&&(E!=2)&& printf("A=%d,B=%d,C=%d,D=%d, 与已有变量值不相等*/ (A!=1)&&(A!=5)&&(B-C==1))/*根据问题设置的条件*/ E=%dn",A,B,C,D,E);/*输出*/ return 0; int cock,hen,chick; /*定义变量为基本整型*/ /*鸡翁范围在0到20之间*/ /*鸡母范围在0到33之间*/ /*鸡雏范围在3到99之间*/ for (cock=0; cock<=20; cock++) for (hen=0; hen<=33;hen++) for (chick=3;chick<=99;chick++) if (5*cock+3*hen+chick/3==100) /*判断钱数是否等于100*/ if (cock+hen+chick==100) /*判断购买的鸡数是否等于100*/ if (chick%3==0) /*判断鸡雏数是否能被3整除*/ printf("鸡翁:%d只,鸡母:%d只,鸡雏:%d只n", cock,hen,chick); 13 C语言程序设计课后答案 } return 0; 14 C语言程序设计课后答案 第7章 数组 一、选择题 1.D 2.B 3.A 4.C 5.B 6.B 7.C 8.C 9.A 10.A 二、填空题 1.2 0 0 3.①s=count=0; ②i=0;i<20;i++ 2.windows2000 ③continue; ④count++; 三、编程题 1.参考代码如下: #include #include #define N 101 int main(){ } 2.参考代码如下: 15 int i,j,line,a[N]; for(i=2;i a[i]=i; for(j=i+1;j { } printf("n"); for(i=2,line=0;i } return 0; if(a[i]!=0){ } if(line==10){ } printf("n"); line=0; printf("%5d",a[i]); line++; if(a[i]!=0&&a[j]!=0) if(a[j]%a[i]==0) a[j]=0; for(i=2;i C语言程序设计课后答案 #include "stdio.h" int main( ) { } 3.参考代码如下: #include int main(){ } 4.参考代码如下: #include int main( ) { int a[20],i,max,n; for(i=0;i<20;i++) scanf("%d",&a[i]); max=a[0]; n=0; for(i=1;i<20;i++) if(max { } max=a[i]; n=i; printf("max=%d,n=%d",max,n); return 0; int i,n,k=16,a[16]={0}; printf("Please enter a digit:"); scanf("%d",&n); while(n>0) { } for(i=0;i<16;i++) printf("%2d",a[i]); return 0; a[--k]=n%2; n=n/2; /* 将十进制数转变为二进制数*/ int month_tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31}, int year,month,day; int yearday,leap,i; 16 {0,31,29,31,30,31,30,31,31,30,31,30,31}}; C语言程序设计课后答案 } printf("nEnter year_month_day:"); scanf("%d %d %d",&year,&month,&day); leap=((year%4==0)&&(year%100!=0)||(year%400==0)); yearday=day; for(i=1;i yearday+=month_tab[leap][i]; printf("yearday=%d",yearday); return 0; 5.参考代码如下: #include int main(){ } int i,s; printf("Enter string 1: "); gets(str1); printf("Enter string 2: "); gets(str2); i=0; while((str1[i] == str2[i] && str1[i]!= '0')) /*比较两字符串第一个不同的字符*/ i++; s=str1[i]-str2[i]; printf("%dn", s); return 0; char str1[100],str2[100],c; 17 C语言程序设计课后答案 第8章 函数 一、选择题 1.A 2.B 3.C 4.A 5.A 6.C 7.C 8.D 二、填空题 1.5,6 3.① int fun(int x,int y); 4.① i+1 2.11,4 ② max=fun(fun(a,b),c); ② &a[i] 三、编程题 1.参考代码如下: #include long rfact(int n) { } int main() { } 2.参考代码如下: #include int main() { 18 if(n<0) { } else if(n<=1) else return(n*rfact(n-1)); /*递归调用自己*/ return(1); printf("Negative argument to fact!n"); exit(-1); int n; long f; printf("Please input an integral number:"); scanf("%d",&n); f=rfact(n); printf("%d!=%ldn",n,f); return 0; C语言程序设计课后答案 } double turn(char x[]); char str[10]; double a; gets(str); a=turn(str); printf("%fn",a); return 0; double turn(char x[]) { } 3.参考代码如下: #include float max=0,min=0; int main() { } float average(float array[],int n) { int i; double m=0; for(i=0;x[i]!='0';i++) if(x[i]>='0'&&x[i]<='9') m=m*16+x[i]-'0'; else if(x[i]>='A'&&x[i]<='F') m=m*16+x[i]-'A'+10; else if(x[i]>='a'&&x[i]<='f') m=m*16+x[i]-'a'+10; return m; /*定义全局变量,max最高分,min最低分*/ float average(float array[],int n); /*函数说明*/ float ave,score[10]; int i; printf("Please enter 10 scores:"); for(i=0;i<10;i++) scanf("%f",&score[i]); /*函数调用*/ ave=average(score,10); return 0; /*自定义函数*/ printf("max=%6.2fnmin=%6.2fnaverage=%6.2fn",max,min,ave); int i; float aver,sum=array[0]; max=min=array[0]; for(i=1;i { 19 C语言程序设计课后答案 } } if(array[i]>max) max=array[i]; min=array[i]; else if(array[i] sum+=array[i]; aver=sum/n; return(aver); 4.参考代码如下: #include int main() { } int large (int x,int y) { 20 int a[10],b[10],i,n=0,m=0,k=0; printf("Please enter array a:n"); for(i=0;i<10;i++) scanf("%d",&a[i]); printf("Please enter array b:n"); for(i=0;i<10;i++) { } printf("a[i]>b[i] %d timesna[i]=b[i] %d timesn a[i] if(n>k) printf("array a is larger than array bn"); printf("array a is smaller than array bn"); printf("array a is equal array bn"); else if (n else return 0; if(large(a[i],b[i])==1) else k=k+1; n=n+1; m=m+1; else if(large(a[i],b[i])==0) scanf("%d",&b[i]); for(i=0;i<10;i++) C语言程序设计课后答案 } int flag; if(x>y) else flag=0; return (flag); flag=1; flag=-1; else if(x 5.参考代码如下: #include double fun (int m) { } int main() { } int m; printf("please input m:"); scanf("%d",&m); printf("nThe result is %lfn", fun(m)); return 0; double y=1.0 ; int i ; for(i=2;i<=m;i++) y-=1.0/(i*i); return(y); 21 C语言程序设计课后答案 第9章 指针 一、选择题 1.B 2.D 3.A 4.B 5.C 6.A 7.C 8.C 9.A 10.A 二、填空题 1.① int *p; ③ int (*p)[4]; ⑤ int (*p)(); 2.4 12 3.8 10 4.135 5.① num=*b; ② int *p[4]; ④ int *p(); ⑥ int **p; ②num=*c; 三、编程题 1.参考代码如下: #include void swap(int *p1,int *p2) { } int main() { int *a,*b,*c,x,y,z; a=&x; b=&y; c=&z; printf("输入3个整数:"); scanf("%d%d%d",a,b,c); printf("%d,%d,%dn",*a,*b,*c); if(*a<*b) swap(a,b); swap(a,c); swap(b,c); 22 int t; t=*p1; *p1=*p2; *p2=t; if(*a<*c) if(*b<*c) C语言程序设计课后答案 } printf("x=%d,y=%d,z=%dn",x,y,z); return 0; 2.参考代码如下: #include int main() { } 3.参考代码如下: #include int main () { char str[50],*p,*s,c; printf("Enter string:"); gets(str); p=s=str; while (*p) p++; /*找到串结束标记'0'*/ /*指针回退一个字符,指针p指向字符串中的最后一个字符*/ /*当串前面的指针s<(小于)串后面的指针p时,进行循环*/ /*交换两个指针所指向的字符*/ /*串前面的指针s向后(+1)移动*/ /*串后面的指针p向前(-1)移动*/ p--; { } puts(str); return 0; c =*s; *s++=*p; *p--=c; /*指针p和s指向str */ while(s char str1[80],str2[80],str[80]; char *p,*q,*r,*s; printf("Enter string1:"); gets(str1); printf("Enter string2:"); gets(str2); for(p=str1,q=str2,r=str;*p!='0'&&*q!='0';) if(*p<*q) else *r++=*q++; /*若str2中的字符较小,则将它复制到str中*/ /*判断哪个字符串还没有处理完毕*/ /*继续处理(复制)尚未处理完毕的字符串*/ 23 /*完成串合并*/ /*比较str1和str2中的字符*/ *r++=*p++; /*若str1中的字符较小,则将它复制到str中*/ s=(*p!='0')?p:q; while(*s!='0') C语言程序设计课后答案 } *r++=*s++; /*向str中存入串结束标记*/ *r='0'; puts(str); return 0; printf("Result:"); 4.参考代码如下: #include void inverte(int *x, int n) { } int main() { } 5.参考代码如下: #include int main() { int *p,temp,*i,*j, m=(n-1)/2; i=x; j=x+n-1; p=x+m; { } temp=*i; *i=*j; *j=temp; /*声明变量*/ /*变量I存放数组首地址*/ /*变量j存放数组末尾元素地址*/ /*变量P存放数组中间元素地址*/ /*交换数组前半部分和后半部分元素*/ for(;i<=p;i++,j--) int i,a[10]={1,2,3,4,5,6,7,8,9,0}; printf("输入数组元素:n"); for(i=0;i<10;i++) printf("%d,",a[i]); printf("n"); inverte(a,10); /*定义数组*/ /*输出数组*/ /*使数组元素逆序*/ /*输出逆序后数组*/ printf("逆序输出数组元素:n"); for (i=0;i<10;i++) printf("%d,",a[i]); printf("n"); return 0; int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; /*定义数组*/ 24 C语言程序设计课后答案 } int *p,(*pt)[4],i,j; printf("显示数组:"); /*声明指针、指针型数组等变量*/ for(p=a[0];p { } printf("n"); printf("请输入要输出的位置: i= ,j= n "); pt=a; scanf("i=%d,j=%d",&i,&j); return 0; /*输入元素位置*/ /*输出指定位置的数组元素*/ printf("a[%d,%d]=%dn",i,j,*(*(pt+i)+j)); if((p-a[0])%4==0)printf("n"); printf("%4d",*p); /*每行输出4个元素*/ /*输出数组元素*/ 6.参考代码如下: #include #include void sort(char *strings[],int n) { } int main() { int n = 5; int i; char *strings[]={"C language","Basic","World wide","Hello world", /*构造字符串数组*/ 25 /*对字符串排序*/ char *temp; int i,j; for (i=0;i { } for (j=i+1;j { } if (strcmp(strings[i],strings[j])>0) { } temp=strings[i]; strings[i]=strings[j]; strings[j]=temp; /*比较字符大小,交换位置*/ "One world,one dream!"}; C语言程序设计课后答案 } sort(strings, n); for (i=0; i /*排序*/ printf("%sn",strings[i]); return 0; 26 C语言程序设计课后答案 第10章 预处理命令 一、选择题 1.B 2.B 3.D 4.A 5.C 二、填空题 1.宏定义、文件包含、条件编译 2.不带参数宏 带参数宏 3.① CIRCLE(R,L,S,V) ② S=PI*R*R; 27 C语言程序设计课后答案 第11章 用户自定义数据类型 一、选择题 1.B 2.A 3.C 4.D 5.A 6.D 7.C 8.D 9.B 10.C 二、填空题 1.struct DATE d={2018,3,25}; 3.struct node * 2.struct student * 三、编程题 1.参考代码如下: #include #include typedef struct MyComplex { double real; double img; }mc; mc Plus(mc a,mc b) { } mc Sub(mc a,mc b) { } void Show(mc a) { mc result; = + ; = + ; return result; mc result; = - ; = - ; return result; if( == 0 && == 0) printf("0.000n"); printf("%.4fin",); else if( == 0) else if( == 0) 28 C语言程序设计课后答案 } else { } printf("%.4fn",); if( < 0) else printf("%.4f+%.4fin",,); printf("%.4f%.4fin",,); int main() { } 2.参考代码如下: #include #define N 5 typedef struct node { int num; int score1; int score2; mc a,b; printf("输入第一个复数 a:n"); scanf("%lf%lf",&,&); printf("输入第二个复数 b:n"); getchar(); scanf("%lf%lf",&,&); printf("a b的和: "); Show(Plus(a,b)); printf("a b的差: "); Show(Sub(a,b)); return 0; }STU; int main() { STU s[N]; int sum=0,ave,i; for(i=0;i { printf("请输入第%d个学生的信息(学号、数学成绩、英语成绩):n",i+1); scanf("%d%d%d",&s[i].num,&s[i].score1,&s[i].score2); 29 C语言程序设计课后答案 } } printf("所有学生的信息如下:n"); printf(" 学号tt数学成绩t英语成绩n"); for(i=0;i { } ave=sum/(N*2); printf("5名学生2门课程的总平均分为:%dn",ave); return 0; sum=sum+s[i].score1+s[i].score2; if(s[i].score1==100||s[i].score2==100) { } printf("学号为%d的学生有满分成绩n",s[i].num); printf("其信息为:学号:%d,t数学成绩:%d,t英语成printf("%5d:t%10dt%10dtn",s[i].num,s[i].score1,s[i].score2); for(i=0;i 绩:%dn",s[i].num,s[i].score1,s[i].score2); 3.参考代码如下: #include #include #define N 5 { STU* creatList(int n) { /*单链表中结点的个数(不包括头结点)*/ typedef struct node int num; int score1; int score2; struct node *next; }STU; /*尾插法建立单链表,返回值为单链表的头指针*/ /*head为头指针;s指向当前结点;r指向当前结STU *head,*s,*r; int i=0; 点的前一个结点*/ if((head=(STU *)malloc(sizeof(STU)))==NULL) { printf("error!"); 30 /*为头结点分配内存空间,并检测是否分配成功*/ C语言程序设计课后答案 } } return(0); /*将头结点的指针域置空*/ head->next=NULL; r=head; for(i=0;i { } r->next=NULL; return head; if((s=(STU *)malloc(sizeof(STU)))==NULL)/*s结点总指向当前处理结点*/ { } printf("请输入第%d个学生的信息(学号、数学成绩、英语成绩):n",i+1); scanf("%d%d%d",&s->num,&s->score1,&s->score2); r=s; /*从键盘读入数据,存入当前结点的数据域*/ /*将r的指针域指向s,形成单链表*/ r->next=s; printf("error!"); return(0); void printList(STU *L) { } int main() { /*输出链表元素*/ STU *p; printf("所有同学的信息如下:n"); printf(" 学号tt数学成绩t英语成绩n"); while(p!=NULL) { } printf("%5d:t%10dt%10dtn",p->num,p->score1,p->score2); p=p->next; p=L->next; printf("n"); int n=N,x,sum=0,ave; STU *s,*t; s=creatList(n); printList(s); t=s->next; 31 C语言程序设计课后答案 } while(t!=NULL) { } ave=sum/(n*2); printf("5名学生2门课程的总平均分为:%dn",ave); return 0; sum=sum+t->score1+t->score2; if(t->score1==100||t->score2==100) { } t=t->next; printf("学号为%d的学生有满分成绩n",t->num); printf("其信息为:学号:%d,t数学成绩:%d,t英语成绩:%dn",t->num,t->score1,t->score2); 4.参考代码如下: #include struct stu { int num; int mid; int end; int ave; } s[3]; int main() { } 5.参考代码如下: #include #include int i; struct stu *p; for(p=s;p { } for(p=s;p printf("%d %d %d %dn",p->num,p->mid,p->end,p->ave); return 0; scanf("%d %d %d",&(p->num),&(p->mid),&(p->end)); p->ave=(p->mid+p->end)/2; /*包含动态内存分配函数的头文件*/ 32 C语言程序设计课后答案 #define N 5 { int data; /*单链表中结点的个数(不包括头结点)*/ typedef struct node struct node *next; /*尾插法建立单链表,返回值为单链表的头指针*/ /*head为头指针,s指向当前结点,r指向当前结点的}STU; struct node *creatList(int n) { } void printList(struct node *L) { struct node *head,*s,*r; int i=0; 前一个结点*/ if((head=(struct node *)malloc(sizeof(struct node)))==NULL) { } head->next=NULL; r=head; { } r->next=NULL; return head; /*r为尾结点其next指向NULL*/ /*返回单链表的头指针*/ /*输出链表元素*/ if((s=(struct node *)malloc(sizeof(struct node)))==NULL) { } scanf("%d",&s->data); /*从键盘读入数据,存入当前结点的数据域*/ r->next=s; r=s; /*将r的指针域指向s,形成单链表*/ /*r指向s结点*/ printf("error!"); return 0; /*s结点总指向当前处理结点*/ for(i=0;i /*将头结点的指针域置空*/ /*r指向头结点*/ printf("error!"); return 0; /*为头结点分配内存空间,并检测是否分配成功*/ struct node *p; { 33 p=L->next; /*p指向第一个结点的next*/ /*当p不为NULL时循环*/ while(p!=NULL) C语言程序设计课后答案 } } printf("%5d",p->data); /*输出p所指的结点的数值*/ p=p->next; /*使p后移一个结点*/ printf("n"); /*将元素x插入链表L的尾部*/ /*指针s指向要插入的新结点*/ void insert(STU *L,int x) { } int main() { } int n=N,x; STU *s; STU *s,*p,*q; if((s=(STU *) malloc(sizeof(STU)))==NULL) printf("error!"); /*将元素x赋给新结点s的数据域*/ /*p指针首先指向第一个元素*/ s->data=x; p=L->next; { } q=p; p=p->next; /*p指针顺着单链表的头指针往后找,直到单链表的末/*把新结点的指针域指向原来p结点的后继结点*/ while(p!=NULL) 尾,q指针指向单链表的最后一个结点*/ s->next=q->next; q->next=s; /*p结点的指针域指向新结点,完成在链表末尾插入结点的工作*/ /*s为链表头指针*/ printf("请输入%d个整型数,建立单链表:n",n); s=creatList(n); printf("建立的包含%d个元素的单链表如下:n",n); printList(s); printf("请输入要插入的元素:n"); scanf("%d",&x); insert(s,x); printf("插入一个元素后的单链表如下:n"); printList(s); return 0; 34 C语言程序设计课后答案 第12章 文件 一、选择题 1.B 2.C 3.B 4.D 5.B 6.D 7.C 8.C 二、填空题 1.rewind 2.① fgetc(fp)!=EOF ② fclose(fp); 三、编程题 1.参考代码如下: #include #include int main() { } 35 FILE *fp; char c,str1[100],str2[100]; int i=0; if((fp=fopen("myfile","r+"))==NULL) { } while(!feof(fp)) { } str1[i++]='0'; rewind(fp); fputs(str1,fp); rewind(fp); fgets(str2,i-1,fp); puts(str2); fclose(fp); return 0; c=fgetc(fp); if(c>='A'&&c<'Z') c+=32; str1[i++]=c; printf("Cannot open file!"); exit(0); C语言程序设计课后答案 2.参考代码如下: #include #include #define BUFFSIZE 5000 void main() { } FILE *sfp,*dfp; int i; char buf[BUFFSIZE]; if((sfp=fopen("","r"))==NULL) { } if(!(dfp=fopen("","w"))) { } i=0; while(!feof(sfp)) { } while(--i>=0) fclose(sfp); fclose(dfp); /*控制反序操作*/ /*写入目的文件中*/ fputc(buf[i],dfp); buf[i++]=fgetc(sfp); if(i>=5000) { } printf("buffer not enough!"); exit(0); /*读出数据送缓冲区*/ /*若i超出5000,程序设置的缓冲区不足*/ /*判断是否文件尾,不是则循环*/ printf("Destination file cannot be openedn"); exit(0); /*以只写方式打开*/ printf("Source file cannot be openedn"); exit(0); /*以只读方式打开*/ 36
版权声明:本文标题:《C语言程序设计》思考与练习答案 内容由热心网友自发贡献,该文观点仅代表作者本人,
转载请联系作者并注明出处:https://m.elefans.com/dianzi/1703524810a59125.html,
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论