C语言程序设计实验指导_上交大_课前练习-改错-完善程序-课后练习参考答案
- 格式:doc
- 大小:85.00 KB
- 文档页数:29
P18(1)#include<stdio.h>int main(void){int celsius,fahr;fahr=150;celsius=5*fahr/9-5*32/9;printf("fahr=%d,celsius=%d\n",fahr,celsius);return 0;}(2)#include<stdio.h>int main(void){int celsius,fahr;celsius=26;fahr=9*celsius/5+32;printf("celsius=%d,fahr=%d\n",celsius,fahr);return 0;}(3)#include<stdio.h>int main(void){int average,math,eng,comp;math=87;eng=72;comp=93;average=(math+eng+comp)/3;printf("math=%d,eng=%d,comp=%d,average=%d\n",math,eng,comp, average);return 0;}(4)#include<stdio.h>int main(void){int n,a,b,c;n=152;c=n%10;b=(n/10)%10;a=n/100;printf("整数%d的个位数字是%d,十位数字是%d,百位数字是%d\n",n,c,b,a);return 0;}P27(1)#include<stdio.h>#include<math.h>int main(void){int celsius,fahr;printf("Enter celsius:");scanf("%d",&celsius);fahr=9*celsius/5+32;printf("fahr%d\n",fahr);return 0;}(2)#include<stdio.h>#include<math.h>int main(void){int money,year;double rate,interest;printf("Enter money,year,rate:");scanf("%d%d%lf",&money,&year,&rate);interest=money*pow(1+rate,year)-money;printf("interest=%.2f\n",interest);return 0;}(3)#include<stdio.h>#include<math.h>int main(void){double x,y;printf("Enter x:");scanf("%lf",&x);if(x<0){y=pow(x+1,2)+2*x+1/x;}else{y=sqrt(x);}printf("y=f(%f)=%.2f\n",x,y);return 0;}(4)#include<stdio.h>int main(void){int x,y;printf("Enter num1:");scanf("%d",&x);printf("Enter num2:");scanf("%d",&y);printf("%d+%d=%d\n",x,y,x+y);printf("%d-%d=%d\n",x,y,x-y);printf("%d*%d=%d\n",x,y,x*y);printf("%d/%d=%d\n",x,y,x/y);printf("%d%%%d=%d\n",x,y,x%y);return 0;}10的阶乘#include<stdio.h>int main(void){int i,n,product;printf("Enter n:");scanf("%d",&n);product=1;for(i=1;i<=n;i++){product=product*i;}printf("product=%d\n",product);return 0;}。
C语言程序设计实验指导含答案实验一:C语言程序设计基础实验内容:本实验主要以C语言的基础语法为主,通过一些简单的示例和练习来帮助学生熟悉C语言的基本概念和语法规则。
实验步骤:1. 编写一个简单的C程序,输出"Hello, World!"。
要求程序能够顺利编译并执行。
答案:#include <stdio.h>int main(){printf("Hello, World!");return 0;}2. 基于上一题的程序,修改代码,要求程序输入一个整数,并将其乘以2输出。
答案:#include <stdio.h>int main(){int num;printf("请输入一个整数:");scanf("%d", &num);printf("乘以2的结果为:%d", num * 2);return 0;}3. 编写一个C程序,输入一个圆的半径,计算并输出其面积和周长。
要求保留2位小数。
答案:#include <stdio.h>#define PI 3.14159int main(){float radius;printf("请输入圆的半径:");scanf("%f", &radius);float area = PI * radius * radius;float circumference = 2 * PI * radius;printf("圆的面积为:%.2f\n", area);printf("圆的周长为:%.2f\n", circumference);return 0;}实验二:循环和判断语句实验内容:本实验主要通过不同的练习来帮助学生熟悉和掌握C语言中的循环和判断语句的使用方法。
c语言改错题题库及详解答案C语言是一种广泛使用的计算机编程语言,它以其高效性、灵活性和强大的功能而受到程序员的青睐。
然而,即使是经验丰富的程序员也难免会在编写C语言程序时犯一些错误。
下面是一个C语言改错题题库及其详解答案,帮助学习者识别并改正常见的编程错误。
题目1:错误的变量初始化```cint main() {int a;printf("%d", a); // 错误:变量a未初始化return 0;}```详解答案:在C语言中,如果一个变量在使用前没有被显式地初始化,它的值是不确定的。
为了修复这个错误,我们应该在声明变量时对其进行初始化。
```cint main() {int a = 0; // 正确的初始化printf("%d", a);return 0;}```题目2:错误的数组索引```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[5]); // 错误:数组索引越界return 0;}```详解答案:数组索引是从0开始的,所以对于一个有5个元素的数组,有效的索引范围是0到4。
访问数组的第6个元素会导致越界错误。
```cint main() {int arr[5] = {1, 2, 3, 4, 5};printf("%d", arr[4]); // 正确的索引return 0;}```题目3:错误的循环使用```cint main() {int i;for (i = 0; i <= 10; i++) {printf("%d ", i);} // 错误:循环条件错误return 0;}```详解答案:循环条件应该是`i < 10`,以确保循环不会无限执行。
```cint main() {int i;for (i = 0; i < 10; i++) {printf("%d ", i);}return 0;}```题目4:错误的函数调用```cint main() {int result = add(5, 3); // 错误:add函数未定义printf("%d", result);return 0;}```详解答案:在调用一个函数之前,需要确保该函数已经被定义。
C 语言程序设计上机实验指导与习题参考答案(第四版)(学生改编)实验 1:C语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。
(2)了解在该系统上如何编辑、编译、连接和运行一个 C程序。
(3)通过运行简单的 C 程序,初步了解 C程序的特点。
(4)在教师的指导下,学会使用在线评判系统。
二、实验内容1.运行第一个 C 程序题目:ThefirstCProgram将下列程序输入visualc ,编译、连接和运行该程序。
includequotstdio.hquotmain printfquotThefirstCProgramnquot具体操作步骤(1)在编辑窗口中输入程序。
(2)保存程序,取名为a1.c。
(3)按照第一章中介绍的方法,编译、连接和运行程序。
,则该题完成。
4按照第三章介绍的方法,将代码提交到在线评判系统,系统返回“通过”2.在在线评判系统中提交实现了计算 ab 功能的程序题目 1001:计算ab由键盘输入两个整数,计算并输出两个整数的和。
实现该功能的程序如下,inclu dequotstdio.hquotmain int ab scanfquotddquotampaampbprintfquotdquotab(1)在程序编辑窗口中输入程序。
(2)保存程序,取名为a2.c。
(3)按照前二章中介绍的方法,编译、连接和运行程序。
(4)在程序运行过程中,输入 15 30↙↙表示输入回车符(5)如果看到如下输出结果,则表明1530 的结果正确,如果得不到如下结果,则需检查并更正程序。
45(6)按照第三章中介绍的方法进入在线评判系统。
(7)显示题目列表,点击题号为 1001,题名为“计算ab”的题目。
(8)查看完题目要求后,点击页面下端的“sumbit” ,参照第二章提交程序的方法提交程序a2.c。
(9)查看评判结果,如果得到“accepted”则该题通过,否则返回第一步检查程序是否正确。
实验一Visual C++集成环境实验容(一)程序改错1.(1)无法运行(2)将第二个C程序重新存放到另一个工程文件中(3)同一个工程文件只能有一个main函数2.(1)/*一个简单的程序*/(2)void main()(3)}3.(1)int a,b,c;(2)a=2;(3)c=a*b;(二)完善程序1.(1)year(2)month(3)day2.(1)c(2)a*a+b*b(3)c3.(1)4(2)4*a(3)s课后练习1.D2.D3.A4.C5.C6.C7.stdio.h8.main函数实验二数据类型、运算符和表达式课前练习1. 20 8 70 02. Abs3 Class _else sum my_class 、3block a+b for fun(4) a-b3.B4.D5.A6.C7.D8.B实验容(一)程序改错1.(1)int x1,x2,x3,x4;(2)scanf("%d,%d",&a,&b);(3)c=x4*1000+x2*100+x3*10+x1;2.程序1:① 2 2②error C2065: 'a1' : undeclared identifier变量a1没有定义sum=a+b+c③ 1error C2146: syntax error : missing ';' before identifier 'printf'printf语句之前缺少分号sum=a+b+c;④0 error(s), 0 warning(s)⑤a=1 b=3 c=2 sum=6⑥语句以分号结束;变量要先定义后使用。
程序2:① 2 2②error C2065: 'sum' : undeclared identifier变量sum没有定义int sum=a+b;1error C2086: 'c' : redefinition变量c重复定义c=a+b+sum;③a=1 b=3 sum=8④在同一个函数体,变量要先定义后使用,但不能重复定义程序3:① 1error C2106: '=' : left operand must be l-value赋值符号左边参数错误c=a+b;②c=4③赋值符号左边只能是变量,不能是常量或表达式3.(1)t=a;(2)a=b;;(3)printf("a=%d\tb=%d\n",a,b);(二)完善程序1.(1)int n(2)”%d”,&n(3)s2.(1)float s(2)(float)a/b(3)%f3.(1)#include<math. h>(2)pow(x,y)(3)“%lf”,s课后练习1.D2.D3.A4.B5.C6.D7.D8.A9.C10.A11.A12.B13.B14.C15.B16.A17.C18.819. 5和420.2.00000021. double (删除最后“语句”两字)22. double23. a=3(回车)实验三if选择结构语句课前练习1. 9 02. 11 03.(1)n%2==0(2)n%2!=0(3)a>=’0’&& a<=’9’(4)a>=’a’&& a<=’z’(5)a>=’A’&& a<=’Z’(6)(a>=’a’&& a<=’z’) || (a>=’A’&& a<=’Z) (7)(x<-10) || ((x>10) && (x<=20))(8)a%b!=0(9)a*b>04.-15.D6.10 30 407.C8.A9.D10.A实验容(一)程序改错1.(1)scanf("%d",&t);(2)if(t%5==0 && t%7==0) (3)else2.(1)char y;(2)if(x==0)(3)printf("%c\n",y);3.(1)if(x==m)(2){ printf("Wrong\n"); (3)printf("Too low\n");}(二)完善程序1.(1)#include<math.h> (2)(-b+sqrt(d))/(2*a); (3)sqrt(fabs(d))/(2*a);2.(1)c>='a'&& c<='u'(2)c>='v'&& c<='z'(3)c=c+5-26;3.(1)c>='a'&& c<='z'(2)c>='A'&& c<='Z'(3)else课后练习1.D2.C3.A4.A5.B6.C7.C8.C9.B10.D11.A12.D13.D14.A15.2,016.A17.D18.A19.D20.B21.C22.!23.D24.C25.D26.B实验四switch开关语句课前练习1. 4 112.if((k==1)||(k==2)printf("a\n");else if((k==3)||(k==4)||(k==5))printf("b\n");elseprintf("c\n");3.switch (x){case 1:case 2:case 3:printf("x\n");break;case 19:case 20:case 21:printf("y\n");break;default:printf("z\n");}实验容(一)程序改错1.(1)switch(x)(2)case 4:(3)default:2.(1)a=s/250;(2)case 0:d=0;break;(3)default:d=15;3.(1)else p=1;(2)a=num/1000;(3)num%10(二)完善程序1.(1)grade/10(2)break(3)default2.(1)x<0(2)a=x/10(3)a3.(1)month(2)days=31(3)(year%4==0 && year%100!=0)||(year%400==0)课后练习1.C2.D(将程序最后一条语句改为:printf("a=%d,b=%d\n",a,b);)3.A4.B5. pass 中及格不及格6.2实验五while、do…while循环结构语句课前练习1.02.103.A4.C5.A6.A7.C实验容(一)程序改错1.(1)long k=1;(2)num/=10;(3)while(num);2.(1)int m=0,mc=0,j;(2)if((k%7==0)||(k%11==0))(3)m=m+k3.(1)max=min=grade;(2)while(grade>=0)(3)if(grade<min)(二)完善程序1.(1)t%2==0(2)m=m*10+t;(3)n=n/10 ;2.(1)ch=getchar()(2)ch>='0'&& ch<='9'(3)(ch>='a'&& ch<='z') ||(ch>='A'&& ch<='Z')3.(1)fabs(t)(2)s/n(3)pi*4课后练习1.A2.A3.D4.B5.A6.C7.A8.30实验六for循环结构语句课前练习1.C2.D3.C4. for(i=100;i!=0;i--) printf("p");5.D6.C7.D8. k<=nk++9.A10.C11.C实验容(一)程序改错1.(1)int sum=1,s0=0,s1=0,s2=1,s;(2)for(n=4;n<=10;n++)(3)s2=s;2.(1)for(i=1;i<=y;i++)(2)t*=x;(3)t=t%1000;3.(1)int i,count=0;(2)if((i%7==0 || i%11==0) &&(i%77!=0)) (3)count++;(二)完善程序1.(1)s=0.0(2)scanf("%d",&n)(3)s+1.0/s12.(1)i%100(2)a+b+c==x(3)t++3.(1)2(2)n(3)n%i==0课后练习1.A2.B3.C4.A5.D6.C7.A8.B9.A10.C实验七循环控制语句课前习题1.D2.循环语句3.break4.A5.206. 6 67.88.B实验容(一)程序改错1.(1)int i,j,k,sum=0;(2)for(i=1;i<=3;i++)(3)if((k>=1&&k<=6) && (i!=0)&&(j!=0)||(k==0)) 2.(1)for (j=2; j<i; j++)(2)if (i%j == 0)(3)if (j>= i)3.(1)m=n;(2)while(m!=0 && m>=c)(3)if(m==0)(二)完善程序1.(1)i<10(2)j%3!=0(3)continue;2.(1)total=0;(2)sum=0;(3)total+sum;3.(1)j=(y%100)/10;(2)i!=j && i!=k && k!=j(3)t%5==0课后练习1.D2.C3.D4.B5.C6.B7.A8. 9 19. 10 710. x=16 y=8实验八函数的初步应用课前练习1. void return2.C3.A4.C5. 7 36.C7. D8.D实验容(一)程序改错1.(1)int fun(int a,int b,int c)(2)if(a+b>c&&b+c>a&&a+c>b) (3)else if(a==b||b==c||a==c)2.(1)if(n==1)(2)c=age(n-1)+2;(3)printf("%d\n",age(5))3.(1)while(n!=i)(2)if(n%i==0)(3)n=n/i;(二)完善程序1.(1)i*i==x(2)return 0(3)f(i+100) && f(i+168)2.(1)x(2)s1+s2+s3==15(3)t++3.(1)f<t(2)return f(3)fun(n)课后练习1.C2.C3. A4.D5.A6.B8.A9.A10.C11.A12.A13.B14.D15.10,2016.13 11 1217.218. 3 119.-3120.22121.2222.main函数23. return void24. void int实验九函数的其他应用课前练习1.B2.A3.A4.C5.D6.D7.558.C9.D10.A实验容(一)程序改错1.(1)#define SW AP(x,y) temp=x;x=y;y=temp(2)int a,b,temp;(3)SWAP(a,b);2.(1)#define DIV(m) (m)%3==0(2)scanf("%d",&m);(3)if(DIV(m))3.(1)switch(n%10)(2)case 1:c1++;break;(3)case 2:c2++;break;(二)完善程序1.(1)#define f1(x,y) x*y(2)#define f2(a,b) (a)*(b)(3)#include<abc.h>2.(1)12 48 (2)12 12 3.(1)2 313 8 52 315 10 52 3(2)略课后习题1.C2.C3.A4.C5.D6.A7.A8. 1 39.11010.911. 4 012.1013.2715.6 72016.4817. 1 218.5,2519.620.3实验十一维数组课前练习1-3. BDD4. 24 85. B6. int ss[s];7. 37158. 6 5 4, 3 2 1实验容(一)程序改错1.(1)scanf("%f", a); 改为scanf("%f", &a);(2)max=min=avg=a[1]; 改为max=min=avg=a[0];(3)if(min<a[i]) 改为if(min>a[i]) 或if(a[i]<min)2.(1)while(x[++i]!=0); 改为while(x[i++]!=0);(2)while(x[i] = 0) 改为while(x[i] == 0)(3)sum\=c; 改为sum/=c;3.(1)s=count=1; 改为s=count=0;(2)scanf("%d", a[i]); 改为scanf("%d", &a[i]);(3)break; 改为continue;(4)printf("s=%f count=%f\n", s, count); 改为printf("s=%d count=%d\n", s, count); (二)完善程序1.2.(1)#include<math.h>(2)aver=s/N(3)s=fabs(a[i]-aver)(4)printf(“%f”,t)3.(1)s=i*3+j*5(2)break(3)a[k]!=0 && s!=0课后练习1-2. DC3. I=1、x[I-1]4. 0 1 2, 2 0 15. 47,176. 15,127. 6, 28. 2 3 4,5 5 69. 0 2 3, 2 3 5, 7 11 13实验十一二维数组课前练习1. A2. 96、83-6. BBDB7. x<4、y<3、z==38. 0、1 0、2 1 0、3 2 1 0实验容(一)程序改错1.(1)s1=s2=s3=s4=0 改为s1=0,s2=0,s3=0,s4=0 (2)s2=s2+a[m][j] 改为s2=s2+a[m-1][j](3)for(i=0; i<m; i++) 改为for(i=1; i<m-1; i++)(4)s=s1-s2-s3-s4 改为s=s1+s2+s3+s42.(1)int a[3][3],sum 改为int a[3][3],sum=0(2)scanf("%d",a[i][j]) 改为scanf("%d",&a[i][j]) (3)sum=sum+a[i][j] 改为sum=sum+a[i][i](4)sum=%f\n 改为sum=%d\n3.(1)int i,j,s,a[3][3],sum 改为int i,j,s,a[3][3],sum=0 (2)for(i=0; i<3; i++) 改为for(i=0; i<3; i=i+2) (3)sum=*a[i][j] 改为sum*=a[i][j](二)完善程序1.(1)sum=0(2)a[i][i]2.(1)i<M(2)j<N(3)a[i][j](4)printf("\n")3.(1)printf("\n")(2)(j+2)%3(3)printf("\n")课后练习1-3. CDD4. 85. sum1=38, sum2=346. A7. 168. 1 0 0, 1 2 0, 3 5 89. 1 1,1 3 3 110.1 3 6 102 5 94 87实验十二数组与函数课前练习1-3. ACB4. 改变、不改变5. D实验容(一)程序改错1.(1)fun(int a[],int n) 改为double fun(int a[],int n) (2)int i,n; 改为int i;(3)double s; 改为double s=0;(4)s=s+a(i); 改为s=s+a[i];(5)ave=fun(a[],n); 改为ave=fun(a,n);2.(1)float j=0; 改为float xa=0;(2)j<=n 改为j<n(3)j<=n 改为j<n(4)return xa 改为return c3.(1)sum=array[0] 改为sum=0(2)int score[10] 改为float score[10](3)scanf("%f", score) 改为scanf("%f", &score) (4)aver=average(score[10]) 改为aver=average(score)课后练习1-2. DC3. -1、24. 225. 3、6、96. 1、a[i-1][j-1]+a[i-1][j]、j<=i7. 1、1 2 1、1 3 3 18. 1 3 4 5 6 7、3 4 5 6、End of main()!9. 0 1 2、3 4 510. 2 3 4、1 2 3、2 3 4实验十三字符数组与字符串课前练习1-5. BCDBD6. strcmp(s1,s2)==0实验容(一)程序改错1.(1)char p[ ] 改为char p[20](2)n=1; 改为n=0;(3)p[n]=='\0' 改为p[n]!='\0'(4)length(s[20]) 改为length(s)2.(1)max = 0 改为max = p[0](2)max > p[i] 改为max < p[i](3)i = k 改为k = i(二)完善程序1.(1)s[i]!='\0'(2)s[i]='A'(3)s[i] += 1(4)s2.(1)strlen(s)(2)s[i]!='\0'(3)s[i] >= 'A' && s[i] <= 'Z'(4)fun(s)课后练习1-5. DAACB6. 77. GL8. dian e9. France、England、China、Australia10. Simon、Niku、Josiah、George11. strlen(s)、s[i]>=’a’&& s[i]<=’z’、s[i]+32、’\0’、s2[j]!=s2[n2-j-1]、j<n3、f(s) 实验十四指针与一维数组课前练习1. DDDAC2. 5实验容(一)程序改错1.(1)printf("%d ", p+i) 改为printf("%d ", *(p+i))(2)m=0 改为m=i(3)k=m 改为m=k(二)完善程序1.(1)math.h(2)&b(3)*pb2.(1)n(2)*(p +i-1) * 3 - 1课后练习1. 42-11. BBBACDACAA12. 2、213. 3、714. 4、16、6415. 36、21416. 26、22、46实验十五指针与字符串课前练习1-6. CBAAAA实验容(一)程序改错1.(1)int *a = upper 改为int *a = &upper(2)int *b = lower 改为int *b = &lower;(3)a++ 改为(*a)++(4)b++ 改为(*b)++(二)完善程序1.(1)*p!='\0'(2)*p<='Z'(3)*p += 322.(1)s(2)*p!='\0'(3)*p-'0'课后练习1-9. BDCDDCBAD10. gae11. 65、7、8、7612. b5、c7、h1013. 432156、43265114. jih、gfe、dcba实验十六指针与函数课前练习1-2. BB3. 100 2004. B实验容(一)程序改错1.(1)scanf("%d", p) 改为scanf("%d", p++) (2)*p < *max 改为*p > *max(3)if(max = arr) 改为if(max == arr)(4)while(i=0; i<n; i++); 改为for(i=0; i<n; i++) 2.(1)int num[ ] 改为int num[5](2)num[i] = 0 改为num[k]=0(3)switch (s) 改为switch (*s)(4)num[k]++ 改为num[i]++(二)完善程序1.(1)int *x(2)x[i]==x[i+1](3)n-1(4)f==1课后练习1-4. DCCD5. 10,15,15,106. 21437. i<n-1、a[i]>a[j]、”%d”,p+i、”%d”,*(p+i)8. 4、5、649. 36、9410. *p1=15、*p2=011. 43210、9876512. 10、15、19实验十七结构体、共同体和枚举类型课前习题1.B2.D3.A4.B5.D6.A7.B8.C9.A10.A实验容(一)程序改错1.(1)enum day{sun,mon,tue,wed,thu,fri,sat};(2)scanf("%s",s);(3)printf("明天是:%s\n",str[d+1]);2.(1)};(2)struct employee em[4]={{1,"wang",25},{2,"li",38},{3,"zhang",30},{4,"qian",45}};(3)if(em[i].age>35)3(1)strcpy(,"Liming");(2)s1.sex='F';(3)printf("%s\n",);(二)完善程序1.(1)struct Date(2)&t.year,&t.month,&t.day(3)t.year,t.month,t.day2.(1)stu[i].score(2)stu[i].score<=stu[j].score(3)sum/N3.(1)S(2)x[i].sex=='M'(3)n课后习题1.B2.C3.D4.D5.B6.37.0,6,7,8,158. 64,48 4,39.410. 0 111.712. struct student a={1021,'M',"zhang"};13.8014. typedef int Integer实验十八文件操作课前练习1. FILE *zx2-4. BBC(一)程序改错1.(1)FILE fp 改为FILE *fp(2)fopen("stu_list.txt", "rb") 改为fopen("stu_list.txt", "wb") (3)fwrite(stu[i] 改为fwrite(&stu[i](4)fread(stu[i] 改为fread(&stu[i](二)完善程序1.(1)FILE(2)NULL2.(1)"filea.dat","r"(2)!feof(3)fgetc(fp)课后练习1-9. CDACBBDAC10. fscanf11. a+12. 123,45613. 3.3实验十九指针与二维数组课前练习1-3. ADC(一)程序改错1.(1)int *p[3] 改为int (*p)[3](2)p[i][j] = (*(p+i)+j) * 5 改为p[i][j] = *(*(p+i)+j) * 5 (3)fun(array[3], 3) 改为fun(array, 3)(二)完善程序1.(1)(*p)[4](2)i==3(3)*(*(p+i)+j)(4)a课后练习1-9. ACBBBCBCA10. 511. if、for、while、switch12. 1 2 5、6 7 8、9 11 12实验二十指针的其他应用课前练习1-2. DB3. 分配存单元的首地址实验容(一)程序改错1.(1)(char *)table[] 改为char *table[](2)strcpy 改为strcmp(3)lookup_keyword("return", *keyword 改为lookup_keyword("return", keyword (4)lookup_keyword("main", *keyword 改为lookup_keyword("main", keyword(二)完善程序1.(1)double (*f)(double)(2)b = x(3)cos课后练习1-2. AC3. 44. true、true、a=5、*p1=5、**p2=55. one、two、three、hree6. invisible7. pip、install、numpy实验二十一存的动态分配及链表课前练习1. A2. 113. C实验容(一)程序改错1.(1)s = (NODE)malloc(sizeof(NODE)) 改为s = (NODE*)malloc(sizeof(NODE)) (2)s= (NODE*)malloc(sizeof(*NODE)) 改为s= (NODE*)malloc(sizeof(NODE)) (3)p->next = s->next 改为p->next = s(二)完善程序1.(1)stdlib.h(2)(int *)malloc(sizeof(int))(3)free(p)课后练习1. head->next、p、head->next、(NODE*)malloc(sizeof(NODE))2. NODE*、i<n、h==NULL、p->x>p2->x3. POT、head、p2->next、p->next4. p1->word、NULL、c[i].num++、h = h->next。
第1章程序设计题参考答案1.代码1-1如下:2.代码1-2如下:3.代码1-3如下:4.代码1-4如下:5.代码1-5如下:“如何让你的幻灯片动起来”培训课时:一课时。
培训内容:“幻灯片切换”、“自定义动画”和“动作设置”(超链接)在幻灯片中的应用。
培训目标:这次培训要完成最后几张幻灯片的制作,你要对演示文稿设置幻灯片的切换效果,为幻灯片的文字、文本框等内容设置一些动画效果,例如文字显示的效果以及显示的顺序等。
1、为每张幻灯片设置切换效果以及换页方式等。
2、为幻灯片的标题、正文和图片等设置动画效果。
3、设置各个对象适当的显示顺序。
4、添加一些适宜的背景声音效果,以衬托主题内容。
5、合理利用“动作设置”中的“超链接”。
6、幻灯片“动画效果”以及“幻灯片切换”设计的注意事项。
培训过程:导言:到目前为止,你已经制作了幻灯片,学会了不少制作幻灯片的操作,幻灯片中有文字,也有图片,还有声音,你的演示文稿顿时变得既“活泼”又能“悦耳”了起来啦!假如能让幻灯片的文字、图片显示的时候多一些动画效果,让它“动”起来,那么幻灯片的效果一定更妙!新增加一张新的幻灯片,在幻灯片中加入文本框和正文。
(提示:点击菜单项“插入”->“新幻灯片”,在对话框中选择合适的版式)1、为每张幻灯片设置切换效果以及换页方式等。
(1)单击“幻灯片放映”菜单->“幻灯片切换”,出现一个对话框。
这时可以为当前的幻灯片设置切换时的“效果”、“换页方式”以及“声音效果”等。
(2)在“效果”区内选择幻灯片切换放映时的效果方式。
(3)在“速度”中选择显示速度。
(4)在“声音”栏内选择合适的背景声音。
(5)在“换片方式”中,选择下一张幻灯片出现时的操作方式。
(6)如果想把这种设置应用于所有幻灯片,就选择“应用于所有幻灯片”2、为幻灯片的标题、正文和图片等设置动画效果。
(1)选中需要设置动画效果的标题、正文或图片等。
(这是设置“自定义动画的前提)(2)单击“幻灯片放映”菜单 ->“自定义动画”,在屏幕右方出现一个对话框。
C 语言程序设计上机实验指导与习题参考答案仅供教师内部参考华南农业大学目录上机实验1实验1 C 语言程序初步1一实验目的1二实验内容1实验2 基本数据类型运算和表达式3一实验目的3二实验内容3实验3 基本输入与输出5一实验目的5二实验内容5实验4 选择结构程序设计4一实验目的4二实验内容4实验5 循环结构程序设计一9一实验目的9二实验内容9实验6 循环结构程序设计二15一实验目的15二实验内容15实验7 数组17一实验目的17二实验内容17实验8 字符数组的应用22一实验目的22二实验内容22实验9 函数的基本应用24 一实验目的24二实验内容24实验10 指针与结构体26一实验目的26二实验内容26*实验11 链表29一实验目的29二实验内容29*实验12 文件32一实验目的32二实验内容32上机实验实验1 C 语言程序初步一实验目的1了解所用的计算机系统的基本操作方法学会独立使用该系统2 了解在该系统上如何编辑编译连接和运行一个C 程序3 通过运行简单的C 程序初步了解C 程序的特点4 在教师的指导下学会使用JudgeOnline 实验系统二实验内容1 运行第一个C 程序[题目The first C Program]将下列程序输入TC 或VC编译连接和运行该程序void mainprintf "The first C Program\n"[具体操作步骤]以Turbo C 上的操作为例1Windows 进入后按照第一章中介绍的方法进入Turbo C2在编辑窗口中输入程序3保存程序取名为a1c4按照第一章中介绍的方法编译连接和运行程序2 在JudgeOnline 系统中提交实现了计算ab 功能的程序[题目1001计算ab]由键盘输入两个整数计算并输出两个整数的和实现该功能的程序如下void mainint a bscanf "dd" a b1 printf "d" a b1在程序编辑窗口中输入程序2保存程序取名为a2c3按照前二章中介绍的方法编译连接和运行程序4在程序运行过程中输入15 30↙↙表示输入回车符5 如果看到如下输出结果则表明1530 的结果正确如果得不到如下结果则需检查并更正程序456 按照第三章中介绍的方法进入JudgeOnline 实验系统7 显示题目列表点击题号为1001题名为计算ab的题目8 查看完题目要求后点击页面下端的sumbit 参照第二章提交程序的方法提交程序a2c9 查看评判结果如果得到accepted则该题通过否则返回第一步检查程序是否正确2实验2 基本数据类型运算和表达式一实验目的1掌握C 语言数据类型熟悉如何定义一个整型和实型的变量以及对它们赋值的方法2 掌握不同的类型数据之间赋值的规3 学会使用C 的有关算术运算符以及包含这些运算符的表达式特别是自加和自减-- 运算符的使用4 进一步熟悉C 程序的编辑编译连接和运行的过程二实验内容1 变量的定义[题目1117变量定义按要求完成程序]下面给出一个可以运行的程序但是缺少部分语句请按右边的提示补充完整缺少的语句void mainint a b 定义整型变量a 和bint i j 定义实型变量i 和ja 5b 6i 314 j iabprintf "a db di fj f\n" a b i j[具体操作步骤]1将代码补充完整2在TC 或VC上运行通过3在JudgeOnline 实验系统上提交2 赋值表达式与赋值语句[题目1118赋值表达式与赋值语句写出程序运行结果] 阅读下面程序写出运行结果void mainfloat aint b cchar d ea 35b ac 330d c3e \\printf "fddcc" abcde运行结果为35000003330J\[提示]赋值语句具有类型转换的功能但可能会改变数据3 基本运算[题目1119基本运算写出程序运行结果]阅读下面程序写出运行结果void mainint a b cfloat d 15 e fa 357b 1510c be 1510f d10printf "dddfff" abcdef运行结果为0211500000010000001500000[提示]除法分整除与普通除法之分4实验3 基本输入与输出一实验目的1熟练掌握putchargetcharprintf scanf 函数的使用方法2 掌握各种类型数据的输入输出的方法能正确使用各种格式转换符二实验内容[题目1126字符的输入与输出]编程实现由键盘输入一个字符后在屏幕上输出该字符[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]a↙↙[正确输出] [正确输出]a参考程序include "stdioh"mainchar chch getcharputchar ch[题目1127计算加法]编程实现由键盘输入一个加法式输出正确的结果两个加数均为整数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]1020 ↙- 1560↙[正确输出] [正确输出]30 45参考程序include "stdioh"mainint a bscanf "dcd" abprintf "d" ab[题目1014求圆面积]由键盘输入圆半径r 请计算该圆的面积注取314159结果保留两位小数位另外程序只要能对r 在0 到10000 范围的情况输出正确答案即可[第一组自测数据] [键盘输入]5652 ↙[键盘输入][正确输出] 112↙1335502 [正确输出][第二组自测数据] 39408[提示]结果保留两位小数可采用printf 函数的格式控制字符来实现参考程序include "stdioh"mainfloat arearscanf "f"rarea 314159rrprintf "02f"area2[题目1015计算摄氏温度值]从键盘输入一个华氏温度值要求按格式输出其对应的摄氏温度值精确到小数点后两位数学公式描述为5C F 329[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]100↙100↙[正确输出] [正确输出]3778 3778[提示]注意公式中的除为普通除法参考程序includevoid mainfloat fcscanf "f"fc 509 f-32printf "2f"c3实验4 选择结构程序设计一实验目的1了解C 语言表示逻辑的方法以0 代表假以非0 代表真2 学会正确使用逻辑运算符和逻辑表达式3 熟练掌握if 语句和switch 语句4 结合程序掌握一些简单的算法二实验内容[题目1120判断点是否在圆]由键盘输入一个点的坐标要求编程判断这个点是否在单位圆上点在圆上输出Y 不在圆上输出N 使用小数点后3 位精度进行判断[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]07070707 ↙8>0505↙[正确输出] [正确输出]Y N[提示] 1平面上的点与圆的关系分为在圆内在圆上在圆外三种本题要求判断是否在圆上2判断两实数相等采用判断这两实数的差的绝对值小于规定误差精度本题为0001 的方法实现参考程序include "stdioh"include "mathh"void mainfloat abscanf "ff"abif fabs aabb-1 1e-3printf "Y\n"else printf "N\n"[题目1017求数的位数]由键盘输入一个不多于9 位的正整数要求输出它是几位数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]349213 ↙10000↙[正确输出] [正确输出]6 5[提示]划定一位数二位数九位数的范围后用if else if else 语句实现判断4参考程序mainint nplacescanf "ld"nif n 99999999 place 9else if n 9999999 place 8else if n 999999 place 7else if n 99999 place 6else if n 9999 place 5else if n 999 place 4else if n 99 place 3else if n 9 place 2else place 1printf "ld\n"place[题目1018数的排序]由键盘输入三个整数a b c按从小到大的顺序输出这三个数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]654590 ↙963 ↙[正确输出] [正确输出]456590 369参考程序includemainint abctscanf "ddd"abcif a b t aa bb tif a c t aa cc tif b c t bb cc tprintf "ddd"abc[题目1016字符变换]由键盘输入5 个字符将其中的大写字母变成小写其它类型的字符不变并按输入顺序逐个输出[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]ApPLe ↙aB 5 ↙[正确输出] [正确输出]apple ab 5[提示]下面代码实现由键盘读入一个字符并按题意处理后输出char aa getcharif a A a Z a a32putchar a5现在题目要求处理5 个字符怎么做呢请自己思考参考程序includemainchar abcdescanf "ccccc"abcdeif a Za A a a32if b Zb A b b32if c Zc A c c32if d Zd A d d32if e Ze A e e32printf "ccccc"abcde[题目1019数的整除]由键盘输入5 个整数逐个判断它们能否被27 整除能的输出YES不能的输出NO 注意输出时一个判断结果占一行5 个数的判断共占5 行[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]8 27 17577 325 54 ↙8 27 17577 325 54 ↙[正确输出] [正确输出]NO NOYES YESYES YESNO NOYES YES[提示]整除即除得余数为0参考程序include "stdioh"mainint abcdescanf "d d d d d"abcdeif a27 0 printf "YES\n" else printf "NO\n"if b27 0 printf "YES\n" else printf "NO\n"if c27 0 printf "YES\n" else printf "NO\n"if d27 0 printf "YES\n" else printf "NO\n"if e27 0 printf "YES\n" else printf "NO\n"[题目1020正负奇偶判断]由键盘输入非零整数x 判断该数正负正数输出positive 负数输出negative 接着判断该数的奇偶性奇数输出odd偶数输出even[第一组自测数据] negative[键盘输入] odd-43 ↙[第二组自测数据][正确输出] [键盘输入]698 ↙positive[正确输出] even参考程序include "stdioh"mainint nscanf "d"nif n 0 printf "negative\n"else printf "positive\n"if n2 0 printf "even\n"else printf "odd\n"[题目1023简单计算器]下面程序是实现一个简单的运算器保留两位小数点如果由键盘输入1050计算机可以输出结果6000如果输入8 *6计算机输出4800如果输入204 计算机输出500 如果输入8-6计算机输出200 请在空处填上适当的代码运行通过后并提交include "stdioh"void mainfloat abcscanf "fcf"switch opcasecase - _case _case __default printf "error"returnprintf "result " c[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]452↙501-23 ↙[正确输出] [正确输出]90 27107参考程序includeint mainchar opscanf "fcf"aopbswitch opcase c abbreakcase -c a-bbreakcase c abbreakcase c abbreakdefaultprintf "error"breakprintf "result 2f"c8实验5 循环结构程序设计一一实验目的1熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中用循环实现一些常用算法如穷举迭代递推等二实验内容[题目1024计算阶乘]输入正整数n计算n 结果用长整型数表示注n 123n[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]5 ↙8 ↙[正确输出] [正确输出]120 40320参考程序includemainlong in 1ascanf "ld"afor i 1i ai n niprintf "ld\n"n[题目1025计算数列和]有数列1357911现要求由键盘输入n计算输出该数列的前n 项和[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]2 ↙ 5 ↙[正确输出] [正确输出]4 259参考程序includemainlong nsum 0it 1scanf "ld"nfor i 1i nisum sumtt t2printf "ld\n"sum或includemainlong nsumscanf "ld"nsum nnprintf "ld"sum注评判系统不对程序实现细节进行分析只对运行结果进行评测[题目1026 加一行字符中的数字]由键盘输入一行字符总字符个数从1 个至80 个均有可能以回车符表示结束将其中每个数字字符所代表的数值累加起来输出结果[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]abc123↙A6H7T65↙[正确输出] [正确输出]6 24[提示] 1可以使用下面程序段逐个读入键盘输入的一行字符char chwhile ch getchar \n2 数字字符转为对应的数值可用a ch-0参考程序includemainchar cint s 0awhile c getchar \nif c 0c 9a c-48s saprintf "d"s10[题目1029求最大公约数]由键盘输入两个正整数mn mn 用长整数表示计算它们的最大公约数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]1624↙1725↙[正确输出] [正确输出]8 1[提示]公约数是既能整除m 又能整除n 的数题目要求满足这一条件的最大的一个参考程序includemainlong rmntempscanf "ldld"mnwhile m 0r nmn mm rprintf "ld\n"n或includemainlong mntisscanf "ldld"mnt m nnmfor i t-1i 1i--if mi 0ni 0s i breakprintf "d"s[题目1030字符变换]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束将其中的大写字符变成小写其它类型的字符不变最后输出变换后的句子[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙ThiS IS My fIrSt C ProgrAm ↙[正确输出] [正确输出]how are you this is my first c program11参考程序includemainchar cwhile c getchar \nif c Ac Zc c32putchar c[题目1037计算数列和]有数列编程实现由键盘输入n计算输出数列前n 项和结果保留四位小数[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]20 ↙30 ↙[正确输出] [正确输出]326603 880403参考程序includemainint itnfloat a 2b 1s 0scanf "d"nfor i 1i nis sabt aa abb tprintf "4f\n"s[题目1044输出最小值]从键盘输入十个整数输出最小值[ 自测数据][键盘输入]12 45 76 87 5 87 43 55 99 21 ↙[正确输出]512参考程序include "stdioh"mainint itminscanf "d" minfor i 1i 10iscanf "d" tif t min min tprintf "d\n"min*[题目1031统计单词个数]由键盘输入一个句子总字符个数从1 个至80 个均有可能以回车符表示结束以空格分割单词要求输出单词的个数[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]How Are You ↙There are many students and many[正确输出] trees↙3 [正确输出]7参考程序includemainint inum 0word 0char cfor i 0 c getchar \niif c word 0else if word 0word 1numprintf "d"num*[题目1042百万富翁]一个百万富翁遇到一个陌生人陌生人找他谈了一个换钱的计划该计划如下我每天给你m 元而你第一天只需给我一分钱第二天我仍给你m 元你给我2 分钱第三天我仍给你m 元你给我4分钱依次类推你每天给我的钱是前一天的两倍直到一个月38 天百万富翁很高兴欣接受这个契约现要求编写一个程序由键盘输入m计算多少天后百万富翁开始亏钱[第一组自测数据] 18[键盘输入] [第二组自测数据]100↙[键盘输入][正确输出] 10000↙13[正确输出] 25参考程序includeincludemainint nmiscanf "d"mfor i 1i 38iif 001 pow 2i-1 -1 -im 0 breakprintf "d"i-114实验6 循环结构程序设计二一实验目的1进一步熟悉掌握用while 语句do-while 语句和for 语句实现循环的方法2 掌握在程序设计中使用多重循环二实验内容[题目1028求素数]输出2 到200 之间包括2 200 的所有素数注要求1 行1 个素数按由小到大的顺序输出[提示]采用双重循环外层循环产生2 到200 之间的数内层循环对数进行判断是否为素数参考程序includeincludemainint mkifor m 2m 200mk sqrt mfor i 2i kiif mi 0 breakif i k printf "d\n"m[题目1035打印菱形]由键盘输入正数n要求输出2n1 行的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据] [键盘输入] [键盘输入]3 ↙ 2 ↙[正确输出] [正确输出]15参考程序include "stdioh"include "mathh"mainint nijkscanf "d"nfor i 1i 2n1ik abs n1-ifor j 1j kj printf " "for j 1j 2n1-2kj printf ""printf "\n"[题目1038打印图案]由键盘输入正数n要求输出中间数字为n 的菱形图案要求菱形左边紧靠屏幕左边[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]4 ↙ 3[正确输出] [正确输出]1 1121 121 12321 12321 1234321 121 12321 1 1211参考程序includeincludemainint nijkhscanf "d"nfor i -n1i n-1ifor j 0j abs i jprintf " "for k 1k n-abs i k printf "d"kfor h n-abs i -1h 1h-- printf "d"hprintf "\n"16实验7 数组一实验目的1掌握一维数组和二维数组的定义赋值和输入输出方法2 掌握与数组有关的算法二实验内容[题目1039倒序]由键盘输入10 个整数倒序输出数字间由一个空格分隔[ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]66 13 67 99 2 19 20 14 5 70参考程序includemainint a [10]int ifor i 0i 10i scanf "d"a[i]for i 9i 0i-- printf "d\n"a[i][题目1040统计不同数字个数]由键盘输入20 个整数统计不同数字的个数[ 自测数据][键盘输入]70 5 14 22 19 2 99 67 13 66 5 93 44 38 22 11 39 22 33 11↙[正确输出]16[提示]上述答案中因为5 有1 个重复数字11 有1 个重复数字22 有2 个重复数字故不同数字有16个分别是70 5 14 22 19 2 99 67 13 66 93 44 38 11 39 3317参考程序include"stdioh"mainint a [20]int itp 0for i 0i 20iscanf "d"a[i]for t 0t itif a[t] a [i] breakif t ipprintf "d"p[题目1062打印矩阵]由键盘输入一个3×4 的矩阵要求输出它的转置矩阵[ 自测数据][键盘输入] [正确输出] 1 6 9 3 1 1 11 1 02 6 1 91 9 8 9 9 0 83 2 9参考程序includemainint a [3][4]b[4][3]ijfor i 0i 3ifor j 0j 4jscanf "d"a[i][j]b[j][i] a [i][j]for i 0i 4ifor j 0j 3jprintf "d "b[i][j]printf "\n"*[题目1047冒泡排序]由键盘输入10 个数用冒泡法对10 个数从小到大排序并按格式要求输出代码如下请填充完整数字间由一个空格分隔incude "stdioh"mainint a[10] i j t18for i 0i 10iscanf "d"___________for ___________for j 0j ____jif ______________________for i 0i 10iprintf "d "a[i][ 自测数据][键盘输入]70 5 14 20 19 2 99 67 13 66 ↙[正确输出]2 5 13 14 19 20 66 67 70 99参考程序includemainint a [10]int ijtfor i 0i 10iscanf "d"a[i]for i 0i 9ifor j 0j 9-ijif a[j] a [j1]t a [j] a [j] a[j1] a[j1] tfor i 0i 10iprintf "d "a[i]*[题目1046计算高精度加法]由键盘输入两个位数很长的整数一行一个数每个数最长不超过80 位试计算并输出这两个数的和[ 自测数据][键盘输入]1XXXXXXXXXX23456789 ↙987654321098765 ↙[正确输出]1XXXXXXXXXX4455555419参考程序include "stdioh"include "stringh"mainint a [100] 0 b[100] 0 c[100] 0char s[101]int i 0n1 0n2 0 0e 0gets sn1 strlen sfor i n1-1i 0i-- a[n1-1-i] s[i]-0gets sn2 strlen sfor i n2-1i 0i-- b[n2-1-i] s[i]-0if n1 n2 n1else n2for i 0i ic[i] a[i]b[i]e 10e a[i]b[i]e 10if c[] 0 printf "d"c[]for i -1i 0i--printf "d"c[i]*[题目找矩阵中的鞍点]由键盘输入一个3 ×4 3 行4 列的矩阵输出矩阵中的鞍点即在矩阵行中最大列中最小的数若没有鞍点输出NO 字样[ 自测数据][键盘输入]87 90 110 98 ↙70 97 210 65 ↙98 45 120 30 ↙[正确输出]11020参考程序includemainint ijka[3][4]jflagfor i 0i 3ifor j 0j 4jscanf "d"a[i][j] for i 0i 3ia [i][0]j 0for j 0j 4jif a[i][j]a [i][j] j jflag 1for k 0k 3kif a [k][j]flag 0 breakif flagprintf "d" breakif flagprintf "NO"21实验8 字符数组的应用一实验目的1掌握字符数组和字符串函数的使用2 掌握与字符串处理有关的算法二实验内容[题目1121定义存贮字符串的字符数组]在下面程序中填充定义字符数组的语句使程序完整include "stringh"void mainchar s[80] 定义字符数组sstrcpy s "abcdefghij klmn"printf "s" s参考程序[题目1123字符串的输入与输出]下面程序实现从键盘读入字符串后输出到屏幕请填充必要的语句include "stdioh"void mainchar s[50]printf "Whats your name"gets s 由键盘读入字符串printf "Your name is "printf "s" s 打印字符串参考程序[题目1122字符串的合并]从键盘输入3 个字符串每个字符串以回车符做为结束标志将3 个字符串以输入先后顺序合并到字符串s 中请填空使用程序完整include "stdioh"include "stringh"mainchar s[100] ""char a [30]gets a strcat s a22gets a strcat s agets a strcat s a可以写多行代码printf "s" s[ 自测数据][键盘输入] [正确输出]123 123abc456abc456参考程序[题目1050寻找字符串]由键盘输入两个字符串假设第一个字符串必包含第二个字符串如第一个字符串为ABCDEF第二个为CDE则CDE 包含在ABCDEF 中现要求编程输出第二字符串在第一行字符串中出现的位置如果第二个字符串在第一个字符串中出现多次则以最前出现的为准[第一组自测数据] [第二组自测数据][键盘输入] [键盘输入]ABCDEFG ↙hellhello ↙DE ↙hello ↙[正确输出] [正确输出]4 5[提示]方法1建立双重循环外层循环变量指示第一个串的查找起始位置内层循环从起始位置开始判断第二个字符中是否出现在此处方法2 使用字符串函数strstr参考程序include "stdioh"mainint ijchar a [80] b[80]gets a gets bfor i 0a[i] \0ifor j 0b[j] \0jif a[ij] b[j] breakif b[j] \0 breakif a[i] \0 printf "d"i1else printf "Not Found"23实验9 函数的基本应用一实验目的1掌握定义函数的方法2 掌握函数实参与参的对应关系以及值传递的方式3 掌握函数的嵌套调用和递归调用的方法4 掌握全局变量和局部变量动态变量静态变量的概念和使用方法二实验内容[题目1059函数定义]下面是使用辗转相除法求最大公约数的程序请补充完整程序中函数的定义与调用include "stdioh"int f int m int nint rwhile r mn 0m nn rreturn nmainint a b nscanf "dd" a bprintf "d\n" f a b[题目1083编写函数计算阶乘]下面程序实现由键盘读入整数n计算并输出n 请补充完整计算阶乘的函数long fanc int along in 1for i 1i ai n nireturn nvoid mainint nscanf "d" n24printf "ld" fanc n[题目1124函数中的变量]写出下面程序的运行结果int f1 int xstatic int z 3y 0yzreturn xyzmainint a 1kfor k 0k 3k printf "4d"f1 a 程序运行结果为6 8 10*[题目1084编写递归调用函数实现十进制数转二进制数]下面程序实现由键盘输入一个正整数不大于100000000 输出其对应的二进制数原码表示请填空include "stdioh"void fun int iif i 1fun i2printf "d" i2mainint nscanf "d" nfun n25实验10 指针与结构体一实验目的1通过实验进一步掌握指针的概念会定义和使用指针变量2 能正确使用数组的指针和指向数组的指针变量3 能正确使用字符串的指针和指向字符中的指针变量4 掌握结构体类型变量的定义和使用二实验内容[题目1091交换两数由大到小输出]下面程序交换两数使两数由大到小输出请填空include "stdioh"void swap int p1 int p2int temptemp p1p1 p2p2 tempint mainint ab int papbscanf "dd" a bpa a pb bif a b swap pa pbprintf "d d\n"ab[题目1065数组中的指针]设有如下数组定义int a[3][4] 1357 9111315 17192123计算下面各项的值设数组a 的首地址为2000一个int 类型数占四个字节注意地址则输出地址变量则输出变量值要求一行一个答案不允许多余空行及空格1a[2][1] 2 a[1] 3 a 4 a 15 a 16 a 17 a[2] 18 a 1 19 a2 226参考程序include "stdioh"mainprintf "19\n"printf "2016\n"printf "2000\n"printf "2016\n"printf "2004\n"printf "2016\n"printf "2036\n"printf "2020\n"printf "21"[题目1092函数实现求字符串长度]下面程序以指针方式传递参数由函数实现求字符串长度请填空完成include "stdioh"include "stringh"int f char preturn strlen pint mainchar s[80]int iscanf "s" si f sprintf "d" i[题目1125定义结构体类型]要求定义一个名为student 的结构体类型其包含如下成员1字符数组name 最多可存放10 个字符2 字符变量sex用于记录性别3 整数类型变量num用于记录学号4 float 类型变量score 用于记录成绩并使下列代码完整定义结构体类型struct studentchar name[20]char sex。
C语言程序设计上机实验指导与习题参考答案(仅供教师内部参考)华南农业大学目录上机实验.................................................................................................................................................................... 1 实验1 C 语言程序初步 (1)一、实验目的............................................................................................................................................ 1 二、实验内容 (1)实验 2 基本数据类型、运算和表达式...........................................................................................................3 一、实验目的............................................................................................................................................3 二、实验内容............................................................................................................................................3实验 3 基本输入与输出...................................................................................................................................5 一、实验目的............................................................................................................................................5 二、实验内容............................................................................................................................................5实验 4 选择结构程序设计...............................................................................................................................4 一、实验目的............................................................................................................................................4 二、实验内容............................................................................................................................................4实验 5 循环结构程序设计(一)...................................................................................................................9 一、实验目的............................................................................................................................................9 二、实验内容............................................................................................................................................9实验 6 循环结构程序设计(二).................................................................................................................15 一、实验目的..........................................................................................................................................15 二、实验内容..........................................................................................................................................15实验7 数组.....................................................................................................................................................17 一、实验目的..........................................................................................................................................17 二、实验内容..........................................................................................................................................17实验8 字符数组的应用.................................................................................................................................22 一、实验目的..........................................................................................................................................22 二、实验内容..........................................................................................................................................22实验9 函数的基本应用.................................................................................................................................24 一、实验目的..........................................................................................................................................24 二、实验内容..........................................................................................................................................24实验10 指针与结构体...................................................................................................................................26 一、实验目的..........................................................................................................................................26 二、实验内容..........................................................................................................................................26*实验11 链表................................................................................................................................................29 一、实验目的..........................................................................................................................................29 二、实验内容..........................................................................................................................................29*实验12 文件...............................................................................................................................................32 一、实验目的..........................................................................................................................................32 二、实验内容..........................................................................................................................................上机实验实验 1 C 语言程序初步一、实验目的(1)了解所用的计算机系统的基本操作方法,学会独立使用该系统。
《c语言程序设计》实验指导书答案《C语言程序设计》实验指导书答案实验一:C语言环境搭建与基本语法1. 问题:如何在计算机上搭建C语言开发环境?答案:搭建C语言开发环境通常需要安装编译器和集成开发环境(IDE)。
常见的编译器有GCC,而IDE如Visual Studio Code、Code::Blocks等。
安装完成后,配置好编译器路径,即可开始编写和编译C语言程序。
2. 问题:C语言的基本数据类型有哪些?答案:C语言的基本数据类型包括整型(int)、字符型(char)、浮点型(float和double)以及更复杂的结构体(struct)和联合体(union)等。
3. 问题:如何定义一个变量?答案:定义变量的基本语法是:`类型名变量名;`。
例如,定义一个整型变量a:`int a;`。
4. 问题:如何实现变量的输入和输出?答案:使用`scanf`函数进行输入,使用`printf`函数进行输出。
例如,输入一个整数并输出:`scanf("%d", &a); printf("%d", a);`。
实验二:控制结构1. 问题:C语言中的条件语句有哪些?答案:C语言中的条件语句主要有`if`语句和`switch`语句。
2. 问题:如何使用`if`语句?答案:`if`语句的基本语法是:`if (条件) { 语句 }`。
例如,判断一个数是否为正数:`if (a > 0) { printf("正数"); }`。
3. 问题:如何使用`switch`语句?答案:`switch`语句用于多条件分支选择。
基本语法是:`switch (表达式) { case 常量1: 语句1; break; case 常量2: 语句2; break; ... default: 默认语句; }`。
4. 问题:C语言中的循环语句有哪些?答案:C语言中的循环语句主要有`for`循环、`while`循环和`do-while`循环。
c语言程序设计实验指导书答案C语言程序设计实验指导书是帮助学生理解和掌握C语言编程技能的重要工具。
本指导书旨在通过一系列实验,引导学生从基础语法到高级编程技巧,逐步提高编程能力。
以下是一些实验题目和相应的答案示例,以供参考。
实验一:C语言基础语法实验目的:- 熟悉C语言的基本语法结构。
- 掌握变量声明、数据类型和运算符的使用。
实验内容:1. 编写一个程序,输入两个整数,输出它们的和、差、积和商。
实验答案:```c#include <stdio.h>int main() {int num1, num2;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);printf("和是:%d\n", num1 + num2);printf("差是:%d\n", num1 - num2);printf("积是:%d\n", num1 * num2);if (num2 != 0) {printf("商是:%d\n", num1 / num2);} else {printf("除数不能为0。
\n");}return 0;}```实验二:控制结构实验目的:- 掌握条件语句和循环语句的使用。
实验内容:1. 使用循环语句计算1到100的和。
实验答案:```c#include <stdio.h>int main() {int sum = 0;for (int i = 1; i <= 100; i++) {sum += i;}printf("1到100的和是:%d\n", sum); return 0;}```实验三:数组和字符串- 掌握数组和字符串的声明、初始化和使用。
实验内容:1. 编写一个程序,输入一个字符串,然后反转该字符串并输出。
实验一(1)编程求37+29的值,实习VC环境。
#include<stdio.h>void main(){int a,b,sum;a=37;b=29;sum=a+b;printf("sum=%d",sum);}(2)从键盘输入三个整数,求出最大数并输出。
#include<stdio.h>void main(){int a,b,c,y;int max(int x,int y);printf("input a,b,and c:");scanf("%d,%d,%d",&a,&b,&c);y=max(a,b);y=max(y,c);printf("\nmax=%d\n",y);}int max(int x,int y){int z;if(x>y) z=x;else z=y;return(z);}(3)通过上机实践,运行下列程序并分析输出结果。
A 程序代码#include<stdio.h>void main(){char ch='a';printf("%c对应的ASCII码是:%d\n",ch,ch);}程序输出结果:a对应的ASC||码是:97B 程序代码#include<stdio.h>void main(){int a=168;float b=123.456;float x=35.567,y;printf("a=%5d\n",a);printf("a=%-5d\n",a);printf("b=%6.2f\n",b);printf("b=%e\n",b);y=(int)(x*100+0.5)/100.0;printf("x=f,y=%f\n",x,y);}程序输出结果:a=168a=168b=123.46b=1.234560e+002x=f,y=35.567001C程序代码#include<stdio.h>void main(){int a=168;printf("十进制数%d对应的八进制数是%o\n",a,a);printf("十进制数%d对应的十六进制数是%x\n",a,a); }程序输出结果:十进制数168对应的八进制数是250十进制数168对应的十六进制数是a8实验二2.1顺序结构2.1.1已知a=1.5,b=5.3,c=2.9,计算s=-4ac的结果并输出。
c语言程序设计实验教程课后答案C语言程序设计实验教程课后答案C语言是一种广泛使用的计算机编程语言,以其高效、灵活和功能强大而著称。
学习C语言不仅能够帮助学生理解计算机程序设计的基础,而且能够为学习更高级的编程语言打下坚实的基础。
以下是一些常见的C语言程序设计实验教程课后问题及其答案。
问题1:编写一个C程序,计算并输出两个整数的和。
答案:```c#include <stdio.h>int main() {int num1, num2, sum;printf("请输入两个整数:");scanf("%d %d", &num1, &num2);sum = num1 + num2;printf("两个整数的和是:%d\n", sum);return 0;}```问题2:编写一个C程序,判断一个整数是否为素数。
答案:```c#include <stdio.h>#include <math.h>int isPrime(int n) {if (n <= 1) return 0;for (int i = 2; i <= sqrt(n); i++) {if (n % i == 0) return 0;}return 1;}int main() {int num;printf("请输入一个整数:");scanf("%d", &num);if (isPrime(num)) {printf("%d 是素数。
\n", num);} else {printf("%d 不是素数。
\n", num);}return 0;}```问题3:编写一个C程序,实现简单的学生成绩管理系统。
答案:```c#include <stdio.h>struct Student {char name[50];int score;};int main() {struct Student students[3] = {{"Alice", 85},{"Bob", 90},{"Charlie", 78}};int i;printf("学生成绩列表:\n");for (i = 0; i < 3; i++) {printf("%s: %d\n", students[i].name, students[i].score);}return 0;}```问题4:编写一个C程序,实现字符串的反转。