C语言经典例题

这篇博客探讨了C语言的经典编程问题,包括找出所有三位水仙花数的算法,9×9乘法表的实现,以及回文数(包括整数和字符串)的检测方法。通过示例代码展示了如何使用循环和条件判断解决这些问题,强调了简洁高效的编程思想。
摘要由CSDN通过智能技术生成
                              ### 学习中碰到的许多例题
  • 水仙花数
    水仙花数指的是指一个三位数,其各位数字立方和等于该数,如:153就是一个水仙花数,153=1×1×1+5×5×5+3×3×3
    题目:找出三位数的所有水仙花数;
    代码要求找出所有的水仙花数,代码如下:
#include <stdio.h>
int main()
{
    //定义三位数num,个位数sd,十位数td,百位数hd
    int num, sd, td, hd;
    //循环所有三位数
    for(num=100;num<1000;num++)
    {
        //获取三位数字num百位上的数字
        hd = (num/100) ;
        //获取三位数字num十位上的数字
        td = (num%100)/10 ;
        //获取三位数字num个位上的数字
        sd = (num%100)%10  ;
        //水仙花数的条件是什么?
        if( hd*hd*hd+td*td*td+sd*sd*sd == num ) 
        {
            printf("水仙花数字:%d\n", num);    
        }
    }
    return 0;    
}

水仙花数的大概算法就是通过for循环提取出每一位数,再利用if语句判断最后输出。
当然,也可以换一种循环,大致就是这样的算法。

  • 9×9乘法表
    乘法表是for循环中比较有代表性的东西,还可以各种变向,先来一个最平常的吧。
#include<stdio.h>
int main()
{
	int i,j;//定义变量
	for(i=1;i<10;i++)
	{
		for(j=1;j<=i;j++)
		{
			printf("%d*%d=%-4d",j,i,i*j);/*为了代码能够美观,
			利用格式字符的不同变化形式控制间距*/
		}
	}
	return 0;
}	

利用for循环的嵌套还可以,做出许多更强的东西。此时此刻,我想要引用某位大佬的题目。打印n*n法表,要求位与位对齐,这时我们只需要稍微改进下;
如以下代码:

#include<stdio.h>
int main()
{
	int i,j,n;
	scanf("%d*%d",&n,&n);
	for(i=1;i<=n;i++)
	{
		for(j=1;j<=i;j++)
		{
			printf("%d*%d=%-4d",j,i,i*j);
		}
		printf("\n");
	}
	return 0;
}	
	

只要输入n*n就可以输出各种奇葩乘法表;如
11*11乘法表

  • 回文数
    回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数
    代码如下:
#include <stdio.h>
int main()
{
	int t,s=0,n;
	printf("输入数字:");//输出
	scanf("%d",&n);//输入
	t=n;//赋值
	while(t)//当t<10时,t/10=0,t=0时就是循环结束时
	s=s*10+t%10,t/=10;//这个运算方法是关键
	if(s==n)printf("是\n");//判断
	else printf("不是\n");
}
	

回文数并不是很难。用数组处理也可以,当然要麻烦些,所以,麻烦的东西就用来处理麻烦的事情吧!

回文字符串

回文字符串就是正读反读都一样的字符串,如“abcba”、“abccba”。要求从键盘输
入字符串。

先看思路:
回文字符串的思路
1,定义一个数组,字符数组,再定义四个整形常量i c n j=0
2, 在不知道输入多少个字符时,最好利用while循环输入while((c=getchar())!=’\n’)这条语句就是
在输入回车时,结束循环,当然,循环次数需要一个计数器,于是进去一个计数器j,执行j++
3,把j的值赋给n,
4,接下来进行循环,for语句中i=0;i<n/2;i++,j–,各项要注意
5, for循环中要添加if语句if(a[i]==a[j-1])

 			if(a[i]==a[j-1]){/*如果有5个字母,n=5,n/2=2,
 			只需要对比a[0]和a[4];a[1]和a[3];所以,只需要控制
 			i的范围在n/2以内,不包括n/2,中间字母不用对比。
 			这个就可以导出循环的控制语句。*/
 					if(i==n/2-1)
					{
						printf("YES!");
					}	}	
			else
			{
			printf("NO!");
			break;
			}
		是回文字符串输出yes,不是输出no
		代码如下:
