wujr5 / c-and-cpp-language-learning

C和C++编程语言学习 - 2015级

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

软件:week 7 问题反馈

ghostbody opened this issue · comments

1、记得本周有实验作业 实验:程序调试
2、期中考试时间,11月9日,8:00。
地点:实验中心B403
理论考试时间:8:00 ~ 9:30
实验机试:9:40 ~ 11:10 (暂定5题)

周知。

3、往年期中考试题稍后会放在
http://172.18.215.225:8080/
大家可以计时做题。

4、本周讨论请在本issue后留言,欢迎讨论。

拓展题中math头文件无法调用
其中的函数调用时显示未定义

@LinTheLegend 已修复

@ghostbody 刚刚室友遇到一个很奇怪的bug……就是做Sicily上的#1002 用来储存数据的数组长度为1000的时候,算法不能得到正确结果,连续输入3个相同的数字得不到输出。但是其他不变,把数组长度改为200 或者 101以后结果就对了,连续3个相同的数可以输出。Sicily也AC了。这是什么原因?……

@JerryChan31 数组是不是没初始化,还有描述问题具体一点,不知道你描述的是什么意思。

1010中那个p是干什么用的。。。
When you output the Score, keep the symbol of the Score, and use the absolute value of the Score to mod p.
然而却没输出。

我想问一下,sicily上的running time error要怎么解决?是代码哪里出了问题?

commented

@summer06 就是运行的时候出现了运行错误,可能是有些地方没有处理好。再仔细检查一下代码,考虑清楚所有可能的情况

#include<stdio.h>
int main() {
    int a = 1 | 0;
    int b = a & 4;
    printf("%d\n",  !a & b + a ^ b);
    return 0;
}

。。。这是这周理论题的第九题
答案最后输出了0

我想问的是...我搜了百度之后大概知道这些符号是什么意思
但是可能理解得不太对 想问一下是哪些理解错了。
理解:(假设存储的int都是8位 ...不想写32位了)
第一行 : a = 1 | 0, a = 00000001对吗
第二行 : b = 1 & 00000100 , b = 00000000对吗?(每位都按位与 都得到0)
第三行 : !a = 11111110 ,b=00000000, 所以!a & b = 00000000 对吗?
^是按位异或 ,那a^b = 00000001 ^ 00000000 = 00000001 对吗?
最终结果就是 0 + 1 = 1 。。。
但是答案是0...虽然是什么语句理解得不对呢?

接上一条。。
搜了一下 !是逻辑非运算符..
也就是说!a 表示的是: 如果a为0,则!a = 1
如果a为非0的任意数,则!a = 0 ?吗?

是的呢

  • 发送自我的Sony Xperia™智能手机

我用vs配置行编译,发现无法包括头文件stdio.h,但是已经配置好了环境变量include怎么还会这样呢?

我好像知道为什么了。。。

#include<stdio.h>
int main() {
    int a = 1 | 0;
    int b = a & 4;
    printf("%d\n",  !a & b + a ^ b);
    return 0;
}

我又查了一下 & 与^等运算符的优先级
发现 + 是在 &之前, & 是在 ^之前的。
所以最终的答案是 (!a) & (b+a) ^ b
又因为a=1 所以 !a= 0
所以 翻译过来是 0 & 1 ^ 0;
即 0^0 = 0
所以答案是0

这个理解对了吗??有人能回答一下么。。。

VS有自带的专用命令提示符,配置命令编译请使用VS自带的命令提示符

  • 发送自我的Sony Xperia™智能手机

---- 包包里有糖编写 ----

我用vs配置行编译,发现无法包括头文件stdio.h,但是已经配置好了环境变量include怎么还会这样呢?


Reply to this email directly or view it on GitHub:
#24 (comment)

#include<stdio.h>
int main() {
    unsigned char a = 0xA5;
    unsigned char b = ~a>>4;
    b = b;
    printf("%d\n", b);
    return 0;
}

...这是理论题第十题
a=(165)10 = (10100101)2
b=~a >> 4 = (00001010)2 = 5 (取反右移4位后前面补0(无符号))
b = b (这个语句是什么用处?也就是说上一行声明的时候 b并不等于a取反右移4位咯??)
然后最后答案输出了245...然而我算的是5← ←
求解释....

@15331048 因为,unsigned char是8位,然而~运算和>>运算都是在32位int下的运算符。

@ghostbody ....所以是什么意思.....

@15331048 你的思路是用8位运算的呀

@ghostbody 所以会把a先隐式转换成有符号的int类型 再进行按位取反等运算吗?那a就不是165了 ?? 从unsigned char 的165 转成32位int会怎么转....?

qq 20151115190634
1005那道题我输出这样,sicily说presentation error,是为什么呢?

数组排序除了TA给出的三种,我还找到了两种。发表出来,希望可以的到讨论的分数2333
52p27h esaid59f z3vn9u
jl13 49q2efg bp eqc1i

@dengsonhua 用c语言实现相同的功能

总是遇到数组下标的问题,不知道为什么有时候下标太大输出结果就会出错,改小了虽然答案变成正确了但又不符合题目要求这是为什么啊

commented

求助。。Dev一点调试就错误停止工作怎么办?

commented

经过q群上同学的帮助,只要点开工具里的编译选项,选择代码生成/优化,再选择连接器,下面的五行中有一行产生调试信息,把NO改成YES就好了

能在命令窗口运行程序,但不能进行文件输入。可能是什么原因?