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

1:找出与平均值相差最小的元素

#include"stdio.h"
#include"math.h"
#define N 10
void main()
{
   int i;
   double a[N],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[N];
   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[N],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[N];
   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[N][M],all[N]={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);
}



  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
包括C程序设计(第四版)的高清扫描版pdf以及与该书配套的学习辅导一书的pdf。 《C程序设计(第四版)》是由谭浩强教授著、清华大学出版社出版的《C程序设计》是一本公认的学习C语言程序设计的经典教材。根据C语言的发展和计算机教学的需要,作者在《C程序设计(第三版)》的基础上进行了修订。本书按照C语言的新标准C 99进行介绍,所有程序都符合C 99的规定,使编写程序更加规范;对C语言程序设计的基本概念和要点讲解透彻,全面而深入;按照作者提出的“提出问题—解决问题—归纳分析”三部曲进行教学、组织教材;本书的每个例题都按以下几个步骤展开:提出任务—解题思路—编写程序—运行程序—程序分析—有关说明。符合读者认知规律,容易入门与提高。 本书内容先进,体系合理,概念清晰,讲解详尽,降低台阶,分散难点,例题丰富,深入浅出,文流畅,通俗易懂,是初学者学习C程序设计的理想教材,可作为高等学校各专业的正式教材,也是一本自学的好教材。本书还配有辅助教材《C程序设计(第四版)学习辅导》。 《C程序设计(第四版)学习辅导.pdf》共分4个部分 第1部分是《C程序设计(第四版)》一书的习题和参考解答,包括了该书各的全部习题,对全部编程习题都给出了参考解答,共计132个程序; 第2部分是深入学习C程序设计,包括预处理指令、位运算和C程序案例; 第3部分是上机指南,详细介绍了Visual C++ 6.0集成环境下编辑、编译、调试和运行程序的方法; 第4部分是上机实验指导,包括程序的调试与测试、实验的目的与要求,并提供了本课程12个实验。 《C程序设计(第四版)》目录: 第1 程序设计C语言 1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C语言的发展及其特点 1.4 最简单的C语言程序 1.4.1 最简单的C语言程序举例 1.4.2 C语言程序的结构 1.5 运行C程序的步骤与方法 1.6 程序设计的任务 习题 第2 算法——程序的灵魂 2.1 什么是算法 2.2 简单的算法举例 2.3 算法的特性 2.4 怎样表示一个算法 2.4.1 用自然语言表示算法 2.4.2 用流程图表示算法 2.4.3 三种基本结构和改进的流程图 2.4.4 用N?S流程图表示算法 2.4.5 用伪代码表示算法 2.4.6 用计算机语言表示算法 2.5 结构化程序设计方法 习题 第3 最简单的C程序设计——顺序程序设计 3.1 顺序程序设计举例 3.2 数据的表现形式及其运算 3.2.1 常量和变量 3.2.2 数据类型 3.2.3 整型数据 3.2.4 字符型数据 3.2.5 浮点型数据 3.2.6 怎样确定常量的类型 3.2.7 运算符和表达式 3.3 C语句 3.3.1 C语句的作用和分类 3.3.2 最基本的语句——赋值语句 3.4 数据的输入输出 3.4.1 输入输出举例 3.4.2 有关数据输入输出的概念 3.4.3 用printf函数输出数据 3.4.4 用scanf函数输入数据 3.4.5 字符数据的输入输出 习题 第4 选择结构程序设计 4.1 选择结构和条件判断 4.2 用if语句实现选择结构 4.2.1 用if语句处理选择结构举例 4.2.2 if语句的一般形式 4.3 关系运算符和关系表达式 4.3.1 关系运算符及其优先次序 4.3.2 关系表达式 4.4 逻辑运算符和逻辑表达式 4.4.1 逻辑运算符及其优先次序 4.4.2 逻辑表达式 4.4.3 逻辑型变量 4.5 条件运算符和条件表达式 4.6 选择结构的嵌套 4.7 用switch语句实现多分支选择结构 4.8 选择结构程序综合举例 习题 第5 循环结构程序设计 5.1 为什么需要循环控制 5.2 用while语句实现循环 5.3 用do…while语句实现循环 5.4 用for语句实现循环 5.5 循环的嵌套 5.6 几种循环的比较 5.7 改变循环执行的状态 5.7.1 用break语句提前终止循环 5.7.2 用continue语句提前结束本次循环 5.7.3 break语句和continue语句的区别 5.8 循环程序举例 习题 第6 利用数组处理批量数据 6.1 怎样定义和引用一维数组 6.1.1 怎样定义一维数组 6.1.2 怎样引用一维数组元素 6.1.3 一维数组的初始化 6.1.4 一维数组程序举例 6.2 怎样定义和引用二维数组 6.2.1 怎样定义二维数组 6.2.2 怎样引用二维数组的元素 6.2.3 二维数组的初始化 6.2.4 二维数组程序举例 6.3 字符数组 6.3.1 怎样定义字符数组 6.3.2 字符数组的初始化 6.3.3 怎样引用字符数组的元素 6.3.4 字符串字符串结束标志 6.3.5 字符数组的输入输出 6.

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值