A. 一個c語言的編程題。 趣味編程之隨機點名。 題目描述,搞班級活動,但沒人主動上台展示才藝,做一個隨

對輸入的學生學號以及姓名進行注釋,以便執行指令後區分班幹部和普通學生

B. 教你如何使用C語言編寫簡單小游戲

||||//聲明
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
#include<windows.h>
#define SIZE 4
static int score=0;

void putn(int n[][SIZE]);
void getn(int n[][SIZE]);
int isempty(int n[][SIZE]);
int isfull(int n[][SIZE]);
void math(int n[][SIZE],char c);
void tow(int n[][SIZE]);
void toa(int n[][SIZE]);
void tos(int n[][SIZE]);
void tod(int n[][SIZE]);
//主函數
int main()
{
int i,j;
int n[SIZE][SIZE];
char c=' ';
for(i=0;i<SIZE;i++)
{
for(j=0;j<SIZE;j++)
{
n[i][j]=0;
}
}

printf( "***********************\n"
" 2048(%dX%d) \n"
" control:W/A/S/D \n"
"press any key to begin \n"
"***********************\n",SIZE,SIZE);
getch();
system("cls");
//n[0][1]=2048;
//n[0][3]=2048;
while(1)
{
if(isempty(n))
getn(n);
putn(n);
if(!isempty(n)&&isfull(n))
break;
sleep(200);
c=getch();
while(c!='w'&&c!='a'&&c!='s'&&c!='d')
c=getch();
math(n,c);
system("cls");
}
printf(" Game Over!\n",score);
return 0;
}
//函數
void putn(int n[][SIZE])
{
int i,j;
for(i=0;i<SIZE;i++)
{
for(j=0;j<SIZE;j++)
printf("| ");
printf("|\n");
for(j=0;j<SIZE;j++)
{
if(n[i][j]==0)
printf("| ");
else
printf("|%4d ",n[i][j]);
}
printf("|\n");
for(j=0;j<SIZE;j++)
printf("|_____");
printf("|\n");
}
printf("score: %d",score);
}

void getn(int n[][SIZE])
{
int a,b;
a=rand()%SIZE;
b=rand()%SIZE;
while(n[a][b]!=0)
{
a=rand()%SIZE;
b=rand()%SIZE;
}
n[a][b]=2;

}

int isempty(int n[][SIZE])
{
int i,j,count=0;
for(i=0;i<SIZE;i++)
for(j=0;j<SIZE;j++)
if(n[i][j]==0)
count++;
return count;
}

int isfull(int n[][SIZE])
{
int i,j,count=0;
for(i=0;i<SIZE;i++)
{
for(j=1;j<SIZE-1;j++)
{
if(n[i][j]==n[i][j+1]||n[i][j]==n[i][j-1])
count++;
}
}
for(j=0;j<SIZE;j++)
{
for(i=1;i<SIZE-1;i++)
{
if(n[i][j]==n[i+1][j]||n[i][j]==n[i-1][j])
count++;
}
}
return count>0?0:1;
}

void math(int n[][SIZE],char c)
{
switch(c)
{
case 'w':tow(n);break;
case 'a':toa(n);break;
case 's':tos(n);break;
case 'd':tod(n);break;
default :;
}
}
void tow(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a<SIZE;a++)
m[a]=0;
for(j=0;j<SIZE;j++)
{
for(a=0;a<SIZE;a++)
{
for(i=0;i<SIZE-1;i++)
{
if(n[i][j]==0)
{
n[i][j]=n[i+1][j];
n[i+1][j]=0;
}
}
}
}
for(j=0;j<SIZE;j++)
{
for(a=0,i=0;i<SIZE;i++)
{
if(n[i][j]!=n[i+1][j]&&n[i][j]!=0||n[i][j]==2048)
{
m[a++]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i+1][j])
{
m[a++]=n[i][j]+n[i+1][j];
score+=m[a-1];
n[i][j]=0,n[i+1][j]=0;
}
}
for(i=0;i<SIZE;i++)
{
n[i][j]=m[i];
m[i]=0;
}
}

}

