首页 > 其他分享 >实验5

实验5

时间:2024-12-05 22:59:15浏览次数:4  
标签:int s1 char 实验 str printf include

任务1

代码1.

 1 #include<stdio.h>
 2 #define N 5
 3 void input(int x[],int n);
 4 void output(int x[],int n);
 5 void fin_min_max(int x[],int n,int *pmin,int *pmax); 
 6 
 7 int main(){
 8     int a[N];
 9     int min,max;
10     
11     printf("录入%d个数据:\n",N);
12     input(a,N);
13     
14     printf("数据是:\n");
15     output(a,N);
16     
17     printf("数据处理...\n");
18     find_min_max(a,N,&min,&max);
19     
20     printf("输出结果:\n");
21     printf("min=%d,max=%d\n",min,max);
22     
23     return 0; 
24 }
25 
26 void input(int x[],int n){
27     int i;
28     for(i=0;i<n;++i)
29     scanf("%d",&x[i]);
30 }
31 
32 void output(int x[],int n){
33     int i;
34     for(i=0;i<n;++i)
35        printf("%d",x[i]);
36     printf("\n");
37 }
38 
39 void find_min_max(int x[],int n,int *pmin, int *pmax){
40     int i;
41     *pmin=*pmax=x[0];
42     
43     for(i=0;i<n;++i)
44         if(x[i]<*pmin)
45             *pmin=x[i];
46         else if(x[i]>*pmax)
47              *pmax=x[i];
48        
49 }
View Code

运行结果

1.find_min_max功能是找到五个数据中的最大值和最小值

2,pmin,pmax指向x[0]的地址

代码1.2

 1 #include<stdio.h>
 2 #define N 5
 3 void input(int x[],int n);
 4 void output(int x[],int n);
 5 int *find_max(int x[],int n); 
 6 
 7 int main(){
 8     int a[N];
 9     int *pmax;
10     
11     printf("录入%d个数据:\n",N);
12     input(a,N);
13     
14     printf("数据是:\n");
15     output(a,N);
16     
17     printf("数据处理...\n");
18     pmax=find_max(a,N);
19     
20     printf("输出结果:\n");
21     printf("max=%d\n",*pmax);
22     
23     return 0; 
24 }
25 
26 void input(int x[],int n){
27     int i;
28     for(i=0;i<n;++i)
29     scanf("%d",&x[i]);
30 }
31 
32 void output(int x[],int n){
33     int i;
34     for(i=0;i<n;++i)
35        printf("%d",x[i]);
36     printf("\n");
37 }
38 
39 int *find_max(int x[],int n){
40     int max_index=0;
41     int i;
42     
43     for(i=0;i<n;++i)
44         if(x[i]>x[max_index])
45             max_index=i;
46             
47     return &x[max_index];        
48 }
View Code

运行结果

1.find_max的功能返回最大值的地址;

2.可以实现,ptr为指针可以储存最大值的地址;

任务2

代码2.1

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 #define N 80
 5 
 6 int main(){
 7     char s1[N] = "Learning makes me happy";
 8     char s2[N] = "Learning nakes me sleep";
 9     char tmp[N];
10 
11     printf("sizeof(s1) vs. strlen(s1): \n");
12     printf("sizeof(s1) = %d\n",sizeof(s1));
13     printf("strlen(s1) = %d\n",strlen(s1));
14 
15     printf("\nbefore swap: \n");
16     printf("s1: %s\n", s1);
17     printf("s2: %s\n", s2);
18 
19     printf("\nswapping...\n");
20     strcpy(tmp, s1);
21     strcpy(s1, s2);
22     strcpy(s2, tmp);
23 
24     printf("\nafter swap: \n");
25     printf("s1: %s\n", s1);
26     printf("s2: %s\n", s2);
27 
28     system("pause");
29     return 0;
30 }
View Code

结果

1.sizeof(s1)计算的是预处理命令中N决定的,为80字节,sizeof(s1)计算的s1占据的内存空间,strlen(s1)统计的是字符串的长度;

2.s1是数组名常量,不能修改;

3.用中间量tmp,将字符数组s1,s2中的内容进行了交换;

代码2.2

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<stdlib.h>
 4 #define N 80
 5 
 6 int main(){
 7     char *s1 = "Learning makes me happy";
 8     char *s2= "Learning nakes me sleep";
 9     char *tmp;
10 
11     printf("sizeof(s1) vs. strlen(s1): \n");
12     printf("sizeof(s1) = %d\n",sizeof(s1));
13     printf("strlen(s1) = %d\n",strlen(s1));
14 
15     printf("\nbefore swap: \n");
16     printf("s1: %s\n", s1);
17     printf("s2: %s\n", s2);
18 
19     printf("\nswapping...\n");
20     tmp = s1;
21     s1 = s2;
22     s2 = tmp;
23 
24     printf("\nafter swap: \n");
25     printf("s1: %s\n", s1);
26     printf("s2: %s\n", s2);
27 
28     system("pause");
29     return 0;
30 }
View Code

