您的位置:首页 > 编程语言 > C语言/C++

C语言程序设计(第二版)第6章编程题

2015-07-29 13:23 267 查看
1:找出与平均值相差最小的元素

#include"stdio.h"
#include"math.h"
#define N 10
void main()
{
int i;
double a
,v=0,min;
printf("Please input :\n");
for(i=0;i<N;i++){                     //输入N个数
scanf("%lf",&a[i]);
v=v+a[i]/N;
}
printf("\n");
min=a[0];
for(i=1;i<N;i++)                      //判断最小MIN
{
if((abs(min-v)>abs(a[i]-v)))
min=a[i];
}
for(i=0;i<N;i++)                    //判断是否存在一样小差值却不同值
{
if(abs(min-v)==abs(a[i]-v))
if(min!=a[i]){
printf("min=%.2lf\n",a[i]);
break;
}
}
printf("min=%.2lf\n",min);
}


2.找到n个数中的最小数,并且与第一个数交换后输出数组
#include"stdio.h"
#define N 20
void main()
{
double a
;
int i=0,n,min;
printf("Please input n:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%lf",&a[i]);
min=0;
for(i=1;i<n;i++)
if(a[min]>a[i])
min=i;
a[min]+=a[0];
a[0]=a[min]-a[0];
a[min]=a[min]-a[0];
for(i=0;i<n;i++)
{
printf("%lf ",a[i]);
if((i+1)%5==0)
printf("\n");
}
}


3.输入一个字符串,统计其中数字字符出现的次数

#include<stdio.h>
void main()
{
char str[100];
int i,n=0;
gets(str);
for(i=0;str[i]!='\0';i++)
if(str[i]>=48&&str[i]<=57)
n++;
printf("%d",n);
}


4.设有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。问在第20年时,共有多少头牛?分别输出从第1年至第20年每年的母牛数。
#include<stdio.h>
int muniu(int year)
{
if(year==1)
return 2;
else if(year==2)
return 3;
else if(year==3)
return 4;
else
return muniu(year-1)+muniu(year-3);
}
void main()
{
int i;
for(i=1;i<=20;i++)
printf("第%d年母牛数:	%d\n",i,muniu(i));
}


5.有n(n≤20)个数,已按从小到大顺序排列好,要求输入一个数,把它插在数列中,使数列仍有序,并输出新的数列

#include<stdio.h>
#define N 21
void main()
{
int i,n,flag;
double a
,t;
printf("Please input n:\n");
scanf("%d",&n);
printf("Please input array:\n");
for(i=0;i<n;i++)
scanf("%lf",&a[i]);
printf("Please input the value:\n");
scanf("%lf",&t);
for(i=0;i<n;i++)
if(t<=a[i]){
flag=i;
break;
}
for(i=n;i>=flag;i--)
a[i+1]=a[i];
a[flag]=t;
n++;
for(i=0;i<n;i++)
{
printf("%.2lf ",a[i]);
if((i+1)%5==0)
printf("\n");
}
}

6.求解约瑟夫问题。M个人围成一圈,分别为1到M号。从第一个人开始报数,数到n的人出圈。再由下一个人开始报数,数到n的人出圈……直到最后一个人为止。输出依次除权人的编号,M值预先选定,n值由键盘输入。例如,M=10,n=5,依次出圈的是:5,10,6,2,9, 8, 1 ,4 ,7 ,3.

#include<stdio.h>
#define M 10
void main()
{
int n,t=0,k=0,x,a[M],i;
printf("Please input n:\n");
scanf("%d",&n);
for(i=0;i<M;i++)
a[i]=i+1;
x=M;
while(x!=0)
{
k++;
if(k>M)
k=1;
if(a[k-1]!=0)
{
t++;
if(t>n)
t=1;
a[k-1]=t;
if(t==n)
{
printf("%d ",k);
a[k-1]=0;
x--;
}
}
}

}
12.从键盘输入一个字符串,查找其中的最大元素,在该元素后面插入字符串“(max)”.

#include<stdio.h>
int main()
{
char str[100],m[5]="(max)";
int i,max,j,flag=0,k;
printf("输入字符串:\n");
gets(str);
max=0;
for(i=0;str[i]!='\0';i++)
if(str[max]<str[i])
max=i;
k=max;
while(1){
for(j=i;j>max;j--)
str[j+5]=str[j];
for(j=0;j<5;j++)
str[j+max+1]=m[j];
k=max;
for(j=max+6;str[j]!='\0';j++)
if(str[j]==str[max])
if(max!=j)
{
max=j;
}
if(max==k)
break;
}
puts(str);
}


13.输入一个英文句子,要求将每个单词的第一个字母改写成大写字母

