一个C语言的问题.....

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-27
c语言出现了一个问题,导致程序停止正常工作,请关闭程序

1、野指针,你使用的指针指向未知区域
2、scanf函数输入整形、字符……的时候缺少了&
3、缓冲区溢出,也就是说你使用数组时不经意间越界了

c语言中没有对象,有结构体,结构体是自定义数据类型,结构体内不包含函数。
“对象”的概念在C++中有,一个对象内有自己的成员变量和成员函数。你是不是把c语言和C++搞混了,这两者不是同一种语言(C++兼容c语言)

dec=%d, oct=%o, hex=%x, unsigned=%u,分别是以10进制格式、8进制格式、16进制格式、以无符号10进制格式输出i的值,还有就是i=-4,数值型数据在计算机中都是以其补码的形式存放的,正数的原码和补码相同,但是负数的就不一样了,以16位系统为例来分析一下:

对于有符号的数,其最高位是表示符号位的,0为正,1为负。

-4的原码是:1,000  0000  0000   0100

而负数的原码转换成补码的方法是:

符号位不变,数值位取反后再加1,所以

-4的补码是:1,111  1111  1111  1100,即实际上在计算机内存上存放的是这些2进制数了

dec=-4,这个是没问题的吧。

oct=177 774,每3位2进制构成一个8进制数,你自己可以算一下。

hex=fffc,每4位2进制构成一个16进制数,同样可以自己算一下。

unsigned=65532,为什么是这个呢,因为它的输出格式是%u,即无符号整型,那么最高位的1就不在表示符号位了,而是当作数值位了,即1,111  1111  1111  1100这个数换算成10进制数的数值就是65532,同样可以自己算一下。



  • C语言的一个简单问题
    答:1.10<a<15 在C语言中相当于:(10<a)<15,10<a得到一个0或是1的值,然后这个0/1再和15比较,结果是1 要想正确表示数学关系,应该写成这样:10<a&&a<15 2.a==11 || a==12 || a==13 || a==14 从左向右依次判断,如果发现a等于11,12,13,14其中之一时,整个表达式返回值为1,否...
  • c语言的一个问题
    答:b[0][3]也就是指的是, b[0][2]的下一个地址,那就是b[1][0],所以没有越界访问。b[3][0]就是b[2][2]的下一个地址,所以越界了。
  • C语言的一个问题,请写出原因
    答:一个c程序是由函数构成的。一个c程序至少包含一个函数(main函数),也可以包含一个main函数和若干个 其他 函数。函数是c程序的基本单位。c的函数相当于其它语言中的子程序。用函数来实现特定功能。可以说c是函数式语言。程序全部 工作 都是由函数来完成的。c的这种特点使得容易实现程序的模块化。函数在...
  • c语言的一个问题
    答:第一次循环后得b=0;k=1;while (b-->=0)再把b=0和0进行比较.然后运算b--得b=-1;(这里的b--无论真假都在比较后运算)第二次循环条件表达试完成.再计算循环体k++; 得k=2;第二次循环后得b=-1;k=2;while (b-->=0)再把b=-1和0进行比较.然后运算b--得b=-2;(这里的b--无论...
  • 一个关于C语言的问题,求教!!
    答:但C语言中,“=”是赋值运算符,“==”是关系运算符。如:if (a==3) a=b;前者是进行比较,a是否和3相等,后者表示如果a和3相等,把b值赋给a。由于习惯问题,初学者往往会犯这样的错误。5.忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1 b=2 编译时,编译程序在“...
  • C语言求教。一个小小的编程问题,在线等
    答:}输出count。 本回答由提问者推荐 举报| 答案纠错 | 评论 1 5 poorwolf 采纳率:41% 擅长: 电脑/网络 地理 手机/通讯 照相机/摄像机 理工学科 其他回答 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include<stdio.h> main() { int x, y, z, count=0; for (x=1;x<10;x++){ for...
  • 求大神解答一道简单的c语言编程问题。 题目:编一函数实现一个n*n的矩 ...
    答:include <stdio.h>#include<stdlib.h>#include<math.h>void Transpose(int a[][10],int n);main(){int n; //储存矩阵的大小int i,j; int a[10][10]={0}; //定义一个最大范围的数组储存矩阵printf("Input n:");scanf("%d",&n);//用户按顺序输入一个矩阵printf("Input %d*...
  • 发现了一个有趣的c语言问题,请各位大神帮忙解释一下。
    答:1.之所以再次编译值不改变,乃是因为系统在加载可执行镜像时所选取的栈的初始地址是相对固定的,a就在这个栈上,而且程序开始到main函数执行,这是一段按部就班的例程,没有什么变数,所以a的地址不变是可以理解的。2.scanf("%d",20000)这句合法并没有什么难以理解的地方,因为指针归根到底也只是一...
  • c语言问题 1.编写一个程序,完成以下功能: (1)输入10个学生的单科成绩...
    答:int search(int c[], int n, int b){ int i;for(i = 0; i < n; i++){ if(c[i] == b)return (i+1);} return 0;} int insert(int c[], int n, int b){ int i, j, buf;if(b > c[n-1]){ c[n] = b;return 0;} for(i = 0; i < n; i++){ if(...
  • 关于c语言的一个小问题
    答:const是一个C语言的关键字,它限定一个变量不允许被改变。也就是说定义了两个float变量MIN,MAX,值分别为0.0,100.0,在之后的代码中不允许修改MIN,MAX的值。注意:100.0后面f的作用是小数默认是double类型的,f的作用是将double类型强制转换为float类型。