精华内容
下载资源
问答
  • 关于C语言数组输入与输出

    万次阅读 多人点赞 2017-12-11 20:31:31
    先摆代码: ... //定义数组,不设初值 char a[8] = { 'a' }; //定义数组,设置初值,这样其余为\0 scanf("%s", a); //第一种输入方式 int i = 0; //第二种输入方式 for (; i (a) - 1; i++) { char

    先摆代码:

    #include<stdio.h>
    #include<windows.h>
    
    int main()
    {
    	char a[8] ; //定义数组,不设初值
    	char a[8] = { 'a' }; //定义数组,设置初值,这样其余为\0
    
    	scanf("%s", a); //第一种输入方式
    	int i = 0; //第二种输入方式
    	for (; i <= sizeof(a) - 1; i++)
    	{
    		char ch;
    		if ((ch = getchar()) == 012)break;
    		a[i] = ch;
    	}
    		
    	printf("输出数组所占字节数:%d\n", sizeof(a)); //输出数组所占字节数
    	printf("字符串实际长度:%d\n", strlen(a)); //输出字符串实际长度,不包括\0
    
    	printf("%s\n", a); //第一种输出方式
    	int o = 0; //第二种输出方式
    	for (; o <= sizeof(a) - 1; o++)
    		putchar(a[o]);
    
    
    	printf("\nEND"); //作为结尾,便于观测
    
    	Sleep(60000);//暂停一分钟,以便观察结果
    	return 0;
    }


    TEST1.我们不设初值定义数组,再选择第一种输入方式,输入123,输出结果为:


    输入1234567,再运行:


    输入12345678,再运行:


    但一分钟(即程序正常运行结束)后报错.
    分析:不设初值定义数组,数组内应该没\0;第一种输入方式系统会自动在用户输入的内容后加上\0.所以实际向数组内赋了9个字符的值.所以报错.
    第二种输出方式会将字符数组中每一个值都输出,当输入123时,数组内为123\0????,所以会出现乱码.
    TEST2.我们不设初值定义数组,再选择第二种输入方式,输入123,输出结果为:

    输入1234567,再运行:


    输入12345678,再运行:


    程序结束后没有报错.
    分析:不设初值定义数组,数组内应没\0;第二种输入方式是实打实的用户输入啥便赋予数组啥.又因为strlen(a))输出字符串实际长度时在找\0,但数组中没\0,所以显示错误的数据.同理第一种输出方式在找\0没找到,所以1234567[8]后出现乱码.再说第二种输出方式,第二种输出方式会将字符数组中每一个值都输出,当输入123时,数组内为123?????,所以会出现乱码.第二种输入方式不会多加\0,所以赋了8个值,不会报错.
    TEST3.我们定义数组,设初值,再选择第一种输入方式,输入123,输出结果为:


    输入1234567,再运行:


    输入12345678,再运行:


    然后程序报错....
    分析:定义数组并设初值,数组内未赋值部分会自动初始为\0;所以前两个图片都没问题.第一种输入方式系统会自动在用户输入的内容后加上\0.所以实际向数组内赋了9个字符的值.所以报错.
    TEST4.我们定义数组,设初值,再选择第二种输入方式,输入123,输出结果为:


    输入1234567,再运行:


    输入12345678,再运行:


    分析:定义数组并设初值,数组内未赋值部分会自动初始为\0;所以前两个图片都没问题.第二种输入方式是实打实的用户输入啥便赋予数组啥.又因为strlen(a))输出字符串实际长度时在找\0,但数组中八个位置都被占了,没\0,所以显示错误的数据,同理第一种输出方式在找\0没找到,所以12345678后出现乱码.



    展开全文
  • //当copy的内容超过容量,仍然可以赋值,即字符串数组长度的定义在此处失效 puts(str); exit(0); } book@100ask:~/C_coding/CH01$ make strcp cc strcp.c -o strcp book@100ask:~/C_coding/CH01$ ./strcp abcde ...
    book@100ask:~/C_coding/CH01$ cat char1.c
    #include <stdio.h>
    #include <stdlib.h>
    
    #define N 32
    
    int main()
    {
    	char str[N] = {'a','b','c'};
    	int i;
    	scanf("%s",str); 
    	printf("%s\n",str);
    	exit(0);
    }
    
    
    book@100ask:~/C_coding/CH01$ make char1
    cc     char1.c   -o char1
    book@100ask:~/C_coding/CH01$ ./char1
    hello
    hello 
    book@100ask:~/C_coding/CH01$ 
    
    book@100ask:~/C_coding/CH01$ cat char1.c
    #include <stdio.h>
    #include <stdlib.h>
    
    #define N 32
    
    int main()
    {
    	char str[N],str1[N],str2[N];
    	int i;
    	scanf("%s%s%s",str,str1,str2); 
    	printf("%s\n%s\n%s\n",str,str1,str2);
    	exit(0);
    }
    
    
    book@100ask:~/C_coding/CH01$ make char1
    cc     char1.c   -o char1
    book@100ask:~/C_coding/CH01$ ./char1
    hello word chaina
    hello
    word
    chaina
    book@100ask:~/C_coding/CH01$ ./char1
    hello he2 he3 he4 he5 he6   //当有多个输出时,自动只赋值前三个串
    hello
    he2
    he3

    字符串常用函数:

    strlen & sizeof

    book@100ask:~/C_coding/CH01$ cat char2.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    // strlen & sizeof 
    #define N 32
    
    int main()
    {
    	char str[] = "hello";
    	printf("%d\n",strlen(str));   //strlen显示字符的实际长度,此处hello包含5个字符,故显示5
    	printf("%d\n",sizeof(str));  //sizeof打印字符串的总长度,包括尾零,此处hello包括尾零共6
    	exit(0);
    }
    book@100ask:~/C_coding/CH01$ make char2
    cc     char2.c   -o char2
    book@100ask:~/C_coding/CH01$ ./char2
    5
    6
    book@100ask:~/C_coding/CH01$ cat char2.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define N 32
    
    int main()
    {
    	char str[] = "hello\0abc";
    	printf("%d\n",strlen(str)); //strlen以\0分割,因此此处打印5
    	printf("%d\n",sizeof(str)); //sizeof会将中间的\0也算进去,算一个空间,hello + \0 + abc + \0 = 10个字符空间
    	exit(0);
    }
    
    book@100ask:~/C_coding/CH01$ ./char2
    5
    10
    

    strcpy & strncpy

    book@100ask:~/C_coding/CH01$ cat strcp.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define N 32
    
    int main()
    {
    	char str[] = "hello\0abc";  //给字符串数组str赋初值
    	strcpy(str,"abcde");  //将abcde copy给字符串数组str
    	puts(str);            //将strcp运算后的字符串str输出
    	exit(0);
    }
    
    
    book@100ask:~/C_coding/CH01$ make strcp
    cc     strcp.c   -o strcp
    book@100ask:~/C_coding/CH01$ ./strcp
    abcde
    book@100ask:~/C_coding/CH01$ cat strcp.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define N 32
    
    int main()
    {
    	char str[3];          //初始化,定义字符串数组的长度为3
    	strcpy(str,"abcde");   //当copy的内容超过容量,仍然可以赋值,即字符串数组长度的定义在此处失效
    	puts(str);
    	exit(0);
    }
    book@100ask:~/C_coding/CH01$ make strcp
    cc     strcp.c   -o strcp
    book@100ask:~/C_coding/CH01$ ./strcp
    abcde
    
    book@100ask:~/C_coding/CH01$ cat strncp.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define STRSIZE 32
    
    int main()
    {
    	char str[STRSIZE];
    	strncpy(str,"abcde",STRSIZE);   //限定copy的最大字符数为STRSIZE
    	puts(str);
    	exit(0);
    }
    
    
    book@100ask:~/C_coding/CH01$ make strncp
    cc     strncp.c   -o strncp
    book@100ask:~/C_coding/CH01$ ./strncp
    abcde
    book@100ask:~/C_coding/CH01$ cat strncp.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define STRSIZE 3
    
    int main()
    {
    	char str[STRSIZE];
    	strncpy(str,"abcde",STRSIZE);   //当限定copy的最大字符数为STRSIZE=3时,最多可被copy3个字符
    	puts(str);
    	exit(0);
    }
    
    
    book@100ask:~/C_coding/CH01$ make strncp
    cc     strncp.c   -o strncp
    book@100ask:~/C_coding/CH01$ ./strncp
    abc

     strcat & strncat

    book@100ask:~/C_coding/CH01$ cat strcat.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define STRSIZE 32
    
    int main()
    {
    	char str[STRSIZE] = "hello";
    	strcat(str," ");               //strcat负责把不同的字符串连接在一起
    	strcat(str,"world!");
    	puts(str);
    	exit(0);
    }
    
    
    book@100ask:~/C_coding/CH01$ make strcat
    cc     strcat.c   -o strcat
    book@100ask:~/C_coding/CH01$ ./strcat
    hello world!
    
    book@100ask:~/C_coding/CH01$ cat strnc
    strncat    strncat.c  strncp     strncp.c   
    book@100ask:~/C_coding/CH01$ cat strncat.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define STRSIZE 5
    
    int main()
    {
    	char str[STRSIZE] = "hello";
    	strncat(str," ",STRSIZE);
    	strncat(str,"world!",STRSIZE);   //限定一次连接的最大长度为STRSIZE
    	puts(str);
    	exit(0);
    }
    
    
    book@100ask:~/C_coding/CH01$ make strncat
    cc     strncat.c   -o strncat
    book@100ask:~/C_coding/CH01$ ./strncat
    hello world

     strcmp & strncmp

    book@100ask:~/C_coding/CH01$ cat strcmp.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define STRSIZE 32
    
    int main()
    {
    	char str[STRSIZE] = "hello";
    	char str1[STRSIZE] = "world";
    	printf("%d\n",strcmp(str,str1));    //对比,左边的字符串(从第一个字符开始比较,大于则返回整数,小于返回负数)
    	exit(0);
    }
    
    
    book@100ask:~/C_coding/CH01$ make strcmp
    cc     strcmp.c   -o strcmp
    book@100ask:~/C_coding/CH01$ ./strcmp
    -15
    book@100ask:~/C_coding/CH01$ cat strcmp.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define STRSIZE 32
    
    int main()
    {
    	char str[STRSIZE] = "hello";
    	char str1[STRSIZE] = "aworld";
    	printf("%d\n",strcmp(str,str1));
    	exit(0);
    }
    
    book@100ask:~/C_coding/CH01$ make strcmp
    cc     strcmp.c   -o strcmp
    book@100ask:~/C_coding/CH01$ ./strcmp
    7
    
    book@100ask:~/C_coding/CH01$ cat strcmp.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define STRSIZE 32
    
    int main()
    {
    	char str[STRSIZE] = "hello";
    	char str1[STRSIZE] = "hello";
    	printf("%d\n",strcmp(str,str1));
    	exit(0);
    }
    
    
    book@100ask:~/C_coding/CH01$ make strcmp
    cc     strcmp.c   -o strcmp
    book@100ask:~/C_coding/CH01$ ./strcmp
    0
    book@100ask:~/C_coding/CH01$ cat strcmp.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define STRSIZE 32
    
    int main()
    {
    	char str[STRSIZE] = "hello";
    	char str1[STRSIZE] = "helloa";
    	printf("%d\n",strcmp(str,str1));
    	exit(0);
    }
    
    book@100ask:~/C_coding/CH01$ make strcmp
    cc     strcmp.c   -o strcmp
    book@100ask:~/C_coding/CH01$ ./strcmp
    -97
    
    
    book@100ask:~/C_coding/CH01$ cat strncmp.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define STRSIZE 32
    
    int main()
    {
    	char str[STRSIZE] = "hello";
    	char str1[STRSIZE] = "helloa";
    	printf("%d\n",strncmp(str,str1,5));  //strncmp设定对比的字符数为前n个
    	exit(0);
    }
    
    book@100ask:~/C_coding/CH01$ make strncmp
    cc     strncmp.c   -o strncmp
    book@100ask:~/C_coding/CH01$ ./strncmp
    0

     

    展开全文
  • 冒泡排序 #include<stdio.h> int main() { int a[10]; int i,j; int t; for(i=0;i<10;i++) //a[10]赋值十个数 scanf("%d",&a[i]); for(j=9;j>0;j--) //排序 ... //a[i]a[i+1]交换

    冒泡排序

    #include<stdio.h>
    int main()
    {
    	int a[10];
      int i,j;
      int t;
      for(i=0;i<10;i++)     //a[10]赋值十个数 
      scanf("%d",&a[i]);
      for(j=9;j>0;j--)     //排序 
      for(i=0;i<j;i++)
      if(a[i]>a[i+1])
      {
      t=a[i+1];           //a[i]与a[i+1]交换值 
      a[i+1]=a[i];
      a[i]=t;
      }
      for(i=0;i<10;i++)
      printf("%d",a[i]);
      return 0;
      
      
    } 
    

    随便输入十个数,输出结果会自动排序,每输入完一个数记得打空格

    展开全文
  • C语言文件与数组之间输入输出操作

    千次阅读 2019-05-24 23:42:21
    C语言文件与数组之间输入输出操作 文件存到数组里面: #include<iostream> #include<fstream> #include<string> #include<cstdio> #include<cstdlib> using namespace std; int main...

    C语言文件与数组之间输入输出操作

    文件存到数组里面:

    #include<iostream>
    #include<fstream>
    #include<string>
    #include<cstdio>
    #include<cstdlib>
    using namespace std;
    int main()
    {	
    	fstream fs("test.txt");
    	istreambuf_iterator<char> beg(fs),end;
    	string data(beg,end);
    	cout<<data<<endl;
    	system("pause");
        return 0;
    }
    

    这个代码保存的位置下新建一个文件,名为test.txt。
    在这里插入图片描述
    然后文件中所有字符存到data字符串里面。

    输出字符串,可看出各种字符都被读到data里面了。

    在这里插入图片描述

    数组存到文件里面:

    #include<iostream>
    #include<fstream>
    #include<string>
    #include<cstdio>
    #include<cstdlib>
    using namespace std;
    int main()
    {	
    	fstream fs("test.txt");
    	istreambuf_iterator<char> beg(fs),end;
    	string data(beg,end);
    	FILE * f;
        f= fopen("1.txt", "w");
    	for(int i=0; data[i]; i++) fprintf(f, "%c", data[i]);
    	fclose(f);
    	system("pause");	
    	return 0;
    }
    

    data存了test.txt里面的数据,现在我们把data输出到另一个文件1.txt。

    在这里插入图片描述
    在这里插入图片描述

    自定义文件路径:

    #include<iostream>
    #include<fstream>
    #include<string>
    #include<cstdio>
    #include<cstdlib>
    using namespace std;
    int main()
    {	
    	char* file1=(char*)malloc(sizeof(char)*100000);
    	char* file2=(char*)malloc(sizeof(char)*100000);
    	printf("请输入要打开的文件名(含路径):\n");
    	gets(file1);
    	fstream fs(file1);
    	istreambuf_iterator<char> beg(fs),end;
    	string data(beg,end);
    	cout<<data<<endl;
    	system("pause");
    	
    	FILE * f;
    	printf("请输入要保存的文件名(含路径):\n");
    	gets(file2);
    	f = fopen(file2, "w");
    	for(int i=0; data[i]; i++) fprintf(f, "%c", data[i]);
    	fclose(f);
    	system("pause");
    	
    	return 0;
    }
    

    输入一个地址作为数据文件,存到数组里。

    再输入一个地址作为输出文件,数组所有字符输出到这个文件里。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    展开全文
  • C语言数组练习

    2021-04-21 18:50:24
    C语言数组练习 题目 1、将一个长度为8的整型数组中的值按逆序存放;(数组中数据自己从键盘动态输入) 。 2、输入8个数据,然后按照由小到大的顺序输出。 3、从键盘输入一个4*3整型数组赋值,找出其中的最小值,并将...
  • C语言数组求和求平均值例题

    千次阅读 2020-06-11 12:36:08
    创建一个能够保存10个元素的整形数组,从键盘按照指定的规则输入10个整数,先把这个数组各个元素的和和平均值(保留2位小数)显示出来,然后再把小于平均值的元素显示出来。 输入数据规则: 先把自己的学号按照每2位...
  • 偶然翻到一篇以前写下的想法,对数组输入时用指针进行定位而不是用数组元素下标,遂尝试着进行验证想法。 第一种是指针自增运算p++ #include<stdio.h> int main() { int a[10]; int *p=a; for(int i=0; i&...
  • C语言字符数组输入与输出

    千次阅读 2016-06-27 02:01:10
    #include #include #include  #include typedef struct student { int num; char name[10]; char sex[5]; char birth[10]; } sq; sq sqlist[10]; int main() { gets(sqlist[1].name);... print
  • C语言数组

    2016-10-27 19:00:38
    数组 1.1一维数组的定义及初始化 一维数组的定义格式:int a[10];... 用冒泡法对键盘输入的10个数据进行从小到大的排序,并输出排序结果 1.3 二维数组的定义和初始化 1.3.1 二维数组的定义初始化 格式:
  • C语言数组编程题.pdf

    2020-08-09 02:31:30
    1掌握一维数组的定义赋值和输入输出的方法 2掌握字符数组定义初始化赋值的方法 3了解常见的字符串函数功能及其使用方法 4 掌握二维数组的定义引用 二实验内容 1编写程序输入 10 个整数存入一维数组统计输出其中的...
  • c语言数组与for循环的综合运用

    千次阅读 2018-11-21 22:13:54
    .编写程序,输入字符串 s1 和 s2 以及插入...首先看清题目,题目意思输入一个位置,插入一个字符串,然后在插入的字符串合并输入。 #include&lt;stdio.h&gt; #include&lt;string.h&gt; int main...
  • C语言数组——交换位置

    千次阅读 2020-11-21 20:25:17
    找到数组中最小的元素,并与数组首个元素交换位置。如果有多个最小元,取数组中首次出现的交换 输入样例 4 1 -6 3 -6 输出样例 -6 1 3 -6 #include <stdio.h> int main() { int a[100], n, i, j; scanf("%d", ...
  • C语言数组之查找

    千次阅读 2019-03-26 18:41:27
    基本思想:利用循环顺序扫描整个数组,一次将每个元素待查找的元素进行比较,若找到则停止循环,输出其位置值;若所有的元素都比较后仍为找到,则循环结束,输出未找到。 #include <stdio.h> int bansearch...
  • 字符数组 字符数组就是char数组,当维度是一维时可以当做“字符串”。当维度是二维时可以当做字符串数组,即若干字符串。...1.scanf输入与printf输出 scanf对字符类型有%c和%s两种格式(printf同...
  • 输入 10 个整数,将其中最小的数第一个数互换,把最大的数最后一个数互换。写三个函数分别实现:(1)输入 10 个数;(2)实现具体互换处理,并通过指针型参数的间接运算返回最大值和最小值;(3)输出 10 个数...
  • Prac1:实现从键盘任意输入10个整数,用函数编程实现将其中最大数最小数的位置对换后,再输出调整后的数组。 #include #define ARRSIZE 10 void MaxMinExchang(int a[], int n){ int maxValue=a[0], minValue=...
  • 问题:假设有一张地图,上面有着阻碍物,入口,出口。求出入口到出口的最短距离 在数组中是这样的:有一个8*8的数组,1障碍物 0路 3入口 4...程序思路步骤:一开始出入一个值赋值为i,再输入一个i*i的地图 因为i...
  • 1)从键盘输入一个正整数(不多于5位),计算该正整数789之和(记为sum); (2)将整数sum各个位拆分到数组a中; (3)数组a从小到大排序; (4)将排序后的数组a组成一个值为最小的整数(记为min); (5)...
  • 方法一: ... printf("请输入第%d个数字:",i+1); scanf("%d",p++); } p=a; //相当于p=&a[0] for(i=0;i<10;i++,p++){ printf("第%d个数字为:%d\n",i+1,*p); } } 方法二: void .
  • ``` #include int main() { int a[4][5]; int i,j; for(i=0;i;i++){ for(j=0;j;j++){ scanf("%d",&a[i][j]); } } for(i=0;i;i++){ for(j=0;j;j++){ printf("%d",&a[i][j]);...
  • 问题描述:输入对应数组,最大的第一个元素交换,最小的最后一个元素交换,输出数组。 程序源码: #include&lt;stdio.h&gt; void main() { int number[10]; input(number); max_min(number); output...
  •  对每组测试数据,你的程序需要向标准输出文件(通常为启动该程序的终端)依次输出符合要求的矩阵,每行数据数据之间以空格分隔,在行首和行尾不要输出多余的空格。在所有数据前后,以及两组数据之间不要输出多余...

空空如也

空空如也

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

c语言数组输入与输出

c语言 订阅