#include<stdio.h>
int main()
{
char  a[100];
int i;
printf("输入一个英文句子:\n");
gets(a);
if(a[0]>='a'&&a[0]<='z')
a[0]=a[0]-32;
for(i=1;a[i]!='\0';i++){
if(a[i-1]==' ')
if(a[i]>='a'&&a[i]<='z')
a[i]=a[i]-32;
}
puts(a);
return 0;
}


14.判别一字符串是否是另一字符串的子串,如是则输出第一次出现的位置。

#include<stdio.h>
int main()
{
char a[100],b[100];
int i,j,flag;
printf("输入母串:\n");
gets(a);
printf("输入子串:\n");
gets(b);
for(i=0;a[i]!='\0';i++)
{
if(a[i]==b[0])
{
flag=i;
for(j=0;b[j]!='\0';j++)
{
if(a[flag]!=b[j])
break;
else
flag++;
}
if(b[j]=='\0')
if(b[--j]==a[--flag])
{
printf("是其子串\n");
puts(b);
return 1;
}
}
}
printf("不是其子串\n");
return 1;
}


15.输入三行文字,找出每个元音字母在其中出现的次数。

#include<stdio.h>
int main()
{
char  a[3][100],yuan[5]={'a','e','i','o','u'};
int k,i,j,flag[5]={0};
printf("输入三行文字:\n");
for(i=0;i<3;i++)
gets(a[i]);
for(k=0;k<5;k++)
for(i=0;i<3;i++)
for(j=0;a[i][j]!='\0';j++)
if(a[i][j]==yuan[k])
flag[k]++;
for(i=0;i<5;i++)
printf("元音%c出现的次数为:%d\n",yuan[i],flag[i]);
}


16.输入10个数,要求编写一个排序函数,能够实现按绝对值从大到小排序。在主函数中输入10个数,输出排序后的10个数。

#include<stdio.h>
#include<math.h>
#define N 10
void paixu(double a[])
{
int i,j;
for(i=0;i<N;i++)
for(j=i;j<N;j++)
if(fabs(a[i])>fabs(a[j]))
{
a[i]+=a[j];
a[j]=a[i]-a[j];
a[i]=a[i]-a[j];
}
}
void main()
{
int i;
double a
;
printf("Please input array:\n");
for(i=0;i<N;i++)
scanf("%lf",(a+i));
paixu(a);
for(i=0;i<N;i++)
printf("%.2lf	",a[i]);
printf("\n");
}


17.统计学生成绩:某班有30人,每人学4门课,求每个人的总分和平均分。要求编三个函数:①输入成绩函数input().②计算每人总分及各科平均分函数process()③输出该班同学每人各课成绩,总成绩和各课平均分函数output()

#include<stdio.h>
#define N 30
#define M 4
void input(double a[][M])
{
int i,j;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
scanf("%lf",&a[i][j]);
}
void process(double a[][M],double all[],double ave[])
{
int i,j;
for(i=0;i<N;i++)
for(j=0;j<M;j++)
all[i]+=a[i][j];
for(j=0;j<M;j++)
for(i=0;i<N;i++)
ave[j]+=a[i][j]/N;
}
void output(double stu[][M],double all[],double ave[])
{
int i,j;
printf("每人各科成绩 总成绩:\n");
for(i=0;i<N;i++){
for(j=0;j<M;j++)
printf("%.2lf	",stu[i][j]);
printf("%.2lf	",all[i]);
printf("\n");
}
printf("各科平均成绩:\n");
for(j=0;j<M;j++)
printf("%.2lf	",ave[j]);
}
void main()
{
double stu
[M],all
={0},ave[M]={0};
printf("Please input everyone score\n");
input(stu);
process(stu,all,ave);
output(stu,all,ave);

}


18.在主函数中输入一个字符串,再输入一个字符,编写函数count(),统计该字符在字符串中出现的次数。要求在主函数中输出统计结果及字符串。

#include<stdio.h>
int count(char str[],char n)
{
int i,flag=0;
for(i=0;str[i]!='\0';i++)
if(str[i]==n)
flag++;
return flag;
}
void main()
{
int number;
char str[100],n;
printf("Please input str[]:\n");
gets(str);
printf("Please input n:\n");
scanf("%c",&n);
number=count(str,n);
printf("%c出现了次数是%d:\n",n,number);
puts(str);
}


19.在主函数中输入一个字符串,再输入一个字符,编写函数delete(),讲字符串中该字符删除

#include<stdio.h>
void delet(char str[],char n)
{
int i,flag;
for(i=0;str[i]!='\0';i++){
if(str[i]==n)
{
flag=i;
while(str[i+1]!='\0')
{
str[i]=str[i+1];
i++;
}
str[i]='\0';
if(str[flag]==n)
i=flag;
else
i=flag++;
}
}
}
void main()
{
char  str[100],n;
printf("Please input :\n");
gets(str);
printf("Please input :\n");
scanf("%c",&n);
delet(str,n);
puts(str);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c c语言 编程 设计