【无标题】

有关考试遇到的王美人的那个题,目前能想到的最简练的解法就是下面这种了。

得到的启发就是,一定要理清整个程序运行的逻辑,找到怎么运行是最简便最有条理的,其实在敲代码的中途也可以更好地优化自己的程序,比如敲到一半发现把date=(date+2*i)%31放在最前面能省去一个if语句,而 i 可以省去一个变量等等。

#include <string.h>
#include <stdio.h>
int main(void){
int i,date;
scanf("%d",&date);
for(i=0;i<500;i++){
    date=(date+2*i)%31;
    if(date==0)
        date=31;
    printf("%3d",date);
}
return 0;
}

第二题是关于将十进制转化为十六进制的题目,自己傻傻地用了十六个case,刚刚去逛了逛博客才发现用数组真的很好用,凭着印象又写了一次(中间有借鉴其他用户的代码)

但是精髓还是自己敲呀,自己理清思路才能真的进步!

总结:

1、像这种类似于查表一样的题用数组来做真的很方便,以后可以考虑把用switch语句做的题改成这种解法,就把他想象成一个不会动的表还挺容易理解的。

2、如何给字符串数组赋初值还是很难啊,下午做题的时候对a数组竟然没赋初值,太鲁莽了。

#include <string.h>
#include <stdio.h>
int main(void){
int n,c,i=0;
char a[8],b[17]={"0123456789ABCDEF"};
scanf("%d",&n);
for(i=0;i<8;i++){
    c=n%16;
    n=n/16;
    a[i]=b[c];
}
printf("0X");
for(i=7;i>=0;i--)
    printf("%c",a[i]);
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值