導航:首頁 > 編程語言 > c語言編程比賽題

c語言編程比賽題

發布時間:2022-06-12 18:54:16

A. c語言編程題, 求大神幫忙,這可是競賽題

逆波蘭表示的計算器

#include<stdio.h>
#include<ctype.h>
#include<stdlib.h>
#defineNUMBER'0'
voingetch(charc);
intgetch();
intgetop(char*s);
voidpush(doublenumber);
doublepop();
/*以上為聲明說明部分*/
intmain(){
char*s,c;
doubleop_temp;
s=(char*)malloc(100*sizeof(char));
printf("逆波蘭表示的計算器 使用方法:輸入兩個數值再輸入運算符號(例如:34+5*(Enter)表示(3+4)*5) ");
printf("按<Esc>可以結束程序 ");
while((c=getop(s))!=EOF)
{
switch(c)
{
caseNUMBER:printf("NUMBER:%s ",s);push(atof(s));break;
case'+':push(pop()+pop());break;
case'-':op_temp=pop();push(pop()-op_temp);break;
case'*':push(pop()*pop());break;
case'/':if((op_temp=pop()))push(pop()/op_temp);break;
case' ':printf("result=%.8g ",pop());break;
case27:exit(0);
default:printf("error,unknown%c ",c);break;
}
}
return0;
}
/*分析文本流部分*/
intgetop(char*s1){
charc;
inti=0;//printf("c:%d ",c=getch());
while((c=getch())==''||c==' ');
*s1=c;
if(!isdigit(c))returnc;//若數字字元則返回字元
while((c=getch())!=EOF&&c!=13)
{
if(isdigit(c)){s1[++i]=c;s1[i+1]='';}
//原主函數只申請了一個指針s且沒有分配內存現在卻將其當成數組使用,沒問題么?個人觀點,我也不是很懂
else
{
if(c=='.')
{
s1[++i]=c;
continue;
}
else
{
ungetch(c);
s1[++i]='';
returnNUMBER;
}
}
}
returnc;
}
/*獲取字元和回退字元部分*//*對緩存棧中的字元數不加限制*/
intcpointer[100];
/*如果這里改為int*cpointer,計算浮點時就會出錯*/
intc_count=0;intgetch(){
return(c_count>0)?cpointer[--c_count]:getchar();
}
voingetch(charc){
cpointer[c_count++]=c;
}
/*進出棧部分*/
double*number_stack=(double*)malloc(100*sizeof(double));
intn_count=0;
voidpush(doublenumber){
number_stack[n_count++]=number;
}
doublepop(){
if(n_count>0)
returnnumber_stack[--n_count];
elseprintf("errorofpop");
return0;
}

B. 比較好的大學生C語言競賽編程題 或者比較有檔次的競賽有哪些(本科、研究生可以參加的)

1:C語言競賽編程題很多,你可以去北大的ACM網上測評系統JudgeOnline上做題,它能檢查你的代碼是否正確。
網址:http://acm.pku.e.cn/JudgeOnline/
可以注冊一個賬號,它會保存你每次提交正確的代碼,上面的題比較多,范圍廣,各種難度試題都有。當然還有其他大學的一些JudgeOnline,如上海交大的。

2:有檔次的競賽首推ACM/ICPC(國際大學生程序設計競賽),當然也有全國大學生程序設計大賽。每年有的網站和機構也會舉辦編程競賽,如這幾年網路舉辦的網路之星程序設計大賽也很有影響力。在給出的樣題第一例有對ACM的詳細介紹,樣題是我們學校某屆程序大賽初試題,比較簡單。(此外ACM程序大賽也可以用C++編程,本科生、研一可參加)

3:一些簡單的ACM樣題(因為是國際性比賽,ACM試題都是E文的,下面部分是翻譯過來的)

