实验4-数组
任务1
task1.1
#include<stdio.h>
const int N = 4;
int main() {
int a[N] ={2, 0, 2, 1};
char b[N] = {'2','0','1','1'};
int i;
printf("sizeof(int) = %d\n", sizeof(int));
printf("sizeof(char) = %d\n", sizeof(char));
printf("\n");
// 输出数组a中每个元素的地址(以十六进制显示)、元素值
for (i = 0; i < N; ++i)
printf("%x: %d\n", &a[i], a[i]);
// 输出数组b中每个元素的地址(以十六进制显示)、元素值
for (i = 0; i < N; ++i)
printf("%x: %c\n", &b[i], b[i]);
return 0;
}

- int型数组,在内存中连续储存,每个元素占4个内存字节单元
- char型数组,在内存中连续储存,每个元素占1个内存字节单元
task1.2
#include <stdio.h>
int main()
{
int a[2][3] = {{1, 2, 3}, {4, 5, 6}};
char b[2][3] = {{'1', '2', '3'}, {'4', '5', '6'}};
int i, j; // 输出二维数组a中每个元素的地址(以十六进制显示)、元素值
for (i = 0; i < 2; ++i)
for (j = 0; j < 3; ++j)
printf("%x: %d\n", &a[i][j], a[i][j]);
printf("\n"); // 输出二维数组b中每个元素的地址(以十六进制显示)、元素值
for (i = 0; i < 2; ++i)
for (j = 0; j < 3; ++j)
printf("%x: %c\n", &b[i][j], b[i][j]);
}

- int型二维数组,在内存中连续储存,每个元素占4个内存字节单元
- char型二维数组,在内存中连续储存,每个元素占1个内存字节单元
实验任务2
//寻找两个整数之间的所有素数(包括这两个整数),把结果保存在数组bb中,函数返回素数的个数。
// 例如,输入6和21,则输出为:7 11 13 17 19。
#include<stdio.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;
for(i = 2;i<j;i++){
if(j%i==0){
flag = 0;
break;
}
}
if(flag ==1){
bb[k++] = j;
}
}
return k;
}
int main(){
int n = 0,m = 0,i,k,bb[N];
scanf("%d %d",&n,&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]);
return 0;
}


实验任务3
//find_max的定义 使其实现查找数组的最大值并返回。
#include<stdio.h>
const int N = 5;
int find_max(int x[],int n);
void input(int x[],int n);
void output(int x[],int n);
int main(){
int a[N]; //太小了吧!!
int max;
input(a, N);
output(a,N);
max = find_max(a,N);
printf("max = %d\n", max);
return 0;
}
//下为函数定义
void input(int x[], int n)
{
int i;
for (i = 0; i < n; ++i)
scanf("%d", &x[i]);
}
void output(int x[], int n)
{
int i;
for (i = 0; i < n; ++i)
printf("%d ", x[i]);
printf("\n");
}
int find_max(int x[], int n){
int i,temp;
for(i=0;i<n;i++){
if(x[i]>=x[0]){
temp = x[i];
x[i] = x[0];
x[0] = temp;
}
}
return x[0];
}

实验任务4
#include <stdio.h>
void dec2n(int x, int n); // 函数声明
int main()
{
int x;
printf("输入一个十进制整数: ");
scanf("%d", &x);
dec2n(x, 2); // 函数调用: 把x转换成二进制输出
dec2n(x, 8); // 函数调用: 把x转换成八进制输出
dec2n(x, 16); // 函数调用: 把x转换成十六进制输出
return 0;
}
// 函数定义
// 功能: 把十进制数x转换n进制,打印输出
void dec2n(int x, int n) {
int i=0,j;
int N[100];
char M[100];
while(x!=0){
N[i] = x % n ;
x = x /n ;
i++;
}
for(j=0;j<i;j++){
if(N[j]>=10)
{
switch (N[j]){
case 10 : M[j] = 'A';
break;
case 11 : M[j] = 'B';
break;
case 12 : M[j] = 'C';
break;
case 13 : M[j] = 'D';
break;
case 14 : M[j] = 'E';
break;
case 15 : M[j] = 'F';
break;
}
}
else
M[j] = N[j]+'0'; //呜呜呜呜
}
for(j=i-1;j>=0;j--){
printf("%c",M[j]);
}
printf("\n");
}

实验任务5
#include<stdio.h>
int sq[100][100];
int min(int i,int j){
return i>j?j:i;
}
int main(){
int n,i,j;
while( scanf("%d",&n)!=EOF){
for(i=0;i<n;i++){
for(j=0;j<n;j++)
sq[i][j] = min(i,j)+1;
}
for(i=0;i<n;i++){
for(j=0;j<n;j++)
printf("%d",sq[i][j]);
printf("\n");
}
}
}

总结吧
- 实验任务4 在> //呜呜呜呜 前用了强制类型转化,把数字改成了字母,挺帅的
- 实验5也挺帅的hhh
补 忘了多组了

浙公网安备 33010602011771号