當前位置:首頁 » 編程語言 » c語言編程作業題大全
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言編程作業題大全

發布時間: 2022-09-25 06:37:20

c語言編程題目

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

voidsum(char*sum,char*a,char*b)
{
char*s_short,*s_long;
inti_short,i_long,i_result;

i_short=strlen(a)-1;
i_long=strlen(b)-1;

if(i_long>=i_short)
{
s_short=a;
s_long=b;
i_result=i_long+1;
}
else
{
s_long=a;
s_short=b;
i_result=i_short;
i_short=i_long;
i_long=i_result;
i_result++;
}
for(;i_short>=0;i_short--,i_long--,i_result--)
{
sum[i_result]+=s_short[i_short]-'0'+s_long[i_long]-'0';
sum[i_result-1]=sum[i_result]/10;
sum[i_result]%=10;
sum[i_result]+='0';
}
for(;i_long>=0;i_long--,i_result--)
{
sum[i_result]+=s_long[i_long]-'0';
sum[i_result-1]=sum[i_result]/10;
sum[i_result]%=10;
sum[i_result]+='0';
}
if(sum[0])sum[0]+='0';
else
{
i_result=strlen(sum+1);
memmove(sum,sum+1,i_result);
sum[i_result]=0;
}
}
intmain(intargc,char**argv)
{
chara[1001]={0},b[1001]={0},r[1002]={0};
inti,j=0;

scanf("%d",&i);
while(j++<i)
{
memset(r,0,sizeof(r));
memset(a,0,sizeof(a));
memset(b,0,sizeof(b));
scanf("%s%s",a,b);

sum(r,a,b);
printf("Case%d: ",j);
printf("%s+%s=%s ",a,b,r);
if(j<i)printf(" ");
}
return0;
}

② C語言作業,編程題 幫幫孩子吧😭

第1題:

#include<stdio.h>
#include<math.h>
doubles1,s2,s3;
voidfun(doublea,doubleb){
s1=pow(a+b,2);
s2=pow(a+b,3);
s3=pow(a+b,1.0/2);
}
voidmain(){
doublea,b;
scanf("%lf%lf",&a,&b);
fun(a,b);
printf("%lf %lf %lf",s1,s2,s3);
}

//運行示例:

③ C語言編程題

要輸入的分數太多,我懶得手數,用2位隨機數代替手輸入,輸入函數我單獨寫了,你需要調用就行了,詳細看備注。

#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#definestuNum15//學生人數
#definescNum7//模塊數
typedefstructstu//定義學生數據結構
{
intsid;//學生ID
intsc[scNum];//對應7個模塊成績
intsum;//總成績
}STU;
voidinsertSTU(STU*stu);//輸入15個學生的信息
voidinsertTest(STU*stu);//測試,用隨機數代替輸入,我懶得輸入那麼多成績,你要手輸,調用insertSTU替換該函數
voidprintfSTU(STU*stu);//按輸入順序列印15名學生7模塊成績及每個模塊前三名的成績
intmain()
{
STUstu[stuNum];//定義15個學生
//inti,j,sc;
srand(time(NULL));
insertTest(stu);//想手動輸入這里改成insertSTU(stu)
printfSTU(stu);
return0;
}
voidprintfSTU(STU*stu)//按輸入順序列印15名學生7模塊成績及每個模塊前三名信息及總分前三名信息
{
inti,j,k,sc;
STU*max[3],*sum[3],newstu;//max對應7個模塊前3的學生結構指針sum對應總分前3學生結構指針
for(i=0;i<stuNum;i++)
{
printf("編號%02d的學生7模塊成績及總分分別為:",stu[i].sid);
for(j=0;j<scNum;j++)
{
sc=stu[i].sc[j];
printf("%02d",sc);
}
printf("%d ",stu[i].sum);
}


for(j=0;j<scNum;j++)
{
for(k=0;k<scNum;k++)
{
newstu.sc[k]=0;
newstu.sum=0;
}

max[0]=max[1]=max[2]=&newstu;
for(i=0;i<stuNum;i++)
{
if(stu[i].sc[j]>max[0]->sc[j])
max[0]=&(stu[i]);
elseif(stu[i].sc[j]>max[1]->sc[j])
max[1]=&(stu[i]);
elseif(stu[i].sc[j]>max[2]->sc[j])
max[2]=&(stu[i]);
}
printf("模塊%02d前3名分別為:編號:%02d分數:%02d編號:%02d分數:%02d編號:%02d分數:%02d ",j+1,max[0]->sid,max[0]->sc[j],max[1]->sid,max[1]->sc[j],max[2]->sid,max[2]->sc[j]);
}

sum[0]=sum[1]=sum[2]=&newstu;
for(i=0;i<stuNum;i++)
{
if(stu[i].sum>sum[0]->sum)
sum[0]=&(stu[i]);
elseif(stu[i].sum>sum[1]->sum)
sum[1]=&(stu[i]);
elseif(stu[i].sum>sum[2]->sum)
sum[2]=&(stu[i]);
}
printf("總分前3名分別為:編號:%02d總分:%02d編號:%02d總分:%02d編號:%02d總分:%02d ",sum[0]->sid,sum[0]->sum,sum[1]->sid,sum[1]->sum,sum[2]->sid,sum[2]->sum);

}


