重庆邮电大学移通学院
结果:
i=5 i=2 i=2 i=4 i=2
6. 写出下面程序的功能。
func (int n) { int i,j,k;
i=n/100; j=n/10-i*10 ; k=n ;
if (i*100+j*10+k) == i*i*i+j*j*j+k*k*k) return n ; return 0; }
main ( ) { int n,k ;
for (n=100; n<1000 ; n++)
if (k=func(n)) printf(“%d”,k) ; }
结果:
153370371407
- 16 - 16
重庆邮电大学移通学院
第四章 指 针
4.1 实验目的
(1) 掌握指针的概念,掌握定义和使用指针变量的方法。 (2) 掌握使用数组的指针和指向数组的指针变量。 (3) 掌握使用字符串的指针和指向字符串的指针变量。 (4) 学习对多文件程序的编译和运行。
4.2 实验要求
(1) 在报告中记录建立、保存C程序实习过程。 (2) 完成典型题目,分析遇到的困难和实验中的收获。
4.3 实验基本内容
1 编程
1.1 编一程序,输入月份号,输出该月的英文月名。例如,输入“3”,则输出“March”,要求用指针数组处理。
(1) 题目分析: 选择调换字符以及数字用选择以及指针实现。
(2) 程序: (3) 运行结果:
1.2 有一字符串,包含n个字符。写一函数,将此字符串中从第m个字符开始的全部字符
复制成为另一个字符串。
(1) 题目分析: 要求从输入字符串中截断重组字符, 考虑用指针来进行。
(2) 程序:
(3) 运行结果:
- 17 -
17
重庆邮电大学移通学院
2 思考题
1.若要对a进行自减运算,则a应有下面说明
A 。
A)int p[3]; B)int k; C)char *a[3] D)int b[10]; int *a=p; int *a=&k; int *a=b+1; 2. 以下选项中,对指针变量p的不正确操作是
C 。
A)int a[3], *p; B)int a[5], *p; C)int a[5]; D)int a[5]
p=&a; p=a; int *p=a=100; int *p1,*p2=a; *p1=*p2;
3.下面程序段的输出是 。
int a[ ]={2,4,6,8,10,12,14,16,18,20,22,24},*q[4],k; for (k=01 k<4; k++) q[k]=&a[k*3]; printf(“%d\\n”,q[3][0]);
A)8 B)16 C)20 D)输出不合法
B4.下面程序的运行结果是
B 。
main ( )
{ int x[5]={2,4,6,8,10}, *p, **pp ; p=x , pp = &p ;
printf(“%d”,*(p++)); printf(“=”,**pp); }
A)4 4 B)2 4 C)2 2 D)4 6
5. 若有定义int x[4][3]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*p)[3]=x ; 则能够正确表示数组元素
- 18 -
18
重庆邮电大学移通学院
x[1][2]的表达式是
C 。
A)*((*p+1)[2]) B)(*p+1)+2 C)*(*(p+5)) D)*(*(p+1)+2)
6.写出下面程序的运行结果。
func(char *s,char a,int n) { int j;
*s=a; j=n ;
while (*s
main ( )
{ char c[6] ; int i ;
for (i=1; i<=5 ; i++) *(c+1)=?A?+i+1; printf(“%d\\n”,fun(c,?E?,5)); }
- 19 - 19
重庆邮电大学移通学院
第五章 综合练习
5.1 实验目的
(1) 掌握指针的概念,掌握定义和使用指针变量的方法。 (2) 掌握使用数组的指针和指向数组的指针变量。 (3) 掌握使用字符串的指针和指向字符串的指针变量。 (4) 学习对多文件程序的编译和运行。
5.2 实验要求
(1) 在报告中记录建立、保存C程序实习过程。 (2) 完成典型题目,分析遇到的困难和实验中的收获。
5.3 实验基本内容
1 编程
1.1 编写一个程序计算下式之和。
1+(1+2)+(1+2+3)+(1+2+3+4)+…...+(1+2+3+4+5+6+7+8+9+10)
(1) 题目分析: 这是道计算求和的问题,要求的是循环和算术运算符的运用我们继续用for语句了进行循环的计算。以及用算术运算符求结果。
(2) 程序: (3) 运行结果:
- 20 -
20