for(Fifcount=0;Fifcount<=2;Fifcount++)
if (Tencount*10+Twecount*20+Fifcount*50==100)
printf(\第%d种换法为:10元 %d张 20元 %d张 50元 %d张\\n\
++i,Tencount,Twecount,Fifcount);
}
【课后练习】 * 1、求1—100之间,能被5整除的数之和。 * * * 2、判断任一个数是否是质数。 * * * * * 3、输出一有规则的图形,如右图。 * * * * 【实验分析与讨论】 1、分析总结for语句,while语句,do-while语句的用法。 2、巧用break语句和continue语句。
实验五: 数组及其应用
【目的与要求】
1、掌握一维数组与二维数组的使用。 2、掌握字符数组与字符串的区别与使用。
3、熟练掌握与数组有关的算法(选择排序与冒泡排序、查找与插入)。
【实验内容】
一、输入一个整数,将其插入一含有9个数的有序序列中,确保插入后其仍然有序,。 1、算法分析:①将待插入的数与序列中的每个数进行比较,找到其插入的具体位置i; ②将从第i个数组元素开始,一直到原数组中的最后一个元素,整体往后
移,空出一空间来存储待插入的整数。
2、程序代码:
#include \
void main()
{int a[10]={2,5,7,11,14,19,21,33,67},i,k,m; printf(“原数组为:”);
for(i=0;i<9;i++) printf(“M”,a[i]); printf(“\\n请输入待插入的整数:”); scanf(“%d”,&m); for(i=0;i<9;i++)
if (m<=a[i]) break;//查找待插入的位置 for(k=9;k>=i;k--)
a[k]=a[k-1]; //移位,准备插入新的整数
a[i]=m; printf(“新数组为:”); for(i=0;i<10;i++) printf(“M”,a[i]); }
二、编程实现:将字符串str2连接到字符串str1 后,构成新的字符串str1。 1、算法分析:
本程序即实现字符串处理函数strcat()的功能。两字符串str1和str2进行连接,要注意的是字符串的结束标志。 2、程序代码: #include \ #include \ void main()
{char str1[40],str2[20],i,j,len1,len2;
printf(\请输入字符串str1:\ len1=strlen(str1);
printf(\请输入字符串str2:\ len2=strlen(str2);
for(i=len1,j=0;j printf(\新的字符串str1为:\ } 【课后练习】 1、 判断一方阵是不是对称矩阵。 2、 实现两个字符串拷贝的功能。 3、 运行折半查找法,在一个有序序列中查找某一特定的数。 【实验分析与讨论】 1、 分析两种基本排序算法的核心与两者的不同之处。 2、 在实现字符串处理函数时的一些注意事宜及其实现方法。 3、 讨论二维数组解决矩阵与行列式。 实验六: 函数及其应用 【目的与要求】 1、掌握C中函数的定义、调用及设计。 2、掌握函数嵌套调用、递归调用的设计。 3、掌握变量、函数的作用域及存储类。 【实验内容】 一、设计一个子函数对n个整数进行排序,由主函数从键盘接收若干个数,调用子函数进行排序,并在主函数中进行输出显示。 1、算法分析: ①子函数的设计 以两个参数来实现,一个是接收主函数传来的数组首地址,另一个是持排序的整数个数,如fun(int a[],int n); ②主函数的实现 定义一整型数组,从键盘上接收若干个整数,调用子函数fun,再将最后的结果输出。 2、程序代码: #include \void fun(int a[],int n) // 选择排序算法 {int i,j,t; for(i=0;i printf(“s=%f”,fac(m)/(fac(m-n)fac(n))); } 【课后练习】 1、 若正整数A恰好出现在其平方数的右侧,则称A为一个同构数。如:5,6,76。求100 以内的所有同构数。 要求:(1)编写一子函数int fun(int n),判断给定正整数n是不是同构数,若是, 返回1,否则,返回0。 (2)编写主函数,调用函数fun(),寻找并输出100以内的所有同构数。 (3)在输出同构数的同时,要输出其平方的值。 2、 运用递归,求任一个字符串的长度。 【实验分析与讨论】 1、 被调函数的实现及调用过程。 2、 简单递归问题的实现。 实验七:指针及其应用 【目的与要求】 1、了解指针的定义与应用。 2、掌握使用指针变量的程序设计。 3、 了解使用函数指针的程序设计。 4、 了解使用指针数组的程序设计。 【实现内容】 一、设计一程序,将两个变量的值进行交换。 1、 算法分析:(1)编写一个函数swap(int *p,int *q),交换两个参数指针所指的数据。 (2)编写主函数,调用函数swap,将两个变量的值进行交换。 2、 程序代码: #include “stdio.h” void swap(int *p,int *q); void main() {int a,b; printf(“请输入两个整数:”); scanf(“%d%d”,&a,&b); printf(“两个数交换前顺序为:a=%d,b=%d”,a,b); swap(&a,&b); printf(“两个数交换后顺序为:a=%d,b=%d”,a,b); } void swap(int *p,int *q) {int t; t=*p;*p=*q;*q=t;} 二、编程实现:运用指针将字符串str2连接到字符串str1 后,构成新的字符串str1。 1、算法分析: 本程序即实现字符串处理函数strcat()的功能。两字符串str1和str2进行连接,要注意的是字符串的结束标志,并运用指向字符串的指针来实现。 2、程序代码: #include \ #include \ void main() {char str1[20] ,str2[10],*p=str1,*q=str2 ,j,len1,len2; printf(\请输入字符串str1:\ len1=strlen(str1); p=p+len1-1; printf(\请输入字符串str2:\ len2=strlen(str2); for( j=0;j *(++p)=*(q++);str1[len1+len2]='\\0'; printf(\新的字符串str1为:\ } 【课后练习】 1、运用指向数组的指针,求一数组中所有元素之和。 2、 【实验分析与讨论】 实验八:结构体及其应用 【目的与要求】 1、了解结构体类型的定义。 2、掌握结构体类型变量的使用。 【实验内容】 有10个学生,每个学生包括学号、姓名、三门课的成绩,从键盘输入10个学生数据,要求输出三门课中每一门课的平均成绩,以及最高分学生的数据。 1、算法分析: 定义一个结构体类型,其中含有学号、姓名、三门课的成绩、总分数据;先后根据要求解决上述问题。 2、程序代码: #include \typedef struct stu