#26056: C语言二维数组调了一下午终于AC了,有点坑,而且感觉还有bug。。


jack_2003 (Jack_Yao kaijie)

學校 : 上海市延安中学
編號 : 43048
來源 : [183.195.59.217]
最後登入時間 :
2021-08-17 14:01:23
a244. 新手訓練 ~ for + if -- 新手訓練系列 ~ 1 | From: [117.143.50.210] | 發表日期 : 2021-07-14 17:47

目前个人小熊猫devc编译器用源码还是有点问题,但抱着试一试的心态贴上来,系统竟然过了,不知道是我编译器问题还是神马。

调了一下午了,没心思继续debug了,反正系统过了,以后再说。

老样子,还是尝试二维数组,题目操作符号直接改成操作数了,这不摆明让用switch case吗?

先上代码,main和头就不粘过来了,,注释符号防和谐就不加了

初学,技术不佳,仅供参考,自己的一些问题也丢在里面了,欢迎帮忙debug(`・ω・´)

	int times;           定义行数,也就是之后循环的次数,题设说明。
	scanf("%d", &times); 输入行数。
	long a[times];       操作数单独做一个一维数组,注意是long,按理来说就4个操作数,但个人测试上传亲测用int没法过,改成long就成功了。
	long b[times][2];    数据单独做一个二维数组,这个按题目要求,没毛病。
这里单独说明一下为啥操作数和数据分开放,如果建一个大的long a[times][3]来同时存放操作数和数据,上传会报错:
系統呼叫了 abort 函式! *** stack smashing detected ***: terminated Aborted (core dumped)*/
看着好像是性能溢出还是啥,俺也不知道为啥,要有大佬能懂还请帮忙解答 long n; 这边定义一个全局循环变量。 for (n = 1; n <= times; n = n + 1) { 循环输入,没啥可多说的。 scanf("%ld %ld %ld", &a[n], &b[n][1], &b[n][2]); } for (n = 1; n <= times; n = n + 1) { 循环判断+输出 long long int answer = 0; 定义局部输出变量,遵循单出口原则 switch (a[n]) { switch case逻辑判断,遵循单出口原则,只赋值,先不输出 case 1: answer = b[n][1] + b[n][2]; break; case 2: answer = b[n][1] - b[n][2]; break; case 3: answer = b[n][1] * b[n][2]; break; case 4: answer = b[n][1] / b[n][2]; break; } if (n < times) 输出判断是否最后一行,按题目格式要求 printf("%lld\n", answer); else printf("%lld", answer); } return 0;

就这吧,反正按这代码我AC了,自己编译器就连初步样本貌似都没过,但系统就是过了,真是醉了(╬ ̄皿 ̄)
搞了一下午了,没空debug了,要有大佬能搞明白细节,还请帮忙解答(〃'▽'〃)。
(二维数组使用我自己还不太熟悉,mooc才刚刚听到循环初步,指针都没学(T▽T),我自己程序调下来是循环赋值完部分数组变量后,其他已赋值的数组变量会同时变,但我上传就AC了)
(但倘若我自己用a[times][3]来做自己这边能成功,但上传就过不了,醉了(#`皿´))
另外,这数据量能到long long就离谱,可能这就是偏向OI的coding吧ヾ(>Д<;))))..... 逃~~

 

 

 

 
#26072: Re:C语言二维数组调了一下午终于AC了,有点坑,而且感觉还有bug。。


vic20050418@gmail.com (Wen Vic)

學校 : 國立臺灣科技大學
編號 : 153262
來源 : [114.136.159.95]
最後登入時間 :
2023-07-29 13:10:41
a244. 新手訓練 ~ for + if -- 新手訓練系列 ~ 1 | From: [223.137.45.57] | 發表日期 : 2021-07-15 12:47

目前个人小熊猫devc编译器用源码还是有点问题,但抱着试一试的心态贴上来,系统竟然过了,不知道是我编译器问题还是神马。

调了一下午了,没心思继续debug了,反正系统过了,以后再说。

老样子,还是尝试二维数组,题目操作符号直接改成操作数了,这不摆明让用switch case吗?

