C语言指针,数组,字符,算法

采纳第一个回答的一共5题

  1. 编写一个程序,用一个字符指针数组存放宿舍所有同学的名字(使用汉语拼音),并把他们打印出来。

  2. 编写一个冒泡排序算法,使用指针将10个整型数据按从小到大的顺序进行排序。

  3. 给一个3*3的矩阵赋初值(整数)后,将其转置并输出。
    备注:用rand()%10+1产生1-10之间的整数。rand()%k的作用是产生的随机数大于等于0,且小于k的整数。

4 输入一个字符串,找出其中大写字母、小写字母、空格、数字以及其他字符的个数。

5 编写程序,判断输入的字符串是否是“回文”(指顺读和倒读都一样的字符串,如ABCCBA、abcba)。

直接5个啊
第一个

#include <stdio.h>
int main()
{
    char name[4][20] = {"liming","wangtao","zhangheng","gongwei"};
    char (*p)[20];
    p = name;
    for(int i=0;i<4;i++)
        printf("%s\n",p+i);
    return 0;
}

第二个

#include <stdio.h>
int main()
{
    int a[10] = {2,3,9,1,7,5,6,8,4,0};
    int i,j,t;
    for(i=0;i<9;i++)
        for(j=0;j<9-i;j++)
        {
            if(a[j]>a[j+1])
            {
                t = a[j];
                a[j] = a[j+1];
                a[j+1] = t;
            }
        }
    for(i=0;i<10;i++)
        printf("%d ",a[i]);
    return 0;
}

第三个:

#include <time.h>
#include <stdio.h>
int main()
{
    int a[3][3],i,j,t;
    srand(time(NULL));
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            a[i][j] = rand()%10+1;
            printf("%3d",a[i][j]);
        }
        printf("\n");
    }
    for(i=0;i<3;i++)
    {
        for(j=0;j<1;j++)
        {
            t = a[i][j];
            a[i][j] = a[j][i];
            a[j][i] = t;
        }
    }
    for(i=0;i<3;i++)
    {
        for(j=0;j<3;j++)
        {
            printf("%3d",a[i][j]);
        }
        printf("\n");
    }
    return 0;
}

第四个:

//输入一个字符串,找出其中大写字母、小写字母、空格、数字以及其他字符的个数
#include <stdio.h>
int main()
{
    char s[1000];
    int a=0,b=0,c=0,d=0,e=0,i=0;
    gets(s);
    while(s[i] != '\0')
    {
        if(s[i] >='A' && s[i] <='Z')
            a++;
        else if(s[i] >='a' && s[i] <='z')
            b++;
        else if(s[i] == ' ')
            c++;
        else if(s[i] >='0' && s[i]<='9')
            d++;
        else 
            e++;
        i++;
    }
    printf("大写字母%d个,小写字母%d个,空格%d个,数字%d个,其他字符%d个",a,b,c,d,e);
    return 0;
}

第五个:

//编写程序,判断输入的字符串是否是“回文”(指顺读和倒读都一样的字符串,如ABCCBA、abcba)
#include <stdio.h>
#include <string.h>
int main()
{
    char s[1000];
    gets(s);
    int len  = strlen(s):
    int i=0;
    for(i=0;i<len/2;i++)
    {
        if(s[i] != s[len-i-1])
            break;
    }
    if(i==len/2)
        printf("是回文");
    else
        printf("不是回文"):
    return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

第二题题目要求用指针的啊兄弟

#include<stdio.h>
int main()
{
    int i,j,k,t,*p1;
    int p[10];
    p1=p;
    printf("请输入10个整数:\n");
    for(i=0;i<10;i++)
        scanf("%d",&p[i]);
    for(i=0;i<10;i++)
    {
        k=i;
        for(j=i+1;j<10;j++)
            if(*(p+j)<*(p+k))
            {
                t=*(p+j);
                *(p+j)=*(p+k);
                *(p+k)=t;
            }
    }
    printf("10个整数排序后:\n");
    for(i=0;i<10;i++)
        printf(" %d ",*(p1+i));
    return 0;
}