资讯专栏INFORMATION COLUMN

第二次周练

不知名网友 / 1992人阅读

摘要:第一题这道题最主要的是找规律,和斐波那契数列一样下表是规律从第四站开始前面的系数等于前两站的系数之和减一从第四站开始前面的系数等于前两站的系数之和加一因此我们需要用两个数组把和的系数存起来,前三项没有规律我们需要把前三项列举出来。

第一题:

 这道题最主要的是找规律,和斐波那契数列一样;下表是规律

从第四站开始 a 前面的系数等于前两站 a 的系数之和减一; 从第四站开始 b 前面的系数等于前两站 b 的系数之和加一;因此我们需要用两个数组把a 和 b 的系数存起来,前三项没有规律我们需要把前三项列举出来。

</>复制代码

  1. #includeint main(){
  2. int numa[25]={0,1,1,2};
  3. int numb[25]={0,0,0,0};
  4. int i,a,b,n,m,x;
  5. scanf("%d %d %d %d",&a,&n,&m,&x);
  6. for(i=4;i

第二题:进制转化

  在负进制,如果余数<0,那么:余数-=m;商++; 

</>复制代码

  1. #includeint jinzhizhuanhua(int n,int a,char c[]){
  2. int i=0,r;
  3. while(n!=0)
  4. {
  5. r=n%a;
  6. n/=a;
  7. if(r<0) //负进制的核心
  8. {
  9. r=r-a; //如果余数是负数则减去负进制数
  10. n++; //向上取整
  11. }
  12. if(r>9)
  13. {
  14. c[i]=r-10+"A";
  15. }
  16. else c[i]=r+"0";
  17. i++;
  18. }
  19. return i-1;}int main(){
  20. int n,a,j;
  21. char c[100];
  22. scanf("%d %d",&n,&a);
  23. printf("%d=",n);
  24. if(n==0) printf("0");
  25. else
  26. {
  27. for(j=jinzhizhuanhua(n,a,c);j>=0;j--)
  28. printf("%c",c[j]);
  29. }
  30. printf("(base%d)",a);
  31. return 0;}

第三题:

这道题和上周的原版类似主要是判断三次质数,需要两次循环

</>复制代码

  1. #include#includeint zhishu(int n){
  2. int i,q;
  3. q=(int)sqrt(n);
  4. if(n==1) return 0;
  5. for(i=2;i<=q;i++)
  6. {
  7. if(n%i==0) return 0;
  8. }
  9. return 1;}int main(){
  10. int i,k,j,t,x;
  11. int n,falg=0;
  12. scanf("%d",&n);
  13. for(i=2;i

 第四题:

 这道题主要是逆向思维,每次翻转 n-1 次实际就相当于翻转一个,所以 n 个硬币需要翻转 n 次;

第几次翻转只需要把第几个硬币不翻转,其余 n-1 个翻转。

</>复制代码

  1. #include "stdio.h"int main(){
  2. int n,i,j;
  3. int a[102]={0};
  4. scanf("%d",&n);
  5. printf("%d/n",n);
  6. for(i=1;i<=n;i++)
  7. {
  8. for(j=1;j<=n;j++)
  9. {
  10. if(j!=i)
  11. {
  12. if(a[j]) a[j]=0;
  13. else a[j]=1;
  14. }
  15. printf("%d",a[j]);
  16. }
  17. printf("/n");
  18. }
  19. return 0;}

第五题:

</>复制代码

  1. #includeint main(){
  2. int n,k;
  3. int sum=0;
  4. scanf("%d %d",&n,&k);
  5. sum+=n;
  6. while((n-k)>=0) //当烟头数大于k时继续循环
  7. {
  8. n=n-k;
  9. //每抽k根烟,剩余的烟数量
  10. sum++;
  11. //多抽一根烟
  12. n++;
  13. //得到一个烟头
  14. }
  15. printf("%d",sum);
  16. return 0;}

 大佬解法(大家一起学习)

</>复制代码

  1. #includeint main(){
  2. int n,k;
  3. int sum;
  4. scanf("%d %d",&n,&k);
  5. sum=n+(n-1)/(k-1);
  6. printf("%d",sum);
  7. return 0;}

第六题:

 

 字符串

</>复制代码

  1. #include#includeint main(){ char a[15]; int n,i,j; scanf("%s",a); n=strlen(a); i=n-1; while(1) {
  2. if(a[i]=="0")
  3. i--;
  4. else break;
  5. }
  6. if(a[0]=="-")
  7. {
  8. printf("-");
  9. for(;i>0;i--)
  10. printf("%c",a[i]);
  11. }
  12. else
  13. {
  14. for(;i>=0;i--)
  15. printf("%c",a[i]);
  16. } return 0;}

数字,以为题目要求 -1000000000<=N<=1000000000,在整形范围内

