C语言/C++常见习题问答集锦(十六)
2023-09-14 09:01:32 时间
C语言/C++常见习题问答集锦(十六)
程序之美
1、假设一对兔子的成熟期是一个月,即一个月可长成成兔,那么,如果每对成兔每个月都生一对小兔,一对新生的小兔从第二个月起就开始生兔子,试问从一对兔子开始繁殖,以后每个月会有多少对兔子?
#include <stdio.h>
int main()
{
int i,ta,tb,tc,m;
ta=1;
tb=1;
printf("请输入月份数\n");
scanf("%d",&m);
if(m==1||m==2)
{
printf("有一对兔子");
}
else if(m>2)
{
for(i=3;i<=m;i++)
{
tc=ta+tb;
ta=tb;
tb=tc;
}
printf("%d 月的兔子数为:%d\n",m,tc);
}
return 0;
}
2、输入一个字符数组,运用c语言除去里面的乘号
删除中间的星号
#include<stdio.h>
int main()
{
char str[99]="**A*BC*D***";
int i,j=0,k,n=0,flag=0;
for(i=0;str[i]!='\0';i++)
if(str[i]!='*')
{
str[j++]=str[i];
flag=1;
n=i; //最后一个不是*的字符的位置
}
else
{if(!flag)str[j++]=str[i];}
for(k=0;k<i-n-1;k++)//i-n-1为后面*的个数
str[j+k]='*';
str[j+k]='\0';
puts(str);
return 0;
}
删除全部星号
#include<stdio.h>
int main()
{
char str[99]="";
int i=0,j=0;
gets(str);
for(;str[i]!='\0';i++)
if(str[i]!='*'){str[j]=str[i];j++;}
str[j]='\0';
puts(str);
return 0;
}
3、定义两个字符数组,小的数组接在大数组的后面
#include<stdio.h>
#include<string.h>
int main()
{
char str1[1024];
char str2[1024];
gets(str1);
gets(str2);
if(strcmp(str1,str2)>=0)
printf("%s",strcat(str1,str2));
else
printf("%s",strcat(str2,str1));
return 0;
}
4、循环输入5位同学4门课程成绩,计算出每位同学的平均分(判断输入的成绩是否为0~100,若输入错误,给出相应的提示,并重新输入)
#include<stdio.h>
int main()
{
float score[5][4],aver[5]={0};
int i,j;
printf("输入学生的成绩:");
for(i=0;i<5;i++)
for(j=0;j<4;j++)
{
scanf("%f",&score[i][j]);
if (score[i][j] > 100 || score[i][j] < 0)
{
printf("第%d位同学第%d门成绩有误,请重新输入!\n", i + 1, j + 1);
j--;
continue;
}
aver[i]+=score[i][j];
}
printf("每位同学的平均分为:");
for(i=0;i<5;i++)
{
aver[i]/=4;
printf("%5.2f",aver[i]);
}
printf("\n");
}
5、C语言利用递归解决汉诺塔问题
分为两类
1.a盘上只有一个盘(终止条件)
将a盘上的移到c盘
2.a盘上不止一个
(1)将a盘上的n-1个盘通过c盘移到b盘
(2)同1
(3)将b盘上的n-1个盘通过a盘移到c盘
#include <stdio.h>
// 将 n 个盘子从 a 借助 b 移动到 c
void move(int n, char a, char b, char c)
{
if( 1 == n )
{
printf("%c-->%c\n", a, c);
}
else
{
move(n-1, a, c, b); // 将 n-1 个盘子从 a 借助 c 移到 b 上
printf("%c-->%c\n", a, c); // 将 第 n 个盘子从 a 移到 c 上
move(n-1, b, a, c); // 将 n-1 个盘子从 b 借助 a 移到 c 上
}
}
int main()
{
int n;
printf("请输入汉诺塔的层数: ");
scanf("%d", &n);
printf("移动的步骤如下: \n");
move(n, 'X', 'Y', 'Z');
return 0;
}
相关文章
- c++面试选择题_C语言经典笔试题
- C++创建线程_C语言网络编程创建线程
- C++STL初识,概念、六大组件、容器算法迭代器
- C++ 炼气期之数组探幽
- c++语言截取字符串,详解C++ string常用截取字符串方法
- C/C++中static变量和static函数的用法
- C++基础入门_C语言入门基础
- c++与三菱plc通信_C语言编写的代码是
- 计算机专升本C语言必备软件Dev-C++
- C++字符串加密_c++字符串连接函数
- C++ 调用 Halcon 时大尺寸操作无效问题的解决方案
- C/C++在Java、Android和Objective-C三大平台下实现混合编程详解编程语言
- C++类的定义和使用
- C++实现基数排序的方法详解
- c++内联函数(inline)使用详解
- C++基础入门教程(六):为什么创建类的时候要用new?
- Lua教程(四):在Lua中调用C语言、C++的函数