| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1603 人关注过本帖
标题:【求助】几道C语言题目的编程。
只看楼主 加入收藏
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
1.编写一个简单的计算器,实现两个整型数的四则运算。//太简单了不解释

2.有100匹马,驮了100担货,大马驮3担,中马驮2担,两匹小马驮一担,问大中小马各多少匹……= =//穷举三重循环

3.将1~20的自然数围成一圈,使其相邻的两数之和均为素数。//双向循环链表插入吧  大概思路  具体我想了想还是不太容易实现 估计这代码我写不出来

4.输入10名职工的职工编号、工作年限、工资总额、用单链表存储,对工作年限超过20年的职工加200元工资,在最后分别输出工资变化前和变化后的所有职工信息(我了个去)……//这个其实就是链表的结点多了个域  就是一个布尔变量 表示是否超过20年

5.输入10个学生的学号和成绩(百分制),用单链表存储,按以下标准打印每个学生的学号和成绩等级。同时,当输入某个等级后,能输出所有这个等级的学生学号。90-100优秀;80-89良好;70-79中等;60-69及格;60以下不及格。//如果楼主觉得这个难  还是去看看数据结构吧


                                         
===========深入<----------------->浅出============
2011-06-15 09:17
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
第二题:
程序代码:
#include <stdio.h>

int main(void) {
    int i, j, k, flag = 1;
    for(i = 0; i < 100 && flag; i++)
        for(j = 0; j < 100 & flag; j++)
            for(k = 0; k < 100 && flag; k++)
                if(i * 3 + j * 2 + k / 2 == 100 && k % 2 == 0 && i + j + k == 100)
                    goto finished;
finished:
    printf("大马:%d 匹\n", i);
    printf("中马:%d 匹\n", j);
    printf("小马:%d 匹\n", k);
    return 0;
}
图片附件: 游客没有浏览图片的权限,请 登录注册

收到的鲜花
  • NicMe2011-06-15 09:31 送鲜花  3朵  

My life is brilliant
2011-06-15 09:19
NicMe
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-6-14
收藏
得分:0 
回复 11楼 laoyang103
恩.谢谢
2011-06-15 09:33
NicMe
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-6-14
收藏
得分:0 
回复 12楼 lz1091914999
第一题测试完毕,switch语句有很大的启发,本来想用函数来做的,也可以,不过有点烦了。非常感谢.
第二题貌似不止一个结果...我再看看。
2011-06-15 09:40
lz1091914999
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
注 册:2010-11-1
收藏
得分:0 
第三题:
注意:如果你相信你电脑的性能可靠那么你可以用C++编译器试试。呵呵,在我的电脑上运行了3分钟还没有出答案。
程序代码:
#include <iostream>
#include <cmath>
#include <algorithm>

extern "C" {
    int is_primer(int n) {
        int i, j = (int)sqrt(n), k = n < 2 ? 0 : 1;
        for(i = 2; i <= j && k; i++)
            (n % i) || (k = 0);
        return k;
    }
}

int main() {
    using namespace std;
    int num[20], flag;
    for(int i = 0; i < 20; i++)
        num[i] = i + 1;
    do {
        flag = 1;
        for(int i = 0; i < 20; i++)
            if(!is_primer(num[i] + num[i + 1 == 20 ? 0 : i + 1])) {
                flag = 0;
                break;
            }
        if(flag)
            break;
    } while(next_permutation(num, num + 20));
    for(int i = 0; i < 20; i++)
        cout << num[i] << "\t";
    return 0;
}
如果LZ相信运气,那么可以试试下面这段C代码。
程序代码:
#include <stdio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

void shuffle(int * data, int size) {
    int i, temp;
    srand((unsigned)time(NULL));
    for(i = 0; i < size; i++) {
        int index = rand() % size;
        temp = data[i];
        data[i] = data[index];
        data[index] = temp;
    }
}

int success(int * data, int size) {
    int i;
    for(i = 0; i < size; i++)
        if(!is_primer(data[i] + data[i + 1 == 20 ? 0 : i + 1]))
            return 0;
    return 1;
}

int is_primer(int n) {
    int i, j = (int)sqrt(n), k = n < 2 ? 0 : 1;
    for(i = 2; i <= j && k; i++)
        (n % i) || (k = 0);
    return k;
}

int main(void) {
    int num[20], i;
    for(i = 0; i < 20; i++)
        num[i] = i + 1;
    while(!success(num, 20))
        shuffle(num, 20);
    for(i = 0; i < 20; i++)
        printf("%d\t", num[i]);
    return 0;
}






[ 本帖最后由 lz1091914999 于 2011-6-15 10:08 编辑 ]
收到的鲜花
  • NicMe2011-06-15 10:06 送鲜花  3朵  

My life is brilliant
2011-06-15 09:57
NicMe
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2011-6-14
收藏
得分:0 
回复 15楼 lz1091914999
。。。老师说不用围圈了。测试中…
2011-06-15 10:05
快速回复:【求助】几道C语言题目的编程。
数据加载中...
 
   



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

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