voidinsertSTU(STU*stu)//輸入15個學生的信息
{
inti,j,sc;
for(i=0;i<stuNum;i++)
{
stu[i].sid=i+1;
stu[i].sum=0;
printf("輸入編號%d的學生的7個模塊成績:",i+1);
for(j=0;j<scNum;j++)
{
//scanf("%d",&sc);//我懶得輸入那麼多成績,就用隨機數代替,你要輸入把這句恢復
sc=(int)(rand()%100);//用隨即2位數代替輸入,不需要就注釋掉
stu[i].sc[j]=sc;
stu[i].sum=stu[i].sum+sc;
}
}
}
voidinsertTest(STU*stu)//測試用代替輸入
{
inti,j,sc;
for(i=0;i<stuNum;i++)
{
stu[i].sid=i+1;
stu[i].sum=0;
for(j=0;j<scNum;j++)
{
sc=(int)(rand()%100);
stu[i].sc[j]=sc;
stu[i].sum=stu[i].sum+sc;
}
}
}

④ 求C語言練習題答案

二、填空題
1. ___變數__是指在程序運行過程中,值可以發生變化的量。
2.C語言是一種____區分_(區分/不區分)字母大小寫的語言,Password和password在C語言中是兩個___不同__(相同/不同)的標識符。
3.下面的轉義字元分別表示:
』\b』__退格___,』\n』__換行___,』\t』__水平製表___,』\」』 __雙引號字元「"」___
4.下面常量的類型分別為:
1.5E12__浮點型___,1288L _整型____,』a』__字元___,"a"__字元串___
08 __整形___,』\007』__整型___
5. C語言源程序一定要有而且只有一個__主函數___函數,程序執行時也從它開始。
6. 結構化程序設計主要有___順序__、__選擇___和__循環___三種基本結構。
三、判斷題
1. C語言不是一種結構化程序設計語言。(錯)
2. C語言是弱類型語言,為了類型轉換的方便,對類型的要求很不嚴格,在許多情況下不做類型檢查。(對)
3. C語言既具有高級語言的特點,同時也具有部分低級語言的特點。(對)
4. C源程序可以由多個文件組成,每個文件中都可有一個主函數main()。(錯)
5. C程序從main()函數開始執行,因此主函數main()必須放在程序的開頭。(錯)
6. 命名標識符時字元個數不得超過6個。(錯)
7. 對於同一個數據種類型,變數值越大,它所佔內存的位元組數越多。(錯)
8. 定義一個變數時必須指出變數類型,但是不一定必須給變數初始化。(對)
9. ""表示一個空字元串常量,』』表示一個空字元常量。(對)
10. 一個表達式中出現多種數值型數據類型,運算前先進行類型轉換。(對)
11. 浮點數不能作自增或自減運算,只有整型才可作自增或自減運算。(錯)
12. 已知a、b是整型變數,則表達式a=3,2+4,b=6,7+8是一個逗號表達式。(對)
四、問答題
1. 寫出下面表達式的值
(1)12/3*9=36
(2)int i=3,j;
i*=2+5;
i/=j=4;
i+=(j%2);
i、j的最終結果是多少?i=5,j=4
(3)int a=3,b,c;
b=(a++)+(a++)+(a++);
c=(++a)+(++a)+(++a);a、b、c的最終結果是多少?a=9,b=9,c=25