先上代码,main和头就不粘过来了,,注释符号防和谐就不加了

初学,技术不佳,仅供参考,自己的一些问题也丢在里面了,欢迎帮忙debug(`・ω・´)

	int times;           定义行数,也就是之后循环的次数,题设说明。
	scanf("%d", &times); 输入行数。
	long a[times];       操作数单独做一个一维数组,注意是long,按理来说就4个操作数,但个人测试上传亲测用int没法过,改成long就成功了。
	long b[times][2];    数据单独做一个二维数组,这个按题目要求,没毛病。
这里单独说明一下为啥操作数和数据分开放,如果建一个大的long a[times][3]来同时存放操作数和数据,上传会报错:
系統呼叫了 abort 函式! *** stack smashing detected ***: terminated Aborted (core dumped)*/
看着好像是性能溢出还是啥,俺也不知道为啥,要有大佬能懂还请帮忙解答 long n; 这边定义一个全局循环变量。 for (n = 1; n <= times; n = n + 1) { 循环输入,没啥可多说的。 scanf("%ld %ld %ld", &a[n], &b[n][1], &b[n][2]); } for (n = 1; n <= times; n = n + 1) { 循环判断+输出 long long int answer = 0; 定义局部输出变量,遵循单出口原则 switch (a[n]) { switch case逻辑判断,遵循单出口原则,只赋值,先不输出 case 1: answer = b[n][1] + b[n][2]; break; case 2: answer = b[n][1] - b[n][2]; break; case 3: answer = b[n][1] * b[n][2]; break; case 4: answer = b[n][1] / b[n][2]; break; } if (n < times) 输出判断是否最后一行,按题目格式要求 printf("%lld\n", answer); else printf("%lld", answer); } return 0;

就这吧,反正按这代码我AC了,自己编译器就连初步样本貌似都没过,但系统就是过了,真是醉了(╬ ̄皿 ̄)
搞了一下午了,没空debug了,要有大佬能搞明白细节,还请帮忙解答(〃'▽'〃)。
(二维数组使用我自己还不太熟悉,mooc才刚刚听到循环初步,指针都没学(T▽T),我自己程序调下来是循环赋值完部分数组变量后,其他已赋值的数组变量会同时变,但我上传就AC了)
(但倘若我自己用a[times][3]来做自己这边能成功,但上传就过不了,醉了(#`皿´))
另外,这数据量能到long long就离谱,可能这就是偏向OI的coding吧ヾ(>Д<;))))..... 逃~~

 

 

 

你好 有想問的可以私我站內信
首先 這題一維陣列便可解決 但需要將數值重新改為零 可查一下memset()的用法

memset() - C語言庫函數 - C語言標準庫 (gitbook.net)
再來 由於數字相加或相乘「有可能」超過int的範圍 因此建議改成 long int or long long int 

但是unsigned int ... 可以去了解一下 非常實用 可以不用佔這麼多記憶體空間~

 
#26073: Re:C语言二维数组调了一下午终于AC了,有点坑,而且感觉还有bug。。


vic20050418@gmail.com (Wen Vic)

學校 : 國立臺灣科技大學
編號 : 153262
來源 : [114.136.159.95]
最後登入時間 :
2023-07-29 13:10:41
a244. 新手訓練 ~ for + if -- 新手訓練系列 ~ 1 | From: [223.137.45.57] | 發表日期 : 2021-07-15 12:53

對了 問問題不要用解題報告

用普通的文章發文就好

 
#26093: Re:C语言二维数组调了一下午终于AC了,有点坑,而且感觉还有bug。。


jack_2003 (Jack_Yao kaijie)

學校 : 上海市延安中学
編號 : 43048
來源 : [183.195.59.217]
最後登入時間 :
2021-08-17 14:01:23
a244. 新手訓練 ~ for + if -- 新手訓練系列 ~ 1 | From: [117.143.50.210] | 發表日期 : 2021-07-15 20:54

對了 問問題不要用解題報告

用普通的文章發文就好


谢谢,思路收到了,懂了。

下次不在报告里发求助误人子弟了。。

再次肥肠感谢!

 
ZeroJudge Forum