IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 02-C语言经典算法100例 -> 正文阅读

[C++知识库]02-C语言经典算法100例

21、题目:利用递归方法求5!。

int main()
{
	int i;
	int fact();
	for(i=0;i<=5;i++)
		printf("\40:%d!=%d\n",i,fact(i));
}
int fact(j)
int j;
{
	int sum;
	if(j==0)
		sum=1;
	else
		sum=j*fact(j-1);
	return sum;
}

22、题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

	printf("请输入5个字符");
	char c1[5];
	scanf("%s",c1);
	int i;

	for(i=4;i>=0;i--)
	{
		printf("%c",c1[i]);
	}
	printf("\n");



-------------------------------------------------------


int main()
{
    int i=5;
    void palin(int n);
    printf("请输入5个字符\40:\40");
    palin(i);
    printf("\n");
}
void palin(n)
int n;
{
    char next;
    if(n<=1)
	{
        next=getchar();
        printf("相反顺序输出结果\40:\40");
        putchar(next);
	} 
	else 
	{
        next=getchar();
        palin(n-1);
        putchar(next);
    }
}

23、有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。

int age(n)
int n;
{
	int AGE;
	if(n == 1)
		AGE = 10;
	
	else
		AGE = age(n-1)+2;
	
	return (AGE);
	
}

int main(int argc,char *argv[])
{
	printf("%d\n",age(5));
	return 0;
}

24、题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

程序分析:学会分解出每一位数,如下解释。

	long a,b,c,d,e,x;
    printf("请输入 5 位数字:");
    scanf("%ld",&x);
    a=x/10000;        /*分解出万位*/
    b=x%10000/1000;   /*分解出千位*/
    c=x%1000/100;     /*分解出百位*/
    d=x%100/10;       /*分解出十位*/
    e=x%10;           /*分解出个位*/
    if (a!=0)
	{
		printf("为 5 位数,逆序为: %ld %ld %ld %ld %ld\n",e,d,c,b,a);
    } 
	else if(b!=0) 
	{
		printf("为 4 位数,逆序为: %ld %ld %ld %ld\n",e,d,c,b);
    } 
	else if(c!=0) 
	{
		printf("为 3 位数,逆序为:%ld %ld %ld\n",e,d,c);
    } 
	else if(d!=0) 
	{
		printf("为 2 位数,逆序为: %ld %ld\n",e,d);
    } 
	else if(e!=0) 
	{
		printf("为 1 位数,逆序为:%ld\n",e);
    }

25、题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

程序分析:学会分解出每一位数。

	long a,b,c,d,e,x;
    printf("请输入 5 位数字:");
    scanf("%ld",&x);
    a=x/10000;        /*分解出万位*/
    b=x%10000/1000;   /*分解出千位*/
    c=x%1000/100;     /*分解出百位*/
    d=x%100/10;       /*分解出十位*/
    e=x%10;           /*分解出个位*/
	if(a == e && b == d)
	{
		printf("%ld是回文数!\n",x);
	}
	else
	{
		printf("%ld不是回文数!\n",x);
	}

26、题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。

	char first;
	char c;

	printf("pls input first char:");
	scanf("%c",&first);
	switch(first)
	{
		case 'm':
			printf("is monday!\n");
			break;
		
		case 't':
			printf("pls input next char:");
			scanf("%s",&c);
			if(c == 'h')
				printf("is thursday!\n");
			else
				printf("is  tuesday!\n");
			break;
			
		case 'w':
			printf("is wednesday!\n");
			break;
			
		case 'f':
			printf("is friday!\n");
			break;
			
		case 's':
			printf("pls input next char:");
			scanf("%s",&c);
			if(c == 'a')
				printf("is saturday!\n");
			else
				printf("is  sunday!\n");
			break;
			
		default:
			printf("error!pls input again!\n");
			break;
	}

27、题目:删除一个字符串中的指定字母,如:字符串 "aca",删除其中的 a 字母。?

char* deleteCharacters(char * str, char * charSet)
{
    int hash [256];
    if(NULL == charSet)
        return str;
    for(int i = 0; i < 256; i++)
        hash[i] = 0;//清空数组
	
    for(int i = 0; i < strlen(charSet); i++)
        hash[charSet[i]] = 1;
	
    int currentIndex = 0;
    for(int i = 0; i < strlen(str); i++)
    {
        if(!hash[str[i]])
            str[currentIndex++] = str[i];
    }
	
    str[currentIndex] = '\0';
    return str;
}
 
int main()
{
    char s[2] = "a";     // 要删除的字母
    char s2[5] = "aca";  // 目标字符串
    printf("%s\n", deleteCharacters(s2, s));
    return 0;
}

28、题目:对10个数进行排序。

程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换, 下次类推,即用第二个元素与后8个进行比较,并进行交换。

	printf("pls input ten number:");
	int num,i,a[10],j,temp;
	for(i=0;i<10;i++)
	{
		scanf("%d",&num);// 15 48 10 24 45 31 18 4 19 20
		a[i] = num;
	}
	printf("排序前:");
	for(i=0;i<10;i++)
	{
		printf("%d->",a[i]);
	}
	printf("\n");
	
	for(j=0;j<9;j++)
	{
		int min = j;
		for(i=j+1;i<10;i++)
		{
			if(a[min]>a[i])
				min = i;
		}
		if(min!=j)
        {
            temp=a[min];
            a[min]=a[j];
            a[j]=temp;
        }
	}
	printf("排序后:");
	for(i=0;i<10;i++)
	{
		printf("%d->",a[i]);
	}
	printf("\n");

29、题目:求一个3*3矩阵对角线元素之和

程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

	int i,j,a[N][N],sum=0;
    printf("请输入矩阵(3*3):\n");
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
            scanf("%d",&a[i][j]);
    for(i=0;i<N;i++)
        sum+=a[i][i];
    printf("对角线之和为:%d\n",sum);

30、?题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

	int a[11] = {10,20,25,35,46,55,60,75,80,85};
	int number,i,j,temp1,temp2;
	printf("pls input number:");
	scanf("%d",&number);
	if(number > a[9])
		a[10] = number;
	else
	{
		for(i=0;i<10;i++)
		{
			if(number < a[i])
			{
				temp1 = a[i];//temp1=25
				a[i] = number;	//a[2]=25
				for(j=i+1;j<11;j++)
                {
                    temp2=a[j];//temp2=35
                    a[j]=temp1;//a[3]=25
                    temp1=temp2;//temp1=35
                }
                break;
			}
				
		}
		
	}
	
	for(i=0;i<11;i++)
	{
		printf("%d-",a[i]);
	}
	printf("\n");

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-09-25 23:05:06  更:2022-09-25 23:05:54 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 13:17:10-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码