2. 下列表達式是否正確?若正確,表達式的值是什麼?
21/2=10 21/2.0= 10.5 21.0/2=10.5 21%2=1 21.0%2 21%2.0 18%15=3 15%18=15 3%15=3
五、編程題
編寫程序,在屏幕上輸出如下信息:
===================
= I am a student. =
===================
#include"stdio.h「
void main()
{
printf("= I am a student. =");
}

⑤ C語言編程題

發兩個我之前編過的例子哈(例子看起來可能有點點長但不難,相信樓主只有稍微耐心點看肯定很容易理解的)
題目一、數學黑洞6174(這題目挺有意思哦~)
/*
數學黑洞6174。
已知:一個任意的四位正整數(全相同的除外,如1111)。將數字重新組合成一個最大的數
和最小的數相減,重復這個過程,最多七步,必得6174。即:7641-1467=6174。將永遠出不來。
編程:輸入任一四位數(全相同的除外),展示其操作過程並統計步驟。
*/
#include<stdio.h>

//插入排序
void insertSort(int r[],int len){
int i,k,tmp;

for(i=1;i<len;i++){
k=i-1;
tmp=r[i];
while(k>=0&&r[k]>tmp){
r[k+1]=r[k];
k--;
}
r[k+1]=tmp;
}
}

void main(){
int N,count,end,s;
int r[4];
int max,min;

printf("請輸入一個任意的四位正整數(全相同的除外,如1111):");
scanf("%d",&N);

count=0;
end=0;
s=N;
while(end!=6174){
r[0]=s%10;
r[1]=s/10%10;
r[2]=s/100%10;
r[3]=s/1000;
insertSort(r,4);
max=1000*r[3]+100*r[2]+10*r[1]+r[0];
min=1000*r[0]+100*r[1]+10*r[2]+r[3];
end=max-min;
count++;
printf("第%d步:%d%d%d%d-%d%d%d%d=%d%d%d%d\n",count,r[3],r[2],r[1],r[0],r[0],r[1],r[2],r[3],end/1000,end/100%10,end/10%10,end%10);
s=end;
}
printf("%d一共經過了%d步得到了6174\n",N,count);

}

題目二、驗證哥德巴赫猜想(也挺有意思滴吧~)
/*
驗證歌德巴赫猜想:任何一個充分大的偶數N(N≥4,都可以用兩個素數之和表示。
例如:4=2+2,6=3+3,8=3+5,98=17+79
"a+b":任一充分大的偶數都可以表示成為一個素因子個數不超過a個的數與另一個素因子不超過b個的數之和
陳景潤證明了"1+2"
*/
#include<stdio.h>

//判斷一個數是否為素數
int isPrime(int n){
int i;

for(i=2;i*i<=n;i++){
if(n%i==0)
return 0;
}
return 1;
}

void main(){
int N;
int i,j;
int r;

printf("請輸入一個偶數:");
scanf("%d",&N);
j=0;
for(i=2;i<N;i++){
if(isPrime(i)&&isPrime(N-i)){
r=i;
break;
}
}
printf("%d=%d+%d\n",N,r,N-r);
}

⑥ C語言的作業題

void sum(int a[][4],int mode){
int s=0;
if(mode==1)
for(int i=0;i<4;i++)
s+=a[i][i];
else
{
for(int i=0;i<4;i++)
s+=a[i][4-i-1];
}
}
不懂再問方式一位正對角 ,而為反對角

⑦ C語言的編程題!

