C程序设计实验报告
实验项目:
7.3.1练习1 冒泡排序法
7.3.1练习2 选择排序法
7.3.2练习1 杨辉三角(等腰)
7.3.2练习2 给定年月日,将其转换成这一年的第几天输出
7.3.3 判断回文数
姓名:熊晓东 实验地点:家 实验时间:2020.5.24
一、实验目的与要求
1、掌握一维和多维数组的定义和数组元素的引用方法。
2、了解一维和多维数组初始化的方法。
3、学习一维和多维数组的基本算法。
4、掌握字符数组的定义、初始化方法及其元素的引用方法。
5、掌握C语言提供的对字符串进行处理的基本库函数。
二、实验内容
1、实验练习:
1问题的简单描述:用冒泡排序法实现,对用随机函数产生的10个整数按升序排列。
2实验代码:
··· #include#include #include void sort1(int s[],int n) { int i,j; int temp; for(i=9;i>0;i++); for(j=0;j) if(s[j]>s[j+1]) { temp=s[j]; s[j]=s[j+1]; s[j+1]=temp; } } main() { int i,a[10]; srand((unsigned int )time(NULL)); printf("随机六生10个整数: \n"); for(i=0;i<10;i++) a[i] =rand()%100; for(i=0;i<10;i++) printf("%d ",a[i]); printf("ln"); sort1(a,10); printf("输出排序后的10个整数\n"); for(i=0;i<10;i++) printf("%d ",a[i]); }
3问题分析:无
2、实验练习:
1问题的简单描述:用选择排序法实现,对用随机函数产生的10个整数按升序排列 。
2实验代码:
··· #include#include #include sort2(int s[],int n) { int i,j,k; int temp ; for(i=0;i 1;i++) { for(k=i,j=i+1;j<=n-1;j++) { if(s[j]<s[k]) k=j; } if(k!=i) { temp=s[k]; s[k]=s[i]; s[i]=temp; } } } int main() { int i,a[10],n=10; srand( time(NULL)); printf("随机产生十个整数\n"); for(i=0;i<10;i++) { a[i]=rand(); } for(i=0;i<10;i++) { printf("%d" ,a[i]); printf("\t"); } printf("ln"); sort2(a,n); printf("该组数的升序排列为:\n"); for(i=0;i<10;i++) printf("%d",a[i]); }
3问题分析:在实验过程中还是会打错代码,要细心。
3、实验练习:杨辉三角(等腰)
1问题的简单描述:编写程序,从键盘输入行数,输出指定行数的杨辉三角形。
2实验代码:
··· #includemain() { int a[50][50],i,j,n; printf("请输入杨辉三角形的行数: ") ; scanf( "%d" ,&n); for(i=1;i<=n;i++) { a[i][i]=1; a[i][1]=1; } for(i=3;i<=n;i++) { for(j=2;j<=i-1;j++) a[i][j]=a[i-1][j-1]+a[i-1][j]; } for(i=1;i<=n;i++) { for(j=1;j<=i;j++) printf("%-4d",a[i][j]); printf("\n"); } }
3问题分析:数值要对齐,注意%。
4、实验练习:转换为第几天
1问题的简单描述:给定年月日,将其转换成这一年的第几天输出。
2实验代码:
··· #includeint day_tab[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,38,31,38,31,31,30,31,38,31}}; int day_year(int y,int m,int d) { int i,j,s=0;2020 (y%4==0&&y%100!=0||y%400==0)?(i=1):(i=0); for(j=1;j ) s=s+day_tab[i][j]; return (s=s+d); } int main() { int y,m,d; printf("Input year_month_day:"); scanf("%d %d %d" ,&y, &m,&d); printf("是这年的第%d天\n" ,day_year(y,m,d)); }
3问题分析:注意for的使用。
5、实验练习:判断回文数
1问题的简单描述:编写程序,判断某一字符串是不是"回文数"。
2实验代码:
··· #include#include<string.h> #define N 40 int main() { char str[N],ch='Y'; int i; int len; printf("Input a string:");scanf( "%s" ,&str); len=strlen(str); for(i=0;i<=len/2;i++) { if(str[i]!=str[len-i-1]) { ch='N'; break; } } if(ch=='Y') printf("%s是一个回文数\n",str); else printf("%s不是一个回文数\n",str); }
3问题分析:结合回文数的定义来思考问题。
三、实验小结
本次实验提醒我要注意代码输入的正确性,同时在输入程序时,要结合题目所给的定义来思考问题。