实验十三预处理命令和指针(1) 班级 姓名 指导老师 成绩 第 机房 号机器时间: 实验目的:1.学会使用宏定义和文件包含 2.重点掌握指针变量的定义和赋值 3.掌握指针变量的引用 4.初步掌握指向数组的指针的定义和使用。 实验要求:每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导 老师检查后,上机运行、调试程序,得出最终正确结果 实验内容 、读程序 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。 #include <stdio. h> #define ADD(x)x+x main() int m=l,n=2, k=3 int sum ADD(m+n)*k printf("sum=旨d\n”,sum); 分析结果 #include <stdio. h> #define ArEA(r)(r )*(r) #define PI 3.14159 main( int x=l, y=2 ,s printf("s=暑dn”,s);
实验十三 预处理命令和指针(1) 班级______________姓名___________指导老师_____________成绩___________ 第_____________机房___________号机器 时间:________________________ 实验目的:1. 学会使用宏定义和文件包含。 2. 重点掌握指针变量的定义和赋值。 3. 掌握指针变量的引用。 4. 初步掌握指向数组的指针的定义和使用。 实验要求:每次实验前,学生要先预习实验内容,写出分析结果或程序,经实验指导 老师检查后,上机运行、调试程序,得出最终正确结果。 实 验 内 容 一、读程序 要求:读懂程序,写出分析结果;上机运行程序,得到运行结果,比较之。 1. #include <stdio.h> #define ADD(x) x+x main() { int m=1 ,n =2 , k=3; int sum = ADD(m+n)* k ; printf(“sum = %d\n” ,sum ); } 分析结果 运行结果 2. #include <stdio.h> #define AREA(r) ( r ) * ( r ) #define PI 3.14159 main( ) { int x=1, y=2 ,s; s= AREA(x+y)* PI; printf(“s = %d\n”,s); }
C语言程序设计上机指导与同步训练 分析结果 运行结果 main() int *p,a=10,b=l p=&a; printf("a=kd, p=d \n",a,*p) 析结果 运行结果 b=(-*p1)/(*p2)+7 printf("a=器d\n”,a); printf("b=暑dln",b) 运行结果 int sub (int*p) for(i=0;i<4;i++) int sub(int *p) static int t=O 分析结果 运行结果
·70· C 语言程序设计上机指导与同步训练 ·70· 分析结果 运行结果 3. main() { int *p,a =10,b =1 p=&a; a=*p+b; printf(“a=%d,p=%d \n”,a , *p); } 分析结果 运行结果 4. main() { int a , b ,k =5,m=4 ; int * p1 =&k , * p2=&m; a =p1==&m; b=(-*p1)/(*p2)+7; printf(“a = %d\n”, a); printf(“b = %d\n”, b); } 分析结果 运行结果 5. int sub (int*p) main() { int i ,k; for( i=0;i<4;i++) { k= sub(&i); printf(“k= %d\n”,k); } } int sub(int *p) { static int t=0; t=*p +t ; } 分析结果 运行结果
第一部分c语言程序设计上机指导 6. #include <stdio. h> main() inta[]={1,2,3,4,5,6} int *p, i i printf("n1=d,n2=旨d\n”,*p,*(p+3) 行结果 #include <stdio. h> mian( inta[]={1,3,5,7,9}; int*p=a printf(“器d\n”,(*p++)) printf("d\n”,(*++p) printf("gd\n",(* ++p)+ 分析结果 运行结果 二、完成程序 要求:根据要求,分析给出的上下语句,填写程序。 设有以下程序,为使之正确运行,请在 上填写正确内容。 #include <stdio. h> main() I int x=2,y=4 (x,y) printf(Mz=号d",z); char s1[20]=“2008 char s2[ ]=" Beijing"; strcat( s1, s2) printf(”暑s/n”,s1) 2.用带参数的宏实现变量值的输入与输出,请在 上填写正确内容
第一部分 C 语言程序设计上机指导 ·71· ·71· 6. #include <stdio.h> main() { int a[ ]={1,2,3,4,5,6}; int *p ,i ; p=a; *(p+3)+=2; printf(“n1=%d ,n2=%d \n”,*p , *(p+3)); } 分析结果 运行结果 7. #include <stdio.h> mian() { int a[ ]={1,3,5,7,9}; int *p=a; printf(“%d\n”,(*p++)); printf(“%d\n”,(* ++p)); printf(“%d\n”,(* ++p)++); } 分析结果 运行结果 二、完成程序 要求:根据要求,分析给出的上下语句,填写程序。 1. 设有以下程序,为使之正确运行,请在_______上填写正确内容。 __________________________ __________________________ #include <stdio.h> main() { int x =2 , y=4 , z; z = pow(x,y) ; printf(“z=%d” ,z); char s1[20]= “2008”; char s2[ ]= “ Beijing”; strcat( s1,s2); printf(” %s/n” ,s1); } 2. 用带参数的宏实现变量值的输入与输出,请在_______上填写正确内容
C语言程序设计上机指导与同步训练 #include <stdio. h> #define sc(a) //scanf("ac", &a) #define PR(b) sc(ch) if(ch>='a′&&ch<=z′) h=ch+32 PR(ch) 3.以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出,请在 上填写正确内容, #include main() int num a, b,c scanf(”号 d sd d\n”,pa,pb,pc); printf(”d,d,暑d\n",*pa,*pb,*pc); if if printf( "Min= gd\n", num)i 4.以下程序通过指针实现求数组a中各元素的积,请在 填写正确内容 #include <stdio. h> main( inta[6]={1,2,3,4,5,6}; for(i=0;i<6;i++) *(p+1); printf("s=器d\n”,s); 、调试程序 要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果 何?上机调试之
·72· C 语言程序设计上机指导与同步训练 ·72· #include <stdio.h> #define SC(a) ___________________ //scanf(“%c”, &a) #define PR(b) ___________________ main( ) { char ch ; SC(ch); if (ch>=‘a’ && ch<=‘z’ ) ch=ch+32; PR(ch); printf(“\n” ); } 3. 以下程序的功能是:通过指针操作,找出三个整数中的最小值并输出,请在_______ 上填写正确内容。 #include “stdio.h” main() { int *pa, *pb , *pc ; int num , a , b, c ; pa =&a ;pb=&b ;pc=&c ; scanf(“%d %d %d\n” , pa, pb ,pc); printf(“%d,%d ,%d\n” , *pa, *pb ,*pc); num=*pa; if ( *pa > *pb ) ________________; if ( num > *pc ) _________________; printf( “Min= %d\n”, num); } 4. 以下程序通过指针实现求数组 a 中各元素的积,请在____________填写正确内容。 #include <stdio.h> main() { int a[6]={1,2,3,4,5,6}; int s, i,*p ; s=1; p=a; for (i=0;i<6;i++) _____________________;// s *= *(p+i); printf(“s=%d\n”,s); } 三、调试程序 要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果 如何?上机调试之
第一部分c语言程序设计上机指导 #include <stdio. h> int a b scanf(“a,各d”,p,q) printf("器d,器dn”,a,b) p 运行结果 错误 错误所在 应改为: 2. #include <stdio. h> i int *p,*q i int a b scanf(“d,告d”,*p,*q) (”d,暑a\n", printf(“暑d,d\n”,*p,*p) 正确 运行结果 错误 3.以下程序实现求数组中的元素的和。 #include <stdio. h>
第一部分 C 语言程序设计上机指导 ·73· ·73· 1. #include <stdio.h> main() { int *p ,*q ; int a , b ; printf(“Input a ,b”); scanf(“%d,%d”, p ,q); printf(“%d,%d\n”,a ,b); printf(“%d,%d\n”,*p ,*b); } 正确 运行结果: 错误 错误所在: 应改为: 2. #include <stdio.h> main() { int *p ,*q ; int a , b ; p = &a; q =&b scanf(“%d,%d”, *p ,*q); printf(“%d,%d\n”,a ,b); printf(“%d,%d\n”,*p ,*p); } 正确 运行结果: 错误 错误所在: 应改为: 3. 以下程序实现求数组中的元素的和。 #include <stdio.h> main() { int a[10]={1,2,3,4,5,6,7,8,9,0}; int sum ,*p ; sum=0; p=&a; while( p < p+10) s + = *p; printf(“sum=%d\n”,sum); }