实验四c语言数组应用
#include<stdio.h>
#define N 4
void test1()
{
int a[N] = {1,9,8,4};
int i;
printf("sizeof(a) = %d\n",sizeof(a));
for(i = 0;i < N;++i){
printf("%p:%d\n",&a[i],a[i]);
}
printf("a = %p\n",a);
}
void test2()
{
char b[N] = {'1','9','8','4'};
int i;
printf("sizeof(b) = %d\n",sizeof(b));
for(i = 0;i < N;++i){
printf("%p:%c\n",&b[i],b[i]);
}
printf("b = %p",b);
}
int main(){
printf("测试1:int类型一维数组\n");
test1();
printf("\n测试2:char类型一维数组\n");
test2();
return 0;
}

#include<stdio.h>
#define N 2
#define M 4
void test1()
{
int a[N][M] = {{1,9,8,4},{2,0,4,9}};
int i,j;
printf("sizeof(a)= %d\n",sizeof(a));
for(i = 0;i<N;++i){
for(j = 0;j<M;++j){
printf("%p:%d\n",&a[i][j],a[i][j]);
}
}
printf("\n");
printf("a = %p\n",a);
printf("a[0] = %p\n",a[0]);
printf("a[1] = %p\n",a[1]);
printf("\n");
}
void test2()
{ char b[N][M] = {{'1','9','8','4'},{'2','0','4','9'}};
int i,j;
printf("sizeof(b) = %d\n",sizeof(b));
for(i = 0;i<N;++i){
for(j = 0;j < M;++j){
printf("%p:%c\n",&b[i][j],b[i][j]);
}
}
printf("b = %p\n",b);
printf("b[0] = %p\n",b[0]);
printf("b[1] = %p\n",b[1]);
}
int main()
{
printf("测试1:int类型两维数组\n");
test1();
printf("\n测试2:char;类型两维数组\n");
test2();
return 0;
}

int型数组a,在内存中是连续存放的,每个元素占用4个内存字节单元,数组名a与&a[0]对应的值一样。
char型数组b,在内存中是连续存放的,每个元素占用1个内存字节单元,数组名b与&b[0]对应的值一样。
2.实验二
#include<stdio.h>
#include<string.h>
#define N 80
void swap_str(char s1[N],char s[N]);
void test1();
void test2();
int main()
{
printf("测试1:用两个一维char数组,实现两个字符串交换\n");
test1();
printf("\n测试2:用二维char数组,实现两个字符串交换\n");
test2();
return 0;
}
void test1() {
char views1[N] = "hey, C, I hate u.";
char views2[N] = "hey, C, I love u.";
printf("交换前: \n");
puts(views1);
puts(views2);
swap_str(views1, views2);
printf("交换后: \n");
puts(views1);
puts(views2);
}
void test2() {
char views[2][N] = {"hey, C, I hate u.",
"hey, C, I love u."};
printf("交换前: \n");
puts(views[0]);
puts(views[1]);
swap_str(views[0], views[1]);
printf("交换后: \n");
puts(views[0]);
puts(views[1]);
}
void swap_str(char s1[N], char s2[N]) {
char tmp[N];
strcpy(tmp, s1);
strcpy(s1, s2);
strcpy(s2, tmp);
}

3.实验三
#include <stdio.h>
#define N 80
int count(char x[]);
int main() {
char words[N+1];
int n;
while(gets(words) != NULL) {
n = count(words);
printf("单词数: %d\n\n", n);
}
return 0;
}
int count(char x[]) {
int i;
int word_flag = 0;
int number = 0;
for(i = 0; x[i] != '\0'; i++) {
if(x[i] == ' ')
word_flag = 0;
else if(word_flag == 0) {
word_flag = 1;
number++;
}
}
return number;
}

