实验5

1.1
问题1:将一个长度为n的整形数组x中最大的数存在pmax指向的内存地址,将其中最小的数存在pmin指向的内存地址。
问题2:pmax指向min的内存地址,pmin指向max的内存地址。
1.2
问题1:功能:找到长度为n的整型数组x中最大的数对应的下标。返回值:数组中最大值元素的内存地址。
问题2:可以
2.1
问题1:s1大小是80,sizeof(s1)计算的是数组大小,strlen(s1)计算字符串长度大小。问题2:不能,需写成s1[N]进行赋值。
问题3:交换两个字符数组。
2.2
问题1:s1存储字符串地址,sizeof(s1)指针变量s1的字节大小,strlen(s1)是字符串大小。
问题2:可以,这种写法是将L的地址赋值给了指针s1,2_1中的line6是将字符串赋值给 了数组s1。
问题3:交换的是这几个指针变量内存储的地址,两个字符串在内存中的位置并没有改变。
3.0
问题1:int (*ptr)[4]中,ptr是一个指向一维数组的指针。
问题2:int *ptr[4]中,ptr是一个存储指针的数组。
4.0
问题1:将字符串中所有old_char替换成new_char。
问题2:可以。
5.0

include <stdio.h>

define N 80

char* str_trunc(char* str, char x);

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

while (printf("输入字符串: "), gets(str) != NULL) {
    printf("输入一个字符: ");
    ch = getchar();

    printf("截断处理...\n");
    str_trunc(str, ch);         // 函数调用

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

}

return 0;

}
char* str_trunc(char* str, char x) {
while (*str != x) {
*(str++);
}
*str = '\0';
return 0;
}
image
第一次输入测试结果正常,第二次开始无法输入字符串
处理掉缓冲区的换行符,line18用于处理回车键。
6.0

include <stdio.h>

include <string.h>

define N 5

int check_id(char *str); // 函数声明

int main()
{
char *pid[N] = {"31010120000721656X",
"3301061996X0203301",
"53010220051126571",
"510104199211197977",
"53010220051126133Y"};
int i;

for (i = 0; i < N; ++i)
    if (check_id(pid[i])) // 函数调用
        printf("%s\tTrue\n", pid[i]);
    else
        printf("%s\tFalse\n", pid[i]);

return 0;

}
int check_id(char str) {
int i=0,j;
if(strlen(str)!=18)
return 0;
for(j=0;j<17;j++){
if(
(str+j)<48||(str+j)>57){
return 0;
}
}
if(
(str+17)==88||(str+17)>=48&&(str+17)<=57)
return 1;
else
return 0;

}
image
7.0

include <stdio.h>

define N 80

void encoder(char *str, int n); // 函数声明
void decoder(char *str, int n); // 函数声明

int main() {
char words[N];
int n;

printf("输入英文文本: ");
gets(words);

printf("输入n: ");
scanf("%d", &n);

printf("编码后的英文文本: ");
encoder(words, n);      // 函数调用
printf("%s\n", words);

printf("对编码后的英文文本解码: ");
decoder(words, n); // 函数调用
printf("%s\n", words);

return 0;

}

void encoder(char *str, int n) {
int t,i;
t=strlen(str);
for(i=0;i<t;i++){

    if(*(str+i)>=97&&*(str+i)<=122){
        *(str+i)=97+(str[i]-97+n)%26;
}
    else if(*(str+i)>=65&&*(str+i)<=90){
        *(str+i)=65+(str[i]-65+n)%26;
    }
    }

}

void decoder(char str, int n) {
int t,i;
t=strlen(str);
for(i=0;i<t;i++){
if(
(str + i) >= 97 && *(str + i) <= 122) {

        int s= (str[i] - 97 - n) % 26;
        if(s < 0) {
            s+= 26;
        }
        *(str + i) = 97 + s;
    }

    else if(*(str + i) >= 65 && *(str + i) <= 90) {
        int s= (str[i] - 65 - n) % 26;
        if(s < 0) {
            s+= 26;
        }
        *(str + i) = 65 + s;
    }
}

}

image
image
image
8.0

include <stdio.h>

include<string.h>

void sort(int n,char *s[]);

int main(int argc, char *argv[]) {
int i;

sort(argc-1,argv+1);


for(i = 1; i < argc; ++i)
    printf("hello, %s\n", argv[i]);

return 0;

}

void sort(int n,char *s[]){
int i,j;
char *t;
for(i=0;i<n-1;i++){

   for(j=0;j<n-i-1;j++){

       if(strcmp(s[j],s[j+1])>0){

          t=s[j];
          s[j]=s[j+1];
          s[j+1]=t;
      }
   }
}

}
image

posted @ 2025-12-11 20:28  135hlj  阅读(4)  评论(0)    收藏  举报