二级C语言知识!高手请教!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了二级C语言知识!高手请教!相关的知识,希望对你有一定的参考价值。

1.什么是单目运算,双目运算,可以举例说明?
2.广义的笛卡尔积那种运算方式怎样理解啊?
3.数据结构中的二元组是什么形式啊?
4.有没有什么好办法可以很快的记住各种排序在最坏情况下次数的大小?

5.

1.单目运算符是指:运算对象只有一个的运算符;如:取正(+)、取负(-)、取反(^)、或(|)、与(&)等等;
双目运算符是运算对象有两个的;如:加(+)减(-)乘(*)除(/)、自加(++)、自减(--)、逻辑与(||)、逻辑或(&&)、取余(%)、赋值(=)等;

2.设两个关系R和S的属性列数分别是r和s,R和S的广义笛卡尔积是一个(r+s)个属性列的元组的集合,每一个元组的前r个分量来自R的一个元组,后s个分量来自S的一个元组。笛卡尔积记为R×S。形式定义为:R×S=t|t=<tr,ts>∧tr∈R∧ts∈S t是元组变量

3.数据结构的二元组表示采用B=(K,R)的形式,其中第一元K给出数据结构中所有元素的集合,第二元R给出数据结构中所有元素具有的二元关系的集合,通常对每个二元关系分别进行讨论,所以直接用R表示这一种二元关系,该二元关系是有序对的集合,又称是序偶的集合,每个有序对(即序偶)是用一对尖括号括起来的、具有前驱和后继关系的两个元素。
  对于前面图形中给出的四种数据结构,下面分别讨论它们的二元组表示。
  集合结构中的元素集合K和二元关系R分别为:
    K=A,B,C,D,E,F,G
    R=
  因为集合中的元素为孤立顶点,它们之间没有前驱和后继的关系,所以对应的二元关系为空。
参考技术A 个人理解:
int *p;
int q;
比如说整型指针,p存的内容应该是地址,如p=&q;现在p指针就指向q存的地址了。那*p就相当于q。如*p=2;就等同于给q赋值为2.
也就是说,*后的部分应该赋一个地址,如(*p中的p存的是地址;再比如**p中的*p应该存地址),而整体就指的是该地址中存的内容
参考技术B 上面的兄弟(姐妹)不清楚不要误导人哦,第一个问题的答案是有的是错的。
单目运算是运算所需变量为一个的运算,如逻辑非运算符【!】、按位取反运算符【~】、自增自减运算符【++ 和--】、负号运算符【-】,这些都是单目运算符,故++i为单目运算。
重点:自增和自减为单目运算符!!
双目运算是所需变量为两个的运算。如,加【+】减【-】乘【*】除【\】,逻辑与(||)、逻辑或(&&)、取余(%)、赋值(=)等双目运算符,他们必须有两个变量才能用,如a&&b,这是双目运算。
其余的回答还是可以的,呵呵~

关于scanf的输出问题,有高手请教一下如何用scanf输出多种类型的变量,下面是我写的例题

#include<stdio.h>
int main()
int a;char *b;
scanf("%d,%s",&a,b);
printf("%d,%s\n",a,b);
return 0;

这个例子比较简单,我在键盘上键入2,abc然后回车,但是输出段错误;
然后我直接重新执行程序 键入22回车,输出22,乱码;
老跳出来段错误。
我想问%s和%d格式的变量是不是不能一起输入,或者应该是什么样的格式???

主要是因为你的指针b所指向的内存没有确定,所以会引起错误。你现在只是声明了一个字符指针,但是它指向哪里没有确定,这就是著名的指针悬挂问题了。
在输入之前申请一段内存,可以使用malloc等函数动态申请,也可以直接申请一个字符数组用于存储输入的字符串。然后让b指向这个字符数组,就可以了。
#include<stdio.h>
int main()
int a;char *b;
char name [20];
b=name;
scanf("%d%s",&a,b); //最好不要加逗号,输入的时候直接用空格分隔就行了
printf("%d,%s\n",a,b);
return 0;
参考技术A 指针可能不行 改成字符型数组吧 这样可以
#include<stdio.h>
int main()
int a;char b[10];
scanf("%d%s",&a,b);
printf("%d,%s\n",a,b);
return 0;
参考技术B 应该是scanf("%d%f",&a,&b); 参考技术C 传给scanf的字符串参数ms必须为数组,char*会挂

#include<stdio.h>
int main()

int a;char b[10];
scanf("%d,%s",&a,b);
printf("%d,%s\n",a,b);
return 0;
参考技术D #include<stdio.h>
#include<stdlib.h>
int main()

int a;char *b=new char(10);//错误的原因是因为你这里用到指针,用指针之前要给他一个地址
scanf("%d,%s",&a,b);
printf("%d,%s\n",a,b);
system("pause");
return 0;

指针在没有给它赋值之前他的指向是无法确定的,有可能他只想的内存里存储着重要的信息,指针在使用之前没有给它赋值,有可能导致电脑里重要的信息被修改或丢失,为是不是这种糟糕的事情发生,一般情况下电脑会报错组织该情况的发生!!

以上是关于二级C语言知识!高手请教!的主要内容,如果未能解决你的问题,请参考以下文章

计算机二级C语言公共基础知识,以及习题总结

计算机二级C语言公共基础知识,以及习题总结查找和排序

计算机二级C语言知识点

计算机二级C语言知识点

C语言宝典C语言基础知识学习利器!

全网最全计算机二级C语言知识总结,还不快来白嫖