1.從鍵盤上輸入若干字元,直到輸入』#」結束。統計英文字母、數字、空格、其他字元的個數並輸出。
#include "stdio.h"
main()
{
char c;
int letter,number,space,other;
letter=number=space=other=0;
printf("\nPlease input some characters:(end of '#')\n");
while((c=getchar())!='#')
{ if(c>='a' && c<='z') letter++;
else if(c>='A' && c<='Z') letter++;
else if(c>='0' && c<='9') number++;
else if(c==' ') space++;
else other++;
}
printf("\nletter=%d,number=%d,space=%d,other=%d\n",letter,number,space,other);
}
2.從鍵盤輸入任意自然數N(N>10)要求:1.篩選出3~N之間的素數 2.輸出素數,每個數佔用6寬度,左對齊。
#include "stdio.h"
#include "math.h"
main()
{ int N,i,k,sqr,flag=1;
printf("\nN=");
scanf("%d",&N);
while(N<=10)
{ printf("ERROR,input again:");
scanf("%d",&N);
}
for(k=3;k<=N;k++)
{ sqr=sqrt(N);
for(i=2;i<=sqr;i++)
if(k%i==0)
{ flag=0;
break;
}
if(flag==1)
printf("%-6d",k);
flag=1; }
}
3.有一個分數序列:2/1,3/2,,5/3,13/8,21/13,…從鍵盤輸入自然數N(N>1),計算該數列的前N項之和。
分析:此系列的分子和分母均為斐波那契數列,可設一個整型數組a[M]存該數列:
a[0]=a[1]=1,a[i]=a[i-1]+a[i-2],
再設實型數組b[M]存分數:b[i]=a[i+1]/(float)a[i]
#include "stdio.h"
#define M 100
main()
{ int N,i,a[M];
float b[M],sum=0;
printf("\nN=");
scanf("%d",&N);
a[0]=a[1]=1;
for(i=1;i<=N;i++)
{ a[i+1]=a[i]+a[i-1];
b[i]=a[i+1]/(float)a[i];
sum+=b[i];
}
printf("sum=%.2f",sum);
}
4.請輸入3×3的行列式(整數構成),找出其中的最小數值,以及它所在行標和列標。
#include "stdio.h"
main()
{ int a[3][3],i,j,min,l,c;
printf("\na[3][3]=\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
min=a[0][0];l=0;c=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(min>a[i][j])
{ min=a[i][j];
l=i;
c=j;
}
printf("MIN: a[%d][%d]=%d",l,c,min);
}
補充:輸入3×3的行列式(整數構成),找出其中的最大值以及它所在的行標和列標
#include "stdio.h"
main()
{ int a[3][3],i,j,max,l,c;
printf("\na[3][3]=\n");
for(i=0;i<3;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
max=a[0][0];l=0;c=0;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
if(max<a[i][j])
{ max=a[i][j];
l=i;
c=j;
}
printf("MAX: a[%d][%d]=%d",l,c,max);
}
5.從鍵盤輸入本班同學的程序設計課程分數保存在數組中(人數不超過45人,分數為整數),找出最高分及其所在的下標,並輸出。
#include "stdio.h"
#define N 45
main()
{ int s[N],k,i;
printf("\nInput scores:");
k=0;
for(i=0;i<N;i++)
{ scanf("%d",&s[i]);
if(s[k]<s[i])
k=i;
}
printf("The highest score is s[%d]=%d",k,s[k]);
}
6.從鍵盤輸入本班同學的程序設計課程分數保存在數組中(人數不超過45人,分數為整數),將百分製成績轉換成等級 『A』~』E』(『A』90及以上,』B』80分數段,』C』70分數段,』D』60分數段,』E』不及格),並輸出成績及其對應的等級數據。
#include "stdio.h"
#define N 45
main()
{ int s[N],i;
char grade[N];
printf("\nScores:");
for(i=0;i<N;i++)
{ scanf("%d",&s[i]);
if(s[i]>=90 && s[i]<=100) grade[i]='A';
else if(s[i]>=80 && s[i]<=89) grade[i]='B';
else if(s[i]>=70 && s[i]<=79) grade[i]='C';
else if(s[i]>=60 && s[i]<=69) grade[i]='D';
else if(s[i]>=0 && s[i]<=59) grade[i]='E';
else grade[i]='w'; /*wrong score*/
}
for(i=0;i<N;i++)
{ if(i%5==0) printf("\n");
printf("%4d:%c",s[i],grade[i]);
}
}
7.從鍵盤輸入5組(每組3個)浮點數作為三條邊的長度,若它們能夠構成三角形,則計算出三角形的面積,否則給出「不能構成三角形」的提示。
#include "stdio.h"
#include "math.h"
main()
{ float a[5][3],s,area[5];
int i,j;
for(i=0;i<5;i++)
{ printf("\nNo.%d:",i);
for(j=0;j<3;j++)
scanf("%f",&a[i][j]);
if((a[i][0]+a[i][1]>a[i][2]) && (a[i][0]+a[i][2]>a[i][1])
&& (a[i][1]+a[i][2]>a[i][0]) && abs(a[i][0]-a[i][1])<a[i][2]
&& abs(a[i][0]-a[i][2])<a[i][1] && abs(a[i][1]-a[i][2])<a[i][0])
{ s=(a[i][0]+a[i][1]+a[i][2])/2;
area[i]=sqrt(s*(s-a[i][0])*(s-a[i][1])*(s-a[i][2]));
printf("AREA[%d]=%f",i,area[i]);
}
else printf("Can't been a triangle!");
}
}
8.計算1-1/2+1/3-1/4+…+1/99-1/100的前N項的值,N從鍵盤輸入,N大於1,小於100。
分析:第i項為:1/i,加減號交替出現,可以用flag存+1和-1來決定加減。
注意i需要轉換為float型計算,否則結果不正確?
N為題目給定的數,所以一般不自行改名。?
#include "stdio.h"
main()
{ int N,i,flag=1;
float sum=0;
printf("\nN=");
scanf("%d",&N);
for(i=1;i<=N;i++)
{ sum+=flag/(float)i;
flag=-flag;
}
printf("Sum=%.2f",sum);
}
9.從鍵盤輸入一個字元串存入數組s[80],統計該字元串的長度並將其中所有小寫字母改為大寫字母,然後再將結果輸出。
#include "stdio.h"
main()
{ char s[80];
int len,i;
printf("\nInput a string:");
gets(s);
len=0;
i=0;
while(s[i]!='\0')
{ if(s[i]>='a' && s[i]<='z')
s[i]-=32;
len++;
i++;
}
printf("String:%s,length:%d",s,len);
}
10.從鍵盤上輸入N個整數保存在數組中,用選擇法排序將其按降序排列。
#include <stdio.h>
#include <stdlib.h>
#define N 10
int main(int argc, char *argv[])
{ int i,j,key,a[N];
int pos;
printf("Please input ten numbers\n");
for(i=0;i<N;i++) {
printf("a[%d]=",i);
scanf("%d",&a[i]); }
printf("\n");
for(i=0;i<N;i++)
printf("%d;",a[i]);
printf("\n");
for(i=0;i<N-1;i++)
{ for(j=i+1;j<N;j++)
{ key=a[i];
pos = i;
if(key > a[j])
{ key=a[j];
pos = j; } }
if (pos != i)
{ a[j] = a[i];
a[i]=key; } }
for(i=0;i<N;i++)
printf("%d;",a[i]);
printf("\n");
return 0;
}
11.求100~1000之間有多少個整數,其各位數字之和為5,輸出滿足條件的所有數據以及總個數。
#include <stdio.h>

void main()
{
int one,ten,hun; /* 100~1000整數的個、十、百位上的數字 */
int i,sum,count=0; /* i是100~1000整數,sum為各位數字的和,count為總個數 */
for(i = 100; i < 1000; i++)
{
one = i%10; /* 個位上的數字 */
ten = i/10%10; /* 十位上的數字 */
hun = i/100; /* 百位上的數字 */
sum = one+ten+hun; /* 各位數字的和 */
if(sum == 5) /* 如果各位數字之和為5則輸出並統計個數 */
{
printf("%d ",i);
++count;
}

}
printf("\nThere all are %d numbers.\n",count); /* 輸出總個數 */
}

12. 從鍵盤上輸入若干個學生成績(百分制整數),直到輸入-1結束。求平均分並保留一位小數輸出
分析:定義score存儲學生成績,由題意知為整型數,范圍0-100
定義平均分ave,因為需要小數輸出,定義為float型
#include "stdio.h"
main()
{ int score,i=0;
float sum=0,ave;
printf("\nPlease input scores(end of -1):\n");
do
{ scanf("%d",&score);
if(score>=0 && score<=100)
{ sum+=score;
i++; }
while(score!=-1);
ave=sum/i;
printf("\nAverage of %d students is %.1f",i,ave);
}

你原來的第十一題不會做,這份是我自己整理的,給點獎勵吧!

⑧ 大學生C語言編程作業題,請高手幫忙,急!

#include<stdio.h>
#include<math.h>
intmain(void)
{
intmoney,year;
doubleinterest,rate;
/**-----------*/
scanf("%d",&money);
scanf("%d",&year);
scanf("%lf",&rate);
interest=money*pow((1+rate),year)-money;
/*---------*/
printf("interest=%.2f ",interest);
return0;
}

⑨ C語言編程題目

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

typedef struct LNode {
int data;
LNode *next;
}LNode, *LinkList;

typedef struct {
int *Num;
int top;
int stackment; // 停車場最大的停車輛
}SqStack;

typedef LinkList QueuePtr;

typedef struct {
QueuePtr front;
QueuePtr rear;
}LinkQueue;

void InitStack(SqStack &S);
void InitQueue(LinkQueue &Q);
void PutIn(SqStack &S, LinkQueue &Q);
void GetOut(SqStack &S, LinkQueue &Q);
void StackTraverse(SqStack S);
void QueueTraverse(LinkQueue Q);

int main()
{
char ch, c;
SqStack S; LinkQueue Q;
InitStack(S); InitQueue(Q);
while(1)
{
fflush(stdin);
printf("*** 進入停車場: 'A' ***\n");
printf("*** 退出停車場: 'D' ***\n");
printf("*** 退出操作: '0' ***\n");
printf("\n請輸入命令: ");
ch = getchar();
c = getchar();

switch(ch)
{
case 'A': PutIn(S, Q); break;
case 'D': GetOut(S, Q); break;
case '0': exit(-1);
default: printf("輸入有誤!\b");
exit(-1);
}

StackTraverse(S);
QueueTraverse(Q);
}

return 0;
}

void PutIn(SqStack &S, LinkQueue &Q)
{
int i, n, tag = 0; LNode *p, *q;

q = (LNode *)malloc(sizeof(LNode));
if(q == NULL)
{
printf("內存分配失敗!\n");
exit(-1);
}
while(!tag)
{
printf("請輸入車號: ");
scanf("%d", &n);
for(i = 0; i <= S.top; i++) // 若車號在堆棧已存在
if(n == S.Num[i])
{
printf("車號已存在! 請重新輸入!\n");
break;
}
if(i > S.top)
tag = 1;
q = Q.front->next; // 若車號在隊列中存在
while(q != NULL && Q.front != Q.rear)
{
if(q->data == n)
{
printf("車號已存在! 請重新輸入!\n");
tag = 0;
break;
}
else q = q->next;
}

}
if(S.top != 4) // 若棧不滿
S.Num[++S.top] = n;
else // 若棧滿,則進入隊列
{
p = (LNode *)malloc(sizeof(LNode));
if(p == NULL)
{
printf("內存分配失敗!\n");
exit(-1);
}
p->data = n;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
}
}

void GetOut(SqStack &S, LinkQueue &Q)
{
int i, n, tag = 0;
LNode *p; SqStack S1;
InitStack(S1);

if(S.top < 0) // 停車場空
{
printf("停車場已空!情況如下!\n\n");
return;
}
while(!tag)
{
printf("請輸入車號: ");
scanf("%d", &n);
for(i = 0; i <= S.top; i++)
if(n == S.Num[i]) // 若車號存在
tag = 1;
if(tag == 0) // 若車號不存在
printf("車號不存在! 請重新輸入!\n");
}

for(i = S.top; S.Num[i] != n; i--) // 擋路的車進臨時棧
S1.Num[++S1.top] = S.Num[S.top--];
S.top--;
for(i = S1.top; i >= 0; i--) // 臨時棧的車重新入棧
S.Num[++S.top] = S1.Num[S1.top--];
if(Q.front != Q.rear) // 若便道有待進棧的車
{
p = (LNode *)malloc(sizeof(LNode));
if(p == NULL)
{
printf("內存分配失敗!\n");
exit(-1);
}
p = Q.front->next;
S.Num[++S.top] = p->data;
Q.front ->next = p->next ;
free(p);
}
}

void InitStack(SqStack &S)
{
S.stackment = 5;
S.Num = (int *)malloc((S.stackment-1) * sizeof(int));
if(S.Num == NULL)
{
printf("內存分配失敗!\n");
exit(-1);
}
S.top = -1;
}

void InitQueue(LinkQueue &Q)
{
LNode *head;
head = (LNode *)malloc(sizeof(LNode));
if(head == NULL)
{
printf("內存分配失敗!\n");
exit(-1);
}

Q.front = head;
Q.rear = head;
Q.front->next = NULL;
}

void StackTraverse(SqStack S)
{
int i;
printf("停車場的情況:\n");
printf("┏━━━━━━━━\n");
printf("┃");
for(i = 0; i <= S.top; i++)
printf(" %d", S.Num[i]);
printf("\n┗━━━━━━━━\n");
}

void QueueTraverse(LinkQueue Q)
{
LNode *p;
p = (LNode *)malloc(sizeof(LNode));
if(p == NULL)
{
printf("內存分配失敗!\n");
exit(-1);
}
printf("便道的情況:\n");
printf(" ━━━━━━━━\n");
p = Q.front->next;
while(p != NULL && Q.front != Q.rear)
{
printf(" %d", p->data);
p = p->next;
}
printf("\n ━━━━━━━━\n");
}

題目有點出入,這是我以前寫的,自己適當的加一點代碼吧。
附我的編程題目:設停車場內只有一個可停放幾輛汽車的狹長通道,且只有一個大門可供汽車進出。汽車在停車場內按車輛到達時的先後順序,依次由北向南排列(大門在最南端,最先到達的第一輛車停放在車場的最北端),若車場內已停滿幾輛汽車,則後來的汽車只能在門外的便道上等候,一旦停車場內有車開走,則排在便道上的第一輛車即可開入;當停車場內某輛車要離開時,由於停車場是狹長的通道,在它之後開入停車場的車輛必須先退出車場為它讓路,待該輛車開出大門外後,為它讓路的車輛再按原次序進入車場。在這里假設汽車不能從便道上開走。試設計一個停車管理程序。
1、接受命令(A:入,D:出)和車號,若是汽車要進停車場,先判斷停車場棧是否滿,若不滿,則汽車入棧,否則汽車入便道隊列等候。
2、若是汽車要離開停車場,為該汽車讓路,將停車場棧上若干輛汽車入臨時棧,等這輛汽車出停車場後,臨時棧中的汽車出棧,再回到停車場棧,然後看便道隊列是否為空,若不空,則說明有汽車等候,從隊頭取出汽車號,讓該車入停車場棧。
3、重復1、2直到為退出命令(車號為0或負數)。

⑩ 《C語言程序設計》練習題

一、選擇題
1、C語言規定,在一個源程序中,main()函數的位置(C )。
A) 必須在最開始 B)必須在最後
C) 可以任意 D) 必須在系統調用的庫函數後面