4.实验四
#include<stdio.h>
#define N 100
void dec_to_n(int x,int n);
int main()
{
int x;
printf("输入一个十进制整数:");
while(scanf("%d",&x) != EOF){
dec_to_n(x,2);
dec_to_n(x,8);
dec_to_n(x,16);
printf("\n输入一个十进制的整数:");
}
return 0;
}
void dec_to_n(int x,int n)
{
char ans[N];
char map[16]={"0123456789ABCDEF"};
int r;
int cnt = 0;
int i;
do{
r = x %n;
ans[cnt++]=map[r];
x=x/n;
}while(x != 0);
for(i = cnt-1;i>= 0;--i)
printf("%c",ans[i]);
printf("\n");
return 0;
}

5.实验五
include<stdio.h> #define N 5 void input(int x[],int n); void output(int x[],int n); double average(int x[],int n); void bubble_sort(int x[],int n); int main() { int scores[N]; double ave; printf("录入%d个分数:\n",N); input(scores,N); printf("\n输出课程分数:\n"); output(scores,N); printf("\n课程分数处理:计算均分、排序...\n"); ave = average(scores,N); bubble_sort(scores,N); printf("\n输出课程均分:%.2f\n",ave); printf("\n输出课程分数(高-->低):\n"); output(scores,N); 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"); } double average(int x[],int n) { int i; double s=0,ave; for(i=0;i<n;++i){ s+=x[i]; } ave=s/n; printf("\n"); return ave; } void bubble_sort(int x[],int n) { int i,j,t; for(i=0;i<n-1;i++){ for(j=0;j<n-i-1;j++){ if(x[j]<x[j+1]){ t=x[j]; x[j]=x[j+1]; x[j+1]=t; } } } }

实验六
#include<stdio.h>
#include<string.h>
#define N 5
#define M 20
void output(char str[][M],int n);
void bubble_sort(char str[][M],int n);
int main()
{
char name[][M] = {"Bob","Bill","Joseph","Taylor","George"};
int i;
printf("输出初始名单:\n");
output(name,N);
printf("\n排序中...\n");
bubble_sort(name,N);
printf("\n按字典序输出名单:\n");
output(name,N);
return 0;
}
//函数定义 功能:按行输出二维数组中的字符串
void output(char str[][M],int n)
{
int i;
for(i = 0;i<n;++i)
printf("%s\n",str[i]);
}
void bubble_sort(char str[][M],int n)
{
int i,j;
char s[20];
for(i=0;i<n-1;++i){
for(j=0;j<n-1-i;++j){
if(strcmp(str[j],str[j+1])>0)
{
strcpy(s,str[j]);
strcpy(str[j],str[j+1]);
strcpy(str[j+1],s);
}
}
}
}

实验7
#include<stdio.h>
int main()
{
char s[100];
while(scanf("%s",&s)!=EOF)
{
int i,j,flag = 0;
for(i=0;s[i]!='\0';i++){
for(j=i+1;s[j]!='\0';j++){
if(s[i] == s[j]){
flag = 1;
}
}
}
if(flag == 1)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}

实验8
#include<stdio.h>
#define N 100
#define M 4
void output(int x[][N],int n);
void retate_to_right(int x[][N],int n);
int main()
{
int t[][N] = {{21,12,13,24},
{25,16,47,38},
{29,11,32,54},
{42,21,33,10}};
printf("原始矩阵:\n");
output(t,M);
retate_to_right(t,M);
printf("变换后矩阵:\n");
output(t,M);
return 0;
}
void output(int x[][N],int n)
{
int i,j;
for(i = 0;i<n;++i){
for(j=0;j<n;++j){
printf("%4d",x[i][j]);
}
printf("\n");;
}
}
void retate_to_right(int x[][N],int n)
{
int i,j,t;
for(i=0;i<M;++i){
t=x[i][M-1];
for(j=M-1;j>0;--j){
x[i][j]=x[i][j-1];
}
x[i][0]=t;
}
}


浙公网安备 33010602011771号