精华内容
下载资源
问答
  • C语言二维字符数组的输入

    万次阅读 多人点赞 2018-11-22 22:32:02
    标题 C语言字符数组的输入输出 定义一个字符二维数组,输入行数n,与列数m #include <stdio.h> #include <math.h> int main() { int n,m,i,j; scanf("%d %d",&n,&...

    标题 C语言字符数组的输入输出

    定义一个字符二维数组,输入行数n,与列数m

    #include <stdio.h>
    #include <math.h>
    int main()
    {
     int n,m,i,j;
     scanf("%d %d",&n,&m);
     char a[n][m];
     for(i=0;i<n;i++)
     {
     scanf("%s",a[i]);
     }
     for(i=0;i<n;i++)
     {
     printf("%s\n",a[i]);
     }
     return 0;
     }
    

    运行结果:在里插入图片描述

    可以看出来第一行把后面的数组元素都输出了,第二行也是
    问题在于,printf("%s",a[i])输出时,是根据’\0’来进行字符串输出的结束的。而输入时,由于列数只有3,所以第一行的元素实际是XXX,而不是XXX’\0’,所以字符串的输出没有终止。

    改正方法:
    将列数+1即可,scanf("%s",a[i])就能在每一行最后一列加上’\0’.

    char a[n][m+1];
    

    还有这里a[i]指的是二维数组每一行第一个元素的地址(我的理解。。)

    展开全文
  • 题目链接: ... 具体思路: 首先将每个点之间最短距离求出(bfs),A 或者 S作为起点跑bfs...然后再用最短路算法求出最小生成树权值和就可以了,getchar注意事项在代码中解释。 #include<iostream>...

    题目链接:

    https://vjudge.net/contest/66965#problem/J

    具体思路:

    首先将每个点之间的最短距离求出(bfs),A 或者 S作为起点跑bfs,这样最短距离就求出来了。然后再用最短路的算法求出最小生成树的权值的和就可以了,getchar的注意事项在代码中解释。

    #include<iostream>
    #include<string>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<vector>
    #include<queue>
    #include<stdio.h>
    using namespace std;
    # define maxn 1000+10
    # define inf 0x3f3f3f3f
    # define ll long long
    int n,m,num;
    char a[maxn][maxn];
    int vis[maxn][maxn];
    int dis[maxn][maxn];
    int f[2][4]= {{1,-1,0,0},{0,0,1,-1}};
    int p[maxn];
    int t[maxn][maxn];
    int vis1[maxn*maxn];
    struct node
    {
        int x,y,step;
        node() {}
        node(int xx,int yy,int zz)
        {
            x=xx;
            y=yy;
            step=zz;
        }
    };
    bool judge(int t1,int t2)
    {
        if(t1>=0&&t1<n&&t2>=0&&t2<m)return true;
        return false;
    }
    void bfs(int t1,int t2)
    {
        queue<node>q;
        while(!q.empty())q.pop();
        memset(vis,0,sizeof(vis));
        vis[t1][t2]=1;
        q.push(node(t1,t2,0));
        while(!q.empty())
        {
            node temp=q.front();
            q.pop();
            if(t[temp.x][temp.y])
            {
                dis[t[t1][t2]][t[temp.x][temp.y]]=dis[t[temp.x][temp.y]][t[t1][t2]]=temp.step;
            }
            for(int i=0; i<4; i++)
            {
                int x=temp.x+f[0][i];
                int y=temp.y+f[1][i];
                if(judge(x,y)&&vis[x][y]==0&&a[x][y]!='#')
                {
                    vis[x][y]=1;
                    q.push(node(x,y,temp.step+1));
                }
            }
        }
    }
    int prim()
    {
        memset(vis1,0,sizeof(vis1));
        int sum=0;
        for(int i=1; i<=num; i++)
        {
            p[i]=dis[1][i];
        }
        vis1[1]=1;
        for(int j=2; j<=num; j++)
        {
            int minn=inf,po;
            for(int i=1; i<=num; i++)
            {
                if(!vis1[i]&&p[i]<minn)
                {
                    minn=p[i];
                    po=i;
                }
            }
            vis1[po]=1;
            sum+=minn;
            for(int i=1; i<=num; i++)
            {
                if(!vis1[i]&&dis[po][i]<p[i])
                {
                    p[i]=dis[po][i];
                }
            }
        }
        return sum;
    }
    int main()
    {
        int T;
        scanf("%d",&T);
        while(T--)
        {
            num=0;
            memset(t,0,sizeof(t));
            scanf("%d %d",&m,&n);
            gets(a[0]);//这里要先输入a[0]的原因是二维数组输入的时候会将回车也当成一个字符输入,所以二维数组的最后一行存储不上。
            for(int i=0; i<n; i++)
            {
                gets(a[i]);
                for(int j=0; j<m; j++)
                {
                    if(a[i][j]=='S'||a[i][j]=='A')
                    {
                        num++;
                        t[i][j]=num;
                    }
                }
            }
            for(int i=0; i<n; i++)
            {
                for(int j=0; j<m; j++)
                {
                    if(t[i][j]==0)continue;
                    bfs(i,j);
                }
            }
            int ans=prim();
           // printf("%d\n",ans);
        }
        return 0;
    }
    

     

    转载于:https://www.cnblogs.com/letlifestop/p/10262868.html

    展开全文
  • 二维字符数组

    2019-07-25 20:20:31
    1.二维字符数组元素的输入 2.二维字符数组元素的输出 3.字符数组元素按字符串大小排序 4.字符数组元素按字符串长度排序 printf("==================================\n"); printf("1------字符数组元素输入\n...

    实现功能:

    1.二维字符数组元素的输入

    2.二维字符数组元素的输出

    3.字符数组元素按字符串大小排序

    4.字符数组元素按字符串长度排序

     

    printf("==================================\n");

    printf("1------字符数组元素输入\n");

    printf("2------字符数组元素输出\n");

    printf("3------字符数组元素按字符串大小排序\n");

    printf("4------字符数组元素按字符串长度排序\n");

    printf("0------退出\n");

    printf("请输入你的选择\n");

    printf("==================================\n");

    #include<stdio.h>
    #include<string.h>
    #define N 5
    #define M 20
    
    void input(char arr[][M],int n);
    void output(char arr[][M],int n);
    void str_cmp(char arr[][M],int n);
    void str_cmp2(char arr[][M],int n);
    
    void str_cmp2(char arr[][M],int n)
    {
    	int i = 0;
    	int j = 0;
    	char s[M] = {0};
    	for(j = 0;j < n;j++)
    	{
    		for(i = 0;i < n-1-j;i++)
    		{
    			if(strlen(arr[i]) > strlen(arr[i+1]) )
    			{
    				strcpy(s,arr[i]);
    				strcpy(arr[i],arr[i+1]);
    				strcpy(arr[i+1],s);
    			}
    		}
    	}
    }
    
    void str_cmp(char arr[][M],int n)
    {
    	int i = 0;
    	int j = 0;
    	char s[M] = {0};
    	for(j = 0;j < n;j++)
    	{
    		for(i = 0;i < n-1-j;i++)
    		{
    			if(strcmp(arr[i],arr[i+1]) > 0)
    			{
    				strcpy(s,arr[i]);
    				strcpy(arr[i],arr[i+1]);
    				strcpy(arr[i+1],s);
    			}
    		}
    	}
    }
    
    void output(char arr[][M],int n)
    {
    	int i = 0;
    	for(i = 0;i < n;i++)
    	{
    		printf("%s\t",arr[i]);
    	}
    	printf("\n");
    }
    
    void input(char arr[][M],int n)
    {
    	int i = 0;
    	printf("请输入%d个字符串\n",n);
    	for(i = 0;i < n;i++)
    	{
    		scanf("%s",arr[i]);
    	}
    }
    
    int main(void)
    {
    	int op = 0;
    	char arr[N][M] = {0};
    
    	while(1)
    	{
    		printf("==================================\n");
    		printf("1------字符数组元素输入\n");
    		printf("2------字符数组元素输出\n");
    		printf("3------字符数组元素按字符串大小排序\n");
    		printf("4------字符数组元素按字符串长度排序\n");
    		printf("0------退出\n");
    		printf("请输入你的选择\n");
    		printf("==================================\n");
    		scanf("%d",&op);
    		if(op == 0)
    			break;
    		switch(op)
    		{
    			case 1:
    				input(arr,N);
    				break;
    			case 2:
    				output(arr,N);
    				break;
    			case 3:
    				str_cmp(arr,N);
    				output(arr,N);
    				break;
    			case 4:
    				str_cmp2(arr,N);
    				output(arr,N);
    				break;
    		}
    	}
    
    }
    

     

    展开全文
  • 二维字符数组排序

    2021-03-07 21:33:54
    1.输入多个字符串,存放二维字符数组中,并对二维字符数组进行排序,比如输入:“BBB”、 “CCC", “AAA”,最后二维字符数组的内容为"AAA ,“BBB”,“CCC” #include<stdio.h> #include<string.h> int ...

    1.输入多个字符串,存放二维字符数组中,并对二维字符数组进行排序,比如输入:“BBB”、 “CCC", “AAA”,最后二维字符数组的内容为"AAA ,“BBB”,“CCC”

    #include<stdio.h>
    #include<string.h>
    int main()
    {
    char a[10][10]={},max[10];
    int i,j;
    for(i=0;i<3;i++)
    {
    scanf("%s",a[i]);
    }
    for(i=0;i<2;i++)
    {
    for(j=0;j<2-i;j++)
    {
    if(strcmp(a[j],a[j+1])>0)
    {
    strcpy(max,a[j]);
    strcpy(a[j],a[j+1]);
    strcpy(a[j+1],max);
    }
    }
    }
    for(i=0;i<3;i++)
    {
    printf("%s ",a[i]);
    }
    }

    展开全文
  • 二维数组和二维字符数组 二维数组 首先,我们来介绍一下二维数组。 二维数组:int a[5][10]是内含50个int类型值数组。 可以想象一下:可以是一个5行10列数据表。 输入某一个数行数和列数,就可以查找这个元素...
  • 想法是输入二维字符数组,然后比较字符数组每行第一个和第二个字符,对相应计数进行自加运算 这是运行后结果,可以看到aC,aJ,aB,bC,bJ,bB还都是0。请各位大佬指点一下。题目如下: ...
  • 一个 字符串数组就是一个二维字符数组。 #include <stdio.h>#include <string.h> /*输入5个学生名字(英文),使用冒泡排序按从大到小排序。提示:涉及到字符串数组,一个字符...
  • 二维字符数组利用gets()函数输入

    千次阅读 2017-03-20 19:06:00
    举例: ...a是二维字符数组的数组名,相当于一维数组的指针, 所以a[i]就相当于指向第i个数组的指针,类型就相当于char *,相当于字符串。 转载于:https://www.cnblogs.com/ZERO-/p/6591078.html...
  • 关于输入输出二维字符数组对于换行问题 【问题提出】:博主最近刷题时碰到一个算是很低级问题,输入一个字符二维数组,要输出时不能完全输出(问题如下图所示),一直被这个问题所困扰,今天把他解决了,特写...
  • 对于下面这段代码 #include <stdio.h> char *arr[5]; char s[5] = "11"; int main(void) ...//输入22 arr[1] = s; for (int i = 0; i < 2; i++) printf("%s ", arr[i]); retur...
  • 实现一个对二维字符数组进行排序的函数,字符串的输入输出在主函数里实现。 #include <stdio.h> #include <string.h> void sort(char *name[],int n) { char *tmp = NULL;//空 int i,j,k; for(i =...
  • 二维字符数组按行输出连续到下一行解决办法 二维字符数组在按行进行输出时候,会由于越界导致输出连续到下一行。如: 同时出现了后续乱码问题,这个后面说。 如图,将"37"都copy到SNR[6]和SNR[7]中,输出SNR[6]...
  • 题目: 定义一个char a[100][101]的二维字符数组,存储用户输入的n行m列个字符。其中n由用户输入确定,1<=n<=100;而m不需要用户输入,1<=m<=100,也就是一行最多只有100个有效字符。将n行字符串按照...
  • 输入n个字符串,将他们排序后输出。 要求使用动态数组和指针。 #include<stdio.h> int main() { int n; while(scanf("%d",&n)!=-1) { getchar(); getchar();//写两遍原因,上一组最后一个数据...
  • 想输出一个这样的字符矩阵 CSU ZJU PKU scanf和printf #include<cstdio> #include<cmath> int main(){ char schools[3][3]; printf("请输入:\n"); for(int i=0;i<=2;i++){ scanf("%s",...
  • /*C语言:用二维字符数组的每行存储键盘输入的字符串,将这些字符串按字典顺序升序排序,输出排序后的结果。*/ #include <stdio.h> #include <conio.h> #include <string.h> int main (void) { ...
  • 要求:了解多维数组的概念掌握二维数组的使用掌握用字符数组存放字符串的方法掌握字符串的输入及输出方法二维数组的定义 例:int a[2][3]; 定义一个二维数组 该数组有2行3列共6个元素 这6个元素都存放int型数据...
  • XDOJ 机器人 二维字符数组输入 机器人按照给定指令在网格中移动,指令有以下四种: N 向北(上)移动 S 向南(下)移动 E 向东(右)移动 W 向西(左)移动
  • 假设定义一个二维数组 char str[5][5]={} memset(str,'1', sizeof(str)); 那么现在str是 * * * * * * * * * * * * * * * * * * * * * * * * * 假使我在控制台输入...
  • 关于二维字符数组的输入问题

    万次阅读 多人点赞 2018-01-15 17:03:46
    此时对于二维数组的输入有一些细节问题,很重要。对于二维数组的输入,一般是一行一行的输入,当然也可以一个个来,但最好的还是一行一行的输入。所以一行一行的输入:for(int i= 0;i ;i++) scanf("%s",perNum[i])...
  • 1字符数组的条件输出注意空格(首+中+尾)L1-039. 古风排版 中国的古人写文字,是从右向左竖向排版的。本题就请你编写程序,把一段文字按古风排版。输入格式: 输入在第一行给出一个正整数N(),是每一列的字符...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,627
精华内容 650
关键字:

二维字符数组的输入