实验结论
Part1: 验证性内容
这部分自行运行程序,并理解体会函数的定义、声明、调用方法。无需写在实验博客中。
其中,对于验证性内容2,如基于拓展思考部分做了编程实践尝试,可以将这部分分享写进实验博客。
Part1: 验证性内容
这部分自行运行程序,并理解体会函数的定义、声明、调用方法。无需写在实验博客中。
其中,对于验证性内容2,如基于拓展思考部分做了编程实践尝试,可以将这部分分享写进实验博客。
Part2:附上补足后的程序源码以及运行测试结果截图
blank1.cpp
//寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。 // 例如,输入6和21,则输出为:7 11 13 17 19。 #include <stdio.h> #include <stdlib.h> #define N 1000 int fun(int n,int m,int bb[N]) { int i,j,k=0,flag; for(j=n;j<=m;j++) { flag=1; // flag在C语言中没有特定的含义,但是我们一般将它作为标记使用。比如设立判断条件,或者作为跳出循环的依据。 for(i=2;i<j;i++) if(j%i==0) { flag=0; break; } if(flag!=0) bb[k++]=j; } return k; } int main(){ int n=0,m=0,i,k,bb[N]; //n,m为首位和末尾数,j为n,m间数字,k为素数个数 scanf("%d",&n); scanf("%d",&m); for(i=0;i<m-n;i++) bb[i]=0; k=fun(n, m,bb); //在调用函数的时候,参数都是先定义,后调用,调用时不加参数类型 //调用数组 数组作为函数参数传递的时候只要是数组名就可以了,因为数组名本身就是数组的首地址 for(i=0;i<k;i++) printf("%4d",bb[i]); system("pause"); return 0; }
blank2.cpp
//编程输出n阶左上拐角矩阵。 #include<stdio.h> #include<stdlib.h> #define N 100 void fun(/*blank1*/int x[N][N],int n) { int i,j; for(i=1;i<=n;i++) for(j=1;j<=n;j++) if( i>=j /*blank2*/) x[i][j]=i; else x[i][j]= j/*blank3*/ ; } int main() { int n,i,j,a[N][N]; scanf("%d",&n); fun(/*blank4*/ a,n); for(i=1;i<=n;i++) { for(j=1;j<=n;j++) printf("%d ",a[i][j]); printf("\n"); } system("pause"); return 0; }
blank3.cpp
// 函数fun()的功能是: 找出能够被x整除并且是偶数的数, // 把这些数保存在数组bb中,并按从大到小的顺序输出。 // 例如,当x=20时,依次输出: 20 10 4 2。 #include <stdio.h> #include <stdlib.h> void fun(int k,int bb[]) //k为x即输入的数字,bb[]是根据x分配的空间 { int i; int j=0; //i为从 1--k的数,j为统计的个数 for(/*blank1*/i=1; i<=k; i++) { if( /*blank2*/k%i==0&&i%2==0 ) bb[j++]=i; //能够被x整除并且是偶数的数 } for(i=j-1/*blank3*/; i>=0; i--) //按从大到小的顺序输出,此处i为统计数 printf("%d ",bb[i]); } int main() { int x, *t; scanf("%d", &x); // 向系统申请sizeof(int)*x个字节的内存空间 // 如果申请成功,将系统分配的内存的首地址赋值给t t = (int *) malloc(sizeof(int)*x); //malloc 是内存分配 sizeof(int)*(X) 是求一个字节数的过程 //sizeof(int)就是int类型的字节数,再*(X),其实就是连续的X个int型数的空间所含的字节数 //前面二者合起来就是分配了大小为X个int型的空间所含的字节数 fun(x,t); system("pause"); return 0; }
blank4.cpp
#include <stdio.h> #include <stdlib.h> const int N=4; void output(char x[], int n); // 函数声明 void fun(char px[N]);// 排序函数声明 // 补足代码1 // 。。。 int main() { char string[N] = {'2','0','1','9'}; int i; printf("排序前: \n"); output(string, N); //采用动态字符数组来定义字符串类string fun(string); // 调用排序函数对字符数组中的字符由大到小排序 // 补足代码2 // 。。。 printf("\n排序后: \n"); output(string, N); printf("\n"); system("pause"); return 0; } // 函数定义 // 函数功能描述:输出包含有n个元素的字符数组元素 // 形参:字符数组,以及字符数组元素个数 void output(char x[],int n) { int i; for(i=0; i<N; i++) printf("%c", x[i]); } // 函数定义 // 函数功能描述:对一组字符由大到小排序 // 形参:字符数组,以及字符数组元素个数 // 补足代码3 // 。。。 void fun(char px[N]) { //z为字符串,n为 一共需要进行的趟数 char z;int n,m; for(n=0;n<N-1;n++) { // 进行N-1次循环 实现N-1趟比较 for(m=0;m<N-n-1;m++){ // 在每一趟中进行比较 // 此时m为数组中各元素地址 if(px[m]<px[m+1]) { z=px[m]; px[m]=px[m+1]; px[m+1]=z; }}} }
实验总结与体会
1.flag在C语言中没有特定的含义,但是我们一般将它作为标记使用。比如设立判断条件,或者作为跳出循环的依据。
2.k=fun(n, m,bb);
//在调用函数的时候,参数都是先定义,后调用,调用时不加参数类型
//调用数组 数组作为函数参数传递的时候只要是数组名就可以了,因为数组名本身就是数组的首地址
//在调用函数的时候,参数都是先定义,后调用,调用时不加参数类型
//调用数组 数组作为函数参数传递的时候只要是数组名就可以了,因为数组名本身就是数组的首地址
3. t = (int *) malloc(sizeof(int)*x);
//malloc 是内存分配 sizeof(int)*(X) 是求一个字节数的过程
//sizeof(int)就是int类型的字节数,再*(X),其实就是连续的X个int型数的空间所含的字节数
//前面二者合起来就是分配了大小为X个int型的空间所含的字节数
//malloc 是内存分配 sizeof(int)*(X) 是求一个字节数的过程
//sizeof(int)就是int类型的字节数,再*(X),其实就是连续的X个int型数的空间所含的字节数
//前面二者合起来就是分配了大小为X个int型的空间所含的字节数
4.//采用动态字符数组来定义字符串类string
5.冒泡排序基本结构框架
6.‘a’为字符,“a”为字符串
strcmp是用来比较字符串大小的