| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 547 人关注过本帖
标题:请问这个代码那里不对,应该怎么写
只看楼主 加入收藏
id1330579738
Rank: 2
等 级:论坛游民
帖 子:19
专家分:19
注 册:2015-1-14
结帖率:83.33%
收藏
已结贴  问题点数:10 回复次数:5 
请问这个代码那里不对,应该怎么写
# include <stdio.h>
# include <stdlib.h>

int main(void)
{
    int i[12] = {i[1] = 3600, i[2] = 3600 * 2, i[3] = 3600 * 3, i[4] = 3600 * 4, i[5] = 3600 * 5, i[6] = 3600 * 6, i[7] = 3600 * 7, i[8] = 3600 * 8, i[9] = 3600 * 9, i[10] = 3600 * 10, i[11] = 3600 * 11, i[12] = 3600 * 12};
    int j;
    printf(":");
    scanf("%d", &j);
    system("shutdown -s -t i[j]");
    return 0;
}
搜索更多相关主题的帖子: include system return 
2015-05-23 18:42
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:4 
数组初始化错了,把大括号里面的i[...]=  全部去掉

一片落叶掉进了回忆的流年。
2015-05-23 19:19
id1330579738
Rank: 2
等 级:论坛游民
帖 子:19
专家分:19
注 册:2015-1-14
收藏
得分:0 
回复 2楼 诸葛欧阳
重点不是在这里,system("shutdown -s -t (i[j]这里写的对不对) ")
2015-05-23 19:21
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
收藏
得分:4 
两处错误:
1,数组元素你初始化了1-12的值,实际上还有一个数组0,因此你有0-12共13个数组元素,但你只设定数组12个元素,这会导致程序运行出错。
2,从字符串"shutdown -s -t i[j]"中可以很容易看出你想把i[j]的值变为字符串供shutdown使用,实际上这样是不行的,c规则是把双引号内的当作字符串常量,不会提取其中的某些再作为变量拼接的。
代码修改如下可正常运行:
程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()
{
    int i[13] = {i[1] = 3600, i[2] = 3600 * 2, i[3] = 3600 * 3, i[4] = 3600 * 4, i[5] = 3600 * 5, i[6] = 3600 * 6, i[7] = 3600 * 7, i[8] = 3600 * 8, i[9] = 3600 * 9, i[10] = 3600 * 10, i[11] = 3600 * 11, i[12] = 3600 * 12};
    char a[100]="shutdown -s -t ",num[20]={0};
    int j;
    printf(":");
    scanf("%d", &j);
    itoa(i[j],num,10);
    strcat(a,num);
    system(a);
} 


能编个毛线衣吗?
2015-05-23 19:22
id1330579738
Rank: 2
等 级:论坛游民
帖 子:19
专家分:19
注 册:2015-1-14
收藏
得分:0 
回复 4楼 wmf2014
这是数组套数组?
2015-05-23 19:51
文心边城
Rank: 2
等 级:论坛游民
威 望:2
帖 子:98
专家分:67
注 册:2005-12-13
收藏
得分:4 
4楼 你数组初始化有必要带上数组下标吗?

还有这种功能要实现完全可以用
switch(x)

case 1
break;
cade 2
break;
....
default:
break;
来实现

对你的代码我作了修改:

程序代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void main()

 {
     int i[13] = {0,3600, 3600 * 2, 3600 * 3, 3600 * 4, 3600 * 5, 3600 * 6, 3600 * 7, 3600 * 8, 3600 * 9, 3600 * 10, 3600 * 11, 3600 * 12};
     char a[100]="shutdown -s -t ";
     int j;
     printf(":");
     scanf("%d", &j); 
     //printf("%d",*(i+j));
     sprintf(a,"shutdown -s -t %d",*(i+j));
     system(a);

 } 


[ 本帖最后由 文心边城 于 2015-5-23 21:41 编辑 ]

会写c c++ java php JS AS vb python
2015-05-23 21:13
快速回复:请问这个代码那里不对,应该怎么写
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016142 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved