1、1第一次上机练习(首次)1.阅读以下程序,说出其功能和运算结果(输入 5)。#include int main( ) int n ;int factorial(int n) ; scanf(“%d“,printf(“%dn“, factorial(n) ; return 0 ;int factorial(int n)int i, fact=1 ;for(i=1;i int mian( ) printf(“Welcome to You!n“) return 0 ;答案:2 行 main4 行末尾少分号3.编写程序在屏幕上显示以下内容:Programming is fun.And Programm
2、ing in C is even more fun!答案:#include int main( ) printf(“Programming is fun.nAnd Programming in C is even more fun!n“) ;return 0 ;4.编写程序输出以下图案:* * * *2* * * * 答案:#include void main( ) printf(“* * * *n“);printf(“ * * *n“);printf(“ * *n“);printf(“ *n“);5.编写程序,计算并在屏幕上显示 1020 的平方值。答案:#include void main
3、( ) int i;for(i=10;ivoid main() int a,b,c,m,n;printf(“请输入 m:n“); scanf(“%d“, a=m/100;b=(m-a*100)/10;c=m%10;n=c*100+b*10+a;printf(“%d 的反序数为 %dn“,m,n);2若 a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1= a,c2=b。想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出) 。a= 3 b= 4 c= 5x=1.200000,y=2.400000,z=-3.600000x+y= 3
4、.60 y+z=-1.20 z+x=-2.40u= 51274 n= 128765c1=a or 97(ASCII)c2=b or 98(ASCII)答案:#includevoid main() int a=3,b=4,c=5;float x=1.2,y=2.4,z=-3.6;unsigned u=51274;long n=128765;char c1=a,c2=b;printf(“a=%2d b=%2d c=%2dn“,a,b,c);printf(“x=%f,y=%f,z=%fn“,x,y,z);printf(“x+y=%5.2f y+z=%5.2f z+x=%5.2fn“,x+y,y+z,
5、z+x);printf(“u=%6u n=%7ldn“,u,n);printf(“c1=%c or %d(ASCII)n“,c1,c1);printf(“c2=%c or %d(ASCII)n“,c2,c2);3设圆半径 r=1.5,圆柱高 h=3,求圆周长,圆面积,圆球表面积,圆球体积,圆柱体积。用 scanf 输入数据,输出计算结果;输出时要求有文字说明,取小数点后 2 位数字,请编写程序。答案:#include4void main() float r,h,s1,s2,s3,s4,s5;scanf(“%f“,scanf(“%f“,s1=2*r*3.14;s2=r*r*3.14;s3=4*s
6、2;s4=4/3.*s2*r;s5=s2*h;printf(“圆周长 s1=%.2fn“,s1);printf(“圆面积 s2=%.2fn“,s2);printf(“圆球表面积 s3=%.2fn“,s3);printf(“圆球体积 s4=%.2fn“,s4);printf(“圆柱体积 s5=%.2fn“,s5);4编程序:用 getchar 函数读入两个字符给 c1,c2,然后分别用 putchar 和 printf 函数输出这两个字符。并思考以下问题:(1) 变量 c1,c2 应定义为字符型或整型?或两者皆可?(2) 要求输出 C1 和 C2 值的 ASCII 码,应如何处理?用 putch
7、ar 函数还是 printf 函数?(3) 整型变量与字符型变量是否在任何情况下都可以互相替代?如:char c1,c2 与 int c1,c2是否无条件地等价?答案:#includevoid main() char c1,c2;c1=getchar();c2=getchar();putchar(c1);putchar(c2);printf(“c1=%cn“,c1);printf(“c2=%cn“,c2);5第三次上机练习(if 语句)1 若输入 4,程序运行结果为【 1 】,若输入-4,运行结果为【 2 】,若输入 10,运行结果为【 3 】 。#includemain() int x,y;
8、scanf(“%d“,if(xmain()int a,b,c,max;printf(“please scan three number a,b,c:n“);scanf(“%d,%d,%d“,max=a;if(maxvoid main()6 float w,pay,total,balance,price;printf(“请输入西瓜的重量:“); scanf(“%f“, if(w=10) price=0.3;else if(w=8) price=0.4;else if(w=6) price=0.5;else if(w=4) price=0.7;else price=0.8;total=price*
9、w;printf(“应付款%.2f,请输入实付款:“,total);scanf(“%f“, printf(“找零:%.2f 元n“,pay-total);4根据输入的三角形的三边,判断是否能组成三角形,若可以则输出它的面积和三角形的类型(仅区分直角三角形和一般三角形,构成三角形的充要条件是:任意两边之和大于第三边或两边之差的绝对值小于第三边) 。答案:#include#includevoid main() int a,b,c;float p,s;printf(“请输入三角形的三边长 a,b,c:n“); scanf(“%d,%d,%d“, if(a+bcif(a*a+b*b=c*c|a*a+c
10、*c=b*b|b*b+c*c=a*a)printf(“直角三角形n“);else printf(“普通三角形n“);p=(a+b+c)/.2;s=sqrt(p*(p-a)*(p-b)*(p-c);printf(“其面积 s=%.2fn“,s);else printf(“不能构成三角形 “);7第四次上机练习(switch 语句)1 当运行以下程序时,从键盘键入 China#(代表回车) ,则下面程序的运行结果是 。#include void main()int v1=0,v2=0; char ch;for ( ; (ch=getchar()!=#; )switch(ch)case a:case
11、 h:default: v1+;case o: v2+;printf(“%d,%dn”,v1,v2);答案:5,52编写程序完成任意两个数的+,-,*,/ 运算,要求从键盘输入四个运算符之一和任意两个数,输出运算结果。答案:#include void main()float v1,v2,v3; char ch;scanf(“%f%f%c“,switch(ch)case +:v3=v1+v2;break;case -:v3=v1-v2;break;case *:v3=v1*v2;break;case /:v3=v1/v2;break;printf(“%fn“,v3);3给出一百分制成绩,要求输出
12、成绩等级A、 B、 C、 D、 E。90 分以上为A,8089分为B,7079 分为C,6069 分为D,60 分以下为E 。答案:#include void main()int v1; char ch;8scanf(“%d“,switch(v1/10)case 10:case 9:ch=A;break;case 8:ch=B;break;case 7:ch=C;break;case 6:ch=D;break;default: ch=E;printf(“%cn“,ch);4 (选作题)给定一个日期,输出这个日期是该年的第几天(输入的数据格式为YYYYMMDD,确保输入的数据有效) 。答案:#i
13、ncludevoid main( ) long date;int i,num,days=0,year,month,day;printf(“请输入日期,格式为 YYYYMMDD:n“);scanf(“%ld“,year=date/10000;month=(date-10000*year)/100;day=date%100;for(i=1;ivoid main()int i,k=0;for(i=1;i+)k+;while(kvoid main()int i,j,k=19;while(i=k-1)k-=3;if(k%5=0) i+; continue; else if(kvoid main()int
14、 i,j,k=0,m=0;for(i=0;ivoid main()int i;for(i=1;ivoid main()int i,a,b,c;for(i=100;ivoid main()int n,i,j,space,star;char ch=A;scanf(“%d“,for(i=1;ivoid main()int n3,i,j,k;for(i=0;i#define MAX 100void main() int fMAX,i,j,k=2,m=5;for(i=0;ivoid main() int n5=0,x,i;scanf(“%d“,while(x!=-1) nx+;scanf(“%d“,fo
15、r(i=0;i#define MAX 100void main() int sMAX,numMAX,sortMAX,i,j,n,t;scanf(“%d“,for(i=0;ivoid main()int a33=1,3,6,7,9,11,14,15,17,sum1=0,sum2=0,i,j;for(i=0;i=02已知以下矩阵: 4321Y18.0.0218.2. 下面程序的功能是求出 Y1,Y2,Y3,Y4 的值。请填空。#includevoid main()float a44=1,-0.2,0,0,-0.8,1,-0.2,-0.2,0,-0.8,1,-0.2,0,-0.8,-0.8,1;fl
16、oat x4=1,1,1,1,y4;int i,j,k;for(i=0;ivoid main()float a54=0;int i,j,k;for(i=0;ivoid main()float a44=13,2,3,1,5,6,7,8,9,10,11,12,4,14,15,16;int i,j,k,flag=0,row,max;for(i=0;iakrow)break;if(k=4)flag=1;printf(“a%d%d=%d 是鞍点n“,i+1,row+1,max);if(flag=0)printf(“无鞍点“);15第八次上机练习(字符数组)1运行以下程序时,如果从键盘上输入:abcdef
17、则输出结果为(答案:C ) 。#include “stdio.h“#define N 6void main() char cN;int i=0;for(;i=Ac=a%2;return c;void main()int a,e10,c,i=0;printf(“输入一整数n”);scanf(“%d”,while(a!=0)c=sub(a);a=a/2;ei=c;i+;for(;i0;i-) printf(“%d”,ei-1);答案:10102. 以下程序的功能是应用下面的近似公式计算 e 的 n 次方。函数 f1 用来计算每项分子的值,函数 f2 用来计算每项分母的值。请编写 f1 和 f2 函
18、数。(前 20 项的和)!321xexfloat f2(int n) float f1(int x,int n) #includevoid main()float exp=1.0;int n,x;printf(“Input a number:”);scanf(“%d”,printf(“%dn”,x);exp=exp+x;for(n=2;ndel(int a,int n,int x) int p,i;p=0;while(x=apchar ch80;scanf(“%ld”,trans(m,ch);puts(ch);3编写一个函数,对具有 10 个整数的数组进行如下操作:从第 n 个元素开始到最后一
19、个元素,依次向前移动一个位置,空出的最后一个位置放入第 n-1 个元素,输出移动后数组的全部元素值。(n 的取值 110)20答案:#includevoid move(int a,int n) int i,p;p=an-1;for(i=n-1;i#define MAX 10int aMAX,i;sub2() int aMAX,i,max;max=5;for(i=0;ifunc(int a,int b)static int m=0,i=2;i+=m+1;m=i+a+b;return(m); void main()int k=4,m=1,p;p=func(k,m); printf(“%d,”,p)
20、;p=func(k,m); printf(“%dn”,p);22答案:8,173阅读程序,说出程序的运行结果 ( )。#include #define ADD(x) x+xvoid main()int m=1,n=2,k=3;int sum=ADD(m+n)*k;printf(“sum=%d“,sum);答案:sum=104编写一程序,完成学生成绩的输入、查询、排序、插入功能,每个功能完成后都要输出结果。要求:1)在主函数中定义一个数组 a11,用以存放学生的成绩,分别调用下面的 6 个子函数,完成各自功能;2)编写一个函数 inputsc(int a),从键盘输入 10 个学生成绩;3)编写
21、一个函数 outputsc(int a,int n),输出 n 个学生成绩;4)编写一个函数 query(int a,int n),查询第 n 个学生成绩并输出结果;5)编写一个函数 sort(int a10),在函数中进行 10 个学生成绩从高到低排序;6)编写一个函数 insert(int a),再输入一个学生的成绩,将此成绩插入到原已排好序的学生成绩数组中;7) 改进上一步的函数为 sort1(int a,int n, char style), 将 n 个学生成绩排序,排序方式根据sort()函数的 style 参数进行,如 style 为a按升序排, style 为d按降序排。答案:#
22、includevoid main() int a11,n;char style;void inputsc(int a);void outputsc(int a,int n);void query(int a,int n);void sort(int a10);void insert(int a);void sort1(int a,int n, char style);inputsc(a);outputsc(a,10);printf(“n 请输入被查询学生的序号:n“);scanf(“%d“,query(a,n);sort(a);printf(“n 排序后的成绩:n“);23outputsc(a
23、,10);insert(a);printf(“n 插入后学生成绩:n“);outputsc(a,11);printf(“n 重新排序,输入字母 a 为按升序排,d 为按降序排n“);getchar();scanf(“%c“,sort1(a,11,style);outputsc(a,11);void inputsc(int a)int i;printf(“n 请输入 10 名学生的成绩:nn“);for(i=0;ivoid main()int a,b,c,d;a=4;b=3;fun(a,b,printf(“%d %d %d %dn“,a,b,c,d);答案:4 3 7 12. 以下程序的正确运行
24、结果是 。#include void main() int a=2,3,4,5;int s, i, *p;s=1; p=a;for(i=0;ivoid main()void move(int *);int a33=1,2,3,4,5,6,7,8,9,(*p)3,*p1=*a,i,j;for(;p1#include void main() char *p1,str120=“xyz“,str220;p1=“abcd“;p1+;strcat(str1+1,p1+1);strcpy(str2,str1);printf(“%s“,str2);答案:xyzcd5输入若干个整数,编写两个函数分别实现:A.对
25、它们按从大到小的顺序排列:sort(int *x, int n)B.对键盘输入的任一整数,能够按已排序好的规律将它插入到合适的位置:insert(int *x, int n, int y) 其中 y 为欲插入的整数答案:#include void main() void sort(int *x, int n);void insert(int *x, int n, int y);int a20,i, n,y;printf(“请输入学生人数:n“);scanf(“%d“,27printf(“请输入学生成绩:n“);for(i=0;i#include void main() void strc(ch
26、ar *p1,char *p2,int m,int n);char str120,str220,n,m;printf(“请输入已知字符串:n“);gets(str1);n=strlen(str1);printf(“请输入 m:n“);scanf(“%d“,strc(str1,str2, m, n);puts(str2);void strc(char *p1,char *p2,int m,int n)28int i ;for(i=m-1;i struct abc int a, b, c; ;main() struct abc s2=1,2,3,4,5,6;int t;t=s0.a+s1.b;pr
27、intf(“%dn“,t);答案:62.用结构体实现输入某年某月某日,计算出这一天是本年度的第几天。答案: #include struct date int y, m, d; ;void main() struct date s;int i,day=0;scanf(“%d%d%d“,for(i=1;i#define N 100 30int n;struct information int num;char name10,sex,addr30;float score;struct information sN;void main() int k,num;void input();void que
28、ry(int n);void insert();void del(int n);void print();while(1)printf(“请输入 0-5 之间的数字,实现相应的功能:nn“);printf(“0:原始数据的录入 1:查询某学生的信息n“);printf(“2:插入一个学生 3:删除一个学生n“);printf(“4:打印全体学生信息 5:退出nn“);scanf(“%d“,switch(k)case 0:input();break;case 1:printf(“请输入被查询学生的学号:n“);scanf(“%d“,query(num);break;case 2:insert();break;case 3:printf(“请输入被删除学生的学号:n“);scanf(“%d“,del(num);break;case 4:print();break;case 5:exit(0);default:printf(“输入的数字不在 0-5 之间,请重新输入!nn“);void input()int i;printf(“请输入本班的人数:nn“);scanf(“%d“,printf(“按下列顺序输入每个人的信息:(输入每个数据后打回车)n 学号(整型) 、姓名、