当前位置:首页 » 编程语言 » 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)经过编译解释才能执行

死记