H-acm規則
Description
ACM/ICPC(國際大學生程序設計競賽)是由ACM(Association for Computing Machinery,美國計算機協會)組織的年度性競賽,始於1976年,是全球大學生計算機程序能力競賽活動中最有影響的一項賽事,是全世界公認的規模最大、規格最高的大學生程序設計競賽,是參賽選手展示計算機才華的廣闊舞台,是著名大學計算機教育成果的直接體現,是信息企業與世界頂尖計算機人才對話的最好機會。ACM/ICPC採用賽區選拔的方式產生參加世界決賽學校的資格,2001年,來自全球超過25個地區1141所大學的2362支隊伍參加了第26屆ACM/ICPC的賽區競賽。在2002年3月,來自世界各地的約60支隊伍,200多名選手參加了夏威夷總決賽的角逐。
在 ACM/ICPC 比賽中,均使用自動判題系統,這不僅減輕了ACM/ICPC比賽的舉辦方的負擔,同時也使競爭更加的公正公平。 因為在比賽中,比賽成員就可以看到自己排名情況,這使的比賽更加的透明。
ACM/ICPC 比賽中排名是按如下方法排名的:
1: 解題數目最多的隊伍排在前面。
2: 如果解題數目相等的隊伍,總用時最少的排在前面。
註: 在比賽中,每道試題用時將從競賽開始到試題解答被判定為正確為止,期間每一次錯誤的運行將被加罰20分鍾時間,未正確解答的試題不計時。 那麼所有解答出來題目的用時和罰時加起來為:該隊伍所花的總用時。
現在,需要你寫一個程序來給比賽隊伍進行排名(假設不超過200支隊伍)。
Input
多行測試數據,每行包含各個隊伍的比賽信息。
每個隊伍格比賽信息表示格式為:
string n m 分別表示隊名、解題數量、總用時(其中:隊名為長度不超過30的字元串,解題數量為1…10之間的整數,罰時的范圍不超過int的范圍)
當輸入end時,表示輸入結束。
Output
按先後名次輸出各個隊伍的比賽信息。
每個比賽隊伍佔一行。
每行格式為:
string n m 分別代表 隊名 解題數量 總用時。
Example Input
amstl 3 65
danoniao 2 50
lutedan 3 60
end
Example Output
lutedan 3 60
amstl 3 65
danoniao 2 50

G-我想我需要一隻船屋
Description
佛瑞德最近正在考慮在路易斯安那洲買一片土地來蓋一棟房子.在進行調查研究土地的過程中佛瑞德發現,路易斯安那洲的土地由於密西西比河的侵蝕會以每年50平方英里的速度縮減.佛瑞德計劃後半生都在該地度過,所以他不希望在自己的有生之年房屋受到河水的侵蝕.現在他需要知道自己是否會受到河水的侵蝕.
在做了更多的調查之後,佛瑞德得知這里的土地沿河岸以半圓形方式侵蝕,這個半圓以(0,0)為圓心的,被X軸分成上下兩部分,位於X軸下邊的是河水,上面是河岸.在第一年開始的時候這個半圓范圍為0,也就是說河岸未被河水侵蝕.(半圓如下圖所示)

Input
第一行的一個正整數N指出下邊有多少組數據需要計算.下邊N行,每行包含兩個實數X和Y,指出佛瑞德考慮的房子以(0,0)為原點的坐標系內的位置.以英里為單位.Y為非負數.
Output
計算在X,Y位置佛瑞德的房子在第幾年會被河水侵蝕.與輸入數據相對應每行以如下形式輸出你的計算結果:「Property N: This property will begin eroding in year Z.」, 其中N為第N組數據,Z為你計算出的開始侵蝕的年數.在最後輸出一句「END OF OUTPUT.」,表示計算結束.
Example Input
2
1.0 1.0
25.0 0.0
Example Output
Property 1: This property will begin eroding in year 1.
Property 2: This property will begin eroding in year 20.
END OF OUTPUT.
Hint
• 房屋的位置不會正好在半圓邊界上,要不在內,要不在外。
• 你所提交的程序計算輸出會由系統自動判斷。你的結果要和輸出要求精確匹配,字母大小寫、標點符號和空格 。包括最後一行的語句也要精確匹配。
• 所有給定數據都以英里為單位。

F-N!的計算
Description
N!=N×(N-1)×(N-2)×(N-3)×....
Input
輸入第一行為一正整數m,表示下邊要計算幾個 N!
下一行開始為m個正整數( 1 ≤ N ≤ 11 , m ≤ 9)
Output
輸出這m個正整數的階乘結果,每個一行.
Example Input
3
1
2
5
Example Output
1
2
120

