1.分支_sine之舞
样例输入
3
样例输出
((sin(1)+3)sin(1-sin(2))+2)sin(1-sin(2+sin(3)))+1
2.数组_和最大子序列
样例输入
5 3 -2 3 -5 4
样例输出
4
3.二维数组_星辰大海
样例输入
2 2 S. #T 2 RD DR 3 S.# .#. .T# 3 RL DDD DDRR
样例输出
I get there! I am dizzy! I have no idea! I am out! I get there!
4. 蛇矩阵
样例输入
5
样例输出
1 3 6 10 15 2 5 9 14 4 8 13 7 12 11
终.万年历:
样例输入
2010 9
样例输出
--------------------- Su Mo Tu We Th Fr Sa --------------------- 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ---------------------
简单:
猴子吃桃
int main(){
int n;
static int cont=1;
scanf("%d",&n);
for (int i = 0; i < n-1; ++i) {
cont=(cont+1)*2;
}
printf("%d",cont);
}
小日历:
int main(){
int n,day;
scanf("%d",&n);//days
scanf("%d",&day);
for (int i = 0; i < day-1; ++i)
printf(" ");
//getchar();
for(int i=1;i<=n;i++){
if((i+day-1)%7==0)printf("%2d\n",i);
else printf("%2d ",i);
} }
答案:
#include<stdio.h>
int a=0;
int n;
int AN(int b){
a++;
if(a==b){
printf("sin(%d)",a);
a=0;
}
else if(a%2==0){
printf("sin(%d+",a);
AN(b);
printf(")");
}
else if(a%2!=0){
printf("sin(%d-",a);
AN(b);
printf(")");
}
}
int SN(int b){
if(b==1){
AN(1);
printf("+%d",n);
}
else{
b--;
printf("(");
SN(b);
printf(")");
AN(b+1);
printf("+%d",n-b);
}
}
int main(){
int b;
scanf("%d",&n);
b=n;
SN(b);
}
1:将输入的数组设为a[n],建立一个和数组sum[n],令sum[1]=a[1],
2:从1开始,设temp=sum[i-1]+a[i],此时,若是temp<sum[i-1],则说明a[i]是负数,而负数的出现必然使得这一段的序列和减小,所以sum[i]必需要在此时重置为0,表示在此时,由于此位置上出现了负数而不得不开启新的序列;若是temp>=sum[i-1],则说明此时的序列和是没有减少的,在这个基础上使得sum[i]=temp;
3:递归2中所说的操作,直到遍历完N个数;
#include<stdio.h>
int main()
{
int n,max;
int a[100005]={0};
int sum[10005]={0};
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
max=sum[1]=a[1];
for(int i=2;i<=n;i++)
{
int temp=sum[i-1]+a[i];
if(temp<sum[i-1])
{
sum[i]=0;
}
else
{
sum[i]=temp;
}
if(max<sum[i])
{
max=sum[i];
}
}
printf("%d\n",max);
return 0;
}
#include<stdio.h>
#include<string.h>
int main()
{
char map[51][51],s[1001];
int t,n,m,i,j,len,x,y,sx,sy;
scanf("%d",&t);
while(t--)
{
scanf("%d\n",&n);
for(i=0;i<n;i++)
{
gets(map[i]);
for(j=0;j<n;j++)
{
if(map[i][j]=='S')
{
sx=i;
sy=j;
}
}
}
scanf("%d\n",&m);
while(m--)
{
gets(s);
len=strlen(s);
x=sx;
y=sy;
for(i=0;i<len;i++)
{
if(s[i]=='U')
x--;
else if(s[i]=='L')
y--;
else if(s[i]=='D')
x++;
else if(s[i]=='R')
y++;
if(x<0||x>=n||y<0||y>=n)
{
printf("I am out!\n");
break;
}else if(map[x][y]=='#'){
printf("I am dizzy!\n");
break;
}else if(map[x][y]=='T'){
printf("I get there!\n");
break;
}
}
if(i==len)
printf("I have no idea!\n");
}
}
return 0;
}
#include<stdio.h>
int main()
{
int n,i,j,a,b,temp;
temp=1;
scanf("%d",&n);
for(i=1;i<=n;i++){ //控制行
a=i-1+temp; //a作为开头
temp=a;
b=i+1;
for(j=n+1-i;j>0;j--){ //控制列
if(i!=n && j==1){ //判断一行最后一个
a += b;
printf("%d",a);
}else{
if(j==n+1-i){ //判断第一个
printf("%d ",a);
}else{
a += b;
printf("%d ",a);
b++;
}
}
}
printf("\n");
}
return 0;
}
>>>>>>> 需解决的问题 <<<<<<<
1、X月的1号是星期几;用余数的方法来求得第k天后是星期几。第k天后是星期k%7(如果是0代表星期天)
2、该月份有几天;
3、2月份天数的特殊处理:
判断闰年
4、输出格式问题:
查看样例输出,可以看出,每一个星期几对应3个空格,即用%3d的格式输出。
每次输出星期6之后,就要输出\n,但这里需要注意一个问题,即最后输出“——————————-”前也要输出一个\n
***************************************/
#include"stdio.h"
//每月的天数,以365天的来算,其中数组下标表示对应的月份,下标0对应的月份做特殊处理
static int MonthDay[13] = { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
/**** 闰年判断函数 ****/
int CnkLeapYear( int year )
{
//能被4整除但不能被100整除或者能被400整除的年份即为闰年
if( ( (year % 4 == 0) && (year % 100 != 0) ) || ( year % 4 == 0 ) )
return 1;
else
return 0;
}
/**** 获取星期几的函数 ****/
int GetWeek_day( int year, int month )
{
int week_day;
int sum_day = 0; //2007年1月1日距离所求月份的1号有几天
/*** 求出year前与2007年之间的天数和***/
for( int i = 2007; i < year; i++) {
if( 1 == CnkLeapYear( i ) )
sum_day += 366;
else
sum_day += 365;
}
/*** 求出在year的month前的天数和 ***/
if( ( 1 == CnkLeapYear( year ) ) && ( month > 2 ) ) {
/***** >>>>> 注意!! 这里MonthDay[2]的2月份会根据是否为闰年加一 <<<<<*****/
MonthDay[2]++;
}
for( int j = 1; j < month ; j++) {
sum_day += MonthDay[j];
}
week_day = ( sum_day % 7 + 1) % 7; //用公式计算
return week_day;
}
int main( void )
{
int iyear;
int imonth;
int iweek_day; //星期几,数值范围是0~6,0代表星期天
scanf("%d%d", &iyear, &imonth);
iweek_day = GetWeek_day( iyear, imonth ); //获取星期几,返回的数值是0~6
//printf("%d年%d月1日是 星期%d\n", iyear, imonth ,iweek_day);
/*** 输出模块 ***/
printf("---------------------\n");
printf(" Su Mo Tu We Th Fr Sa\n");
printf("---------------------\n");
for( int i = 0; i < iweek_day; i++)//前置输出部分,每一个星期几对应3个空格
printf(" ");
for( int j = 1; j <= MonthDay[imonth]; j++) {
printf("%3d", j);
iweek_day++;
if( (7 == iweek_day) ) {
printf("\n");
iweek_day = 0;
}//星期六之后输出\n
}
if( iweek_day == 0 );//特殊情况:在最后一天为星期六时不输出\n ,如2015年2月
else
printf("\n");
printf("---------------------\n");
/*** 以上为打印输出 ***/
return 0;
}
补: