導航:首頁 > 編程知識 > c編程選擇什麼題

c編程選擇什麼題

發布時間:2024-07-17 10:45:13

❶ 計算機二級c語言考試的題型有哪些

單項選擇題共四十題,四十分,每一個選扮族擇分值為1分,其中單項選擇中含公共基礎知識,該部分十道題,佔10分。

二、程序填空題

程序填空題有2-3個空,佔比分值18分,該題型為上機題,其三個空佔比18分,可想而知其重要性。

三、程序改錯題

程序改錯題有2-3處錯誤,該題型分值佔比也是18分,難度比程序填空題略難。該題型也為上機題,也許重視該類題型。

四、程序設計題

程序設計題是計算機二級C語言考試重點,該題為一大題,佔比分值24分,該題型也為上機題,為考試重點,需多加練習。

註:二級公共基礎知識在各科考試掘培選擇題中體現。程序設計部分,判缺唯主要考查考生對程序設計語言使用和編程調試等基本能力,在選擇題和操作題中加以體現。

計算機二級c語言考試考試要求:

一、熟悉Visual C++2010 Express集成開發環境。

二、掌握結構化程序設計的方法,具有良好的程序設計風格。

三、掌握程序設計中簡單的數據結構和演算法並能閱讀簡單的程序。

四、在Visual C++2010 Express集成環境下,能夠編寫簡單的C程序,並具有基本的糾錯和調試程序的能力。

以上便是計算機二級c語言考試題型及分值說明。

❷ 大一C語言編程題

車票根據題意兩兩站點連線生成,金額和數量分別用隨機數。

數據存儲:站點,車票,用戶分別為3個結構體,用於對應資料庫

購買流程:檢查輸入數值有效性->檢查車票庫存->購買成功同步修改用戶購買流水及車票庫存。(這里題目需求不明確,沒有指明用戶購買方式),我的代碼允許一個用戶同時購買多種票,每種票可分批購買多張。購買流水記錄自動增加和更新。

退票流程:檢查輸入和用戶購買記錄,同步更新用戶及車票信息。

刪除流程:選擇刪除沒有被用戶購買的票(函數檢查所有用戶,雖然本題只要一個用戶,實際傳參用戶數組首地址)。

PS: 這個題目涉及到增刪改,用鏈表來寫更好,但考慮你學習范圍,沒有使用鏈表而是動態數組,動態數組刪除,考慮內存佔用,不僅要需循環移位還要釋放多餘地址。

另外整體程序,異常的處理我只是單純返回0或者1或者-1區分基本的成功與失敗。你如想對個別異常進行特殊處理,自行修改返回值,接收判斷。

下面是代碼:

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <time.h>

#include <windows.h>

#include <conio.h>

#define MS 5//最大站點數

typedef struct station

{

char sid[10];

char sName[20];

}STN;

typedef struct ticket

{

int tid;//票編號

STN *ssP;//起始站

STN *tsP;//終點站

int value;//票價

int number;//數量

}TKT;

typedef struct userInfo//用戶

{

char uid[20];//身份證號

int cnt;//購買的票種類數量

int *btids;//購買的所有票id數組

int *btNum;//購買的所有票數量數組

}UIFO;

int init(STN stns[MS],TKT **tkts);//初始化車站、票數據

int disAllTickets(TKT *tkts);

int buyTicket(UIFO *uifo,TKT *tkts);//異常返回0

int reTicket(UIFO *uifo,TKT *tkts);//異常返回0

int showMenu(UIFO *uifo,TKT *tkts);

int delIntByIndex(int *nums,int len,int index);//通過下標index刪除動態整型數組nums對應元素,並釋放多餘地址,返回刪除後的數組長度,異常返回-1

int delTkts(UIFO *uifos,int len,TKT *tkts);//刪除指定票(檢查用戶組,只要有一個用戶購買,無法刪除)

int cnt;//票種類數量

int main()

{


STN stns[MS];

TKT *tkts=NULL;

UIFO uifo={"321002199902050614",0,NULL,NULL};

srand(time(NULL));

cnt=init(stns,&tkts);

printf("共生成%d組票(每組往返兩種票,共%d種票) ",cnt/2,cnt);

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

showMenu(&uifo,tkts);

return 0;

}

int showMenu(UIFO *uifo,TKT *tkts)

{

int n=5;

printf("(1) Buy ticket ");

printf("(2) Refund ticket ");

printf("(3) Remove ticket ");

printf("(4) Display all tickets ");

printf("(0) Exit ");

while(n<0 || n>4)

scanf("%d",&n);

switch(n)

{

case 0: return 0;

case 1: if(!buyTicket(uifo,tkts)) return 0;break;

case 2: if(!reTicket(uifo,tkts)) return 0;break;

case 3: if(!delTkts(uifo,1,tkts)) return 0;break;

//這里刪除功能,用戶多名,要傳數組首地址,由於演示只有一個用戶(len=對應用戶數),所以只傳該用戶地址(len=1)

case 4: disAllTickets(tkts);break;

}

showMenu(uifo,tkts);

return 1;

}