I-Vertical Histogram
Description
Write a program to read four lines of upper case (i.e., all CAPITAL LETTERS) text input (no more than 72 characters per line) from the input file and print a vertical histogram that shows how many times each letter (but not blanks, digits, or punctuation) appears in the all-upper-case input. Format your output exactly as shown.
Input
* Lines 1..4: Four lines of upper case text, no more than 72 characters per line.
Output
* Lines 1..??: Several lines with asterisks and spaces followed by one line with the upper-case alphabet separated by spaces. Do not print unneeded blanks at the end of any line. Do not print any leading blank lines.
Example Input
THE QUICK BROWN FOX JUMPED OVER THE LAZY DOG.
THIS IS AN EXAMPLE TO TEST FOR YOUR
HISTOGRAM PROGRAM.
HELLO!
Example Output
*
*
* *
* * * *
* * * *
* * * * * *
* * * * * * * * * *
* * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * *
* * * * * * * * * * * * * * * * * * * * * * * * * *
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

J-白棋勝?還是黑棋勝?
Description
Cinderalla最近迷上了玩五子棋.可是在和其它的小夥伴一起玩時她老是輸,於是她想用計算機來幫她判斷棋局是那方獲勝.為了簡便,我們先去掉一些規則.我們認為棋盤上只要有一方的棋有五個棋子相連就確定那一方獲勝.你的任務是編寫一個程序來判斷我們給出的棋局是那一方獲勝.
Input
輸入數據只有一組.第一行有兩個正整數m,n(5 ≤ m,n ≤ 10),分別代表棋盤的行數和列數.緊接著的2*n+1行是棋盤的描述,棋盤由"+","-","|"構成,其中"*"代表白棋,"#"代表黑棋. "+","-","|"的ASCII碼分別為43、45、124
Output
輸出數據只有一組,如果白棋獲勝則輸出White Win!,如果黑棋獲勝則輸出Black Win!
Example Input
5 10
+-+-+-+-+-+-+-+-+-+-+
| |*| | | | | | | | |
+-+-+-+-+-+-+-+-+-+-+
| | |*|#| | | | | | |
+-+-+-+-+-+-+-+-+-+-+
| | |#|*|#|#| | | | |
+-+-+-+-+-+-+-+-+-+-+
| | | | |*|#| | | | |
+-+-+-+-+-+-+-+-+-+-+
| | | | | |*| | | | |
+-+-+-+-+-+-+-+-+-+-+
Example Output
White Win!
Hint
給出的棋局必有一方是獲勝的.

C. 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;
}

D. C語言編程題

代碼:

#include<stdio.h>
structplay{
charname[20];//隊名
intscn;//勝場數
intpjn;//平局數
intfcn;//負場數
intjqn;//進球數
intsqn;//輸球數
intjsn;//凈勝數進球-輸球
intjfn;//積分
}team[32];//最多32個隊

intmain()
{
intn,m;//n球隊數m出線名額
inti,j;//循環變數
structplaytemp;//臨時球隊變數

printf("請輸入比賽的球隊數和出現名額(用空格隔開) ");
scanf("%d%d",&n,&m);

printf("請輸入比賽的球隊信息 ");
for(i=0;i<n;i++){
scanf("%s%d%d%d%d%d",&team[i].name,&team[i].scn,&team[i].pjn,&team[i].fcn,&team[i].jqn,&team[i].sqn);
//計算凈勝數
team[i].jsn=team[i].jqn-team[i].sqn;
//計算積分
team[i].jfn=team[i].scn*3+team[i].pjn*1;
}

//printf("輸出排名前的球隊信息 ");
for(i=0;i<n;i++){
//printf("%s%d%d%d%d%d%d%d ",team[i].name,team[i].scn,team[i].pjn,team[i].fcn,team[i].jqn,team[i].sqn,team[i].jsn,team[i].jfn);
}

//printf("輸出球隊排名信息(按積分高低排序,若積分相同,按凈勝球多少排) ");
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++){
if(team[i].jfn<team[j].jfn){
temp=team[i];
team[i]=team[j];
team[j]=temp;
}
if(team[i].jfn==team[j].jfn){
if(team[i].jsn<team[j].jsn)
temp=team[i];
team[i]=team[j];
team[j]=temp;
}
}
}
//printf("輸出排名後的球隊信息 ");
for(i=0;i<n;i++){
//printf("%s%d%d%d%d%d%d%d ",team[i].name,team[i].scn,team[i].pjn,team[i].fcn,team[i].jqn,team[i].sqn,team[i].jsn,team[i].jfn);
}
printf("輸出出線的球隊信息 ");
for(i=0;i<m;i++){
printf("%d%s%d%d ",(i+1),team[i].name,team[i].jfn,team[i].jsn);
}
return0;
}

