當前位置:首頁 » 編程軟體 » 編程競賽真題

編程競賽真題

發布時間: 2022-08-31 17:50:52

c語言編程比賽試題

#include <stdio.h>
#include <stdlib.h>
#include<string.h>

int main()
{
int n,i,j;
char p[10000];
while(scanf("%d",&n)!=EOF)
{
getchar();
for(i=0;i<n;i++)
{
gets(p);
putchar(p[0]);
for(j=1;j<strlen(p);j++)
printf(" %c",p[j]);
printf("\n");
}
}
}

❷ 高中水平編程競賽題目一道

貪心
先排序,每次選擇最高的物品(因為無論怎麼選擇都要爬最高的物品),去掉相鄰的物品,再找此高物品,以此類推。

❸ 一道C#奧林匹克編程題

對題目的問題:
(b1, b2,... bm -1, bm)
這個命令,是指的必須從位置1到位置m變換,還是可以從位置i+1到位置i+m變換?這很關鍵

❹ C語言 編程題目 程序設計題目 高中信息科技競賽編程題目 【100分】

【第一道】
#include <iostream>
using namespace std;
#define pi 3.14159265
double maxvolume(double a,double b)
{
double v1,v2,r;
r=b/(2*pi+2);
v1=pi*r*r*a;
r=a/(2*pi+2);
v2=pi*r*r*b;
if(v1>v2)
return v1;
else
return v2;
}
int main()
{
double a,b;
cout<<"請輸入矩形的長寬:";
cin>>a;
cin>>b;
cout<<"最大圓柱體積:"<<maxvolume(a,b)<<endl;
return 0;
}

【第二道】
//事實上,塗色方案不止樣例上的一種,我把所有的可行方案都輸出了一下
#include <iostream>
using namespace std;
int data[][8]={ {0},
{0,0,1,0,0,0,1,1},
{0,1,0,1,1,1,1,0},
{0,0,1,0,1,0,0,0},
{0,0,1,1,0,1,0,0},
{0,0,1,0,1,0,1,0},
{0,1,1,0,0,1,0,1},
{0,1,0,0,0,0,1,0}
};
int total;
int color[8];
char COLOR[5]={' ','R','Y','B','W'};
void output()
{
total++;
cout<<"["<<total<<"]\t";
for(int i=1;i<=7;i++)
{
cout.width(2);
cout<<COLOR[color[i]];
}
cout<<endl;
}
bool checkcolor(int s)
{
for(int i=1;i<=7;i++)
{
if(data[i][s]==1&&color[i]==color[s])
return false;
}
return true;
}
void drawcolor(int s)
{
if(s>7)
output();
else
for(int i=1;i<=4;i++)
{
color[s]=i;
if(checkcolor(s))
drawcolor(s+1);
}
}
int main()
{
cout<<" \t";
for(int i=1;i<=7;i++)
{
cout.width(2);
cout<<i;
}
cout<<endl;
drawcolor(1);
cout<<endl<<" \t塗色方案總數:"<<total<<endl<<endl;
return 0;
}

❺ C語言編程,藍橋杯的真題,有C來解答

int t1=x[0]==0||x[1]==1;
//如果A參加,B也參加

???

❻ c語言程序設計大賽試題

我寫了個程序,不知道能達到你的要求不?

主要的演算法思路是若輸入的數不能被11整除,就先用一個數組將輸入數的每一位存起來,然後通過交換數組元素的位置達到重新排列數的目的,每次只需交換數組中兩個元素的位置即可,交換(即)重新排列後再將數組合,判斷能否被11整除,不能則繼續循環。

#include<stdio.h>

int main()
{
int num;
printf( "Please input your number:" );
scanf( "%d", &num );
if( num % 11 == 0 )
{
printf( "%d\n", num );
}
else
{
int a[10] = {0};
int ti = 10, i = 0, nable = 0;
while( num / ti != 0 )
{
a[i] = num % ti;
i++;
num = num / ti;
}
a[i] = num;
for(int k = i; k >= 0; k-- )
{
for(int j = 0; j < k; j++)
{
int temp, m = 0;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
for(int t = 0; t <= i; t++)
m = m * 10 + a[t];
if( m % 11 == 0)
{
printf( "%d\n", m );
nable = 1;
break;
}
}
if(nable == 1)
break;
}
if(nable == 0)
printf("Your number is undivisible!\n");
}
return 0;
}

❼ 關於編程大賽的一道題目,一個正整數有可能可以被表示為n(n>=2)個連續正整數之和,找出這樣的數並輸出!

這個問題看起來不是很簡單,需要設計一個演算法:

先講數學:

設:

an=a+(n-1)*d(這里d=1)

a1=a

an=a+n-1

sn=(a1+an)n/2=(2a-1+n)/2

再回到這個編程上來:

我們的輸入數據其實就是sn,需要找到以a開始的n個連續的遞增數列使得和為sn。

這里我們可以用循環來判定,給定一個n,sn已知,就可以求出a,如果a為正整數那麼就可以找到等差數列的首項,加上n給定,d=1,那麼就可以寫出這個和式子。

代碼如下:

#include<stdio.h>

voidmain()

{

intinput,i,n,flag;

floata;//等差數列的首項不一定為整數

flag=0;

printf("輸入判斷的整數: ");

scanf("%d",&input);

for(n=2;n<=input;n++)

{

a=(2*input+n-n*n)/(2.0*n);//求的首項

if(int(a)==a&&a>0)//如果為整整數,則滿足要求

{

printf("%d=%d",input,int(a));//輸出的序列為整數,a實質是整數,那麼強制轉化類型不影響結果

for(i=1;i<=n-1;i++)

printf("+%d",int(a+i));//等差數列的其他項也為整數,a+i實質是整數,裝換類型

printf(" ");

flag++;//flag記錄滿足要求的數列數

}

}

if(flag==0)//flag初始為0,通過上面的循環,如果有滿足的在則不為0,為0則說明不能寫成等差數列

printf("%d不能被表示成n連續正整數之和 ",input);

}

熱點內容
桑塔納全秀和半袖哪個配置高 發布:2025-02-10 07:55:42 瀏覽:349
手紋演算法 發布:2025-02-10 07:52:27 瀏覽:37
愛奇藝怎麼看賬號密碼 發布:2025-02-10 07:51:43 瀏覽:351
破解訪問許可權 發布:2025-02-10 07:17:24 瀏覽:663
慶余年密碼多少 發布:2025-02-10 07:16:38 瀏覽:201
ftp包括有哪兩個連接 發布:2025-02-10 07:11:50 瀏覽:423
壓縮模量es 發布:2025-02-10 07:11:47 瀏覽:115
雞尾酒配置酒什麼意思 發布:2025-02-10 07:01:34 瀏覽:139
c語言的架構設計 發布:2025-02-10 06:59:59 瀏覽:748
柯南可以緩存 發布:2025-02-10 06:59:52 瀏覽:422