</>复制代码

  1. #includeint main(){
  2. int n,t,sum=0;
  3. scanf("%d",&n);
  4. if(n<0)
  5. {
  6. printf("-");
  7. n=-n;
  8. }
  9. if(n%10==0) n/=10;
  10. while(n!=0)
  11. {
  12. t=n%10;
  13. //将n的最后一位取出来
  14. sum=sum*10+t;
  15. //将n翻转
  16. n/=10;
  17. //将n去掉一位
  18. }
  19. printf("%d",sum);
  20. return 0;}

第七题:

 

</>复制代码

  1. #includeint yueshu(int n,int m){
  2. int r;
  3. r=n%m;
  4. while(r)
  5. {
  6. n=m;
  7. m=r;
  8. r=n%m;
  9. }
  10. return m;}int max(int x,int y){
  11. return x>y?x:y;}int min(int x,int y){
  12. return x

第八题:

简单的枚举

</>复制代码

  1. #include#includeint main(){
  2. char a[205],ch;
  3. int n,i,sum=0;
  4. gets(a);
  5. n=strlen(a);
  6. for(i=0;i

 下标法,ASCII码值法

</>复制代码

  1. #include#includeint main(){
  2. char a[205],ch;
  3. int num[26]={1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,1,2,3,4,1,2,3,1,2,3,4};
  4. int n,i,sum=0;
  5. gets(a);
  6. n=strlen(a);
  7. for(i=0;i="a"&&ch<="z") sum+=num[ch-"a"];
  8. if(ch==" ") sum++;
  9. }
  10. printf("%d",sum);
  11. return 0;}

第九题:

</>复制代码

  1. #include#includeint max(int a,int b) //求最大值函数 {
  2. return a>b?a:b;}int main(){
  3. int num[26]={0}; int i,j,n,max1=0;
  4. char a[85]; for(i=0;i<4;i++) { gets(a); n=strlen(a); for(j=0;j="A"&&a[j]<="Z")
  5. num[a[j]-"A"]++;
  6. } } for(i=0;i<26;i++)
  7. //找出柱形图的最高数
  8. max1=max(max1,num[i]); for(i=max1;i>0;i--)
  9. //从最高数开始递减
  10. {
  11. for(j=0;j<26;j++)
  12. //把每个字母都循环一变
  13. {
  14. if(num[j]>=i)
  15. //如果这个字母出现的次数大于外循环的变量就打印 * ,否则打印空格
  16. printf("* ");
  17. else
  18. printf(" ");
  19. }
  20. printf("/n");
  21. } printf("A B C D E F G H I J K L M N O P Q R S T U V W X Y Z");}

 第十题:

  凑个数吧 

</>复制代码

  1. #includeint main(){
  2. int n,i,j;
  3. int a[100],b[100]={0};
  4. scanf("%d",&n);
  5. for(i=0;ia[j])
  6. b[i]++;
  7. }
  8. }
  9. for(i=0;i

 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/125649.html

相关文章

  • 友盟2015年Q2、Q3季度中国移动互联网趋势报告

    摘要:后岁用户依然是移动互联网的主生力军,但随着后群体的年龄增长,早期移动用户逐渐向较高年龄层人群转移。综合男女性别数据来看,移动用户中的女性群体在较高消费水平人群中占据相当比重。 showImg(https://segmentfault.com/img/bVrA7P); 报告要点:1、 截止至2015年第三季度,活跃设备数达10.8亿,与第二季度相比增长1.9%,增幅进一步放缓,新老...

    yuxue 评论0 收藏0
  • 友盟:国内安卓手机品牌竞争激烈 前十仅一家外资品牌

    摘要:月日,友盟正式对外发布年第二三季度中国移动互联网趋势报告。设备移动网络接入变化趋势年月年月二平台设备竞争激烈国内手机占比较高在手机阵营中,国产品牌的市场占比进一步加大。截止年月,排名前十的品牌中,仅有三星一家外资品牌,其余均为国产品牌产品。 12月15日,友盟正式对外发布2015年第二、三季度中国移动互联网趋势报告。报告显示:截止2015年9月底,我国活跃移动设备数量已达到10.8亿,...

    wizChen 评论0 收藏0
  • 今天,我明白了JS事件循环机制

    摘要:而这些队列由的事件循环来搞定宏任务与微任务,在最新标准中,它们被分别称为与。我们梳理一下事件循环的执行机制循环首先从宏任务开始,遇到,生成执行上下文,开始进入执行栈,可执行代码入栈,依次执行代码,调用完成出栈。 写在前面 js是一门单线程的编程语言,也就是说js在处理任务的时候,所有任务只能在一个线程上排队被执行,那如果某一个任务耗时比较长呢?总不能等到它执行结束再去执行下一个。所以在...

    maochunguang 评论0 收藏0

发表评论

0条评论

不知名网友

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<