原发布者:爱无风而立
复习题C程序设计编程题1.输入2个整数,求两数的平方和并输出。#includevoidmain(){intta,b,s;printf("pleaseinputa,b:\n");scanf("%d%d”,&a,&b);s=a*a+b*b;printf("theresultis%d\n",s);}2.输入一个圆半径(r),当r>=0时,计算并输出圆的面积和周长,否则,输出提示信息。#include#definePI3.14voidmain(){floatr,s,l;printf("pleaseinputr:\n");scanf("%f”,&r);if(r>=0){s=pi*r*r;l=2*i*r;printf("theareais%f\n",s);printf("thecircumferenceis%f\n",l);}elseprintf("inputerror!\n");}3、函数y=f(x)可表示为:2x+1(x0)编程实现输入一个x值,输出y值。#includevoidmain(){intx,y;scanf(“%d”,&x);if(x0)y=2*x-1;elsey=0;printf(“%d”,y);}4、编写一个程序,从4个整数中找出最小的数,并显示此数。#includevoidmain(){inta,b,c,d,t;scanf(“%d,%d,%d,%d”,&a,&b,&c,&d);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(a>d){t=a;a=d;d=t;}printf(“min=%d\n”,a);}5.有一函数当x0时,y=3,当x=0时y=5,编程,从键盘输入
本试卷共5页共5大题,考生在作答前应先检查是否有缺页、白页、以防漏答。
查对无误后,请先填写学号、姓名、专业,再答卷。一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。
(共10小题,每小题2分,共20分)。1、不是C语言基本数据类型的是( )。
A、指针类型 B、整型 C、字符型 D、实型2、设有:int a=3, b= 4, c= 5,x , y; 表达式(x=a)&&(y=b)&&0的值为( )。 A、1 B、0 C、3 D、43、设有语句 int a=3 ; 则执行了语句 a+ = a - = a后,变量a 的值是( )。
A、3 B、0 C、9 D、-124、执行以下程序后,y的值是( ) main() { int a[]={2,4,6,8,10}; int y=0,i,*p; p=&a[0]; for(i=0;i<5;x++) y+=*(p+i); printf(“%d\n”,y); } A、17 B、18 C、19 D、305、有定义语句:float a[4];则分配给数组a的空间为( )字节。 A、20 B、12 C、16 C、106、以下描述错误的是( )。
A、break语句可用于do~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、编译出错 二、填空题。(共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(int x=0,y=1;x&&y〈=5;y++)中循环体执行的次数是 0 。 7、int a[5];数组a的首地址为2000,则元素a[1]的地址为 2002 ,元素a[2]的地址为 2004 。
三、程序填空题。(共8空,每空2分,共16分 )1、以下程序中子函数返回数组s中最大元素,数组中元素的个数由t传入。
Int findmax(int s[],int t) { int m,n,*p; max=0; p= s ; for(n=1;n<t;n++) if(*(p+max)<*(p+n)) max=n ; return(*(p+max));; } Void main( ) { int a[10]; int i; for(i=0;i<10;i+=) scanf(“%d”,&a[i]); printf(“%d”,findmax{a,10}); }2、以下程序完成计算1-1/2+1/3-1/4+..前n 项和的功能,请填空。#include 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); }3、以下程序的功能是从键盘输入n个整数,统计其中正数、0、负数的个数,请填空。
#include int main( ) {int a, i, count1,count2,count3; count1=cout2=count3=0 ; for(i=1;i0) count1++; Else if(i==0) count2++ ; Else count3++; } printf(“正数:&d个,零:%d个,负数:%d个\n”, count1,count2,count3); } 四、运行程序结果。(共4小题,每小题6分,共24分)1、运行时输入100,200,请写出程序运行结果。
Void main( ) { int a, b,*p1,*p2 ; scanf ( " % d ", & a , ); scanf ( " % d ", & b ); printf(“a=%d,b=%d”,a,b); p1=&a; p2=&b; swap ( p1,p2); printf(“a=%d,b=%d”,a,b); } Void swap ( int *p1, *p2) { int t ; t=*p1; *p1=*p2; *p2=t; } 运行结果为: a=100,b=200a=200,b=1002、运行时若输入1 2 3 4 -5,写出程序运行结果。#include int main( ) { int x, sum; scanf("%d", &x); sum=0; while(x>0) { if(x%2!=0) sum+=x; scanf("%d", &x); } printf("sum=%d\n", sum); } 运行结果为:sum=43、写出程序运行结果。
#include 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=24、运行时若输入4 1 2 3 0,写出程序运行结果。#include int main( ) { int i, index, n; int a[10]; scanf("%d", &n); for(i=0; i<n; i++) scanf("%d", &a[i]); index=0; for(i=1;i<n;i++) { if(a[i]#include Void main( ) { char c[10][20],t[10]; Int I, j,k; For(i=0;i<10;i++) Gets(c[i]); For(i=0;i<9;i++) { k=I; For(j=i+1;j0) k=j; If(k!=i) { strcpy(t,c[k]); strcpy(c[k],c[i]); strcpy(c[i],t); } For(i=0;i<10;i++) 。
1、从键盘输入三个整型数a,b和c,求在屏幕输出a+3b+5c的值。
要求:求和运算通过调用函数实现。 main() { int a,b,c; printf("Please Input 3 Num:\n"); scanf("%d",&a); scanf("%d",&b); scanf("%d",&c); printf("sum=%d\n",sum(a,b,c)); getch(); } int sum(int a,int b,int c) { return a+3*b+5*c; } 2、从键盘输入一个字母,在屏幕输出与其相连的三个字母。
如:输入Z,输出为YZA,输入为c,输出为bcd。注意:边缘字母的处理。
/*考虑输入是否字母以及大小写情况*/ #include main() { char a; printf("Please Input 1 Char:\n"); scanf("%c",&a); if(isalpha(a)==0) /*判断是否字母*/ { printf("Not is Character\n"); exit(1); } if(isupper(a) > 0) /*判断是否大小写*/ { if(a==65) printf("%c%c%c\n",90,a,a+1); else if(a==90) printf("%c%c%c\n",a-1,a,65); else printf("%c%c%c\n",a-1,a,a+1); } else { if(a==97) printf("%c%c%c\n",122,a,a+1); else if(a==122) printf("%c%c%c\n",a-1,a,97); else printf("%c%c%c\n",a-1,a,a+1); } getch(); }。
一.单项选择题(每题2分,共20分) 1.下面C语言的标识符中,哪个不合法______。
A._total B.Large tall C.int_ D._while 2. C语言源程序经过编译连接最后生成的文件,其后缀名是______。 A.”.c” B.”.obj” C.”.exe” D.”.bas” 3. 表达式x&&1等价于______。
A.x!=0 B.x==0 C.x!=-1 D.x==-1 4. 若变量k已正确定义且k的值是4,计算表达式(j=k++)后,______。 A.k=4,j=4 B.j=4,k=5 C.j=5,k=4 D.j=5,k=5 5. C语言中,函数若没有声明返回值的类型,默认的类型是_______。
A.int B.long C. float D.double 6. 若p1和p2都是指向int类型变量的指针,p1已经指向变量x,要使p2也指向x,则_____是正确的。 A.p2=&*p1; B.p2=&&p1; C.p2=&p1; D.p2=*p1; 7. 下列程序段输出是_____________。
int a[]={1,3,5,7,9}; int *b=a+2; printf(“%d”,*b++); A.3 B.5 C.7 D.9 8. 执行下列程序: #define FB(a,b) (a*b+1) int k=3; k=FB(FB(k,k+1),k)-7; 后变量k的值是_____________。 A.7 B.24 C.27 D.33 9. 在某C程序中调用了puts函数。
在程序的编译预处理部分应用#include 包含__________。 A.”math.h” B.”string.h” C.”stdio.h” D.”ctype.h” 10. 设有结构定义如下: struct student{ int num; char name[30]; float score; }stud1; 则标准的ANSI C(如TC)下,计算sizeof(stud1)的值为____________。
A.9 B.16 C.25 D.36 二、填空题(每题3分,共24分) 1.写出语句printf(“%d,%o,%x”,'a'/4,0x14,014);的输出结果__________。 2.写出计算 的C语言表达式__________。
3.写出下列程序段的输出结果是_______________________。 int m;char ss[10]=”12345”,*s=ss; for(m=10;m!=0;m--); printf(“%d”,m); while(*s++) putchar(*++s); 4.下列程序段的输出结果是______________________。
#include “stdio.h" int x; void f(int x) {static int a=1; printf(“%d,”,a); a+=x+2; } void main() {int k; for(k=1;k0)?2*f(n-1)+f(n-2):1);} 6. 下列程序的输出结果是__________________。 #include “stdio.h" void main() {int x=3,y=6,z=0; while(x++)!=(y-=1)) {z++; if(x。
/*全部运行通过,刚才没编题号,这次不上,所有程序要分开运行*/ /*第一题*/ #include"stdio。
h" main() { int a,b,c,t; printf("input a b c: "); scanf("%d%d%d",&a,&b,&c); t=a; if(t>b) t=b; if(t>c) t=c; printf("%d ",t); } /*第二题*/ #include"stdio。 h" main() { int a,b,t; printf("input a b: "); scanf("%d%d",&a,&b); t=a*b; printf("%d ",t0); } /*第三题*/ #include"stdio。
h" main() { char a[100],ch; int n,i=0; printf("input : "); ch=getchar(); while(ch!=' ') { a[i ]=ch; ch=getchar(); } n=i; for(i=0;i='a'&&a[i]a[i]=a[i]-32; printf("%c",a[i]); } printf(" "); } /*第四题*/ #include"stdio。 h" #include "math。
h" main() { int m,i,k,h=0,leap=1; printf(" "); for(m=10;m{ k=sqrt(m 1); for(i=2;iif(m%i==0) {leap=0;break;} if(leap) {printf("%-4d",m);h ; if(h==0) printf(" "); } leap=1; } printf(" The total is %d",h); } /*第五题*/#include"stdio。 h"main(){ int i=123456,c; c=123456%7 1; switch(c) { case 1:printf("星期天");break; case 2:printf("星期一");break; case 3:printf("星期二");break; case 4:printf("星期三");break; case 5:printf("星期四");break; case 6:printf("星期五");break; case 7:printf("星期六");break; }}/*第六题*/ #include"stdio。
h" main() { int i,count=0; for(i=1;i{ if(i%2!=0&&i%3!=0) { printf("%d ",i); count ; } if(count==10) { printf(" "); count=0; } } printf(" "); } /*第七题*/ //输入一个数字按一次回车 #include"stdio。 h main() { int m=0,c; printf("input : "); scanf("%d",&c); while(c!=0) { m =c; printf("input : "); scanf("%d",&c); } printf("%d ",m); } /*第八题*/ #include"stdio。
h main() { int r,w,b; for(w=1;wfor(r=0;rfor(b=0;bif((w r b)==8) printf("white ball:%d red ball:%d black ball:%d ",w,r,b); }。
C 语言过关测试题 一、顺序结构 1、请编写一个程序,求一个正方的周长。
2、请编写一个程序,求一个长方形的周长。 3、请编写一个程序,求一个三角形的周长。
4、请编写一个程序,从键盘输入两个整数,要求求和然后输出和。 例如: 输入 1 4 输出 5 5、要求从键盘输入一个三位数,要求百位变十位,十位变个位,个位变百位: 例如: 输入 123 输出 312 6、输入一个四位数要求按如下交换输出: 例如 :输入 1234 输出 4321 7、输入一个四位数要求输入各位数字的和。
例如: 输入 4567 输出 22 8、编一程序,键盘输入整数A,B的值,然后打印A除以B的商的整数部分及余数。 9、输入一个时、分、秒,把它转换为一个秒数。
例如 输入 2 3 4 代表2小时3分钟4秒 输出 7384 代表一共有7384 秒 10、求三角形面积:给出三角形的三个边长为a,b,c,求三角形的面积。 提示: 根据海伦公式来计算三角形的面积: cba ++))()(( cSbSaSS ---2 S =;Area= 11、编一程序,从键盘输入整数 A,B 的值,然后把 A,B 的值交换后输出。
从键盘输入 两个整数,打印出更小的那个数。 二、选择结构 13、读入三个整数,从小到大输出。
14、从键盘输入一个数,判断它的奇偶性,如果是奇数则输出yes,否则输出no。 15、从键盘读入一个数,判断它的正负。
是正数,则输出"+",是负数,则输出"-"。 16、从键盘输入一个数,如果是两位数那么输出yes否则输出no。
17、输入两个数a,b,输出较大数的平方值。 18、铁路托运行李规定:行李重不超过 50 公斤的,托运费按每公斤 0.15 元计费;如超50公斤,超过部分每公斤加收0.10元。
编一程序完成自动计费工作。 19、某超市为了促销,规定:购物不足 60 元的按原价付款,超过 60 不足 200 的按九 折付款,超过200元的,超过部分按八折付款。
编一程序完成超市的自动计费的工作。 20、打印某年某月有多少天。
(提示:A、闰年的计算方法:年数能被4整除,并且不能被100 整除;或者能被 400 整除的整数年份。B、利用%运算可以判断一个数能否被另一个 数整除)。
21、编写一个程序,功能是从键盘输入一个整数,判断它是否二位数,如果是,就打印它,然后结束程序, 22、编写一个程序,功能是从键盘输入三个整数,打印出其中最大的一个值。 23、当前小学生的成绩单由以前的百分制改为优秀、良好、合格、不合格 制。
编一程序完成分数的自动转换工作。转换规则如下:60 分以下的为不合格;60到69 分为合格;70到89分为良好;90 分以上的为优秀。
(提示:可以利用整除运算来使程序 更简明) 三、循环结构 分别用for,while/do –while 循环做以下习题。 24、计算1—1000之间能同时被3和5整除的整数的和。
25、求所有的三位数中十位数能被个位数和百位数之和整除的数。 26、求水仙花数。
所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。 27、求所有满足条件的四位数: (1)这四位数是11的倍数; (2)b+c=a; 28、计算下列式子的值: 28a (1)1+3+……+99 28b (2)1+2+4+8+…+1024 29、输入一个整数,计算它各位上数字的和。
(注意:是任意位的整数) 30、输入一整数 A,判断它是否质数。(提示:若从 2 到 A 的平方根的范围内,没有一个 数能整除A,则A是质数。)
用for循环做以下习题 31、1+3+5+…..+…..99=? 32、1+1/2+1/3+1/4+……1/100=? 33、1*2+2*3+3*4+……+n*(n+1)=? 34、1+1/2!+1/3!+…..1/n!=? 37、1+(1+3)+(1+3+5)+ ……(1+3+5+……+n)=?n为奇数。 38、s=-1+3-5+7-9+……n n为奇数。
四、综合练习题 39、计算下列式子的值: (1)1+2+……+1000 1a (2)1+3+5+……+97+99 2a (3)1+2+4+8+…+1024 3a 40、输入一个四位数,求它各位上数字的和。 41、求所有的三位数中十位数能被个位数和百位数之和整除的数。
46、求两个数的最小公倍数和最大公约数。(提示:公约数一定小于等于两数中的小数,且能整除两数中的大数。
公倍数一定大于等于两数中的大数,且是大数的倍数,又能给两 数中的小数整除。) 47、编写一个译码程序,把一个英语句子译成数字代码。
译码规则是以数字1代替字母A,数字2 代替字母B,……,26代替字母Z,如遇空格 ‘*’,英文句子以‘.‘结 束。 48、“百钱买百鸡”是我国古代的著名数学题。
题目这样描述:3 文钱可以买 1 只公鸡,2 文钱可以买一只母鸡,1文钱可以买3只小鸡。用100文钱买100只鸡,那么各有公鸡、母鸡、小鸡多少只?与之相似,有"鸡兔同笼"问题。
49、输入一个正整数N,把它分解成质因子相乘的形式。 如:36=1 X 2 X 2 X 3 X 3; 19=1 X 19 52、计算1—1000之间能同时被3和5整除的整数的和。
53、打印下列图形: 1 121 12321 1234321 12321 121 1 54、一百匹马驮一百块瓦,一匹大马可以驮 3 块,一匹母马可驮 2 块,小马 2 匹可驮 1 块。试编程求需要各种马多少匹? 55、有三种纪念邮票,第一种每套一张售价2元,第二种每套一张售价4元,第三种每套9 张售价2元。
现用100元买了100张邮票,问这三种邮票各买几张? 57、找数。一个三位数,各位数字互不相同,十位数字比个位、百位数字之。
C语言实验参考答案实验一5、输入并运行自已编写的程序(教材第一章P14 三 编程题)。
实验二1、编写一个程序,从键盘接收3个实数(分别为10.0、20.0、5.0),输出这3个数的和s、乘积t和平均值a。#include main(){float x,y,z,s,t,a;printf(“x,y,z=”);scanf(“%f,%f,%f”,&x,&y,&z);s=x+y+z;t=x*y*z;a=s/3;printf(“s=%f,t=%f,a=%f\n”,s,t,a);}2、编程。
要求用户输入两个整数a、b(分别为20、10), 读取用户从键盘输入的值,然后:1)用整数输出这两个数的和、差;2)用长整型输出这两个数的积,用float输出商;3)用整数输出这两个数的余数,用float输出平均值。#include main(){int a,b,he,cha,yu;long ji;float shang,aver;printf(“a,b=”);scanf(“%d,%d”,&a,&b);he=a+b;cha=a-b;ji=(long)a*b;shang=1.0*a/b;yu=a%b;aver=(a+b)/2.0;printf(“a+b=%d,a-b=%d,a*b=%ld\n”,he,cha,ji);printf(“a/b=%f,a%%b=%d,aver=%f\n”,shang,yu,aver);}实验三1、编写一个程序,从键盘接收一个一位的整型数,经转换,用字符函数putchar输出。
例如,输入整数5,程序运行后输出字符5。#include main(){int a;char c;printf(“a=”);scanf(“%d”,&a);c=a+48;putchar(c);}2、编程。
输入半径,计算球体表面积( )和球体积 ( )。#include #define PI 3.1415926main(){float r,s,v;printf(“r=”);scanf(“%f”,&r);s=4*PI*r*r;v=4/3.0*PI*r*r*r;printf(“s=%f,v=%f\n”,s,v);}3、编写一个程序,要求通过键盘给6个变量赋值,然后将变量的值在屏幕上打印输出。
这六个变量的值分别为:10,-10,40000,a,3.14,hello。#include main(){int a,b;long c;char d,ch[6];float e;scanf(“%d,%d,%ld,%c,%f,%s”,&a,&b,&c,&d,&e,ch);printf(“%d,%d,%ld,%c,%f,%s\n”,a,b,c,d,e,ch);}实验四1、输入三个整数,分别存放到变量a,b,c中,试编程输出其中的最小值。
#include main(){int a,b,c,min;printf(“a,b,c=”);scanf(“%d,%d,%d”,&a,&b,&c);min=a>b?(b>c?c:b):(a>c?c:a);printf(“min=%d\n”,min);}2、输入一个字符,如是大写字母,则输出相应小写字母;如是小写字母,则输出相应大写字母;其它字符原样输出 。(例如:输入F,输出f,输入b,输出B,输入7,输出7)。
#include main(){char c,ch;c=getchar();ch=c;if(c>='A'&&c='a'&&c<='z') ch=c-32;putchar(ch);}实验五1、函数 。⑴用条件表达式求函数值y。
⑵用if语句编程,输入x,输出y,并给出你所使用的测试用例。解(1)#include main(){int y;float x;printf(“x=”);scanf(“%f”,&x);y=x>0?1:(x==0?0:-1);printf(“y=%d\n”,y);}解(2)#include main(){int y;float x;printf(“x=”);scanf(“%f”,&x);if(x>0) y=1;else if(x==0) y=0;else y=-1;printf(“y=%d\n”,y);}2、试编程输入成绩cj(cj为整型变量),如果cj的值在[100,90]内输出A,在(90,80]内输出B,在(80,70]内输出C,在(70,60]内输出D,在(60,0]内输出E,其它输出错误信息。
请使用if语句和switch语句分别实现。解(1)#include main(){int cj;printf(“cj=”);scanf(“%d”,&cj);if(cj>=90&&cj=80&&cj=70&&cj=60&&cj=0&&cj<60) printf(“E\n”);else printf(“输入错误\n”);}解(2)#include main(){int cj,n;printf(“cj=”);scanf(“%d”,&cj);n=(cj>=0)+(cj>=60)+(cj>=70)+(cj>=80)+(cj>=90)+(cj>100);switch(n) {case 5:printf(“A\n”);break; case 4:printf(“B\n”); break; case 3:printf(“C\n”); break; case 2:printf(“D\n”); break; case 1:printf(“E\n”); break;default:printf(“输入错误\n”); }}实验六1、编程:输出200以内所有能被7整除的数。
#include main(){int i;for(i=0;i<=200;i+=7) printf(“%4d”,i);}2、从键盘输入n个数(n<10),找出其中最小值,请编写相应程序。#include main(){int n,i,a,min;printf(“n=”);scanf(“%d”,&n);for(i=1;ia)min=a;} printf(“min=%d”,min);}3、键盘输入正整数m和n(m<n),计算m~n之间所有奇数之和x与偶数之和y,请编程实现。
#include main(){int m,n,i,x1=0,x2=0;printf(“input m,n(m<n):”);scanf(“%d,%d”,&m,&n);for(i=m;i<=n;i++) if(i%2==1)x1+=i; else x2+=i;printf(“x1(奇数之和)=%d,x2(偶数之和)=%d\n”,x1,x2);}实验七1、打印出所有的"水仙花数",所谓的"水仙花数"是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个"水仙花数",因为有153=1*1*1+5*5*5+3*3*3 。
解(1)#include main(){int a,b,c,n;for(a=1;a<=9;a++)for(b=0;b<=9;b++)for(c=0;c<=9;c++) {n=100*a+10*b+c; if(n==a*a*a+b*b*b+c*c*c) printf(“%d\n”,n);}}解(2)#include main(){int a,b,c,n;for(n=100;n<=999;n++) {a=n/100; b=n%100/10; c=n%10; if(n==a*a*a+b*b*b+c*c*c) printf(“%d\n”,n);}}2、请分别用三种循环结构编程计算: 1!+2!+3!+。+n! , n的值由键盘输入。
解(1)#include 。
#include #include 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) 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 = 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 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或负数)。
你的函数基本改好:
#include<stdio.h>
void main()
{
char ch;
printf("please input your name's first letter:");
putchar(ch=getchar()); //输出刚才你输入的字符 赋值给ch
putchar('\n');
printf("Hello!\n");
printf("This is a c program\n");
printf("My name is %c",ch); //输出ch
}
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
蜀ICP备2020033479号-4 Copyright © 2016 学习鸟. 页面生成时间:3.718秒