這題你死記就行,你看看這個
任何一個C++程序都必須定義一個main函數,它的返回類型總是int類型。這個函數由操作系統來調用,在main函

數執行完以後,程序也就終止了。 main也可以使用return向操作系統返回一個值,使用操作系統的命令可以檢測

main的返回值。一般約定在main返回0時,表示程序運行過程中沒有出現錯誤,其它非零值表示程序出現異常情況。
若沒有為main指定返回值,這樣返回值是任意的。

2、若x和y都是int 型變數,x=100,y=200,且有以下程序段,printf(「%d」,(x,y));則其輸出結果是( A)。
A) 200 B) 100 C) 100 200 D) 輸出不確定值

(x,y)這是個逗號表達式,表達式的值為最後一個逗號後面表達式的值,因為前面有一個%d,所以輸出 的是y的



3、合法的C語法字元常量是(C )。
A) 「A」 B) 65 C) 『\t』 D) A

字元都是由兩個單引號括起來的,死記, a)為字元串

4、表達式「3!=4」的值是(A )。
A) 1 B) 0 C) T D) F

!=是c語言的邏輯運算符,3!=4為真,多以得1, 3=4為假,值為0

5、 int a=1,b=2,c=3,d=4,執行下列程序後x的值為( C)。
if(a>b) x=1;else if (c>d) x=2;else x=3;
A) 1 B) 2 C) 3 D) 4