int disAllTickets(TKT *tkts)

{

int i;

for(i=0;i<cnt;i++)

printf("編號:%2d 路程:%s-%s 票價:%3d 剩餘票數:%d ",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

return 1;

}

int delIntByIndex(int *nums,int len,int index)

{

int i,*temp=NULL;

if(index>len-1) return -1;

for(i=index;i<len-1;i++)

nums[i]=nums[i+1];

len--;

if(len)

{

temp=(int *)realloc(nums,sizeof(int)*len);

if(!temp) return -1;

nums=temp;

}

else

free(nums);

return len;

}

int reTicket(UIFO *uifo,TKT *tkts)

{

int i,j,tid,n,index,len,flag=0;

printf("當前用戶購買記錄: ");

for(i=0;i<uifo->cnt;i++)

{

for(j=0;j<cnt;j++)

if(tkts[j].tid==uifo->btids[i]) index=j;

printf("--車票編號:%d,起末站:%s-%s,購買票數:%d ",uifo->btids[i],tkts[index].ssP->sName,tkts[index].tsP->sName,uifo->btNum[i]);

}

printf("請輸入要退票的車票id及票數:"),scanf("%d%d",&tid,&n);

for(i=0;i<uifo->cnt;i++)

if(uifo->btids[i]==tid && uifo->btNum[i]>=n)

{

for(j=0;j<cnt;j++)

if(tkts[j].tid==uifo->btids[i]) tkts[j].number+=n;//同步修改對應車票剩餘票數

uifo->btNum[i]-=n;//用戶購買記錄修改

if(uifo->btNum[i]==0)//某種車票全部退完,刪除該條記錄

{

len=delIntByIndex(uifo->btNum,uifo->cnt,i);

if(len==-1) return 0;

len=delIntByIndex(uifo->btids,uifo->cnt,i);

if(len==-1) return 0;

uifo->cnt=len;

}

flag=1;

break;

}

if(flag)

printf("退票成功! ");

else

printf("無此購買記錄或輸入數量不符合 ");

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

return 1;

}

int buyTicket(UIFO *uifo,TKT *tkts)

{

char spn[20],tpn[20];

int i,n=-1,index=-1,*temp=NULL;

for(i=0;i<cnt;i++)

printf("編號:%2d 路程:%s-%s 票價:%3d 剩餘票數:%d ",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);

printf("請輸入始發站站名和終點站站名:"),scanf("%s%s",spn,tpn);

for(i=0;i<cnt;i++)

if(strcmp(tkts[i].ssP->sName,spn)==0 && strcmp(tkts[i].tsP->sName,tpn)==0)

{

printf("車票%s-%s 票價:%3d 剩餘票數:%d ",tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);

index=i;

break;

}

if(index==-1)

printf("購買失敗!無此路程的車票 ");

else

{

while(n<=0)

{

printf("請輸入要購買的數量(大於0):"),scanf("%d",&n);

if(tkts[index].number<n)

printf("錯誤:車票數量不足或者輸入數值超出范圍!請重新輸入! "),n=-1;

}

for(i=0;i<uifo->cnt;i++)//檢查用戶購買記錄,重復票累加購買數量,不同票新增記錄

{

if(uifo->btids[i]==tkts[index].tid)

{

printf("該票已購買了%d張,現再次購買%d張,累計購買了%d張 ",uifo->btNum[i],n,uifo->btNum[i]+n);

uifo->btNum[i]+=n;

tkts[index].number-=n;

break;

}

}

if(i==uifo->cnt)//未檢查到重復記錄,新增

{

if(!uifo->btids)

{

uifo->btids=(int *)malloc(sizeof(int));

if(!uifo->btids) return 0;

uifo->btNum=(int *)malloc(sizeof(int));

if(!uifo->btNum) return 0;

}

else

{

temp=(int *)realloc(uifo->btids,sizeof(int)*(uifo->cnt+1));

if(!temp) return 0;

uifo->btids=temp;

temp=(int *)realloc(uifo->btNum,sizeof(int)*(uifo->cnt+1));

if(!temp) return 0;

uifo->btNum=temp;

}

uifo->btids[uifo->cnt]=tkts[index].tid;

printf("該票購買了%d張 ",(uifo->btNum[uifo->cnt]=n));

tkts[index].number-=n;

uifo->cnt++;

printf("用戶購買記錄: ");

for(i=0;i<uifo->cnt;i++)

printf("--車票編號:%d,購買票數:%d ",uifo->btids[i],uifo->btNum[i]);

}

printf("本次成功購買了%s-%s的票%d張! ",tkts[index].ssP->sName,tkts[index].tsP->sName,n);

}

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

return 1;

}

int delTkts(UIFO *uifos,int len,TKT *tkts)//len:所有購買的用戶數量

{

int i,j,k,tid,flag=0,index;

for(i=0;i<cnt;i++)

printf("編號:%2d 路程:%s-%s 票價:%3d 剩餘票數:%d ",tkts[i].tid,tkts[i].ssP->sName,tkts[i].tsP->sName,tkts[i].value,tkts[i].number);

printf("請輸入要刪除的車票編號:"),scanf("%d",&tid);

for(i=0;i<cnt;i++)

if(tid==tkts[i].tid)

{

index=i;

flag=1;

for(j=0;j<len;j++)//檢查所有用戶購買記錄

{

for(k=0;k<uifos[j].cnt;k++)

if(uifos[j].btids[k]==tid)

{

flag=0;

printf("該票已被用戶購買,無法刪除,需先完成退票! ");

break;

}

if(!flag)

break;

}

break;

}

if(!flag) printf(" 刪除失敗,輸入數值超出范圍或不可刪除! ");

else

{

cnt--;

if(cnt==0)

{

free(tkts[index].ssP);

free(tkts[index].tsP);

free(&tkts[index]);

}

else

{

free(tkts[index].ssP);

free(tkts[index].tsP);

for(i=index;i<cnt;i++)

tkts[i]=tkts[i+1];

tkts[cnt].ssP=NULL;

tkts[cnt].tsP=NULL;

free(&tkts[cnt]);

}

printf(" 刪除成功! ");

}

printf("按任意鍵繼續。。。。 "),getch();

system("cls");

return 1;

}

int init(STN stns[MS],TKT **tkts)

{

TKT *tTemp=NULL;

int i,j,n,v,cnt=2;

static int id=1;

printf("生成站點: ");

for(i=0;i<MS;i++,id++)

{

sprintf(stns[i].sid,"車站%03d",id);

sprintf(stns[i].sName,"SN%03d",id);

printf("----站點名:%s。站點ID:%s ",stns[i].sid,stns[i].sName);

}

printf("計算所有站點連線,生成車票(票是往返,所以一次生成往返兩組票): ");

for(i=0;i<MS;i++)

for(j=i+1;j<MS;j++)

{

if(!(*tkts))

{

*tkts=(TKT *)malloc(sizeof(TKT)*2);

if(!(*tkts)) return -1;

}

else

{

tTemp=(TKT *)realloc((*tkts),sizeof(TKT)*cnt);

if(!tTemp) return -1;

*tkts=tTemp;

}

n=rand()%4+2;//每種票隨機2~5張(保證總數大於20)

v=rand()%201+50;//隨機生成票價50~250

(*tkts)[cnt-1].tid=cnt;

(*tkts)[cnt-1].ssP=&stns[i];

(*tkts)[cnt-1].tsP=&stns[j];

(*tkts)[cnt-1].value=v;

(*tkts)[cnt-1].number=n;

(*tkts)[cnt-2].tid=cnt-1;

(*tkts)[cnt-2].ssP=&stns[j];

(*tkts)[cnt-2].tsP=&stns[i];

(*tkts)[cnt-2].value=v;

(*tkts)[cnt-2].number=n;

printf("----%s和%s的之間往返票各生成%d張,票價為%d(隨機) ",stns[i].sName,stns[j].sName,n,v);

cnt+=2;

}

return cnt-2;

}

//答題不易,如採納的,請不要無故刪除問題。

❸ 計算機二級c語言程序設計考什麼

計算機二級C語言考試內容:

1、C語言程序的結構。程序的構成,main函數和其他函數;頭文件,數據說明,函數的開始和結束標志以及程序中的注釋;源程序的書寫格式;C語言的風格。

2、數據類型及其運算。C的數據類型;C運算符的種類、運算優先順序和結合性;不同類型數據間的轉換與運算;C表達式類型(賦值表達式,算術表達式,關系表達式,邏輯表達式,條件表達式,逗號表達式)和求值規則。

3、基本語句。表達式語句,空語句,復合語句;輸入輸出函數的調用,正確輸入數據並正確設計輸出格式。

4、選擇結構程序設計。用if 語句實現選擇結構;用switch語句實現多分支選擇結構;選擇結構的嵌套。

5、循環結構程序設計。for循環結構;while和do-while循環結構;continue語句和break語句;循環的嵌套。

6、數組的定義和引用。一維數組和二維數組的定義、初始化和數組元素的引用;字元串與字元數組。

7、函數。庫函數的正確調用;函數的定義方法;函數的類型和返回值;形式參數與實在參數,參數值的傳遞;函數的正確調用,嵌套調用,遞歸調用;局部變數和全局變數;變數的存儲類別(自動,靜態,寄存器,外部),變數的作用域和生存期。

8、編譯預處理。宏定義和調用(不帶參數的宏,帶參數的宏);文件包含冶處理。

9、指針。地址與指針變數的概念,地址運算符與間址運算符;一維、二維數組和字元串的地址以及指向變數、數組、字元串、函數、結構體的指針變數的定義。通過指針引用以上各類型數據;用指針作函數參數;返回地址值的函數;指針數組,指向指針的指針。

10、結構體(即「結構冶)與共同體(即「聯合冶)。用typedef 說明一個新類型;結構體和共用體類型數據的定義和成員的引用;通過結構體構成鏈表,單向鏈表的建立,結點數據的輸出、刪除與插入;二叉樹基本知識。

11、位運算。位運算符的含義和使用;簡單的位運算。

12、文件操作。文件類型指針(FILE類型指針);文件的打開與關閉(fopen,fclose);文件的讀寫(fputc,fgetc,fputs,fgets,fread,fwrite,fprintf,fscanf 函數的應用),文件的定位(rewind,fseek函數的應用)。

(3)c編程選擇什麼題擴展閱讀:

二級C語言考試要求:

1、熟悉Visual C++2010 Express集成開發環境。

2、掌握結構化程序設計的方法,具有良好的程序設計風格。

3、掌握程序設計中簡單的數據結構和演算法並能閱讀簡單的程序。

4、在Visual C++6. 0集成環境下,能夠編寫簡單的C程序,並具有基本的糾錯和調試程序的能力。

二級C語言考試方式:

上機考試,考試時長120分鍾,滿分100分。題型及分值:單項選擇題40分(含公共基礎知識部分10分)、操作題60分(包括填空題、改錯題及編程題(24分))。考試環境:Visual C++2010 Express。

❹ 計算機二級c語言程序設計有哪些題型

全國計算機二級C語言程序設計包括40個單選題(每題一分)和三道操作題(60分)。

單選題中1~10題為二級公共基礎知識,單選題的11~40題是C語言的內容。

操作題包括程序填空(18分)、程序改錯(18分)和編程題(24分)各一題。

程序填空是將一個完整的程序,扣掉兩到三處,讓考生將它填寫完整。由於每位考生具體抽到的題目不同,程序填空有2到3個空要填。

程序改錯也是一個完整的程序,其中有2~3處錯誤要求考生將他們改正。

編程題是要求考生編寫一個程序,然後運行出題干要求的結果。題目中主函數main()會完整給出,在主函數中將調用fun()函數,fun函數由考生自己編寫。編程題以運行結果給分,所編寫完成後必須運行,否則沒分。

二級C語言程序設計考試涉及公共基礎知識和C語言兩塊。公共基礎知識內容包括數據結構與演算法、程序設計基礎、軟體工程基礎、資料庫設計基礎四部分。考10個單選每個1分。

C語言有基礎知識(C語言概述、常量與變數、數據類型、運算符和表達式),編程三大結構(順序結構、選擇結構、循環結構),數組、函數和指針,其他內容(預處理命令、結構體和共用體、位運算、文件)四大部分內容。重點是第二、三部分。

閱讀全文

與c編程選擇什麼題相關的資料

熱點內容
用友軟體如何找回賬套數據 瀏覽:964
怎樣變換文件存儲格式 瀏覽:208
飛常準的數據來自哪裡 瀏覽:844
ug100如何編程畫線 瀏覽:870
文件夾999找不到 瀏覽:145
win1014393最新版本號 瀏覽:100
java基本類型大小 瀏覽:516
word2007不能插入頁碼 瀏覽:968
vb讀取文件並判斷 瀏覽:6
php圖片和程序分離 瀏覽:412
安卓面試非計算機專業 瀏覽:228
u盤的光碟文件怎麼驅動 瀏覽:34
如何鎖定c盤不下文件 瀏覽:359
浙江推廣網站建設怎麼做 瀏覽:478
word文件只有10頁怎麼增加 瀏覽:921
itunes下載的系統在哪個文件夾 瀏覽:605
個性化linux全名要求 瀏覽:40
數據表格制圖小紅點如何去掉 瀏覽:244
查詢iphone版本信息失敗怎麼辦 瀏覽:978
電腦版微信下載的文件保存在哪裡 瀏覽:367

友情鏈接