c语言笔试输入输出(数组测试)

c语言定义数组:

二维数组在定义的时候,可以不给出行数,但必须给出列数,二维数组的大小根据初始化的行数来定

int d[ ][4] = {1,2,3,4,5};//合法 这叫局部初始化,也得给出初值。。。一般都是这样逐个初始化int[2][2]={1,2,3,4};
每行有4列,则1234是一行,5是另一行,且后面有三个空间。所以一共8个int空间
printf("sizeof(d)= %d\n",sizeof(d)); 为32
 
所以c语言的二维数组必须是方块形的矩阵???必须有列自动换行和补0。。
java的二维数组可以是每行的列不对齐的那种。所以java必须有行,列无所谓。
 
Java:(而且java推荐int[ ][ ] d 这样写)

关于互联网的在线笔试输入输出:

 编译器环境说明:http://OJ.acmcoder.com/ExamNotice.html
在线编程题刷题训练:http://www.acmcoder.com

// C
#include <stdio.h>
int main()
{
   int N, M;
    // 每组第一行是2个整数,N和M,至于为啥用while,因为是多组。
   while(scanf("%d %d", &N, &M) != EOF) {
      printf("%d %d\n", N, M);
      // 循环读取“接下来的M行”
      for (int i=0; i<M; i++) {
        int a, b, c;
        // 每行是3个整数,a,b,c。
        scanf("%d %d %d", &a, &b, &c);
        printf("%d %d %d\n", a, b, c);
      }
      // M行读取完了,就又要开始下一组了,去while那里。
   }
}

以上按下ctrl+z代表EOF即文件结尾则跳出while

或者在while里面设置一个标志if(flag){break;} 跳出while

那么上面这个二维数组如何输入赋值呢?

a[i][0]=a居然不行?

答案是抛弃把a,b,c赋值进来的想法,用scanf("%d",&sum[i][j]);

#include <stdio.h>
int main(int argc, char const *argv[])
{
    int n,m;
   
    
    while(scanf("%d %d",&n,&m)!=EOF){
        printf("%d %d\n",n,m);
        int a[m][2];//得放在这里才行!!!!!!!!!!!
        for (int i = 0; i < m; i++)
        {
            /* code */
            // int a,b,c;
            // scanf("%d %d %d",&a,&b,&c);
            // printf("%d %d %d\n",a,b,c);
            for (int j = 0; j < 3; j++)
            {
                /* code */
                scanf("%d",&a[i][j]);//每次只能输入1个再换行
            }
            printf("\n");

        }

          for (int i = 0; i < m; i++)
        {
           for (int j = 0; j < 3; j++)
           {
               printf("a[%d][%d]:%-4d",i,j,a[i][j]);//100200
           } 
           printf("\n"); 
        } 

        if (m==5)
        {
            /* code */
            break;
        }   
    }

    // for (int i = 0; i < m; i++) a只能在m定以后才能放 所以要在while里面,所以这一段不能放外面了 a 会报错 
    //     {
    //        for (int j = 0; j < 2; j++)
    //        {
    //            printf("a[%d][%d]:%-4d",i,j,a[i][j]);//100200
    //        } 
    //        printf("\n"); 
    //     }
    printf("%d\n",m);
    printf("over");
    return 0;
}

运行结果:

1 2//输入
1 2//打印
1 2 3//输入

2 3 4//输入

a[0][0]:1 a[0][1]:2 a[0][2]:2//输出打印
a[1][0]:2 a[1][1]:3 a[1][2]:4

^Z//输入
over//输出


c语言中是没有String头文件吗?目前只看到字符串用数组的形式输入,叫做字符数组

 

 最后这两个,{ }包起来的一行这样是挨个儿赋值,字符加单引号,数字就不用加单引号,都得加逗号。

“ ”包起来也是一行,是直接字符串赋值。列不够补0

 

 字符串赋值会在末尾多占一个字节\0,当做一个字符串整体那么输入输出简单一些(因为字符得一个一个循环输入输出)

这种字符还可以用%s占位符来输出字符串

 一行一行输出:hello和xxw

  char strr[15] = {"helloxxw"};
   printf("%s\n",strr);

   char str[15];
   printf("input string:\n");
   scanf("%s",str);
   printf("output:%s\n",str);
   return 0;
}

运行结果:

input string:
helloworld
output:helloworld

 

posted @ 2020-09-14 10:30  xinxinpang  阅读(682)  评论(0编辑  收藏  举报