如果a>b,1>2為假,不執行x=1,執行else if(c>d),判斷:3>4為假,不執行x=2,執行=3,完

6、以下程序的輸出結果是(D)。
Int x=10,y=3,z;printf(「%d\n」,z=(x%y,x/y));
A)1 B) 0 C) 4 D) 3

逗號表達式,x%y,10%3,商3餘1,模取余數1,x/y,10/3,商3餘1,除法取商3,逗號表達式,表達式的值為最後一

個逗號後面表達式的值

7、為表示x≥y≥z,應使用C語言表達式(A )。
A) (x>=y)&&(y>=z) B) (x>=y) AND (y>=z)
C) (x>=y>=z) D) (x>=y) & (y>=z)

關系運算符,x>=y與y>=z必須是同時成立的,因此要用邏輯運算符&&,&&與的意思

8、合法的數組定義是( a )。
A) int a[ ]=」string」; B) int a[5]={0,1,2,3,4,5};
C) char a=」string」; D) char a[ ]={「01234」};

a不指定數組長度定義,正確
b數組長度為5,就是裡面有5個數組元素,多了一個數組元素
c定義a不是數組而是一個變數,素組應該是a[]
d是錯的,字元串是這樣定義的:char a[ ]={'0','1','2','3','4','\0'};
[4]中數字是數組長度,說明裡面有幾個元素

