科大讯飞杯题目

来源:互联网 发布:我国网络直播行业现状 编辑:程序博客网 时间:2024/05/21 22:49

蛇形矩阵

代码:

#include <stdio.h>main(){int a[10][10],n,m,i,j,k,c=1;scanf("%d%d",&n,&m);for (i=0;i<n;i++)for (j=0;j<m;j++){if (i%2==0){a[i][j]=c++;}else{k=m-1;for (k;k>=0;k--)a[i][k]=c++;break;}}for (i=0;i<n;i++){for (j=0;j<m;j++)printf("%d ",a[i][j]);printf("\n");}}
1000以内的素数且每位数之和为10,比如235

代码:

#include <stdio.h>main(){int i,j,s=0,n,a;for (i=2;i<=1000;i++){n=i;s=0;while (n*10){a=n%10;if (a==2||a==5||a==7||a==3){s+=a;n=n/10;}elsebreak;}if (i%10+i/10%10+i/100%10==10&&s==10)printf("%d\n",i);}}

No9 数据序列(15分)

问题描述:

一个正整数有可能可以被表示为n(n>=2)个连续正整数之和,如:15=1+2+3+4+5  15=4+5+6   15=7+8  请编写程序,根据输入的任何一个正整数,找出符合这种要求的所有连续正整数序列。

输入描述:一个整数

输入描述:打印出符合题目描述的全部正整数序列,每行一个序列,每个序列都从该序列的最小正整数开始,从小到大顺序打印。如果结果有多个序列,按每个序列的最小正整数的大小从小到大打印各序列。且序列不允许重复,序列内的整数用一个空格分割。如果没有符合要求的序列,输出“NONE”.

样例输入:

15

样例输出:

1  2  3  4  5

4  5  6

7  8

样例输入:

16

样例输出:

NONE


思路:让i从1到n自增,作为大循环,让j从i开始自增作为内循环每个j相加若等于n则找到相等的输出每项的值,退出内循环,让i++继续让j等于i

          

代码:

#include <stdio.h>main(){int a,b,c=0,n,i,j,k,s=0;scanf("%d",&n);for (i=1;i<n;i++){j=i;s=0;while (j)//j从i开始{s=s+j;if (s>n)//大于9退出到大循环让i+1{break;}if (s==n) //即找到相等的,输出每个数{c=1;for (k=i;k<=j;k++)printf("%d ",k);printf("\n");break; //找到相等就退出,让i从下一个数开始}j++;}}if (c==0)  //c为标记,若都没找到相等的则c的值就是初始定义的0,没变printf("NONE\n");}

No5 字符串压缩(10分)

问题描述:

小明在一次机密场合中无意中看到自己所需要的信息,但他只能在一张标签的空白处几下这些信息,位置不够,于是他想了一种办法:对连续重复的部分用数字表示,没有连续重复的字符就不变。如AABBBCC,表示为A2B3C2.

输入描述:输入的每行是一个有字母构成的字符串,遇到“exit”结束。

输出描述:输出是压缩后的字符串。

样例输入:

ABBBCC

DDFFFF

exit 

样例输出:

AB3C2

D2F4

思路:

         下面的代码只是对一组输入字符进行处理,对输入exit结束我还没搞会,本题输入相同字符个数大于9就会出错,因为用ascll码数字表示字符的,大于字符9就会显示其他的字符,我的思路是固定一个数组元素和后面的元素比较,若等则固定元素后一位增加,后1位以后与固定的相同的就赋'0',最后输出不为字符0的所有元素

代码:

#include <stdio.h>#include <string.h>main(){char a[100],k='1';int i,j,n;gets(a);n=strlen(a);for (i=0;i<n;i=j){j=i+1;k='1';while (1){if (a[i]!=a[j]) //不等就退出break;if (a[i]==a[j])  //相等则,固定的a[i]后一位用来存个数{a[i+1]=++k;if (&a[j]-&a[i]>1)  //差值等于1则是固定a[i]的第一位,用来计数的,不能赋0,只有再                //后面相同的元素才能赋‘0’a[j]='0';}j++;   //内循环没有退出,继续向后执行}}for (i=0;a[i];i++)if (a[i]!='0')printf("%c",a[i]);printf("\n");}




0 0
原创粉丝点击