c语言程序笔记-1

1.完全平方数的判定:

错误写法:

sqrt(n)==(int)(sqrt(n));//错因:浮点数的数值不够精确

正解:

    int i;
    for(i = 10; i <N ; i++)
    {
        if(N % i == 0)
        {    
            if(i * i == N)
            {
                flag1=1;
            }
        }
    }

2.统计输入数字中数位上出现过的数字的次数:

(同类型:字符串中出现过的字母)

功能扩增:

(1)打印出每个数字出现的次数

(2)找出出现次数最多的数字(可以同时存在多个)

Tips:其实本质上就是关于数位的问题

数位的基本操作:

1.读出末位的数字:

int n;
n = num%10 ;//取余操纵用于提取末尾数字

2.将末位数字去除得到新的数:

num /= 10 ;//除法操作将末位数字去除

3.将数字存入数组中管理:

int i=0;
int a[100];
while(num>0)//当把所有的数字全部读取并去除时,num==0,跳出循环
{
    int n = num%10;
    a[i++] = n;
    num /= 10;
}
//此时得到的i不要丢了,它的值就是数字的位数(在后面的运算中很重要)

4.读取次数(采用遍历的方法)

int times[10]={0};  //times数组用于统计次数,初始化0一定不要忘记了!
//然后这i==1时即对应了1的次数

int j;
for(j=0;i<i;j++)//遍历数组中的各位数字
{
      times[a[j]]++;//出现一次就加一
}

5.找出最多次的:
主要难点是当出现多个相同的最大次数时该怎么办
可以这样操作:

Step1:找出最大的次数

Step2:找出与最大次数相同次数的数

(这种思想也可以在找众数时使用)

int max=0;
for(int i=1;i<10;i++)
{
    if(times[max]<times[i])
    {
        max=i;
    }
}//这样就得到了出现最多的那个次数的值

for(int j=0;j<10;j++)
{
    if(times[max]==times[j])
    {
        printf("%d ",j);
    }
}//这样就找到了这些数字了


类比一下啊:找字母的
那就是用a[52]桑
哦,如果不区分大小写的话就是a[26]
然后在判断的时候应该这样比较好
int i;
int a[26]={0};
char str[n];
for(i=0;i<n;i++)
{
    for(int j=A;j<=Z;j++)
    if(c[i]==j || c[i]==(j-32))//大小写一并判断了
    {
        a[(j-A)]++;//这里的(j-A)很关键,就是把a或A的次数变成了a数组中的第一个元素
//更方便后面的操作
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值