| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 557 人关注过本帖
标题:比如一个线程函数是这样的
只看楼主 加入收藏
w20809029
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2009-6-3
结帖率:0
收藏
 问题点数:0 回复次数:1 
比如一个线程函数是这样的
比如一个线程函数是这样的:
public int abc()
{......}
......
Thread myt=new Thread(new threadstar(abc));//这里提示错误:abc有返回值??
1.是不是不允许有返回值的函数做为线程函数??

2.该怎么样实现有返回值的线程?

一、行棋游戏:
  这是一种只有一个棋子的游戏。棋盘被分为N行,M列的方格,某个位置被标记为终点T。在任何一个位置,棋子可以向左、右、上、下四个方向移动一格,记移动距离为1。
  在棋盘上有一些特殊方格——飞行器,每个飞行器有一个飞行距离d,棋子达到后可以继续在同方向再“飞”d格,且移动距离仍然为1。例如,如果棋子在位置(2,8),飞行器在位置(2,7),且飞行距离为5,那么棋子向左走一格,将直接到达位置(2,2)且移动距离为1。如果飞行点落在棋盘外,则只能停在边界上。例如,假若前个飞行器的飞行距离为10,那么棋子的最终位置是(2,1)。
  而且,如果飞行后的落点仍然是飞行器,则将连续飞行到目的地,且中间点不对当前棋子产生影响,当然也不算任何移动距离。例如,如果棋子位置在(2,8),飞行器在(2,7)、(2,5),且飞行距离都是5,此时棋子向左移动一格,则(2,5)的飞行器将不产生作用,移动距离仍然为1。
  你的任务就是,编程计算出棋子达到终点的最短移动距离。
输入:
  输入可以有多个测试用例。每个测试用例的第一行是两个整数N、M(3<=N, M<=100),表示棋盘的行列数。随后是一个整数K,表示飞行器的个数。接着的K行每行有3个正整数x、y、d,分别表示飞行器的位置(x,y)(2 <= x <= N-1, 2 <= y <= M-1)及飞行距离d。最后的两行第一行是棋子的初始位置S,第二行是终点位置T。你可以假设数据总是合法的,S与T、飞行器位置互不相同。输入0 0时表示结束
输出:
  每个测试用例输出一行,即达到终点的最短距离。如果不能达到,则输出“Impossible”。

#include<stdio.h>
void main()
{
    printf("Hello 大志\n\n 实现明日理想的唯一障碍是今天的疑虑!!\n\n
        今天努力了,明天的美好生活不是梦。\n\n\n");
system("pause");
}
/*为什么中间的那个printf语句将它分行后出现错误呢??C语句不是一句可以分成多行写吗??*/

# include <stdio.h>
# include <string.h>
/*结构体定义*/
struct books
{
    char name[30], publisher[15];
    int num;
    float price;
}book[50];
void rank(books book[], int n);
int main()
{
    int i,n;
    printf("请输入图书数量:");
    scanf("%d",&n);
    printf("请分别输入书名、出版社、数量、单价(以空格分开):\n");
    for (i=0 ; i<n ; i++)
        {
            scanf("%s%s%d%f",&book[i].name,&book[i].publisher,&book[i].num,&book[i].price);
        }
    printf("\n");
    rank(book,n);
    return 0;
}

/*排序,输出函数rank*/
void rank(books book[], int n)
{
    int i,j,tnum;
    char tname[30],tpublisher[15];
    float tprice;
    for (i=0 ; i<n-1 ; i++)
    {
        for (j=0 ; j<n-i-1 ; j++)
            if(book[i].price>book[i+1].price)
            {
                strcpy(tname,book[i].name), strcpy(book[i].name,book[i+1].name), strcpy(book[i+1].name,tname);//交换书名
                strcpy(tpublisher,book[i].publisher), strcpy(book[i].publisher,book[i+1].publisher), strcpy(book[i+1].publisher,tpublisher);//交换出版商
                tnum=book[i].num, book[i].num=book[i+1].num, book[i+1].num=tnum;//交换数目
                tprice=book[i].price, book[i].price=book[i+1].price, book[i+1].price=tprice;//交换单价
            }
    }
    for (i=0 ; i<n ; www.  www.
i++)
        {
            printf("%s %s %d %.2f\n",book[i].name,book[i].publisher,book[i].num,book[i].price);
        }
}


按说输入以下内容:
3
a aa 50 25.5
b bb 30 31.55
c cc 60 18.3
时应该出现的结果是:
c cc 60 18.3
a aa 50 25.5
b bb 30 31.55
可为何却出现:
a aa 50 25.5
c cc 60 18.3
b bb 30 31.55
搜索更多相关主题的帖子: 函数 线程 
2010-03-23 17:26
mywaylgh
Rank: 8Rank: 8
来 自:厨房
等 级:蝙蝠侠
威 望:5
帖 子:188
专家分:729
注 册:2010-3-10
收藏
得分:0 
看的蛋疼啊...

多线程吗?
只懂点皮毛,只知道pthread

人生就像茶几 上面放着许多杯具

人生也像厨房 里面总有一些洗具
2010-03-23 17:42
快速回复:比如一个线程函数是这样的
数据加载中...
 
   



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

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