实验 指针
一、实验目的及要求
(1) 掌握C语言环境下指针的声明、定义和使用方法;
(2) 掌握指针和变量以及指针和数组的关系;
(3) 掌握指针、数组之间的关系;
(4) 掌握指针、函数之间的关系。
二、实验内容
1.熟悉指针的基本使用方法。
(1) 请仔细分析以下程序段,并上机测试运行结果,对测试结果进行分析说明。
1) 程序段一:
int main()
{
int i=3,j=6,k=9;
printf(“i=%d j=%d k=%d\n”,*(&i),j,k);
return 0;
}
2) 程序段二:(键盘输入:2,2.0)
int main(void)
{
int nA,*p;
float fB,*q;
p=&nA;
q=&fB;
scanf(“%d,%f”, p, q);
*p=nA*(*q);
printf(“nA is %d, p is %d and *p is %d\n”, nA, p,*p);
printf(“fB is %f, q is %d and *q is %d\n”, nA, q,*q);
printf(“p+1=%d q+1=%d\n”,p+1,q+1);
return 0;
}
3) 程序段三:
int main(void)
{
int nA,*p,**q,***r;
p=&nA;q=&p;r=&q;
printf(“Please input nA::\n”);
scanf(“%d”,**r);
printf(The results are :”);
printf(“nA’ value is %d,%d,%d,%d\n”,nA,*p,**q,***r);
printf(“nA,p,q,r’s value is %d,%d,%d,%d\n”,nA,p,q,r);
return 0;
}
2. 想使指针变量pt1指向变量nA和nB中的大者,pt2指向其小者,以下程序能否实现此目的?为什么?如果不行,请给出实现的方法。
void swap(int *p1,int *p2)
{
int *p;
p=p1;p1=p2;p2=p;
}
int main(void)
{
int nA,nB;
int *pt1,*pt2;
scanf(“%d,%d”,&nA,&nB);
pt1=&nA;pt2=&nB;
if (nA<nB) swap(pt1,pt2);
printf(“%d,%d\n”,*pt1,*pt2);
return 0;
}
3.完成教材P248_1,2,3,P250_1,2和P251_2。
第二篇:C语言程序实验报告最简单的C语言程序设计
数学与软件科学学院 实验报告
学期:2010至2011第 2 学期 20##年 9 月 19 日
课程名称:C语言设计 专业:信息与计算科学
班级 2010级5班 实验编号: 实验三
实验项目:最简单的C语言程序设计 指导教师
姓名: 学号: 实验成绩:
实验目的:
(1) 掌握顺序结构的程序设计概念、方法及各种赋值语句的使用方法;
(2) 掌握基本的C语言程序设计中的输入、输出语句的使用方法。
实验内容:
1. 熟悉表3-1~表3-5中给出的格式化输入、输出格式控制符及其使用方法,并上机测试教材表例3-1~例3-10,并观察C语言中的数据格式化输入、输出规律和方法;P72 3-13
2.输入并编辑以下程序代码:
int main(void)
{
int nA,nB;
float fC,fD;
long lE,lF;
unsigned int u,v;
char ch1,ch2;
scanf("%d,%d",nA,nB);
scanf("%f,%f",fC,fD);
scanf("%ld,%ld",lE,lF);
scanf("%o,%o",u,v);
scanf("%c,%c",ch1,ch2);
printf("\n");
printf("a=%7d,b=%7d\n",&nA,&nB
printf("c=%10.2f,d=%10.2\n",&lF,&fD);
printf("e=%17ld,f=%17ld\n",&lE,&lF);
printf("u=%o,v=%o\n",&u,&v);
printf("c1=%c,c2=%c\n",&ch1,&ch2);
return 0;
}
输入格式时要注意,八进制数之后的字符类型输入格式如下:
12,25a,b确定
请分析和观察代码有无错误,如果有,有哪些?指出错误原因,并修正之,使其可以按照预想的目的输入相应数据并输出结果;
4. 用getchar()函数读入两个字符ch1,ch2,然后分别用putchar()和printf()函数输出这两个字符。试分析思考如下问题:(a)ch1和ch2的数据类型用什么?(b) 要求输出ch1和ch2的ASCII码,应如何处理?是用printf ()还是用putchar()?(c) 整型变量是否在任何情况下都可以相互代替?
5. 请编写和实现教材习题3-15(第一个图案)。
实验准备:
(1) 复习相关内容,阅读并分析1、2、3中的相关程序代码;
(2) 对4、5题进行程序代码编写。
实验步骤:
1. 打开TC,在file菜单下选择new。
2. 输入
int main(void)
{
int nA,nB;
float fC,fD;
long lE,lF;
unsigned int u,v;
char ch1,ch2;
scanf("%d,%d",nA,nB);
scanf("%f,%f",fC,fD);
scanf("%ld,%ld",lE,lF);
scanf("%o,%o",u,v);
scanf("%c,%c",ch1,ch2);
printf("\n");
printf("a=%7d,b=%7d\n",&nA,&nB
printf("c=%10.2f,d=%10.2\n",&lF,&fD);
printf("e=%17ld,f=%17ld\n",&lE,&lF);
printf("u=%o,v=%o\n",&u,&v);
printf("c1=%c,c2=%c\n",&ch1,&ch2);
return 0;
}
3. 按F9,根据报错提示对代码进行修改。
修改结果为:
int main(void)
{
int nA,nB;
float fC,fD;
long lE,lF;
unsigned int u,v;
char ch1,ch2;
clrscr();
scanf("%d,%d,%f,%f,%ld,%ld,%o,%o",&nA,&nB,%c,%c",&nA,&nB,,&fC,&fD,&lE,&lF,&u,&v,&ch1,&ch2);
printf("\n");
printf("a=|%7d|,b=|%7d|\n",nA,nB);
printf("c=|%10.2f|,d=|%10.2|\n",lF,fD);
printf("e=|%17ld|,f=|%17ld|\n",lE,lF);
printf("u=|%o|,v=|%o|\n",u,v);
printf("c1=|%c|,c2=|%c|\n",ch1,ch2);
getch();
return 0;
}
4. 按住ctrl+F9运行该程序,运行结果如图一(见实验结果)
5. 按F10进入菜单,在file菜单下选择new。
6. 输入
int main(void)
{ printf("*********"); printf(" *** \n");
printf("* *"); printf(" * * \n");
printf("* *"); printf("* *\n");
printf("* *"); printf("* *\n");
printf("* *"); printf("* *\n");
printf("* *"); printf(" * * \n");
printf("*********"); printf(" *** \n");
printf(" * "); printf(" * \n");
printf(" *** "); printf(" * * \n");
printf(" ***** "); printf(" * * \n");
printf("******* "); printf("* *\n");
printf(" * "); printf(" * * \n");
printf(" * "); printf(" * * \n");
printf(" * "); printf(" * \n");
getch();
return 0;
}
7. 按住ctrl+F9运行该程序,运行结果如图二(见实验结果)
8. 按F10进入菜单,在file菜单下选择new。
9. 输入
#include<stdio.h>
int main(void)
{
int i,j;
float x,y;
char ch;
clrscr();
scanf("%2d%f%3*d%f%c%*d%d",&i,&x,&y,&ch,&j);
printf("i=%d j=%d\n",i,j);
printf("x=%f y=%f\n",x,y);
printf("ch=%c\n",ch);
getch();
return 0;
}
10. 按住ctrl+F9运行该程序,运行结果如图三(见实验结果)
11. 按F10进入菜单,在file菜单下选择new。
12. 输入
int main(void)
{
int n=0,S,C;
clrscr();
printf("n S C\n");
S=n*n;C=S*n;
printf("%d %5d %5d\n",n,S,C);
++n; S=n*n;C=S*n;
printf("%d %5d %5d\n",n,S,C);
++n; S=n*n;C=S*n;
printf("%d %5d %5d\n",n,S,C);
++n; S=n*n;C=S*n;
printf("%d %5d %5d\n",n,S,C);
++n; S=n*n;C=S*n;
printf("%d %5d %5d\n",n,S,C);
++n; S=n*n;C=S*n;
printf("%d %5d %5d\n",n,S,C);
++n; S=n*n;C=S*n;
printf("%d %5d %5d\n",n,S,C);
++n; S=n*n;C=S*n;
printf("%d %5d %5d\n",n,S,C);
++n; S=n*n;C=S*n;
printf("%d %5d %5d\n",n,S,C);
++n; S=n*n;C=S*n;
printf("%d %5d %5d\n",n,S,C);
++n; S=n*n;C=S*n;
printf("%d %5d %5d\n",n,S,C);
getch();
return 0;
}
13. 按住ctrl+F9运行该程序,运行结果如图四(见实验结果)
14. 按F10进入菜单,在file菜单下选择new。
15. 输入
int main(void)
{
char ch1,ch2;
clrscr();
printf("Please input 2 chars:\n");
ch1=getchar();ch2=getchar();
printf("%d,%d\n",ch1,ch2);
putchar(ch1); putchar(ch2);
getch();
return 0;
}
16. 按住ctrl+F9运行该程序,运行结果如图五(见实验结果)
实验结果:
图一
图二
图三
图四
图五