高级语言程序设计实验教案(任务书)(3)

2018-12-21 11:58

相关知识:①二维数组的定义和初始化;②使用二重循环对二维数组元素的访问;③求最值时相关变量初值的设

定。

4.数组中已存互不相同的10个整数,从键盘输入一个整数,输出与该值相同的数组元素下标。 编程点拨: ① 输入要查找的变量x的值; ② 使用循环将输入的数和数组元素逐个进行比较,若找到,则提前退出循环; ③ 根据循环是正常结束还是提前结束来判断是否找到x。 c50104.c部分源代码: #include void main( )

{ int i, x, a[10]={1,2,3,4,5,6,7,8,9,10};

/*输入x变量的值 */ for ( i=0; i<10; i++ ) printf(\ printf(\

/* 循环查找与x相等的元素 */ if ( ) printf(\ /* 输出查找结论 ,输出下标值 */ else printf(\}

5.编写程序,任意输入10个整数的数列,先将整数按照从大到小的顺序进行排序,然后输入一个整数插入到数列中,使数列保持从大到小的顺序。

编程点拨: ① 定义数组时多开辟一个存储单元; ② 找合适的插入位置;

j=3

下标=

a

0

1

2

3

4

5

6

7

8

9

10

20 18 16 14 12 10 8 6 4 2 k 15 找合适的插入位置:j=3

j=0 a[j] ≥k? 即20 ≥15 ? 是 j++ j=1 a[j] ≥k? 即18 ≥15 ? 是 j++ j=2 a[j] ≥k? 即16 ≥15 ? 是 j++

j=3 a[j] ≥k? 即14 ≥15 ? 不是,结束循环

while( a[j]>=k && j<10 ) j++;

找不到比k小的元素时也要退出循环

③ 向右移动插入点后的元素;先把a[9]移到a[10],a[8]移到a[9],…a[i]移到a[i+1],直到把a[j]移到

a[j+1],即:i=j停止移动元素。

for(i=9;i>=j;i-- ) a[i+1]=a[i];

第11页

下标=

a 0 1 2 3 4 5 6 7

8 9 10

20 18 16 14 12 10 8 6 4 2 ④ 插入。 k 15 c50105.c部分源代码: #include #define N 11 void main() { int i,j,a[N];

printf(“Please input 10 numbers:”); for (i=0; i

scanf(“%d”,&a[i]); /*乱序输入10个整数*/ …… }

相关知识:①比较排序法、选择排序法和冒泡排序法;②数据元素的插入。 6.输入十个互不相同的整数并存在数组中,找出最大元素,并删除。 编程点拨: ① 求最大值所在元素下标:不必用max记住最大值,只要用k记住最大值所在的元素下标; ② 删除最大值:从最大值开始将其后面元素依次前移一个位置。

下标=

a

0 1 2 3 4 5 6 7 8 9 10

2 8 16 14 1 10 8 16 4 20 6 部分源代码: k=0;

if ( a[k]

k=1; 执行 if ( a[k]

k=2; 不执行 if ( a[k]

k=3; 执行

k=0;

for ( i=1; i<10; i++ ) if ( a[k]

相关知识:①删除数组元素的概念;②移动数组元素的算法;③求最大值位置的算法。

7. 以下c50107.c程序的功能是:从键盘上输入若干个学生的成绩,统计计算出平均成绩,并输出低于平均分的学生成绩,用输入负数结束输入。请填空:

#include void main( )

{ float x[1000], sum=0.0, ave, a; int n=0, i;

printf (\ mark : \\n\

第12页

scanf(\

while (a>=0.0 && n<1000)

{ sum+= ; x[n]= ; n++; scanf(\ }

ave= ; printf (\ printf (\ for (i=0; i

if ( ) printf(\}

8. 综合编程题:打印如下杨辉三角形

1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1

编程点拨:

杨辉三角形有如下特点: ① ② ③

只有下半三角形有确定的值; 第一列和对角线上的元素值都是1;

其它元素值均是前一行同一列元素与前一行前一列元素之和。

9.调试下列c50201.c程序,使之具有如下功能:任意输入两个字符串(如:“abc 123”和“china”),并存放在a,b两个数组中。然后把较短的字符串放在a数组,较长的字符串放在b数组。并输出。 #include #include void main()

{ char a[10],b[10]; int c,d,k,ch; scanf(\ scanf(\ printf(\ c=strlen(a); d=strlen(b); if(c>d)

for(k=0;k

{ ch=a[k];a[k]=b[k];b[k]=ch;} printf(\ printf(\ }

相关知识:程序中的strlen()是库函数,功能是求字符串的长度,它的原型保存在头文件\中。调试时注意

库函数的调用方法,不同的字符串输入方法,通过错误提示发现程序中的错误。

10.阅读下面的c50202.c程序,然后回答后面的问题: #include #include

第13页

void main( ) { }

编辑、运行该程序,然后分别输入 Country 和side。请问: ① 程序执行的结果是什么? ② 该程序的功能是什么?

相关知识:① 串结束符?\\0?;② 自编写库函数。

11.填空完成c50203.c程序,使其功能是对从键盘上输入的两个字符串进行比较,然后输出两个字符串中第一个不相同字符的ASCII码之差。例如:输入的两个字符串分别为abcdefg和abceef,则输出为-1。程序如下:

#include

void main ( )

{ char str1[100],str2[100]; int i,s;

printf(\ printf(“\\n Input string 2:\\n”);gets(str2); i= (1) ;

while((str1[i]==str2[i])&&(str1[i]!= (2) )) i++; s= (3) ; printf(\ }

12.填空完成c50204.c程序,使其的功能是统计从终端输入字符中每个大写字母的个数。用#号作为输入结束标志。程序如下:

#include #include void main ( )

{ int num[26],i; char c; for (i=0;i<26;i++) num[i]=0;

while ( (1) != '#') /* 统计从终端输入的大写字母个数*/ if (isupper(c)) num[c-65] (2) ;

for (i=0;i<26;i++) /* 输出大写字母和该字母的个数*/ if (num[i])printf(\ (3) ,num[i]); }

13.编写程序,输入若干个字符串,求出每个字符串的长度,并打印最长一个字符串的内容。以“stop”作为输入的最

char s1[80], s2[40]; int i = 0, j = 0;

printf(\ scanf(\

printf(\ scanf(\ while (s1[i]!= '\\0' )

i++;

s1[i++]=s2[j ++];

while (s2[j]!= '\\0' )

s1[i]= '\\0';

printf(\

第14页

后一个字符串。

相关知识:

① 字符数组的输入输出可以有两种方法:

? 逐个字符输入输出。用格式符“%c”输入或输出一个字符,此时输入输出函数中的输入输出项是数组元素

名,而不是字符数组名;

? 将整个字符串一次输入或输出。用“%s”格式符,意思是输出字符串(string),此时输入输出函数中的输入

输出项是字符数组名,而不是数组元素名。写成下面这样是不对的:printf(\,c[0]);

② gets()函数和scanf()函数输入字符串的区别,puts()函数和printf()函数输出字符串的区别; ③ 求每个字符串的长度函数strlen()的使用,字符串比较函数strcmp()的使用; ④ 二维数组处理多个字符串。

14.编写程序,输入字符串s1和s2以及插入位置f,在字符串s1?中的指定位置f处插入字符串s2。

如:输入\、\和位置3,则输出:\。

实验五 函数与编译预处理

一、实验目的

1. 掌握定义函数的方法。

2. 掌握函数实参与形参的对应关系以及“值传递”的方法。 3. 掌握函数的嵌套调用和递归调用的方法。

4. 掌握全局变量和局部变量,动态变量、静态变量的概念和使用方法。

二、实验内容

1. 阅读c60101.c程序,通过调试该程序,熟悉函数的调用方法及单步跟踪键F7和F8的不同。 #include void main()

{ void fun(int i, int j, int k); int x,y,z; x=y=z=6; fun(x,y,z);

printf(\}

void fun(int i, int j, int k) { int t; t=(i+j+k)*2; printf(\}

2. 阅读c60102.c程序,注意在调试时F11和F10的区别,还要注意函数调用过程中形参、实参的关系。 #include void main() { int x=10,y=20;

void swap (int ,int);

printf(\swap(x,y);

printf(\ }

void swap (int m,int n)

第15页


高级语言程序设计实验教案(任务书)(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:地理人教七上(2012年新编)《第四节 世界的气候》习题2

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: