「例6」阅读下列程序,写出程序运行后的输出结果。
# include
main()
{int a[][3]={1,2,3,4,5,6,7,8,9};
int i,j,s1= 0,s2= 0;
for(i= 0;i<3, i++)
for(j=0;j<3;j++){
if(i==j)sl+=a[i][j];
if(i+j==2) s2+=a[i][j];
}
printf(“sl=%ds2=%d\n”, sl,sZ);
}
首先将二维数组a的初值写成每行3个元素,由于程序只提供9个初值,a只有3行:
1 2 3
4 5 6
7 8 9
程序用a[i][j]引用a的元素,所以外循环i是控制行的循环,内循环j是控制列的循环,这两重循环控制遍历整个数组 a的全部元素。条件 i==j表示当行下标与列下标相等时,即是 a的主对角钱上的元素时,将它们累计到变量s1,所以s1的值为15.条件i+j==2用于控制行下标与列下标之和为行列下标之和为某个常数的元素是同在某条右高左低斜线上的元素。对于3行3列的二维数组来说,就是副对角线上的元素。将这些元素累计于变量s2,所以s2的值也是15.
「例7」阅读下列程序,简述程序的主要功能。
main()
{ int i,s[10],*p=&s[9];
for(i=0;i<10;i++) scanf(“%d”,&s[i]);
for(;p>=s;p——) print(“%d”,*p);
printf(“\n );
}
程序中定义的变量i用于循环控制,数组S用于存储读人的整数,指针变量p的初值指向数组S的末元素。程序的第一个循环用于顺序输入数组S的10个元素的情。从程序的第二个循环代码知,每循环一次,指针p减1,即指向数组的前一个元素,循环条件直至循环处理了数组的首元素后结束,循环体只是简单地输出指针当前所指的数组元素。所以该循环实现从数组的末元素开始逆序遍历数组输出。这样程序的功能可简述如下:
“顺序输入10个整数,并逆序输出它们的值。”
4.程序设计题
程序设计题是给出问题,要求考生自己独立编写程序。考生平时认真参加上机实习,自己编写程序,是能解答这类试题的基本条件。多数考生学了程序设计以后,能基本了解教材的内容,能解答大部分前述三种类型的试题,平时还能指出别人程序的错误,但由于很少自己动手,或不知道从何着手编写程序等原因,自己还一直不会编程序。简单程序的设计通常要包含两个步骤:首先是设想计算方法,即用什么方法来解决给定的计算问题;其次是将求解方法告诉计算机,命令计算机怎么做。第一步工作人们采用常人的思维习惯,而第二步工作必须采用计算机的思维习惯。对于程序设计的初学者来说,最困难的可能还是很难适应计算机程序的思维习惯,人们几乎无法承受程序必须将要计算机完成的计算过程描述得几乎绝对的精细和精确。但对计算机来说,这又是非常必要的。编写程序就是在向计算机讲话,非常精确地告诉计算机怎么做。
「例8」编一个程序,从名为“text.txt”的文本文件中读取一个字符显示在屏幕上。
本例题要求实现最简单的文件处理。如考生知道文件处理程序的编写要点,就能方便地写出程序。
文件处理程序有以下几个要点:
(l)在程序的开始处,用包含预处理命令,包含标准文件Stdio.h.定义文件指针变量和存储文件名的字符数组。如以下代码所示:
# include
file *fp /* 定义文件指针变量 fp*/
char fname「40」=“某文件名”;
(2)如文件名在程序执行时输入,可用以下代码:
prinif(“请输入文件名(包括文件的目录路径、文件的扩展名)\n);
scanf(“%s%*c”,fname);/*输入文件名及其随后的回车符。/
(3)使用文件前,必须先打开文件,常用的有两种打开方式:
老文件打开为了让程序从正文文件输入数据,用读方式打开,则用以下代码:
if((fp=fopen(fname,“r‘’))== NULL) {/* 为读打开*/