大一c語言題庫
㈠ c語言題庫(適合大一計科新生的)怎麼找
每個學校應該有自己的OJ平台,如果沒有你可以去其他學校的OJ平台注冊然後刷題,網路搜索西安電子科技大學OJ、杭州電子科技大學OJ、西南電子科技大學OJ都可以
㈡ 大一c語言編程題目!!!!加急!!!!
題目:求1+2!+3!+...+20!的和
1.程序分析:此程序只是把累加變成了累乘。
2.程序源代碼:
main()
{
float n,s=0,t=1;
for(n=1;n<=20;n++)
{
t*=n;
s+=t;
}
printf("1+2!+3!...+20!=%e\n",s);
}
3、設*最多的一行為第N行,編程實現:輸入任意正數N輸出相應*陣(如N=3
#include"stdio.h"
main()
{
int i,j,k;
for(i=0;i<=3;i++)
{
for(j=0;j<=2-i;j++)
printf(" ");
for(k=0;k<=2*i;k++)
printf("*");
printf("\n");
}
for(i=0;i<=2;i++)
{
for(j=0;j<=i;j++)
printf(" ");
for(k=0;k<=4-2*i;k++)
printf("*");
printf("\n");
}
}
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個,第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
1.程序分析:採取逆向思維的方法,從後往前推斷。
2.程序源代碼:
main()
{
int day,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*第一天的桃子數是第2天桃子數加1後的2倍*/
x2=x1;
day--;
}
printf("the total is %d\n",x1);
}
㈢ 大一期末考C語言試題求解答
第一題:#include<stdio.h>
voidmain()
{
inta[10],b[9],i=0;
for(;i<10;i++)
{
printf("請輸入第%d個數",i+1);
scanf("%d",&a[i]);
}
for(i=1;i<10;i++)
b[i-1]=a[i]-a[i-1];
for(i=0;i<9;i++)
{
if(i%3==0)printf(" ");
printf("%d ",b[i]);
}
}運行結果:
學習是要用心的,多動腦,多思考學到的東西才是自己的。喔,對了給分喲!!!!!
㈣ 求大一C語言期末考試題庫
我給你了,ok 記得採納
㈤ 大一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語言題,在線等
/* Note:Your choice is C IDE */
#include "stdio.h"
struct xinxi
{
char shuming[20];
char zuozhe[20];
char nianyue[20];
int kucun;
};
void main()
{
int i,j;//循環變數
struct xinxi s[3],temp;
for(i=0;i<3;i++)
{
printf("請輸入第%d本書的信息: ",i+1);
printf(" 請輸入書名:");
scanf("%s",s[i].shuming);
printf(" 請輸入作者:");
scanf("%s",s[i].zuozhe);
fflush(stdin);
printf(" 請輸入出版年月:");
gets(s[i].nianyue);
printf(" 請輸入庫存量:");
scanf("%d",&s[i].kucun);
}
for(i=1;i<=3;i++)
for(j=0;j<3-i;j++)
if(s[j].kucun<s[j+1].kucun)
{
temp=s[j];
s[j]=s[j+1];
s[j+1]=temp;
}
printf("按照庫存量降序排序並輸出為: ");
for(i=0;i<3;i++)
{
printf("第%d本書的信息: ",i+1);
printf(" 書名:%s ",s[i].shuming);
printf(" 作者:%s ",s[i].zuozhe);
printf(" 出版年月:%s ",s[i].nianyue);
printf(" 庫存量:%d ",s[i].kucun);
}
}
㈦ 大一C語言期末考試求題庫
一、單項選擇題(共10題,每題2分,共20分。在備選答案中選擇一個最佳答案。多選、錯選、不選不得分)
1、不是C語言基本數據類型的是( )。
A、指針類型 B、整型
C、字元型 D、實型
2、設有:int a=3, b= 4, c= 5,x , y; 表達式0 && (x=a)&&(y=b)的值為( )。
A、1 B、0 C、3 D、4
3、設有語句 int a=3 ; 則執行了語句 a+=6;後,變數a 的值為( )。
A、18 B、-3 C、9 D、12
4、執行以下程序段後,輸出的y值為( )
void main()
{ int a[]={2,4,6,8,10};
int y, *p;
p=&a[0];
y=*p; printf(「%d」,y);
}
A、2 B、4 C、6 D、8
5、有定義語句:float a[4];則分配給數組a的內存空間為( )位元組。
A、 20 B、 12 C、 16 C、10
6、以下描述錯誤的是( )。
A、break語句可用於while語句。
B、break語句和continue語句的作用是一樣的。
C、在循環語句中使用break語句是為了跳出循環,提前結束循環。
D、在循環語句中使用continue語句是為了結束本次循環,而不終止整個循環。
7、C語言中規定,if語句的嵌套結構中,else總是( )。
A、與最近的if 配對 B、與第一個if 配對
C、按縮進位置相同的if配對 D、與最近的且尚未配對的if 配對
8、說明語句「int (*p)( ); 」的含義是( ) 。
A、p是一個指向一維數組的指針變數。
B、p是指針變數,指向一個整型數據。
C、p是一個指向函數的指針,該函數返回一個int型數據。
D、以上都不對。
9、以下對二維數組c的正確聲明是 ( ) 。
A、int c[3][ ]; B、int c(3,4);
C、int c(2)(2); D、int c[3][2];
10、下述程序段執行後輸出結果為( )。
int x=100, y=200;
printf ("% d", (x, y));
A、100 B、200 C、100,200 D、編譯出錯
二、填空題(共7題,共10空,每空1分,共10分。將答案填在題中橫線上)
1、C語言提供的三種邏輯運算符是 && 、 || 和!;
2、函數的返回值是通過函數中的 return 語句獲得的。
3、在"int a[ ][3]={{1},{3,2},{4,5,6},{0}};"定義後,a[2][2]的值為_6__ _;
4、對於"int *pa[5];" pa是一個具有5個元素的_數組指針_,每個元素是一個指向int型變數的__指針__;
5、單向鏈表的尾節點next指針應賦值__ NULL___;
6、在語句for(x=1,y=3;x>y;y++)中循環體執行的次數為 0 。
7、int a[5];數組a的首地址為2000,則元素a[1]的地址為 2002 ,元素a[2]的地址為 2004 。
三、程序填空題(共2題,共5空,每空4分,共20分)
1、以下程序完成計算1-1/2+1/3-1/4+1/5+……前n 項和,請填空。
#include <stdio.h>
int main( )
{ int i, n, flag;
float sum;
scanf("%d", &n);
flag= 1 ;
sum=0;
for(i=1;i<=n; i++ )
{ sum+=(float)flag/i;
flag=-flag ;
}
printf("%.3f\n", sum);
}
2、以下程序的功能是從鍵盤輸入n個整數,統計其中正數、0、負數的個數,請填空。
#include <stdio.h>
void main( )
{int a, i, count1,count2,count3;
count1=count2=count3=0 ;
for(i=1;i<=n;i++)
{ scanf(「%d」, &a);
if(a>0) count1++;
else if(a==0) count2++ ;
else count3++;
}
printf(「正數:&d個,零:%d個,負數:%d個\n」, count1,count2,count3 );
}
四、運行程序結果題(共4題,每題6分,共24分)
1、寫出程序運行結果。
void main( )
{ int x=1,y=2,t;
int *p1,*p2;
p1=&x; p2=&y;
t=*p1;*p1=*p2;*p2=t;
printf("x=%d,y=%d\n",x,y);
}
運行結果為:
程序有錯,不能運行!或寫:
x=2,y=1
2、寫出程序運行結果。
#include<stdio.h>
int max(int a,int b)
{ int c;
c=a>b?a:b;
return(c);
}
int min(int a,int b)
{int c;
c=a<b?a:b;
return(c);
}
void main()
{ int a=2,b=6;
printf("max=%d\n",max(a,b));
printf(「min=%d\n」,min(a,b));
}
運行結果為:
程序有錯,不能運行!或寫:
max=6
min=2
3、寫出程序運行結果。
#include <stdio.h>
void main()
{ int a[3][3]={1,2,3,4,5,6,7,8,9};
int i,j,sum=0;
for (i=0;i<3;i++)
for(j=0;j<3;j++)
if(i==j) sum=sum+a[i][j];
printf(「sum=%d\n」,sum);
}
運行結果為:
程序有錯,不能運行!或寫:
sum=15
4、寫出程序運行結果。
void main( )
{ int n,f;
n=1;
while(n<=10)
{ f=f*n;
n+=2;
}
printf(「f=%d\n」,&f);
}
運行結果為:
程序有錯,不能運行!或寫:
f=不確定
五、程序設計題(共2題,每題13分,共26分)
1、將一個數組按逆序存放,如元素1、2、3、4、5,按逆序存放後為5、4、3、2、1。
㈧ 誰有大一C語言考試題快考試了,跪求題庫··
單項選擇題(每小題2分,共50分)
1、一個C程序的執行是從___A__。
A、本程序的main函數開始,到main函數結束
B、本程序的main函數開始,到本程序文件的最後一個函數結束
C、本程序文件的第一個函數開始,到本程序文件的最後一個函數結束
D、本程序文件的第一個函數開始,到本程序main函數結束
2、C語言程序的基本單位是___C___。
A、程序行 B、語句
C、函數 D、字元
3、請選出可用作C語言用戶標識符的一組標識符___B___。
A、void B、a3_b3 C、For D、2a
define _123 -abc DO
WORD IF ase sizeof
主要特點
C語言是一種結構化語言,它有著清晰的層次,可按照模塊的方式對程序進行編寫,十分有利於程序的調試,且c語言的處理和表現能力都非常的強大,依靠非常全面的運算符和多樣的數據類型,可以輕易完成各種數據結構的構建,通過指針類型更可對內存直接定址以及對硬體進行直接操作,因此既能夠用於開發系統程序,也可用於開發應用軟體。
以上內容參考:網路-c語言
㈨ 大一c語言存儲結構試題
變數可以存儲在內存中的不同地方,這依賴於它們的生存期。在函數外部定義的變數(全局變數或靜態外部變數)和在函數內部定義的static變數,其生存期就是程序運行的全過程,這些變數被存儲在數據段(datasegment)中。數據段是在內存中為這些變數留出的一段大小固定的空間,它分為兩部分,一部分用來存放初始化變數,另一部分用來存放未初始化變數。
在函數內部定義的auto變數(沒有用關鍵字static定義的變數)的生存期從程序開始執行其所在的程序塊代碼時開始,到程序離開該程序塊時為止。作為函數參數的變數只在調用該函數期間存在。這些變數被存儲在棧(stack)中。棧是內存中的一段空間,開始很小,以後逐漸自動增大,直到達到某個預定義的界限。在象DOS這樣的沒有虛擬內存(virtualmemory)的系統中,這個界限由系統決定,並且通常非常大,因此程序員不必擔心用盡棧空間。
解黎曉馬糾索岌動穿抹耿仿戕硅茉奴縉兄卦十犁