void toa(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a<SIZE;a++)
m[a]=0;
for(i=0;i<SIZE;i++)
{
for(a=0;a<SIZE;a++)
{
for(j=0;j<SIZE-1;j++)
{
if(n[i][j]==0)
{
n[i][j]=n[i][j+1];
n[i][j+1]=0;
}
}
}
}
for(i=0;i<SIZE;i++)
{
for(a=0,j=0;j<SIZE;j++)
{
if(n[i][j]!=n[i][j+1]&&n[i][j]!=0||n[i][j]==2048)
{
m[a++]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i][j+1])
{
m[a++]=n[i][j]+n[i][j+1];
score+=m[a-1];
n[i][j]=0,n[i][j+1]=0;
}
}
for(j=0;j<SIZE;j++)
{
n[i][j]=m[j];
m[j]=0;
}
}

}
void tos(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a<SIZE;a++)
m[a]=0;
for(j=SIZE-1;j>=0;j--)
{
for(a=SIZE-1;a>=0;a--)
{
for(i=SIZE-1;i>0;i--)
{
if(n[i][j]==0)
{
n[i][j]=n[i-1][j];
n[i-1][j]=0;
}
}
}
}
for(j=SIZE-1;j>=0;j--)
{
for(a=SIZE-1,i=SIZE-1;i>=0;i--)
{
if(n[i][j]!=n[i-1][j]&&n[i][j]!=0||n[i][j]==2048)
{
m[a--]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i-1][j])
{
m[a--]=n[i][j]+n[i-1][j];
score+=m[a+1];
n[i][j]=0,n[i-1][j]=0;
}
}
for(i=SIZE-1;i>=0;i--)
{
n[i][j]=m[i];
m[i]=0;
}
}

}
void tod(int n[][SIZE])
{
int i,j,a;
int m[SIZE];
for(a=0;a<SIZE;a++)
m[a]=0;
for(i=SIZE-1;i>=0;i--)
{
for(a=SIZE-1;a>=0;a--)
{
for(j=SIZE-1;j>0;j--)
{
if(n[i][j]==0)
{
n[i][j]=n[i][j-1];
n[i][j-1]=0;
}
}
}
}
for(i=SIZE-1;i>=0;i--)
{
for(a=SIZE-1,j=SIZE-1;j>=0;j--)
{
if(n[i][j]!=n[i][j-1]&&n[i][j]!=0||n[i][j]==2048)
{
m[a--]=n[i][j];
n[i][j]=0;
}
else if(n[i][j]==n[i][j-1])
{
m[a--]=n[i][j]+n[i][j-1];
score+=m[a+1];
n[i][j]=0,n[i][j-1]=0;
}
}
for(j=SIZE-1;j>=0;j--)
{
n[i][j]=m[j];
m[j]=0;
}
}
}
需要注意的是:

srand((unsigned) time(0);rand();是固定形式,不要更改任何一個字元!
如果不能編譯,請把sleep(200);注釋掉,如果提示不能找到system("cls");請把system("cls")更換為clrscr();

C. C語言教程

給你看一下我之前看的那套:

輕松掌握C語言視頻教程(會打字就能學會),個人覺得這套還不錯,可以看看。

D. c語言趣味編程:話說有一隻狗熊到玉米地里掰玉米,一邊掰,一邊吃,第一天吃了一半,又拿走一個回去喂小狗

#include<stdio.h>
void main()
{
int day, x1, x2;
printf("狗熊到玉米地吃了包穀");
printf("第一天吃了一半又拿走一個回去喂小狗熊。\n");
printf("第二天又去吃了剩下的一半,走是任然帶一個回去。/n");
printf("以後每天都吃前一天剩下的一半,拿走一個。/n");
printf("到了第十天時,地里只剩下一個包穀。求地里一共有多少包穀。/n");
day=10;
x2=1;
while (day>0)
{
x1=(x2+1)*2;
x2=x1;
day--;
}
printf("包穀總數=%d\n",x1);
}

E. c語言編程

這個題目,說實話,真心沒有多大的興趣編寫。
數字選擇完全可以用switch來做。
第一題,很簡單,直接從0開始,判斷左右2邊的值是否相等就行。
第二題,網路上很多答案,
第三題,就是找一個數的平方,它的千位和百位一樣,十位與個位一樣,至於如果判斷,很多方法。可以將每一位都賦給一個數,然後比較。當然還有簡單的,除以100,然後與11取余,為0則千位與百位相等。十位與個位那不是更簡單了嗎?
第四題,就是加1乘以2,搞10次就行。
第五題,完全是for循環,或者直接用字元串搞定就行了。
沒什麼編寫的興趣,如果你自己編寫了,無法編譯通過。或者是程序存在邏輯問題,可以發到我郵箱,找時間幫你修修。郵箱地址看我資料

F. C/C++編程趣味題

媽媽的,雖然我程序寫的很垃圾,還是把這道題給算出來的!

看在我費了這九牛二虎之力的份上,希望樓主多賞點分!!!

程序如下:
#include <vector>
#include <cstdio>
#include <ctype.h>
using namespace std;
#define maxsize 100

typedef int elemtype;
typedef struct sqstack sqstack;//由於sqstack不是一個類型 而struct sqstack才是

char ch[7]={'+','-','*','/','(',')','='};//把符號轉換成一個字元數組
int f1[7]={3,3,5,5,1,6,0};//棧內元素優先順序
int f2[7]={2,2,4,4,6,1,0};//棧外的元素優先順序

struct sqstack
{
elemtype stack[maxsize];
int top;
};

void Initstack(sqstack *s)
{
s->top=0;
}

void Push(sqstack *s,elemtype x)
{
if(s->top==maxsize-1)
printf("Overflow\n");
else
{
s->top++;
s->stack[s->top]=x;
}
}

void Pop(sqstack *s,elemtype *x)
{
if(s->top==0)
printf("underflow\n");
else
{
*x=s->stack[s->top];
s->top--;
}
}

elemtype Gettop(sqstack s)
{
if(s.top==0)
{
printf("underflow\n");
return 0;
}
else
return s.stack[s.top];
}

elemtype f(char c)
{
switch(c)
{
case '+':
return 0;
case '-':
return 1;
case '*':
return 2;
case '/':
return 3;
case '(':
return 4;
case ')':
return 5;
default:
return 6;
}
}

char precede(char c1,char c2)
{
int i1=f(c1);
int i2=f(c2);//把字元變成數字
if(f1[i1]>f2[i2])//通過原來設定找到優先順序
return '>';
else if(f1[i1]<f2[i2])
return '<';
else
return '=';
}

int Operate(elemtype a,elemtype theta,elemtype b)
{
int sum;

switch(theta)
{
case 0:
sum=a+b;
break;
case 1:
sum=a-b;
break;
case 2:
sum=a*b;
break;
default:
sum=a/b;
}
return sum;
}

int EvaluateExpression(char *exper)
{
char c;
int i=0,sum=0,idx=0;
int k=1,j=1;//設置了開關變數
elemtype x,theta,a,b;
sqstack OPTR,OPND;

Initstack(&OPTR);
Push(&OPTR,f('='));//0壓入棧
Initstack(&OPND);
c=exper[idx++];
//先對+和-的情況忽略和左括弧的情況
if(c==ch[2]||c==ch[3]||c==ch[5]||c==ch[6])
{
//printf("錯誤1 \n");
k=0;
return 0;
}

if(c==ch[0])
c=exper[idx++];//如果是+,把它覆蓋
if(c==ch[1])
{
j=0;
c=exper[idx++];//也把-號覆蓋
}
while(c!='='||ch[Gettop(OPTR)]!='=')
{
if(isdigit(c))
{
sum=0;
while(isdigit(c))
{
if(!j)
{
//實現了數字串前面有負號(之前是:sum=-(sum*10)-(c-'0')結果是-12+13=21)
sum=sum*10-(c-'0');
}
else
sum=sum*10+(c-'0');
c=exper[idx++];
}
//如果還是數字先不壓棧,把數字串轉化成十進制數字再壓棧
Push(&OPND,sum);
j=1;
}
else
if(k)
{
switch(precede(ch[Gettop(OPTR)],c))
{
case'<': Push(&OPTR,f(c));//把它們整型化
c=exper[idx++];
//要除去下個是『(』的情況 也把以運算符歸到這里來
if(c==ch[0]||c==ch[1]||c==ch[2]||c==ch[3]||c==ch[5]||c=='\n')
{
//printf("出錯2\n");
k=0;
return 0;//加了開關變數和返回0的值使程序更以操作
}

break;
case'=': Pop(&OPTR,&x);
c=exper[idx++];
//把ch[6]的情況也忽略了但此時並沒有注意到右括弧後面右運算符的情況
if(c==ch[0]||c==ch[1]||c==ch[2]||c==ch[3]||c==ch[5]||c=='\n')
{
//printf("出錯2\n");
k=0;
return 0;
}

break;
case'>': Pop(&OPTR,&theta);
Pop(&OPND,&b);
Pop(&OPND,&a);//注意這里是誰先出棧
Push(&OPND,Operate(a,theta,b));
break;
}
}
}//在這里判斷是否以運算符結束是不對的

return(Gettop(OPND));
}

int main()
{

vector<char> exper;
const char ops[]={'-','+'};
char exp[30];
int i,value,x[8],z[8];

for(x[0]=0;x[0]<2;x[0]++)
for(x[1]=0;x[1]<2;x[1]++)
for(x[2]=0;x[2]<2;x[2]++)
for(x[3]=0;x[3]<2;x[3]++)
for(x[4]=0;x[4]<2;x[4]++)
for(x[5]=0;x[5]<2;x[5]++)
for(x[6]=0;x[6]<2;x[6]++)
for(x[7]=0;x[7]<2;x[7]++)
for(z[0]=0;z[0]<=x[0];z[0]++)
for(z[1]=0;z[1]<=x[1];z[1]++)
for(z[2]=0;z[2]<=x[2];z[2]++)
for(z[3]=0;z[3]<=x[3];z[3]++)
for(z[4]=0;z[4]<=x[4];z[4]++)
for(z[5]=0;z[5]<=x[5];z[5]++)
for(z[6]=0;z[6]<=x[6];z[6]++)
for(z[7]=0;z[7]<=x[7];z[7]++)
{
exper.clear();
for(i=0;i<9;i++)
{
exper.push_back('1'+i);
}
for(i=8;i>0;i--)
{
if(x[i-1])
{
exper.insert(exper.begin()+i,ops[z[i-1]]);
}
}

for(i=0;i<exper.size();i++)
{
exp[i]=exper[i];
}
exp[i]='=';
exp[i+1]=0;

value=EvaluateExpression(exp);
if(value==100)
{
printf("%s%d\n",exp,value);
}
}
return 0;
}

運行輸出:
123-45-67+89=100
123+45-67+8-9=100
123+4-5+67-89=100
123-4-5-6-7+8-9=100
12+3-4+5+67+8+8=100
12-3-4+5-6-7+89=100
12+3+4+5-6-7+89=100
1+23-4+56+7+8+9=100
1+23-4+5+6+78+9=100
1+2+34-5+67-8+9=100
1+2+3-4+5+6+78+9=100

補充:
剛才漏了幾個頭文件!

G. 趣味編程

先定義一個數組,存儲原來的數據,從數組的第一位開始,每拿掉一張,就把該位置零,下一位與最後一位掉換,其餘位向前覆蓋,直到直剩一張為止.
#include <stdio.h>
void main()
{
int a[100];//定義數組
int i,m,n,j,temp;
printf("Enter n:");//輸入有多少張
scanf("%d",&n);
if(n==1) printf("the last is:1");//1張2張就直接給出來了
else if(n==2) printf("the last is:2");
else
{
for(i=0;i<n;i++)
{
a[i]=i+1;printf("%3d ",a[i]);//給數組賦值,就相當於編號了
}
printf("\n");
i=0;
do
{
a[i]=0;//拿掉一張,該位置就空了,置為0;
j=i+1;
while(j<n-1)//後位進一,空位的下一位移到最後
{
if(j==i+1) temp=a[j];
a[j]=a[j+1];
if(j==n-2) a[j+1]=temp;
j++;
}

if(a[n-2]==0) break;//還剩一張了
i++;
for(m=0;m<n;m++)//這個循環語句是用來觀察每一步,以驗證結果
{
if(a[m]==0) continue;
printf("%3d ",a[m]);
}
printf("\n");
}while(1);
printf("The last is:%d\n",a[n-1]);//最後一張的編號
}
}
用TC2.0編譯通過,希望能幫到你.

H. 求編程方法

1、學好C語言,你可以很好地應付任何一種編程工具。

2、一定要多上機練習,通過程式了解相關知識。幾經反復方得正果。

3、不要把學習C語言當成一種任務,更不要把它看成很難完成的任務。要充滿自信,只要是一個智力正常的人都能學好C語言。始終保持游戲的心態,多發現其中的樂趣。當感到編程趣味無窮,那你在電腦方面將前程無量。

4、如果一個程式一時無法弄清楚最後暫時放在一邊,過一段時間你可能會從其他的程式中悟出道理。

5、C語言是一個整體,各個方面是有機聯系的,要從總體上把握它,不要把它割裂成互不關聯的部件。

6、不要完全相信教材(包括本講義),所有結論最好都上機驗證。
簡單的說,編程就是為了藉助於計算機來達到某一目的或解決某個問題,而使用某種程序設計語言編寫程序代碼,並最終得到結果的過程。
計算機雖然功能十分強大。可以供你上網、打游戲、管理公司人事關系等等,但是沒有程序,它就等於是一堆廢鐵,不會理會我們對它下達的「命令」。於是,我們要馴服它,只有通過一種方式——程序,這也是我們和計算機溝通的唯一方式。
那程序到底是什麼呢?
程序也就是指令的集合,它告訴計算機如何執行特殊的任務。
打個比方說,它好比指導你烹調菜品的菜譜或指揮行駛一路到達目的地的交警(或者交通路標)。沒有這些特殊的指令,就不能執行預期的任務。計算機也一樣,當你想讓計算機為你做一件事情的時候,計算機本身並不能主動為我們工作,因此我們必須對它下達指令,而它根本不會也不可能聽懂人類自然語言對事情的描述,因此我們必須使用程序來告訴計算機做什麼事情以及如何去做?甚至對最簡單的任務也需要指令,例如如何取得擊鍵,怎樣在屏幕上放一個字母,怎樣在磁碟中保存文件等等。
這么麻煩,連這些東西編程都要考慮!怪不得人家說編程好難!你錯了,其實許多這樣的指令都是現成的,包含在處理晶元中內置於操作系統中,因此我們不必擔心它們工作,他們都是由處理器和操作系統來完成的,並不需要我們來干預這些過程。
上面講到的計算機本身不會主動的做任何事情。因此我們要通過程序的方式來讓計算機為我們「效勞」。而這個過程就是我們「編」出來的。編程可以使用某一種程序設計語言來實現,按照這種語言的語法來描述讓計算機要做的事情。
我們這里所講的語法和外語中的語法完全兩碼事,這里講的語法只是讀你的程序書寫做出一寫規定而已。
寫出程序後,再由特殊的軟體將你的程序解釋或翻譯成計算機能夠識別的「計算機語言」,然後計算機就可以「聽得懂」你的話了,並會按照你的吩咐去做事了。因此,編程實際上也就是「人給計算機出規則」這么一個過程。
隨計算機語言的種類非常的多,總的來說可以分成機器語言,匯編語言,高級語言三大類。
電腦每做的一次動作,一個步驟,都是按照已經用計算機語言編好的程序來執行,程序是計算機要執行的指令的集合,而程序全部都是用我們所掌握的語言來編寫的。所以人們要控制計算機一定要通過計算機語言向計算機發出命令。
計算機所能識別的語言只有機器語言,即由構成的代碼。但通常人們編程時,不採用機器語言,因為它非常難於記憶和識別。
目前通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。
匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。由於省略了很多細節,所以編程者也不需要具備太多的專業知識。