#include<stdio.h>
int main()
{
	char a[30];
	int i,c,n,j=0;
	while((c=getchar())!='\n')
	{
		a[j]=c;
		j++;	
	}
	n=j; 
	for(i=0;i<n/2;i++,j--)
	{
		if(a[i]==a[j-1])
		{
			if(i==n/2-1)
			{
				printf("YES!");
			}		
		}
		else
		{
			printf("NO!");
			break;
		}
	}
	return 0;
}

利用更简便的方法解决问题,才是学习的关键。

1.数字排列 2.奖金分配问题 3.已知条件求解整数 4.输入日期判断第几天 5.输入整数进行排序 6.用*号显示字母C的图案 7.显示特殊图案 8.打印九九口诀 9.输出国际象棋棋盘 10.打印楼梯并按条件打印笑脸 11.经典兔子问题 12.判断素数 13.水仙花数问题 14.正整数分解质因数 15.学习成绩划分 16.正整数求其最大公约数和最小公倍数 17.统计英文字母/空格/数字个数 18.求s=a+aa+aaa+aa...a的值 19.求解"完数" 20.球体自由落下物理问题 21.猴子吃桃问题 22.乒乓球比赛抽签问题 23.打印菱形图案 24.分数数列求和 25.求1+2!+3!+...+20!的和 26.利用递归方法求5! 27.将输入字符以相反顺序打印 28.岁数问题 29.求解正整数位数 30.判断回文数 31.星期几猜测游戏 32.改变文本颜色 33.学习gotoxy()与clrscr()函数 34.练习函数调用 35.设置文本颜色 36.求100之内的素数 37.对10个数进行排序 38.求3*3矩阵对角线元素之和 39.数字插入数组重新排序 40.将一个数组逆序输出 41.static定义静态变量用法 42.使用auto定义变量用法 43.使用static的另一用法 44.使用external的用法 45.使用register定义变量方法 46.宏#define命令练习(1) 47.宏#define命令练习(2) 48.宏#define命令练习(3) 49.#if #ifdef和#ifndef的综合应用 50.#include 的应用练习 51.学习使用按位与 & 52.学习使用按位或 | 53.学习使用按位异或 ^ 54.取一个整数从右端开始的4~7位。 55.学习使用按位取反~ 56.用circle画圆形 57.学用line画直线 58.用rectangle画方形 59.画图综合例子 60.画图综合例子2 61.打印杨辉三角形 62.学习putpixel画点 63.画椭圆ellipse 64.利用ellipse and rectangle画图 65.画个最优美的图案 66.输入3个数字按大小顺序输出 67.输入数组交换元素重新输出 68.多个整数后移位置问题 69.圆圈报数问题 70.计算一个字符串长度 71.编写输入/输出函数 72.创建链表 73.反向输出链表 74.连接两个链表 75.算一道简单题目 76.调用函数求1/2+1/4+...+1/n 77.填空练习(指向指针的指针) 78.找到年龄最大的人 79.字符串排序 80.海滩猴子分桃 81.已知公式条件求数字 82.八进制转换为十进制 83.求0-7所能组成的奇数个数 84.由两个素数之和表示的偶数 85.判断一个素数能被几个9整除 86.两个字符串连接程序 87.结构体变量传递 88.读取数字的整数值并打印出该值个数的* 89.数据加密 90.专升本一题 91.时间函数举例1 92.时间函数举例2 93.时间函数举例3 94.一个猜数游戏 95.家庭财务管理小程序 96.计算字符串中子串出现的次数 97.输入字符并保存到磁盘 98.字符串转换成大写字母并输出保存 99.文件操作应用1 100.文件操作应用2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值