1.s1是指针变量,存放的是首地址,sizeof(s1)计算的s1占据的内存空间,strlen(s1)统计的是字符串的长度;

2.可以修改,指针变量可以赋值;

3.交换的是地址;

task3.

代码3

 1 #include<stdio.h>
 2 
 3 int main(){
 4     int x[2][4] = {{1,9,8,4},{2,0,4,9}};
 5     int i,j;
 6     int *ptr1;
 7     int(*ptr2)[4];
 8 
 9         printf("输出1:使用数组名、下标直接访问二维数组元素\n");
10         for(i=0;i<2;++i){
11             for(j=0;j<4;++j)
12                 printf("%d",x[i][j]);
13             printf("\n");
14         }
15 
16         printf("\n输出2:使用指针变量ptr1(指向元素)间接访问\n");
17         for(ptr1=&x[0][0],i=0;ptr1<&x[0][0]+8;++ptr1,++i){
18             printf("%d",*ptr1);
19 
20             if((i+1)%4==0)
21                 printf("\n");
22         }
23 
24         printf("\n输出3:使用指针变量ptr2(指向一维数组)间接访问\n");
25         for(ptr2=x;ptr2<x+2;++ptr2){
26             for(j=0;j<4;++j)
27                 printf("%d",*(*ptr2+j));
28             printf("\n");
29         }
30 
31         return 0;
32 }

 

图片

任务4

 1 #include<stdio.h>
 2 #define N 80
 3 
 4 void replace(char *str,char old_char,char new_char);
 5 
 6 int main(){
 7     char text[N]="Programming is difficult or not, it is a question.";
 8     
 9     printf("原始文本:\n");
10     printf("%s\n",text);
11     
12     replace(text,'i','*');
13     
14     printf("处理后文本:\n");
15     printf("%s\n",text);
16     
17     return 0;
18 }
19 void replace(char *str,char old_char,char new_char){
20     int i;
21     
22     while(*str){
23         if(*str==old_char)
24            *str=new_char;
25         str++;
26        }
27 }

图片

 

1.replace作用将old_char全部转化为new_char;

2.可以,两者是等价的

task5

 1 #include <stdio.h>
 2 #define N 80
 3 
 4 char *str_trunc(char *str,char x);
 5 
 6 int main(){
 7     char str[N];
 8     char ch;
 9     
10     while(printf("输入字符串:"),gets(str)!=NULL){
11         printf("输入一个字符:");
12         ch =getchar();
13         
14         printf("截断处理...\n");
15         str_trunc(str,ch);
16         
17         printf("截断处理后的字符串:%s\n\n",str);
18         getchar();
19          
20     }
21     return 0;
22 }
23 
24 char *str_trunc(char *str,char x){
25     int i,j;
26     for (i=0;i<N;i++){
27         if(str[i]==x){
28             str[i]='\0';
29             break;
30         }
31     }
32     return str;
33 }

图片

删去line18行后

读取确认的回车键‘\n’,不然‘\n’会被下一次循环读取;

task6

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define N 5
 4 
 5 int check_id(char *str);
 6 
 7 int main()
 8 {
 9     char *pid[N] ={"31010120000721656X",
10                    "3301061996X0203301",
11                     "53010220051126571",
12                    "510104199211197977",
13                    "53010220051126133Y"};
14     int i;
15     
16     for(i=0;i<N;++i)
17         if(check_id(pid[i]))
18             printf("%s\tTrue\n",pid[i]);
19         else
20             printf("%s\tFalse\n",pid[i]);
21             
22     return 0;
23     
24 }
25 
26 int check_id(char *str) {
27     int len = strlen(str);
28     if (len != 18) {
29         return 0; 
30     }
31     int i;
32     for ( i = 0; i < 17; ++i) {
33         if (!isdigit(str[i])) {
34             return 0; 
35         }
36     }
37     if (isdigit(str[17]) || (toupper(str[17]) == 'X')) {
38         return 1; 
39     } else {
40         return 0;
41     }
42 }

图片

 task7

 1 #include <stdio.h>
 2 #define N 80
 3 void encoder(char *str, int n); 
 4 void decoder(char *str, int n); 
 5 
 6 int main() {
 7     char words[N];
 8     int n;
 9 
10     printf("输入英文文本: ");
11     gets(words);
12 
13     printf("输入n: ");
14     scanf("%d", &n);
15 
16     printf("编码后的英文文本: ");
17     encoder(words, n);      
18     printf("%s\n", words);
19 
20     printf("对编码后的英文文本解码: ");
21     decoder(words, n); 
22     printf("%s\n", words);
23 
24     return 0;
25 }
26 
27 
28 void encoder(char *str, int n) {
29    while(*str!='\0'){
30        if(*str >= 'a'&&*str <= 'z')
31        {
32            *str = (*str-'a'+n)%26+'a';
33    }
34    if(*str >= 'A'&&*str <= 'Z')
35        {
36            *str = (*str-'A'+n)%26+'A';
37    }
38     str++;
39 }
40 }
41 
42 
43 void decoder(char *str, int n) {
44     while(*str!='\0'){
45        if(*str >= 'a'&&*str <= 'z')
46        {
47            *str = (*str-'a'-n+26)%26+'a';
48    }
49    if(*str >= 'A'&&*str <= 'Z')
50        {
51            *str = (*str-'A'-n+26)%26+'A';
52    }
53     str++;
54 }
55 }

