实验4
实验任务1.1
#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:%d\n",&b[i],b[i]); printf("b = %p\n",b); } int main() { printf("测试1: int类型一维数组\n"); test1(); printf("\n测试2: char类型一维数组\n"); test2(); return 0; }

实验任务1.2
#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("\n"); printf("b = %p\n", b); printf("b[0] = %p\n", b[0]); printf("b[1] = %p\n", b[1]); } int main() { printf("测试1: int型两维数组"); test1(); printf("\n测试2: char型两维数组"); test2(); return 0; }

实验任务2
#include <stdio.h> #include <string.h> #define N 80 void swap_str(char s1[N], char s2[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.1
#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; }

试验任务3.2
#include<stdio.h> #define N 1000 int main(){ char line[N]; int word_len; int max_len; int end; int i; while(gets(line)!=NULL){ word_len = 0; max_len = 0; end = 0; i = 0; while(1){ while(line[i]==' '){ word_len = 0; i++; } while(line[i]!='\0'&&line[i]!=' '){ word_len++; i++; } if(max_len < word_len){ max_len = word_len; end = i; } if(line[i]=='\0') break; } printf("最长单词: "); for(i = end - max_len;i<end;++i) printf("%c",line[i]); printf("\n\n"); } return 0; }

实验任务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) { int a,b,c=0; switch(n) { case 16:printf("%x\n",x);break; case 8:printf("%o\n",x);break; case 2:while(x!=0) { a=x%2; c=c*10+a; x=x/2; } printf("%d\n",c); } }

实验任务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,ans=0; for(i=0;i<n;++i) { ans=ans+x[i]; } ans=ans*1.0/n; return ans; } void bubble_sort(int x[], int n) { int i,j,p; for(i=0;i<n;++i) for(j = 0;j < n - i - 1;++j) { if(x[j] < x[j + 1]) { p = x[j]; x[j] = x[j + 1]; x[j + 1] = p; } } }

实验任务6
#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 c[M]; for(i=0;i<n;++i) for(j=0;j<i-j-1;j++) { if(strcmp(str[i],str[i+1])>0) { strcpy(c, str[j]); strcpy(str[j], str[j+1]); strcpy(str[j+1], c); } } }

实验任务7
#include<stdio.h> #include<string.h> #define N 1000 int main() { int length,i,j,m=0; char x[N]; scanf("%s",x); length = strlen(x); for(i=0;i<length;++i) { for(j=0;j<i;j++) { if(x[j]==x[i]) m=1; } } if(m==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 rotate_to_right(int x[][N], int n); // 函数声明 int main() { int t[][N] = {{21, 12, 13, 24},{25, 16, 47, 38},{29, 11, 32,},{42, 21, 33, 10}}; printf("原始矩阵:\n"); output(t, M); // 函数调用数调用 printf("变换后矩阵:\n"); rotate_to_right(t, M); // 函 output(t, M); // 函数调用 return 0; } // 函数定义 // 功能: 输出一个n*n的矩阵x 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 rotate_to_right(int x[][N], int n) { int i,j,b[M]; for(i=0;i<M;i++) { b[i]=x[i][M-1]; } for(i=0;i<n;i++) { for(j=M-1;j>0;--j) { x[i][j]=x[i][j-1]; } x[i][0]=b[i]; } } }


浙公网安备 33010602011771号