9、設x和y均為int型變數,則語句「x+=y;y=x-y;x-=y;」的功能是(D)。
A) 把x和y按從小到大排列 B)把x和y按從大到小排列
C)無確定結果 D)交換x和y中的值

x+=y等同於x=x+y,把x加y的值賦給x,x現在存的是x與y的和
y=x-y把x減y的值賦給y,x現在存的是x與y的和 (x+y)-y=x,把x的值給y,y存x的值
x-=y等同於x=x-y,把x減y的值賦給x,(x+y)-y=x,現在的後面的y存的是x的值,做完後x里存的值是y,完成交換

10、若已定義x和y為double類型,則表達式「x=1,y=x+3/2」的值是(C)。
A) 1 B)2 C) 2.0 D) 1.0

逗號表達式,先讓x=1在算y=x+3/2,得2,因為是double類型,所以有小數點

11、下列條件語句中,功能與其他語句不同的是 (D)
A) if(a) printf("%d\n",x); else printf("%d\n",y);
B) if(a==0) printf("%d\n",y); else printf("%d\n",x);
C) if (a!=0) printf("%d\n",x); else printf("%d\n",y);
D) if(a==0) printf("%d\n",x); else printf("%d\n",y);

a 如果a為真輸出x,如果a為假輸出y
b 如果a==0,也就是為假,輸出y,a為真輸出x,同a
c 如果a!=0為真,輸出x,a為假輸出y同上
d 如果a為假輸出x,如果a為真輸出y,與以上的都不同

12、以下能正確定義二維數組的是 (C)
A) int a[][3]; B) int a[][3]=2{2*3};
C) int a[][3]={0}; D) int a[2][3]={{1},{2},{3,4}};

a 沒有給數組賦初值
b {}里不能有*
c 正確,記住第一個[]中可以為空,第二個[]不能為空,死記
d a[2][3] 的意思是有兩個一維數組,每個一維數組里有3個元素,{{1},{2},{3,4}}; 她的意思是三個數組,{}中的每一個{}代表一個數組,里邊的數為數組元素

13、用C語言編寫的代碼程序 (B)
A)可立即執行 B)是一個源程序
C)經過編譯即可執行 D)經過編譯解釋才能執行

死記