# 实验4

#include <stdio.h>
#include<stdlib.h>
#define N 4
int main() {
int a[N] = {2, 0, 2, 3};
char b[N] = {'2', '0', '2', '3'};
int i;
printf("sizeof(int) = %d\n", sizeof(int));
printf("sizeof(char) = %d\n", sizeof(char));
printf("\n");
// 输出int型数组a中每个元素的地址、值
for (i = 0; i < N; ++i)
printf("%p: %d\n", &a[i], a[i]);
printf("\n");
// 输出char型数组b中每个元素的地址、值
for (i = 0; i < N; ++i)
printf("%p: %c\n", &b[i], b[i]);
printf("\n");
// 输出数组名a和b对应的值
printf("a = %p\n", a);
printf("b = %p\n", b);
system("pause");
return 0;
}

#include <stdio.h>
#include<stdlib.h>
#define N 2
#define M 3
int main() {
int a[N][M] = {{1, 2, 3}, {4, 5, 6}};
char b[N][M] = {{'1', '2', '3'}, {'4', '5', '6'}};
int i, j;
// 输出int型二维数组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");
// 输出int型二维数组名a, 以及，a[0], a[1]的值
printf("a = %p\n", a);
printf("a[0] = %p\n", a[0]);
printf("a[1] = %p\n", a[1]);
printf("\n");
// 输出char型二维数组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");
// 输出char型二维数组名b, 以及，b[0], b[1]的值
printf("b = %p\n", b);
printf("b[0] = %p\n", b[0]);
printf("b[1] = %p\n", b[1]);
printf("\n");
system("pause");
return 0;
}

#define N 80
void swap_str(char s1[N], char s2[N]);
void test1();
void test2();
int main() {
printf("测试1: 用两个一维维数组，实现两个字符串交换\n");
test1();
printf("\n测试: 用二维数组，实现两个字符串交换\n");
test2();
system("pause");
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);
}

#include <stdio.h>
#include<stdlib.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);
}
system("pauses");
return 0;
}
int count(char x[]) {
int i;
int word_flag = 0; // 用作单词标志，一个新单词开始，值为1；单词结束，值为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;
}

#include <stdio.h>
#include<stdlib.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; // 单词长度置0，为新单词统计做准备
i++;
}
// 在一个单词中，统计当前单词长度
while(line[i] != '\0' && line[i] != ' ') {
word_len++;
i++;
}
// 更新更长单词长度，并，记录最长单词结束位置
if(max_len < word_len) {
max_len = word_len;
end = i; // end保存的是单词结束的下一个坐标位置
}
// 遍历到文本结束时，终止循环
if(line[i] == '\0')
break;
}
// 输出最长单词
printf("最长单词: ");
for(i = end - max_len; i < end; ++i)
printf("%c", line[i]);
printf("\n\n");
}
system("pause");
return 0;
}

#include <stdio.h>
#include <stdlib.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",ave);
printf("\n输出课程分数（高-->低）:\n");
output(scores,N);

system("pause");
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,sum=0;
double t;

for(i=0;i<n;i++)
sum=sum+x[i];
t=(sum*1.0)/(n*1.0);

return t;
}

void bubble_sort(int x[],int n){
int t,i,m;
for(m=n;m>0;m--){
for(i=0;i<m;i++){
if(x[i]<x[i+1]){
t=x[i];
x[i]=x[i+1];
x[i+1]=t;
}
}
}
}

#include <stdio.h>
#include <stdlib.h>
void dec2n(int x,int n);
#define N 100

int main(){
int x;

printf("输入一个十进制整数：");
while(scanf("%d",&x)!=EOF){
dec2n(x,2);
dec2n(x,8);
dec2n(x,16);
printf("输入一个十进制整数：");
}

system("pause");
return 0;
}

void dec2n(int x,int n){
char m[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'},t[N];
int i,ys,ss;
for(i=0,ys=0,ss=x;ss>0;i++){
ys=ss%n;
ss=ss/n;
t[i]=m[ys];
}
t[i]=0;
for(;i>=0;i--)
printf("%c",t[i]);
printf("\n");
}

#include <stdio.h>
#include <stdlib.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,54},
{42,21,33,10}};

printf("原始矩阵：\n");
output(t,M);

printf("变换后矩阵：\n");
rotate_to_right(t,M);

system("pause");
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 rotate_to_right(int x[][N],int n){
int i,j;

for(i=0;i<n;++i){
for(j=0;j<n;++j){
if(j==0)
printf("%4d",x[i][n-1-j]);
else
printf("%4d",x[i][j-1]);
}
printf("\n");
}
}

#include <stdio.h>
#include <stdlib.h>
#define N 80

void replace(char x[],char old_char,char new_char);

int main(){
char text[N]="C programming is difficult or not,it is a question.";

printf("原始文本：\n");
printf("%s\n",text);

replace(text,'i','*');

printf("处理后文本：\n");
printf("%s\n",text);

system("pause");
return 0;
}

void replace(char x[],char old_char,char new_char){
int i;
for(i=0;x[i]!='\0';++i)
if(x[i]==old_char)
x[i]=new_char;
}

#include <stdio.h>
#include <stdlib.h>
#define N 80

int main(){
char str[N],ch;
int i;

printf("输入字符串：");
gets(str);

printf("输入一个字符：");
ch=getchar();

printf("截断处理……");

i=0;
while(str[i]!='\0'){
if(str[i]==ch)
break;
++i;
}
str[i]='\0';

printf("\n截断处理后字符串：%s\n",str);

system("pause");
return 0;
}

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define N 5
#define M 20

void bubble_sort(char str[][M],int n);

int main(){
char name[][M]={"Bob","Bill","Joseph","Taylor","George"};
int i;

printf("输出初始名单：\n");
for(i=0;i<N;i++)
printf("%s\n",name[i]);

printf("排序中……\n");
bubble_sort(name,N);

printf("\n按字典序输出名单：\n");
for(i=0;i<N;i++)
printf("%s\n",name[i]);

system("pause");

return 0;
}

void bubble_sort(char str[][M],int n){
int m,i;
char t[100];
for(m=N;m>1;m--){
for(i=0;i<m;i++)
if(strcmp(str[i],str[i+1])>0){
strcpy(t,str[i]);
strcpy(str[i],str[i+1]);
strcpy(str[i+1],t);
}
}
}

posted @ 2023-04-19 20:08  无良无常  阅读(5)  评论(0编辑  收藏  举报