《C语言程序设计(何钦铭颜晖主编)》习题8答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

P173习题8 第一题
#include<stdio.h>
int main(void)
{
char ch;
int a[10];
int i,j,m;
printf("请输入10个整数:\n");
for(i=0;i<10;i++){
printf("请输入%d第个数:",i+1);
scanf("%d",&a[i]);
}
printf("请输入A或D:");
scanf(" %c",&ch);
if(ch=='A'){
for(i=0;i<9;i++){
for(j=i+1;j<10;j++){
if(a[i]>a[j]){
m=a[i];
a[i]=a[j];
a[j]=m;
}
}
}
}
else if(ch=='D'){
for(i=0;i<9;i++){
for(j=i+1;j<10;j++){
if(a[i]<a[j]){
m=a[i];
a[i]=a[j];
a[j]=m;
}
}
}
}
for(i=0;i<10;i++){
printf("%d ",a[i]);
}
return 0;
}
第二题
#include<stdio.h>
int main(void)
{
int a[10];
int i,j,x;
int search(int list[],int i,int x);
printf("输入10个整数:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
printf("输入一个整数x:");
scanf("%d",&x);
j=0;
for(i=0;i<10;i++){
if(search(a,i,x)!=-1){
j++;
printf("%d",search(a,i,x));
}
else;
}
if(j==0)
printf("-1");
return 0;
}
int search(int list[],int i,int x)
{
int j;
j=0;
if(x==list[i])
j++;
else;
if(j==0)
return -1;
else
return i;
}
第三题
#include<stdio.h>
void houyi(int a[],int *p,int n,int m);
int main(void)
{
int a[20];
int i,m,n;
printf("请输入整数n:");
scanf("%d",&n);
printf("请输入%d个整数:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
printf("请输入您要后移的位数m:"); scanf("%d",&m);
houyi(a,a,n,m);
for(i=0;i<n;i++)
printf("%d",a[i]);
printf("\n");
return 0;
}
void houyi(int a[],int *p,int n,int m) {
int i;
int b[20];
for(i=0;i<n;i++)
b[i]=a[i];
for(i=0;i<n;i++){
if(i<=n-m-1)
*(p+i+m)=b[i];
else
*(p+(i+m)%n)=b[i];
}
}
第四题
#include<stdio.h>
void swap2(int *,int *);
void bubble(int a[],int n);
int main(void)
{
int n,a[8];
int i;
printf("Enter n(n<=8):");
scanf("%d",&n);
printf("Enter a[%d]:",n);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
bubble(a,n);
printf("After sorted,a[%d]=",n);
for(i=0;i<n;i++)
printf("%3d",a[i]);
return 0;
}
void bubble(int a[],int n)
{
int i,j,m;
static int b[8];
for(i=1;i<n;i++){
for(j=0;j<n-i;j++){
if(a[j]>a[j+1])
swap2(&a[j],&a[j+1]);
for(m=0;m<n;m++){
if(a[m]<=a[m+1])
b[m]++;
}
}
if(b[m]==n-1)
break;
}
}
void swap2(int *px,int *py)
{
int t;
t=*px;
*px=*py;
*py=t;
}
第五题
#include<stdio.h>
#include<string.h>
void mcopy(char *s,int m);
int main(void)
{
int i,m,l;
char str[100];
printf("请输入您要输入的字符串:");
gets(str);
printf("您将从原字符串的第m位复制新字符串,请输入m:\n");
scanf("%d",&m);
printf("复制后,新的字符串为:");
mcopy(str,m);
return 0;
}
void mcopy(char *s,int m)
{
printf("%s\n",s+m-1);
}
第六题
#include<stdio.h>
#include<string.h>
void delchar(char *,char c);
int main(void)
{
char str[80];
char ch;
printf("Enter a string:");
gets(str);
printf("Enter delete char:");
scanf("%c",&ch);
delchar(str,ch);
printf("%s\n",str);
return 0;
}
void delchar(char *s,char c)
{
int i,j;
char str1[80];
j=0;
for(i=0;s[i]!='\0';i++){
if(s[i]!=c){
str1[j]=s[i];
j++;
}
}
str1[j]='\0';
for(i=0;str1[i]!='\0';i++,s++){
*s=str1[i];
}
*s='\0';
}
第七题
#include<stdio.h>
#include<string.h>
struct zfc{
char str[80];
};
int main(void)
{
int i,j;
char str[80],str1[80];
struct zfc s[5];
for(i=0;i<5;i++){
printf("请输入第%d个字符串:",i+1);
scanf("%s",s[i].str);
}
for(i=0;i<=3;i++){
for(j=i+1;j<=4;j++){
if(strcmp(s[i].str,s[j].str)>0){
strcpy(str1,s[i].str);
strcpy(s[i].str,s[j].str);
strcpy(s[j].str,str1);
}
}
}
for(i=0;i<5;i++){
puts(s[i].str);
}
return 0;
}
第八题
#include<stdio.h>
#include<string.h>
int main(void)
{
int l,i;
char str[80],str1[80];
char *p,*q;
p=str;
q=str1;
printf("请输入一串字符:");
scanf("%s",str);
l=strlen(str);
for(i=0;*p!='\0';p++,i++){
*(q+l-1-i)=*p;
}
*(q+l)='\0';
if(strcmp(str,str1)==0)
printf("输入的字符串是“回文”!\n");
else
printf("输入的字符串不是“回文”!\n");
return 0;
}
第九题
#include<stdio.h>
#include<string.h>
int main(void)
{
char str[80];
char *p;
p=str;
int n1,n2,n3,n4,n5;
printf("输入一行文字:");
gets(str);
n1=n2=n3=n4=n5=0;
for(;*p!='\0';p++){
if((*p>='A')&&(*p<='Z'))
n1++;
else if((*p>='a')&&(*p<='z'))
n2++;
else if(*p==' ')
n3++;
else if((*p>='0')&&(*p<='9'))
n4++;
else
n5++;
}
printf("大写字母字符的个数为:%d\n",n1);
printf("小写字母字符的个数为:%d\n",n2);
printf("空格字符的个数为: %d\n",n3);
printf("数字字符的个数为: %d\n",n4);
printf("其他字符的个数为: %d\n",n5);
return 0;
}
第十题
#include<stdio.h>
#include<string.h>
int strcomp(char s1[80],char s2[80]);
int main(void)
{
int m;
char str1[80],str2[80];
printf("请输入第一个字符串:");
scanf("%s",str1);
printf("请输入第二个字符串:");
scanf("%s",str2);
m=strcomp(str1,str2);
if(m==1)
printf("str1>str2\n");
else if(m==0)
printf("str1=str2\n");
else
printf("str1<str2\n");
return 0;
}
int strcomp(char s1[80],char s2[80])
{
int a;
if(strcmp(s1,s2)>0)
a=1;
else if(strcmp(s1,s2)==0)
a=0;
else
a=-1;
return a;
}
第十一题
#include<stdio.h>
#include<string.h>
void fushu(char *p);
int main(void)
{
char str[80];
printf("请输入一个英语名词单词:");
scanf("%s",str);
fushu(str);
puts(str);
return 0;
}
void fushu(char *p)
{
int i,l;
l=0;
for(i=0;*(p+i)!='\0';i++){
l++;
}
if(*(p+l-1)=='y'){
*(p+l)='e';
*(p+l+1)='s';
*(p+l+2)='\0';
}
else
if((*(p+l-1)=='s')||(*(p+l-1)=='x')||((*(p+l-2)=='c')&&(*(p+l-1)=='h'))||((*(p+l-2)=='s')&&(*(p+l-1 )=='h'))){
*(p+l)='e';
*(p+l+1)='s';
*(p+l+2)='\0';
}
else if(*(p+l-1)=='o'){
*(p+l)='e';
*(p+l+1)='s';
*(p+l+2)='\0';
}
else{
*(p+l)='s';
*(p+l+1)='\0';
}
}
第十二题
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i,j,a,n,sum,average;
int *p;
printf("Enter n:");
scanf("%d",&n);
if((p=(int*)calloc(n,sizeof(int)))==NULL){
printf("Not able to allocate memory.\n");
exit(1);
}
printf("您将输入%d个学生的成绩!\n",n);
for(i=0;i<n;i++){
printf("请输入第%d个学生的成绩:",i+1);
scanf("%d",p+i);
}
sum=0;
for(i=0;i<n;i++)
sum=sum+*(p+i);
average=sum/n;
for(i=0;i<n-1;i++){
for(j=i+1;j<n;j++){
if(*(p+i)>*(p+j)){
a=*(p+i);
*(p+i)=*(p+j);
*(p+j)=a;
}
}
}
printf("学生的平均成绩是:%d\n",average);
printf("学生的最高成绩是:%d\n",*(p+n-1));
printf("学生的最低成绩是:%d\n",*p);
return 0;
}。

相关文档
最新文档