運行:

Over!

E. 急!!!看過來:要求用C語言編程實現一個足球比賽問題!

演算法可以這樣來想:
1.申請一個數組Team[8];
2.A隊有7場比賽(額..是循環賽嗎?),輸入每場的比賽結果(可以假設勝為1,負為-1).
3.讀入數據,用一個選擇或是if語句來判斷,是1則Team[0]+=3,是0則不做操作.
4.依3之例,依次讀入餘下6場比賽的結果並處理.
5.依(2,3,4)之例,處理餘下7隻隊伍的比賽結果.
6.為數組Team排序,輸出結果.

F. C語言編程題,有N個評委,對唱歌比賽選手現場評分~~ 急啊!!

數據a[n],把n個數賦值給a[0]到a[n-1],然後循環找出最低分,最高分,循環
數組
(a[0]+a[1]+...+a[n-1]-最高分-最低分)/n就是最後的
平局
分,
思路
給你,自己寫吧,很簡單。

G. 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;
}

H. c語言編程題

1、
#include 「stdio.h」
main()
{
double r;
double pi=3.14159;
printf("請輸入圓的半徑:");
scanf("%lf",&r);
printf("圓的周長為:%.2lf",2*pi*r);
printf("圓的面積為:%.2lf",pi*r*r);
getch();
}

2、
#include 「stdio.h」
main()
{
char c;
printf("請輸入一個大寫字母:");
scanf("%c",&c);
printf("小寫字母為:%c",c+32);
getch();
}

3、
#include 「stdio.h」
#include "math.h"
main()
{
double a,b,c;
double p;
double area;
printf("請分別輸入三條邊的長度:");
scanf("%lf %lf %lf",&a,&b,&c);
p=(a+b+c)/2;
area=sqrt( p*(p-a)*(p-b)*(p-c));
printf("三角形的面積為:%.2lf",area);
getch();
}

I. C語言編程題:歌唱比賽十個評委打分,請求出其中的最高分和最低分並進行輸出(要求從鍵盤接收數據)。

#include<stdio.h>
intmain(void)
{
floata[10],temp;
printf("請輸入分數: ");
inti,j;
for(i=0;i<10;i++)
{
scanf("%f",&a[i]);
}
for(i=0;i<9;i++)
{
for(j=0;j<9-i;j++)
{
if(a[j]<a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}

printf("最高分:%.2f 最低分:%.2f ",a[0],a[9]);
return0;
}

J. 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語言編程比賽題相關的資料

熱點內容
軟著網上能不能查到自己的源碼 瀏覽:914
編譯好的android源碼 瀏覽:993
學校機房雲伺服器和電腦主機 瀏覽:10
Python紅色五角星畫法 瀏覽:337
壓縮餅干翻譯 瀏覽:686
macos命令行窗口的樣式 瀏覽:248
androidflipboard 瀏覽:878
投資公司投資源碼 瀏覽:75
python語料訓練 瀏覽:338
武夷岩茶產地溯源碼 瀏覽:383
求生組隊用什麼伺服器最好 瀏覽:24
php回調匿名回調函數 瀏覽:107
源碼翻譯軟體哪裡找 瀏覽:523
邪惡程序員解說 瀏覽:600
醫生找程序員 瀏覽:423
cad三維剖切命令 瀏覽:55
壓縮機的氣能流多遠 瀏覽:85
linuxfdiskt 瀏覽:696
iphone沒有id怎麼用app 瀏覽:983
手機淘寶網站源碼 瀏覽:743