图片

 task8

 1 #include<stdio.h>
 2 
 3 int main(int argc, char *argv[]){
 4     int i;
 5     
 6     for(i=1;i<argc;++i)
 7         printf("hello,%s\n",argv[i]);
 8         
 9     return 0;
10 } 

task8.1

 1 #include<stdio.h>
 2 #include<string.h>
 3 
 4 void sort(int argc, char *argv[]); 
 5 
 6 int main(int argc, char *argv[]){
 7     int i;
 8     
 9     sort(argc,argv);
10     
11     for(i=1;i<argc;++i)
12         printf("hello,%s\n",argv[i]);
13         
14     return 0;
15 } 
16 
17 void sort(int argc, char *argv[]){
18     int i,j;
19     char *temp;
20     for(i = 0; i < argc-1 ; i++ ){
21         for(j = 0; j< argc-1-i; j++){
22             if(strcmp(argv[j],argv[j+1])>0){
23                 temp = argv[j];
24                 argv[j] = argv[j+1];
25                 argv[j+1] = temp;
26             }
27         }
28     }
29 }

图片

 

标签:int,s1,char,实验,str,printf,include
From: https://www.cnblogs.com/YamadaRyo1314/p/18580980

相关文章

  • 实验5
    task1.11#include<stdio.h>2#defineN534voidinput(intx[],intn);5voidoutput(intx[],intn);6voidfind_min_max(intx[],intn,int*pmin,int*pmax);78intmain(){9inta[N];10intmin,max;1112printf(......
  • 实验5
    1#include<stdio.h>2#defineN53voidinput(intx[],intn);4voidoutput(intx[],intn);5voidfind_min_max(intx[],intn,int*pmin,int*pmax);6intmain(){7inta[N];8intmin,max;9printf("录入%d个数据;\n"......
  • 软件设计:实验 25:访问者模式
    实验25:访问者模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解访问者模式的动机,掌握该模式的结构;2、能够利用访问者模式法解决实际问题。 [实验任务一]:打包员在我们课堂上的“购物车”的例子中,增加一个新的访问者:打包员,负责对购物车中货物装包。实验要......
  • 实验5
    实验任务1.1:源代码:1#include<stdio.h>2#defineN534voidinput(intx[],intn);5voidoutput(intx[],intn);6voidfind_min_max(intx[],intn,int*pmin,int*pmax);78intmain(){9inta[N];10intmin,max;1112p......
  • 实验五
    task1: publisher.hpp#pragmaonce#include<iostream>#include<string>usingstd::cout;usingstd::endl;usingstd::string;//发行/出版物类:Publisher(抽象类)classPublisher{public:Publisher(conststring&s="");//构......
  • 数据结构实验一
    数据结构实验一2024.12.5采用递增有序的顺序表表示集合,求解两个集合的交集、并集和差集(1)定义顺序表的存储结构;(2)实现存储递增有序集合的顺序表的建立、求交集、并集和差集等运算;(3)要求算法的时间性能在线性时间复杂度内;(4)和采用无序顺序表所表示的集合的有关运算的时间性能......
  • 实验5 c语言指针应用编程
    1#include<stdio.h>2#defineN534voidinput(intx[],intn);5voidoutput(intx[],intn);6voidfind_min_max(intx[],intn,int*pmin,int*pmax);78intmain(){9inta[N];10intmin,max;1112printf("录入%d......
  • # 20222403 2024-2025-1 《网络与系统攻防技术》实验八实验报告
    1.实验内容(1)Web前端HTML能正常安装、启停Apache。理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML。(2)Web前端javascipt理解JavaScript的基本功能,理解DOM。在(1)的基础上,编写JavaScript验证用户名、密码的规则。在用户点击登陆按钮后回显“欢迎+输入的用户名”尝......
  • NoSQL数据库实习头歌实验知识点整理(三)-Redis部分
    文章目录1初识Redis1.1Redis简介1.1.1Redis与其他数据库的对比1.1.2Redis的特性1.2快速安装Redis与Python1.3Redis数据结构简介1.3.1Redis中的字符串1.3.2Redis中的列表1.3.3Redis中的集合1.3.4Redis中的哈希1.3.5Redis中的有序集合1.4使用Python与R......
  • c++实验五
    task1:publisher.hpp:1#pragmaonce23#include<iostream>4#include<string>56usingstd::cout;7usingstd::endl;8usingstd::string;910//发行/出版物类:Publisher(抽象类)11classPublisher{12public:13Publisher(const......