数组题1-4

1.改写strlen strcpy strcmp strcat

代码:

  1 #include <stdio.h>
  2 #include <string.h>
  3 
  4 char strcpy1()
  5 {
  6 
  7     char str[100] = "";
  8     char str1[100];
  9     int count = 0;
 10     int i = 0;
 11     printf("请输入一个字符串:");
 12     scanf("%s",str);
 13     while(str[i] != '\0')
 14     {
 15         str1[i] = str[i];
 16         i++;
 17     }
 18     printf("%s\n",str1);
 19 }
 20 char strlen1()
 21 {
 22     char str[100];
 23     int i = 0;
 24     printf("请输入一个字符串:");
 25     scanf("%s",str);
 26     while(str[i] != '\0')
 27     {
 28         i++;
 29     }
 30     printf("%d\n",i);
 31 }
 32 
 33 int  strcmp1()
 34 {
 35     char str1[100];
 36     char str2[100];
 37     printf("str1=");
 38     scanf("%s",str1);
 39     printf("str2=");
 40     scanf("%s",str2);
 41 
 42      int i = 0;
 43 
 44     while (str1[i] == str2[i]) {
 45         if (str1[i] == '\0') {
 46             break;
 47         }
 48         i++;
 49     }
 50     int result = str1[i] - str2[i];
 51     if (result < 0) {
 52         printf("str1 <  str2\n");
 53     } else if (result > 0) {
 54         printf("str1 > str2\n");
 55     } else {
 56         printf("str1 = str2\n");
 57     }
 58 
 59 }
 60 int strcat1()
 61 {
 62     char str1[100];
 63     char str2[100];
 64     printf("str1=");
 65     scanf("%s",str1);
 66     printf("str2=");
 67     scanf("%s",str2);
 68      int len1 = strlen(str1);
 69     int len2 = strlen(str2);
 70     int len = len1 + len2;
 71     char str3[len];
 72 
 73     for (int i = 0; i < len1; i++) {
 74         str3[i] = str1[i];
 75     }
 76     for (int i = 0; i < len2; i++) {
 77         str3[len1 + i] = str2[i];
 78     }
 79 
 80     printf("%s\n", str3);
 81 }
 82 
 83 int main(int argc, const char *argv[])
 84 {
 85 
 86 //  strcpy1();
 87 //  strlen1();
 88 //  strcmp1();
 89     strcat1();                                                                                                                                                          
 90     return 0;
 91 }

运行结果:

2.现有一个字符串char str[32] = "a1pbv8";要求编写一段代码实现字符串倒置,str中存储的内容为"8vbp1a"

代码:

 #include <stdio.h>
 #include <string.h>
 int main(int argc, const char *argv[]
 {
     char str[32];
     char temp;
     printf("请输入字符串:");
     scanf("%s",str);
     for(int i=0;i<strlen(str)/2;i++)
     {
         temp = str[i];
         str[i] = str[strlen(str)-1-i]
         str[strlen(str)-1-i] = temp;
     }
     printf("%s\n",str);              
 
     return 0;
 }
                                      
                                      

运行结果:

3.求二维数组的最大值,并输出最大值对应的行号和列号。

代码:

  1 #include <stdio.h>
  2 int main(int argc, const char *argv[])
  3 {
  4     int rows, cols;
  5     printf("请输入二维数组: ");
  6     scanf("%d %d", &rows, &cols);
  7 
  8     int arr[rows][cols];
  9     for (int i = 0; i < rows; i++) {
 10         for (int j = 0; j < cols; j++) {
 11             scanf("%d", &arr[i][j]);
 12         }
 13     }
 14 
 15     int max = arr[0][0];
 16     int maxRow = 0;
 17     int maxCol = 0;
 18 
 19     for (int i = 0; i < rows; i++) {
 20         for (int j = 0; j < cols; j++) {
 21             if (arr[i][j] > max) {
 22                 max = arr[i][j];
 23                 maxRow = i;
 24                 maxCol = j;
 25             }
 26         }
 27     }
 28 
 29     printf("max = %d\n", max);
 30     printf("row = %d  column = %d\n", maxRow, maxCol);
 31 
 32     return 0;
 33 }                                                                      

运行结果:

4.输出一个十行的杨辉三角

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1

1 8 28 56 70 56 28 8 1

1 9 36 84 126 126 84 36 9 1

代码:

#include <stdio.h>
int main(int argc, const char *argv[])
{
    int rows;
    printf("请输入杨辉三角形的行数:");
    scanf("%d", &rows);


    int coef = 1;

    for (int i = 0; i < rows; i++) {

        for (int j = 0; j <= i; j++) {
            if (j == 0 || i == 0) {
                coef = 1;
            } else {
                coef = coef * (i - j + 1) / j;
            }
            printf("%4d", coef);
        }

        printf("\n");
    }   return 0;
}                                                                

运行结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我于人间凑数

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值