📄 teacher's answer.txt
字号:
}
}
6.10
main()
{int i,j,uppn,lown,dign,span,othn;
char text[3][80];
uppn=lown=dign=span=othn=0;
for(i=0;i<3;i++)
{gets(text[i]);
for(j=0;j<80&&text[i][j]!='\0';j++)
{if(text[i][j]>='A'&&text[i][j]<='Z')
uppn++;
else if(text[i][j]>='a'&&text[i][j]<='z')
lown++;
else if(text[i][j]>='0'&&text[i][j]<='9')
dign++;
else if(text[i][j]==' ')
span++;
else
othn++;
}
}
for(i=0;i<3;i++)
printf("%s\n",text[i]);
printf("uppn=%d\n",uppn);
printf("lown=%d\n",lown);
printf("dign=%d\n",dign);
printf("span=%d\n",span);
printf("othn=%d\n",othn);
}
6.11
main()
{static char a[5]={'*','*','*','*','*'};
int i,j,k;
char space=' ';
for(i=0;i<=5;i++)
{printf("\n");
for(j=1;j<=3*i;j++)
printf("%1c",space);
for(k=0;k<=5;k++)
printf("%3c",a[k]);
}
}
6.12
#include<stdio.h>
main()
{int i,n;
char ch[80],tran[80];
gets(ch);
i=0;
while(ch[i]!='\0')
{if((ch[i]>='A')&&(ch[i]<='Z'))
tran[i]=26+64-ch[i]+1+64;
else if((ch[i]>='a')&&(ch[i]<='z'))
tran[i]=26+96-ch[i]+1+96;
else
tran[i]=ch[i];
i++;
}
n=i;
for(i=0;i<n;i++)
putchar(tran[i]);
}
6.13
main()
{char s1[80],s2[40];
int i=0,j=0;
scanf("%s",s1);
scanf("%s",s2);
while(s1[i]!='\0')i++;
while(s2[j]!='\0')s1[i++]=s2[j++];
s1[i]='\0';
printf("s=%s\n",s1);
}
6.14
#include<stdio.h>
main()
{int i,resu;
char s1[100],s2[100];
gets(s1);
gets(s2);
i=0;
while((s1[i]==s2[i])&&(s1[i]!='\0'))i++;
if(s1[i]=='\0'&&s2[i]=='\0')resu=0;
else
resu=s1[i]-s2[i];
printf("s1=%s,s2=%s,resu=%d\n",s1,s2,resu);
}
6.15
#include"stdio.h"
main()
{char from[80],to[80];;
int i;
scanf("%s",from);
for(i=0;i<=strlen(from);i++)
to[i]=from[i];
printf("%s\n",to);
}
第七章
7.1
hcf(u,v)
int u,v;
{int a,b,t,r;
if(u>v){t=u;u=v;v=t;}
a=u;b=v;
while((r=b%a)!=0)
{b=a;a=r;}
return(a);
}
lcd(u,v,h)
int u,v,h;
{return(u*v/h);}
main()
{int u,v,h,l;
scanf("%d,%d",&u,&v);
h=hcf(u,v);
printf("H.C.F=%d\n",h);
l=lcd(u,v,h);
printf("L.C.D=%d\n",l);
}
7.2
#include"math.h"
float x1,x2,disc,p,q;
greater_than_zero(a,b)
float a,b;
{x1=(-b+sqrt(disc))/(2*a);
x2=(-b-sqrt(disc))/(2*a);
}
equal_to_zero(a,b)
flaot a,b;
{x1=x2=-b/(2*a);}
smaller_than_zero(a,b)
float a,b;
{p=-b/(2*a);
q=sqrt(-disc)/(2*a);
}
main()
{float a,b,c;
scanf("%f,%f,%f",&a,&b,&c);
disc=b*b-4*a*c;
if(fabs(disc)<=1e-5)
{equal_to_zero(a,b);
printf("x1=%5.2f\tx2=%5.2f\n",x1,x2);
}
else if(disc>0)
{greater_than_zero(a,b);
printf("x1=%5.2f\tx2=%5.2f\n",x1,x2);
}
else
{smaller_than_zero(a,b);
printf("x1=%5.2f+%5.2fi\tx2=%5.2f-%5.2fi\n",p,q,p,q);
}
}
7.3
main()
{int number;
scanf("%d",&number);
if(prime(number))
printf("yes");
else
printf("no");
}
int prime(number)
int number;
{int flag=1,n;
for(n=2;n<number/2&&flag==1;n++)
if(number%n==0)
flag=0;
return(flag);
}
7.4
#define N 3
int array[N][N];
convert(array)
int array[3][3];
{int i,j,t;
for(i=0;i<N;i++)
for(j=i+1;j<N;j++)
{t=array[i][j];
array[i][j]=array[j][i];
array[j][i]=t;
}
}
main()
{int i,j;
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&array[i][j]);
convert(array);
for(i=0;i<N;i++)
{printf("\n");
for(j=0;j<N;j++)
printf("%5d",array[i][j]);
}
}
7.5
main()
{char str[100];
scanf("%s",str);
inverse(str);
printf("%s\n",str);
}
inverse(str)
char str[];
{char t;
int i,j;
for(i=0,j=strlen(str);i<strlen(str)/2;i++,j--)
{t=str[i];
str[i]=str[j-1];
str[j-1]=t;
}
}
7.6
char concate(str1,str2,str)
char str1[],str2[],str[];
{int i,j;
for(i=0;str1[i]!='\0';i++)
str[i]=str1[i];
for(j=0;str2[j]!='\0';j++)
str[i+j]=str2[j];
str[i+j]='\0';
}
main()
{char s1[100],s2[100],s[100];
scanf("%s",s1);
scanf("%s",s2);
concate(s1,s2,s);
printf("\ns=%s",s);
}
7.7
main()
{char str[80],c[80];
void cpy();
gets(str);
cpy(str,c);
printf("\n%s\n",c);
}
void cpy(s,c)
char s[],c[];
{int i,j;
for(i=0,j=0;s[i]!='\0';i++)
if(s[i]=='a'||s[i]=='A'||s[i]=='e'||s[i]=='E'||s[i]=='i'||
s[i]=='I'||s[i]=='o'||s[i]=='O'||s[i]=='u'||s[i]=='U')
{c[j]=s[i];j++;}
c[j]='\0';
}
7.8
main()
{char str[80];
scanf("%s",str);
insert(str);
}
insert(str)
char str[];
{int i;
for(i=strlen(str);i>0;i--)
{str[i*2]=str[i];
str[i*2-1]=' ';
}
printf("%s\n",str);
}
7.9
int alph,digit,space,others;
main()
{char text[80];
gets(text);
alph=0,digit=0,space=0,others=0;
count(text);
printf("\nalph=%d,digit=%d,space=%d,others=%d\n",alph,digit,space,others);
}
count(str)
char str[];
{int i;
for(i=0;str[i]!='\0';i++)
if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))
alph++;
else if(str[i]>='0'&&str[i]<='9')
digit++;
else if(strcmp(str[i],' ')==0)
space++;
else
others++;
}
7.10
int alph(c)
char c;
{if((c>='a'&&c<='z')||(c>='A'&&c<='Z'))
return(1);
else
return(0);
}
int longest(string)
char string[];
{int len=0,i,length=0,flag=1,place,point;
for(i=0;i<=strlen(string);i++)
if(alph(string[i]))
if(flag)
{point=i;
flag=0;
}
else
len++;
else
{flag=1;
if(len>length)
{length=len;
place=point;
len=0;
}
}
return(place);
}
main()
{int i;
char line[100];
gets(line);
for(i=longest(line);alph(line[i]);i++)
printf("%c",line[i]);
printf("\n");
}
7.11
#define N 10
char str[N];
main()
{int i,flag;
for(flag=1;flag==1;)
{scanf("%s",str);
if(strlen(str)>N)
printf("input error");
else
flag=0;
}
sort(str);
for(i=0;i<N;i++)
printf("%c",str[i]);
}
sort(str)
char str[N];
{int i,j;
char t;
for(j=1;j<N;j++)
for(i=0;(i<N-j)&&(str[i]!='\0');i++)
if(str[i]>str[i+1])
{t=str[i];
str[i]=str[i+1];
str[i+1]=t;
}
}
7.12
#include<math.h>
float solut(a,b,c,d)
float a,b,c,d;
{float x=1,x0,f,f1;
do
{x0=x;
f=((a*x0+b)*x0+c)*x0+d;
f1=(3*a*x0+2*b)*x0+c;
x=x0-f/f1;
}
while(fabs(x-x0)>=1e-5);
return(x);
}
main()
{float a,b,c,d;
scanf("%f,%f,%f,%f",&a,&b,&c,&d);
printf("x=%10.7f\n",solut(a,b,c,d));
}
7.13
main()
{int x,n;
float p();
scanf("%d,%d",&n,&x);
printf("P%d(%d)=%10.2f\n",n,x,p(n,x));
}
float p(tn,tx)
int tn,tx;
{if(tn==0)
return(1);
else if(tn==1)
return(tx);
else
return(((2*tn-1)*tx*p((tn-1),tx)-(tn-1)*p((tn-2),tx))/tn);
}
7.14
#define N 10
#define M 5
float score[N][M];
float a_stu[N],a_cor[M];
main()
{int i,j,r,c;
float h;
float s_diff();
float highest();
r=0;
c=1;
input_stu();
avr_stu();
avr_cor();
printf("\n number class 1 2 3 4 5 avr");
for(i=0;i<N;i++)
{printf("\nNO%2d",i+1);
for(j=0;j<M;j++)
printf("%8.2f",score[i][j]);
printf("%8.2f",a_stu[i]);
}
printf("\nclassavr");
for(j=0;j<M;j++)
printf("%8.2f",a_cor[j]);
h=highest(&r,&c);
printf("\n\n%8.2f %d %d\n",h,r,c);
printf("\n %8.2f\n",s_diff());
}
input_stu()
{int i,j;
float x;
for(i=0;i<N;i++)
{for(j=0;j<M;j++)
{scanf("%f",&x);
score[i][j]=x;
}
}
}
avr_stu()
{int i,j;
float s;
for(i=0;i<N;i++)
{for(j=0,s=0;j<M;j++)
s+=score[i][j];
a_stu[i]=s/5.0;
}
}
avr_cor()
{int i,j;
float s;
for(j=0;j<M;j++)
{for(i=0,s=0;i<N;i++)
s+=score[i][j];
a_cor[j]=s/(float)N;
}
}
float highest(r,c)
int *r,*c;
{float high;
int i,j;
high=score[0][0];
for(i=0;i<N;i++)
for(j=0;j<M;j++)
if(score[i][j]>high)
{high=score[i][j];
*r=i+1;
*c=j+1;
}
return(high);
}
float s_diff()
{int i,j;
float sumx=0.0,sumxn=0.0;
for(i=0;i<N;i++)
{sumx+=a_stu[i]*a_stu[i];
sumxn+=a_stu[i];
}
return(sumx/N-(sumxn/N)*(sumxn/N));
}
7.15
#include<stdio.h>
#define N 10
void input_e(num,name)
int num[];
char name[N][8];
{int i;
for(i=0;i<N;i++)
{scanf("%d",&num[i]);
gets(name[i]);
}
}
void sort(num,name)
int num[];
char name[N][8];
{int i,j,min,temp1;
char temp2[8];
for(i=0;i<N-1;i++)
{min=i;
for(j=i;j<N;j++)
if(num[min]>num[j])min=j;
temp1=num[i];
num[i]=num[min];
num[min]=temp1;
strcpy(temp2,name[i]);
strcpy(name[i],name[min]);
strcpy(name[min],temp2);
}
for(i=0;i<N;i++)
printf("\n%5d%10s",num[i],name[i]);
}
void search(n,num,name)
int n,num[];
char name[N][8];
{int top,bott,min,loca;
loca=0;
top=0;
bott=N-1;
if((n<num[0])||(n>num[N-1]))
loca=-1;
while((loca==0)&&(top<=bott))
{min=(bott+top)/2;
if(n==num[min])
{loca=min;
printf("number=%d,name=%s\n",n,name[loca]);
}
else if(n<num[min])
bott=min-1;
else
top=min+1;
}
if(loca==0||loca==-1)
printf("number=%d is not in table\n",n);
}
main()
{int num[N],number,flag,c,n;
char name[N][8];
input_e(num,name);
sort(num,name);
for(flag=1;flag;)
{scanf("%d",&number);
search(number,num,name);
printf("continue?Y/N!");
c=getchar();
if(c=='N'||c=='n')
flag=0;
}
}
7.16
#include<stdio.h>
#define MAX 1000
main()
{int c,i,flag,flag1;
char t[MAX];
i=0;
flag=0;
flag1=1;
while((c=getchar())!='\0'&&i<MAX&&flag1)
{if(c>='0'&&c<='9'||c>='A'&&c<='F'||c>='a'&&c<='f')
{flag=1;
t[i++]=c;
}
else if(flag)
{t[i]='\0';
printf("\nnumber=%d\n",htoi(t));
printf("continue?");
c=getchar();
if(c=='n'||c=='N')
flag1=0;
else
{flag=0;
i=0;
}
}
}
}
htoi(s)
char s[];
{int i,n;
n=0;
for(i=0;s[i]!='\0';i++)
{if(s[i]>='0'&&s[i]<='9')
n=n*16+s[i]-'0';
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10;
}
return(n);
}
7.17
#include<stdio.h>
void convert(n)
int n;
{int i;
if((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}
main()
{int number;
scanf("%d",&number);
if(number<0)
{putchar('-');
number=-number;
}
convert(number);
}
7.18
main()
{int year,month,day;
int days;
scanf("\n%d,%d,%d",&year,&month,&day);
days=sum_day(month,day);
if(leap(year)&&(month>=3))
days+=1;
printf("days=%d\n",days);
}
static int day_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}
int sum_day(month,day)
int month,day;
{int i;
for(i=1;i<month;i++)
day+=day_tab[i];
return(day);
}
int leap(year)
int year;
{int leap;
leap=year%4==0&&year%100!=0||year%400==0;
return(leap);
}
第八章 编译预处理
8.1
#define SWAP(a,b) t=b;b=a;a=t
main()
{int a,b,t;
scanf("%d,%d",&a,&b);
SWAP(a,b);
printf("a=%d\tb=%d\n",a,b);
}
8.2
#define SURPLUS(a,b) ((a)%(b))
main()
{int a,b;
scanf("%d,%d",&a,&b);
printf("%d",SURPLUS(a,b));
}
8.3
#include"math.h"
#define S(a,b,c) ((a+b+c)/2)
#define AREA(a,b,c) (sqrt(S(a,b,c)*(S(a,b,c)-a)*(S(a,b,c)-b)*(S(a,b,c)-c)))
main()
{float a,b,c;
scanf("%f,%f,%f",&a,&b,&c);
if(a+b>c&&b+c>a&&a+c>b)
printf("area=%8.2f\n",AREA(a,b,c));
else
printf("input error");
}
8.4
#define LEAP(y) (y%4==0)&&(y%100!=0)||(y%400==0)
main()
{int year;
scanf("%d",&year);
if(LEAP(year))
printf("yes");
else
printf("no");
}
8.5
printf("value=%format\t",x);
printf("value=%format\t",x);putchar('\n');
printf("value=%format\t",x1);printf("value=%format\t",x2);putchar('\n');
输出结果:
value=5.000000ormat value=5.000000ormat
value=3.000000ormat value=8.000000ormat
8.6
#define PR printf
#define NL "\n"
#define Fs "%f"
#define F "%6.2f"
#define F1 F NL
#define F2 F "\t" F NL
#define F3 F "\t" F "\t" F NL
main()
{float a,b,c;
scanf(Fs,&a);
scanf(Fs,&b);
scanf(Fs,&c);
PR(NL);
PR(F1,a);
PR(F1,b);
PR(F1,c);
PR(NL);
PR(F2,a,b);
PR(F1,c);
PR(NL);
PR(F3,a,b,c);
}
8.7
/*format.h文件*/
#define DIGIT(d) printf("%d\n",d)
#define FLOAT(f) printf("%8.2f\n",f)
#define STRING(s) printf("%s\n",s)
/*用户文件*/
#include"format.h"
main()
{int d,num;
float f;
char s[80];
scanf("%d",&num);
switch(num)
{case 1:scanf("%d",&d);
DIGIT(d);
break;
case 2:scanf("%f",&f);
FLOAT(f);
break;
case 3:scanf("%s",s);
STRING(s);
break;
default:printf("error");
}
}
8.8
main()
{int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("max=%d\n",max(a,b,c));
}
max(a,b,c)
int a,b,c;
{int t;
t=x>y?x:y;
return(t>z?t:z);
}
#define MAX(a,b) ((a)>(b)?(a):(b))
main()
{int a,b,c;
scanf("%d,%d,%d",&a,&b,&c);
printf("max=%d\n",MAX(MAX(a,b),c));
}
8.10
#include"stdio.h"
#define MAX 80
#define CHANGE 1
main()
{char str[MAX];
int i;
scanf("%s",str);
#if(CHANGE)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -