C语言程序设计 科学出版社 曹计昌 习题答案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言程序设计曹计昌”。
第一章习题 1.4 原码:对于一个二进制数X,如果规定其最高位为符号位,其余各位为该数的绝对值,并且规定符号位值为0表示正,为1表示负,采用这种方式的二进制编码称为该二进制数X的原码。
补码:正数的补码等于正数的原码,负数的补码为其原码除符号位不动外,其余各位变反再加1所得。
反码:对于正数而言,反码与原码相同;对于负数而言,反码符号位的定义与原码相同,但需要将对应原码的数值位按位变反。1.5 和:10101010 差:00010000 1.6 和 01073 差-0337 1.7 和 0x1AABA 差-0x5320 1.8(251)10=(11111011)2=(373)8=(FB)16 1.10 在16位机中,[157]补= ***1
[-153]补= ***1 157-153=157+(-153)=(***1)2+(***1)2=(***0)2=(4)10 1.14 算法设计:用变量s存储累加和,k表示计数 描述为:
(1)定义变量s,k。(2)s清零,k赋初值1。
(3)判断k
开始 结束
int s=0,k=1;k
第二章习题 2.2(1)x, ++, +, y(2)-, 0xabL(3)2.89e+12L(4)”String+” FOO””(5)x, *, *, 2(6)”X??/”(7)a, ?, b(8)x,--, +=, y(9)intx, =, +, 10(10)”String”, “FOO”
2.3 不是表识符的如下:
4th 首字母为数字
sizeof关键字 x*y *不是字母、数字、下划线 temp-2-不是字母、数字、下划线 isn’t ’不是字母、数字、下划线 enum 关键字
2.4 合法常数:
.12 0.L
1.E-5
3.F 浮点型常量 2L
33333
0377UL 0x9cfU 整型常量 “a”“”字符串常量 ‘45’‘ ’‘a’字符常量
非法常数: ‘‘’必须用转义序列 0x1ag 十六进制没有g E20 没有尾数部分 ‘18’要用八进制数
‘ xa’格式错误,可以是’xa’ “3’4””需要转义序列 ‘”’需要转义序列
2.5(1)int a, b=5;(2)double h;(3)int x=2.3;0.3 会被截取。(4)const long y=1;必须赋初值(5)float a= 2.5*g;g 没有定义。
(6)int a=b=2;在 turbo C 中编译出错:未定义的符号’b’在main函数中。
2.6(1)4(2)0(3)1(4)6(5)8(6)0(7)3.00(8)1(9)108(10)0
2.7 答案不确定
(1)a==b==c c未定义(2)正确(3)正确(4)正确
(5)a*++-b
表达式缺值
(6)a||b^i
^运算的操作数必须是整型,而i不是(7)i*j%a %运算的操作数必须是整型,而a不是(8)正确(9)正确
(10)int(a+b)应该改成(int)(a+b)
2.9(1)0(2)-2(3)65535(4)5(5)60(6)113(7)-2(8)-1(9)65532(10)3 2.10 unsigned long encrypt(unsigned long x){
unsigned long x0,x1,x2,x3,x4,x5,x6,x7;
x0=(x & 0x0000000F)
x1=(x & 0x000000F0);
x2=(x & 0x00000F00)
x3=(x & 0x0000F000);
x4=(x & 0x000F0000)
x5=(x & 0x00F00000);
x6=(x & 0x0F000000)>> 24;
x7=(x & 0xF0000000);
return(x0|x1|x2|x3|x4|x5|x6|x7);} 2.11 #include void main(){
unsigned long in;unsigned long a,b,c,d;scanf(“%ld”,&in);//in=1563;a=(in&0xff000000)>>24;b=(in&0x00ff0000)>>16;c=(in&0x0000ff00)>>8;d=in&0x000000ff;printf(“%d.%d.%d.%d”,a,b,c,d);} 2.15((k >>8)& 0xFF00)|((p & 0x00FF)b?a>c?a:c:b>c?b:c;max=a > b ?((a > c)? a : c):((b > c)? b : c);2.17 X=y>>n 2.18(c>=’0’&& c
3.1 函数原型是指对函数的名称、返回值类型、参数的数目和参数类型的说明。其规定了调用该函数的语法格式,即调用形式。putchar函数的原型为:int putchar(int c);puts函数的原型为: int puts(const char *s);printf函数的原型为:int printf(const char *format,„);getchar函数的原型为:int getchar_r(void);gets函数的原型为:char * gets_r(char *s);scanf函数的原型为: int scanf(const char *format,„);3.2 不同点:① puts为非格式输出函数,printf为格式输出函数;
② puts函数的参数类型和数目一定(一个字符串),printf函数的参数类型和数目不固定; ③ puts函数输出后会自动换行,printf函数没有这一功能。相同点:①二者都向标准设备输出; ②二者返回值类型都为int。3.3 x1=-1,177777,ffff,65535
x2=-3,177775,fffd,65533
y1=123.456703,123.457,123.457,123.457(注意对齐)
y2=123.449997,1.23450e+02,123.45
x1(%4d)=-1 3.4 ⑴%c;⑵%c;⑶%f;⑷%f;⑸%lu;⑹%d;⑺%d;⑻%d;⑼%f;⑽%Lf 3.5 ⑴错误,运行提示为divide error ⑵正确,结果为b ⑶正确,结果为
* ⑷正确
⑸正确,但无法正常从结果中退出 ⑹正确
⑺正确,结果为82,63 ⑻编译错误,提示 cannot modify a const object ⑼正确 ⑽正确
3.6-6.70000
177601
123
0 3.8 #include void main(){
char c;
c= getchar_r();
if((c>='0'&&c='A'&&c='a'&&c
{
if((c>='0'&&c
{
printf(“%dn”,c-'0');
}
else if((c>='A'&&c
{
printf(“%dn”,c-'A'+10);
}
else
printf(“%dn”,c-'a'+10);
}
else
putchar(c);} 3.9 #include void main(){
short num,high,low;
printf(“Please input a short number:n”);
scanf(“%hd”,&num);
low = 0x00ff & num;
high = 0x00ff &(num >> 8);
printf(“The high byte is:%cn”, high);
printf(“The low byte is:%cn”, low);
} 3.10 #include “stdafx.h”
int main(int argc, char* argv[]){
unsigned short int x;
unsigned short int high,low;
printf(“input a integer:n”);
scanf(“%d”,&x);
high =(x>>12)&0x000f;
low =(x
x= x&0x0ff0;
x=x|high|low;
printf(“%dn”,x);
return 0;} 3.11 #include void main(){ unsigned short int x,m,n;unsigned short int result;scanf(“%hu%hu%hu”,&x,&m,&n);result=(x>>(m-n+1))void main(){
float f,c;
scanf(“%f”,&f);
c=(5*(f-32))/9;
printf(“%.0f(F)=%.2f(C)n”,f,c);} 或者
#include void main(){ int f;
float c;
scanf(“%d”,&f);
c=(5*(f-32))/9;
printf(“%d(F)=%.2f(C)n”,f,c);} 3.13 #include #define PI(3.1415926)int main(int argc, char* argv[]){
double r, h;
double s, v;
printf(“Please input the r and h.”);
scanf(“%lf,%lf”, &r, &h);
s = 2 * PI * r * h + 2 * PI * r * r;
v = PI * r * r * h;
printf(“s is %lf, v is %lf”, s, v);
return 0;} 3.14 #include “stdafx.h”
int main(int argc, char* argv[]){
char a[4] = “编”;
printf(“机内码:%x%xtn”,a[0]&0xff,a[1]&0xff);
printf(“区位码:%xtn”,a[0]&0xff
printf(“国际码:%xtn”,a[0]&0xff
return 0;} 第四章习题 4.1 #include void main(void){ float a,b,c;printf(“Please enter the score of A:n”);scanf(“%f”,&a);printf(“Please enter the score of B:n”);scanf(“%f”,&b);printf(“Please enter the score of C:n”);scanf(“%f”,&c);if((a-b)*(a-c)
printf(“A gets the score %.1f”,a);if((b-a)*(b-c)
printf(“B gets the score %.1f”,b);if((c-a)*(c-b)
printf(“C gets the score %.1f”,c);} 4.3 #include int mdays(int y,int m){
if(m==2)return(y%4==0 &&(y%100==0 || y%400==0))?29:28;
else if(m==4 || m==6 || m==9 || m==11)return 30;
else return 31;}
main(){
int y,m,d,days;
printf(“Enter year:”);
scanf(“%d”,&y);
printf(“Enter month:”);
scanf(“%d”,&m);
printf(“Enter day:”);
scanf(“%d”,&d);
days=d;
while(m>1){days+=mdays(y,m-1);m--;}
printf(“%dn”,days);} 4.4 if方法: #include “stdafx.h” #include int main(int argc, char* argv[]){
float x = 0;
printf(“input the salaryn”);
scanf(“%f”,&x);
if(x
printf(“wrongn”);
else if(x>0 && x
printf(“0n”);
else if(x
printf(“%fn”,x*0.05);
else if(x
printf(“%fn”,x*0.1);
else if(x
printf(“%fn”,x*0.15);
else if(x
printf(“%fn”,x*0.2);
else
printf(“%fn”,x*0.25);
return 0;}
Case方法:
#include “stdafx.h” #include int main(int argc, char* argv[]){
float x;
printf(“input the salaryn”);
scanf(“%f”,&x);
int xCase = 0;
xCase =(int)(x/1000.0);
switch(xCase)
{
case 0:
printf(“0n”);
break;
case 1:
printf(“%fn”,x*0.05);
break;
case 2:
printf(“%fn”,x*0.1);
break;
case 3:
printf(“%fn”,x*0.15);
break;
case 4:
printf(“%fn”,x*0.2);
break;
default:
printf(“%fn”,x*0.25);
}
return 0;} 4.7 #include “stdafx.h” #include int main(int argc, char* argv[]){
char *sa;
char c;
int i = 0,j = 0,k = 0;
do
{
c= getchar_r();
sa[i++] = c;
}while(c!= 'r');
for(i=0;sa[i+1];i++)
{
for(j = i+1;sa[j];j++)
{
if(sa[i]==sa[j] && sa[j] ==' ')
{
for(k=j;sa[k];k++)
sa[k] = sa[k+1];
j--;
}
}
}
for(k=0;sa[k];k++)
printf(“%2c”,sa[k]);
return 0;} 4.10 #include #define EPS 1e-5 void main(){
int s=1;
float n=1.0,t=1.0,pi=0;
while(1.0/n>=EPS)
{
pi=pi+t;
n=n+2;
s=s*(-1);
t=s/n;
}
pi=pi*4;
printf(“pi=%10.6fn”,pi);} 4.11 #include int main(){
int a,b,num1,num2,temp;
printf(“Input a & b:”);
scanf(“%d%d”,&num1,&num2);
if(num1>num2)
{
temp=num1;num1=num2;num2=temp;
}
a=num1;b=num2;
while(b!=0)
{
temp=a%b;
a=b;
b=temp;
}
printf(“The GCD of %d and %d is: %dn”,num1,num2,a);
printf(“The LCM of them is: %dn”,num1*num2/a);} 4.13 #include “stdafx.h” #include int Primes(int x);//判断素数函数 int main(int argc, char* argv[]){
int i,j;
int num;
for(num = 4;num
{
if(num%2 == 0)
{
for(i=1;i
{
for(j=1;j
{
if(num == i+j)
{
if(Primes(i)&& Primes(j))
{
printf(“%d=%d+%dn”,num,i,j);
}
}
}
}
}
}
return 0;}
int Primes(int x){
int i;
int n = 0;
for(i = 1;i
{
if(x%i==0)
n++;
}
if(n==2)
return 1;
else
return 0;} 4.17 #include void main(void){
int c,i;
for(i=1,c=32;c
{
printf(“%3d%-5c”,c,c);
if(!(i%8))
printf(“n”);
} } 4.18 #include “stdafx.h” #include int main(int argc, char* argv[]){
int x;
int i,n,sum;
printf(“input 10 numbersn”);
for(i = 0,n = 0,sum = 0;i
{
scanf(“%d”,&x);
if(x >0)
{
sum+=x;
n++;
}
}
if(n)
printf(“numbers = %d,average = %fn”,n,1.0*sum/n);
return 0;}
第五章习题 5.5 Extern和static存储类型的区别:
Static型外部变量和extern型外部变量的唯一区别是作用域的限制。静态外部变量只能作用于定义它的文件,其他文件中的函数不能使用。Extern型外部变量的作用域可以扩大到整个程序的所有文件。
Static和auto存储类型的区别:
静态局部变量和自动变量有根本性的区别。由于静态局部变量在程序执行期间不会消失,因此,它的值有连续性。当退出块时,它的值能保存下来,以便再次进入块时使用,而自动变量的值在退出块时都丢失了。如果定义时静态局部变量有显示初始化,只在第一次进入时执行一次赋初值操作,而自动变量每次进入时都要执行赋初值操作。5.6 不能。
在C语言中,参数的传递方式是“值传递”,即把实参的值拷贝到参数的存储区中。因此,swap()函数交换的只是实参的本地拷贝,代表swap()实参的变量并没有被改变。5.7 6,12 5.10
#include double sum_fac(int n){
double s=0;
int i;
double fac=1.0;
for(i=1;i
{
fac*=1.0/i;
s+=fac;
}
return s;} void main(void){
int n;
printf(“Please enter the integer n:”);
scanf(“%d”,&n);
printf(“the sum is %lfn”,sum_fac(n));} 5.17 #include void reverse(){
char ch= getchar_r();
if(ch!='n')
{
reverse();
putchar(ch);
} } int main(){
reverse();
printf(“n”);
return 0;}
第六章习题 6.1(1)正确
(2)错误,不需要加“;”(3)错误,“ident”与“(”之间不能有空格(4)错误,宏名不能是关键字“void”(5)错误,将x*y改成((x)*(y))6.4 将会导致变量blue的重复定义
6.5(1)#define NO 0(2)#include “common.h”(3)#line 3000(4)#undef TRUE
#define TRUE 1(5)#if TRUE!=0 #define FALSE 0 #else
#define FALSE 1 #endif(6)#ifndef SIZE
aert(0);#else aert(SIZE1);#endif(7)#define SQUARE_VOLUME(x)(x)*(x)*(x)6.10 #include #define pi 3.1415926 #define BALL_VOLUME(r)((4/3)*pi*(r)*(r)*(r))int main(){ int r;float v[11];for(r=1;r
v=%.2fn“,r,v[r]);} return 0;} 第七章习题 7.9 #include #include #define g 10 void main(){ char *buffer;int gdriver=DETECT,gmode,i,size;initgraph(&gdriver,&gmode,”c: cbgi“);setbkcolor(BLUE);setcolor(RED);setlinestyle(0,0,1);setfillstyle(1,5);circle(200,250,RED);size=imagesize(200,250,200,300);buffer=malloc(size);getimage_r(200,250,200,300,buffer);for(i=0;i #define RAND_MAX 32767 #define RAND
int RandomInteger(int low,int high){
int k;
double d;
d=(double)rand()/((double)RAND_MAX+1);
k=(int)(d*(high-low+1));
return(low+k);} void main(){ long i;int n=0;int szWord[RAND];char a[]=”heads“;char b[]=”tails“;srand(time(0));for(i=0;i
szWord[i]=RandomInteger(0,1);
if(szWord[i]==1)
{
printf(”n%s“,a);
n++;
}
else
{
printf(”n%s“,b);
n=0;
}
if(n==3)
{
printf(”nIt took %ld flips to get heads 3 consecutives times“,i+1);
break;
} } } 7.16
char *MonthName(int month);int MonthDays(int month,int year);int FirstDayOfMonth(int month,int year);int IsLeapYear(int year);enum weak{SUNDAY ,MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY};
#include “caltools.h”
char *MonthName(int month){ Switch(month){ Case 1: return(“January”);Case 2: return(“February”);Case 3: return(“March”);Case 4: return(“April”);Case 5: return(“May”);Case 6: return(“June”);Case 7: return(“July”);Case 8: return(“August”);Case 9: return(“September”);Case 10: return(“October”);Case 11: return(“November”);Case 12: return(“December”);Default : printf(“input error!n”);} }
int MonthDays(int month,int year){ Case 1: Case 3: Case 5: Case 7: Case 8: Case 10: Case 12: return(31);Case 4: Case 6: Case 9: Case 11: return(30);Case 1: return(IsLeapYear(year)?29:28);}
int FirstDayOfMonth(int month,int year){ Int i;Long total=0;If(year=2000){ For(i=1;i2000){ For(i=2000;imonth;i--)Total+=(MonthDays(i, 1999));Return((13-total%7)%7);} Else { For(i=1999;imonth;i--)Total+=(MonthDays(i, year);Return((13-total%7)%7);} }
int IsLeapYear(int year){ Return(!((year%4)&&(year%400))||!(year%400));}
#include #include “caltools.h” Void main(){ Int month,year;Printf(“please input the month and year:”);Scanf(“%d%d” ,&month,&year);
Printf(“the name of the month is %sn”, MonthName(month));
Printf(“there are %d days in this month.n”, MonthDays(month,int year));
Printf(“the first day of the month in this year is %d”, FirstDayOfMonth(month,year));}
第八章习题 8.4 #include ”stdafx.h“ #include ”malloc.h“ #define N 65535
void DelSpace(char sa[]);int main(int argc, char* argv[]){
char sa[N];
char c;
int i =0;
do
{
c = getchar_r();
if(c == 13)
sa[i++] = 'n';
else
sa[i++] = c;
}while(c!='@');
DelSpace(sa);
int j = 0;
while(1)
{
if(sa[j] == '@')
break;
printf(”%c“,sa[j++]);
}
printf(”/n“);
return 0;}
void DelSpace(char sa[]){
char *t1 =(char*)malloc(sizeof(sa));
char *t2 =(char*)malloc(sizeof(sa));
t1 = t2 = sa;
while(*t1)
{
*t2++ = *t1++;
if(*(t2-1)==' ' && *t1==' ')
t2--;
}
} 还有一个方法:
void DelSpace(char sa[],int n){
char* tmpbuf =(char*)malloc(sizeof(sa)+1);
int p1 = 0, p2 = 0;
bool bSpace = false;
while(p1
{
if(bSpace && sa[p1] == ' ')
{
p1++;
}
else
{
if(sa[p1] == ' ')
bSpace = true;
else
bSpace = false;
tmpbuf[p2++] = sa[p1++];
}
}
strcpy(sa, tmpbuf);
free(tmpbuf);}
8.7 #include ”stdafx.h“ #define NUM 100
struct stuInfo {
char name[10];
int mark;}stu[NUM];
void scoreSort(stuInfo stu[],int n);int main(int argc, char* argv[]){
int n;
printf(”input the number of students:n“);
scanf(”%d“,&n);
printf(”intput the name and scoren“);
for(int i = 0;i
{
scanf(”%s“,&stu[i].name);
scanf(”%d“,&stu[i].mark);
}
scoreSort(stu,n);
int j = 0;;
while(j
{
printf(”name:%s score:%dn“,stu[j].name,stu[j].mark);
j++;
}
return 0;}
void scoreSort(stuInfo *stu,int n)//n为学生数 {
for(int i= 0;i
{
for(int j =i;j
{
if(stu[i].mark
{
stuInfo temp;
temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
} }
8.9 // c84.cpp : Defines the entry point for the console application.//
#include ”stdafx.h“ #define NUM 100 struct stuInfo {
char name[10];
int mark;}stu[NUM];
void scoreSort(stuInfo stu[],int n);int find(stuInfo *stu,int n,int score);int main(int argc, char* argv[]){
int n;
printf(”input the number of students:n“);
scanf(”%d“,&n);
printf(”intput the name and scoren“);
for(int i = 0;i
{
scanf(”%s“,&stu[i].name);
scanf(”%d“,&stu[i].mark);
}
scoreSort(stu,n);
printf(”input the socre you want to findn“);
int score;
scanf(”%d“,&score);
int ifind =find(stu,n,score);
if(ifind>=0)
printf(”name:%s score:%dn“,stu[ifind].name,stu[ifind].mark);
else
printf(”Not Find“);
return 0;}
void scoreSort(stuInfo *stu,int n)//n为学生数 {
for(int i= 0;i
{
for(int j =i;j
{
if(stu[i].mark
{
stuInfo temp;
temp = stu[i];
stu[i] = stu[j];
stu[j] = temp;
}
}
} }
int find(stuInfo *stu,int n,int score){
int i = 0,j = n-1,mid;
while(i
{
mid =(i+j)/2;
if(score
{
j = mid-1;
}
else if(score>stu[mid].mark)
{
i = mid +1;
}
else
return mid;
}
return-1;}
8.11 #include ”stdafx.h“ #include ”malloc.h“ int *strnins(char *s,char *t,int n);int main(int argc, char* argv[]){
char *s = ”abcd“;
char *t = ”ttt“;
int n = 2;
strnins(s,t,n);
return 0;}
int *strnins(char *s,char *t,int n){
char *p =(char*)malloc(sizeof(s)-1);
int tlong = 0;//字符串t的长度
while(t[tlong]!=' ')
{
tlong++;
}
int i = n;
int j = 0;
while(j
{
p[j]=s[j];
j++;
}
j=0;
while(s[i]!= ' '&&t[j]!=' ')
{
p[i+tlong] = s[i];
p[i]= t[j];
i++;
j++;
}
if(s[i]==' ')
{
p[i] = t[j];
i++;
j++;
}
else if(t[j]==' ')
{
p[i+tlong] = s[i];
i++;
}
printf(”%s“,p);
free(p);
printf(”n“);
return 0;}
8.18 #include ”stdafx.h“;#define n 200
void del(int *str,int m,int lenth);int main(int argc, char* argv[]){
int i=0,j=-1,str[n];
int total = 0;
int m = n;
while(j
{
i++;
j++;
if(i==3)//数到3
{
del(str,j+1,m);
total++;
i=0;
m--;
}
if(total == n-1)//如果退出了N-1个人
break;
if(j == m)//循环到最后一位
j=-1;
}
printf(”%d“,j);
return 0;}
void del(int *str,int m,int lenth)//将编号为m以后的往前移一位 {
int i =m;
while(i
{
str[i] = str[i+1];
i++;
} } 第九章习题 9.2 #include void half(int x);void main(){ int x;printf(”please input an interer:n“);scanf(”%d“,&x);half(x);} void half(int x){ int k;char*p;char up_half,low_half;p=(char *)&x;p=p+1;for(k=1;k>=0;k--){ low_half=(*p)&0x0f;if(low_half>4)&0x0f;if(up_half void chachen(int *x,int *y);main(){ int a[3],b[3];int *x,*y,i;x=&a[0];y=&b[0];printf(”please input 3 numbers of vector x:n“);scanf(”%d%d%d“,x,x+1,x+2);printf(”please input 3 numbers of vector y:n“);scanf(”%d%d%d“,y,y+1,y+2);chachen(x,y);}
void chachen(int *x,int *y){ int i,j,a,b,c;int k='i';int *pz,z[3][3];pz=&z[0][0];for(i=0,j=0;j
9.5(用指针做)#include #define N 5 void reverse(int a[],int n){ int i,k,t;int *p,*q;p=&a[0];q=&a[4];for(i=0;i void main(){ int i,a[N]; printf(”please input five numbers:“); for(i=0;i scanf(”%d“,&a[i]); reverse(a,N);} 9.5(用数组做)#include #define N 5 void reverse(int a[],int n){ int i,temp; for(i=0;i { temp=p[i]; p[i]=p[n-1-i]; p[n-1-i]=temp; } for(i=0;i printf(”%4d“,p[i]);} void main(){ int i,a[N]; printf(”please input five numbers:“); for(i=0;i scanf(”%d“,&a[i]); reverse(a,N);} 9.9 #include void main(){ int x[5][5];int i,j;int *p=&x[0][0];for(i=0;i 第十章习题 10.4 #include #include struct point{ int x,y,z;};struct line{ struct point start;struct point end;};double distance(struct line);main(){ struct line a={{1,1,1},{2,2,2}};double length;printf(“please input the position of the starting points”);scanf(“%d%d%d”, &a.start.x, &a.start.y, &a.start.z);printf(“please input the position of the ending points”);scanf(“%d%d%d”, &a.end.x, &a.end.y, &a.end.z);length =distance(a);printf(“the distance of the two points is %f”, length);} double distance(struct line m){ return(sqrt((m.start.x-m.end.x)*(m.start.x-m.end.x)+(m.start.y-m.end.y)*(m.start.y-m.end.y)+(m.start.z-m.end.z)*(m.start.z-m.end.z)));} 10.6 #include #include struct point{ int x,y,z;};struct line{ struct point start;struct point end;}; double distance(struct line);struct line extenddistance(struct line,int);main(){ struct line a={{1,1,1},{2,2,2}};struct line changeline;double length;int k;printf(”please input the position of the starting points“);scanf(”%d%d%d“, &a.start.x, &a.start.y, &a.start.z);printf(”please input the position of the ending points“);scanf(”%d%d%d“, &a.end.x, &a.end.y, &a.end.z);length =distance(a);printf(”the distance of the two points is %fn“, length);printf(”input the value of the kn“);scanf(”%d“, &k);changeline= extenddistance(a,k);printf(”the new position of the ending points is %d,%d,%dn“,changeline.end.x,changeline.end.y,changeline.end.z);} double distance(struct line m){ return(sqrt((m.start.x-m.end.x)*(m.start.x-m.end.x)+(m.start.y-m.end.y)*(m.start.y-m.end.y)+(m.start.z-m.end.z)*(m.start.z-m.end.z)));} struct line extenddistance(struct line m,int n){ double extendlength;struct line y;extendlength=n*distance(m);y.start.x=m.start.x;y.start.y=m.start.y;y.start.z=m.start.z;y.end.x=n*m.end.x+(1-n)*m.start.x;y.end.y= n*m.end.y+(1-n)*m.start.y;y.end.z= n*m.end.z+(1-n)*m.start.z;return(y);} 10.10 #include #include struct stu_study{ char num[10];char name[10];int math;int english;int chinese;};scan(struct stu_study student[]);print(struct stu_study student[]);modify(struct stu_study *student);float* aver_score(struct stu_study student[],float scores[]);sort(struct stu_study student[],float scores[]);main(){ int i,m;float scores[6];struct stu_study student[6];scan(student);print(student);printf(”which student's information do you want to modify?n“);scanf(”%d“,&i);modify(&student[i]);print(student);aver_score(student,scores);for(m=1;m printf(”please input the new number:n“); scanf(”%s“,student->num); printf(”modify sucefully,the new number is %sn“,student->num);break;case 2: printf(”please input the new name:n“); scanf(”%s“,student->name); printf(”modify sucefully,the new number is %sn“,student->name);break;case 3: printf(”please input the new score of math:n“); scanf(”%d“,student->math); printf(”modify sucefully,the new number is %sn“,student->math);break;case 4: printf(”please input the new score of english:n“); scanf(”%d“,student->english); printf(”modify sucefully,the new number is %sn“,student->english);break;case 5: printf(”please input the new score of chinese:n“); scanf(”%d“,student->chinese); printf(”modify sucefully,the new number is %sn“,student->chinese); break;default: printf(”input error!“);} } float *aver_score(struct stu_study student[],float scores[]){ int i;for(i=1;i #include struct stu_list{ char num[10];char name[10];int math;int english;int chinese;float scores;struct stu_list *next;};struct list *head;void scan();void print();void modify();void aver_score();void sort();main(){ int i=0;int m,n;struct stu_list *p,*q;scan();print();modify();print();aver_score();p=head->next;for(m=1;mscores);p=p->next;} sort();q=head->next;for(i=1;iscores>60.0 && q->scoresnum,q->name,q->math,q->english,q->chinese,q->scores);q=q->next;} } void scan(){ int i;struct stu_list *p,*q;p=(struct list *)malloc(sizeof(struct stu_list));p->next=NULL;head=p;q=p;printf(”please input the information of the five studentsn“);for(i=1;inum, &p->name, &p->math, &p->english, &p->chinese);q->next=p;q=p;} } void print(){ int i;struct stu_list *p,*q;p=head->next;printf(”please output the information of the five studentsn“);for(i=1;inum, p->name, p->math, p->english, p->chinese);p=p->next;} } void modify(){ int n,item;int i=0;struct stu_list *p;printf(”which student's information do you want to modify?n“);scanf(”%d“,&n);printf(”which item dou you want to modify?n“);scanf(”%d“,&item);p=head;while(inext;i++;} switch(item){ case 1: printf(”please input the new number:n“); scanf(”%s“,p->num); printf(”modify sucefully,the new number is %sn“,p->num);break;case 2: printf(”please input the new name:n“); scanf(”%s“,p->name); printf(”modify sucefully,the new number is %sn“,p->name);break;case 3: printf(”please input the new score of math:n“); scanf(”%d“,p->math); printf(”modify sucefully,the new number is %sn“,p->math);break;case 4: printf(”please input the new score of english:n“); scanf(”%d“,p->english); printf(”modify sucefully,the new number is %sn“,p->english);break;case 5: printf(”please input the new score of chinese:n“); scanf(”%d“,p->chinese); printf(”modify sucefully,the new number is %sn“,p->chinese); break;default: printf(”input error!“);} } void aver_score(){ int i;struct stu_list *p;float m;p=head->next;for(i=1;iscores=(p->math+p->english+p->chinese)/3;p=p->next;} } void sort(){int i,j,m,k,t;float s_scores[6];struct stu_list *p;p=head->next;for(m=1;mscores;p=p->next;} for(i=1;i 10.13 #include struct list{ char data;struct list *next;} main(){ struct list *head=NULL,*tail,*p;char c,b;c= getchar_r();head=(struct list *)malloc(sizeof(struct list));head->data=c;tail=head;while((c= getchar_r())!=EOF){ tail->next=(struct list *)malloc(sizeof(struct list));tail=tail->next;tail->data=c;} tail->next=NULL;p=head; while(p){ printf(”%ct“,p->data);p=p->next;} printf(”n");}