c语言初级问题,求教

a110098 2009-05-01 09:27:25
给定10个数 从中选取3个 并将所有结果显示
这如何编程啊
...全文
440 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
yingkundu 2009-05-05
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 a110098 的回复:]
引用 9 楼 yingkundu 的回复:

#include  <stdio.h>
2 #include <string.h>
3
4 int *make_digit(int m,int n, int t);
5 void print(int *,int);
6
7 int *make_digit(int m, int n, int t)
8 {
9     int i,j;
10     static int digit[6];
11
12     digit[0]=100*m+10*n+t;
13     digit[1]=100*m+10*t+n;
14     digit[2]=100*n+10*m+t;
15     digit[3]=100*n+10*t+m;
16     digit[4]=100*t+10*m+n;

[/Quote]


楼主既想要所有的情况,又不是随机的。

想要完整实现其功能,又不要太复杂。

想要既想要别人给他答案,又要免费的(0分)。

要求太高!我那样给你实现已经不错了,又不给你要分!
a110098 2009-05-03
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 tlw112 的回复:]


我那个程序 复杂化了感觉
看样子没有 满足LZ的需求
至于 在 vs2008下怎么调用
LZ自己去BAIDU一下咯

我另外写了一个程序
也不知道是否满足LZ的需求(LZ要的是不返回的抽取样本吧 ?)
更何况 依旧是调用了srand()函数
就不贴出来了
[/Quote]
我是想把所有的组合情况显示出来的
还不太希望时间复杂度太高。
tlw112 2009-05-03
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 a110098 的回复:]
srand()函数 在 vs2008下怎么调用啊
还有 这是不是 一次输出 一种情况呢
[/Quote]

我那个程序 复杂化了感觉
看样子没有 满足LZ的需求
至于 在 vs2008下怎么调用
LZ自己去BAIDU一下咯

我另外写了一个程序
也不知道是否满足LZ的需求(LZ要的是不返回的抽取样本吧 ?)
更何况 依旧是调用了srand()函数
就不贴出来了
a110098 2009-05-03
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 yingkundu 的回复:]

#include <stdio.h>
2 #include <string.h>
3
4 int *make_digit(int m,int n, int t);
5 void print(int *,int);
6
7 int *make_digit(int m, int n, int t)
8 {
9    int i,j;
10    static int digit[6];
11
12    digit[0]=100*m+10*n+t;
13    digit[1]=100*m+10*t+n;
14    digit[2]=100*n+10*m+t;
15    digit[3]=100*n+10*t+m;
16    digit[4]=100*t+10*m+n;
17    digit[5]=100*t+10*n+m;

[/Quote]

没完全看明白
但是 主要的部分使用了4重嵌套的 for循环 感觉效率低了
若是用O(n^2)或更低级别的时间 复杂度 能实现么
a110098 2009-05-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 tlw112 的回复:]
C/C++ code/*给定10个数(不重复) 从中选取3个 并将所有结果(不含重复的结果)显示
author:tlw112
web:http://topic.csdn.net/u/20090501/21/ad52e29a-ba5e-4c63-89b1-6aa3a2179ea6.html*/#include<stdio.h>#include<time.h>intmain(void)
{inti,j,k;inta[10]={1,2,3,4,5,6,7,8,9,10};intout[2];/*保存前两个数的记录*/srand(time(0));for(i=0;i<3;){
j=rand()%10;if(0==i){
printf("\t%d",a[j]);
}elseif…
[/Quote]

srand()函数 在 vs2008下怎么调用啊
还有 这是不是 一次输出 一种情况呢
dinjay 2009-05-02
  • 打赏
  • 举报
回复
给定?是自己输入还是自己随便定义?自己输入的话gets(a);若不是就按1楼的
koko_han 2009-05-02
  • 打赏
  • 举报
回复
#include <stdio.h>
main()
{
int i=1;
int j=1;
int k=1;
for(i=1;i<=10;i++)
for(j=i+1;j<=10;j++)
for(k=j+1;k<=10;k++)
{
printf("%d,%d,%d\n",i,j,k);
}

}
tlw112 2009-05-02
  • 打赏
  • 举报
回复

/* 给定10个数(不重复) 从中选取3个 并将所有结果(不含重复的结果)显示
author:tlw112
web:http://topic.csdn.net/u/20090501/21/ad52e29a-ba5e-4c63-89b1-6aa3a2179ea6.html
*/
#include <stdio.h>
#include <time.h>
int main(void)
{
int i,j,k;
int a[10]={1,2,3,4,5,6,7,8,9,10};
int out[2]; /*保存前两个数的记录*/
srand(time(0));
for(i=0;i <3;){
j=rand()%10;
if(0==i){
printf("\t%d",a[j]);
}else if(a[j]!=out[0]&&a[j]!=out[1]){ /*判断是否与前面的数相同*/
printf("\t%d",a[j]);
}else{
continue;
}
k=i;
while(1-k>=0){ /*记录前面出现过的数*/
out[1-k]=a[j];
k++;
}
i++;
}
getchar();
}


==============================================
以上代码 自己运行了 应该是实现了LZ想要的结果


==============================================
[Quote=引用 5 楼 BobYy69 的回复:]
随机种子如果要求精度的话,最好不要用time(),这个精度相对不是太好。最好能够取CPU的时钟,API里有这个函数
[/Quote]
BobYy69 能给个例子嘛
yingkundu 2009-05-02
  • 打赏
  • 举报
回复

#include <stdio.h>
2 #include<string.h>
3
4 int *make_digit(int m,int n, int t);
5 void print(int *,int);
6
7 int *make_digit(int m, int n, int t)
8 {
9 int i,j;
10 static int digit[6];
11
12 digit[0]=100*m+10*n+t;
13 digit[1]=100*m+10*t+n;
14 digit[2]=100*n+10*m+t;
15 digit[3]=100*n+10*t+m;
16 digit[4]=100*t+10*m+n;
17 digit[5]=100*t+10*n+m;
18 for(i=0;i<5;i++)
19 for(j=i+1;j<6;j++)
20 {
21 if(digit[i]==digit[j])
22 digit[j]=0;
23
24 }
25 return digit;
26 }
27
28 void print(int *add,int N)
29 {
30 int i=0;
31 for(i=0;i<N;i++)
32 printf("%d\t",*(add+i));
33
34 }
35
36 main()
{
int i,j,k,p;
39 int num=0;
40 int temp=0;
41 int src[10];
42 int *sum,*sum_back;
43 int flag_2=0;
44 int *des=0;
45 static int flag=0;
46 sum=(int *)malloc(720*sizeof(int));
47 sum_back=(int *)malloc(720*sizeof(int));
48 des=(int *)malloc(6*sizeof(int));
49 printf("Please input 10 digits between by space\n");
50 for(i=0;i<10;i++)
51 {
52 scanf("%d",&temp);
53 src[i]=temp;
54 }
55 for(i=0;i<=7;i++)
56 {
57 for(j=i+1;j<=8;j++)
58 {
59 for(k=j+1;k<=9;k++)
60 {
61 des=make_digit(src[i],src[j],src[k]);
62 for(p=0;p<=5;p++)
63 {
64 *sum++=*des++;
65 flag++;
66 }
67 des-=6;
68 }
69
70 }

72 }
73 sum-=flag;
74
75 for(i=0;i<=flag-1;i++)
76 {
77 if(sum[i]!=0)
78 {
79 flag_2++;
80 *sum_back=sum[i];
81 sum_back++;
82 }
83
84 }
85
86 sum_back-=flag_2;
87 printf("the total digit is %d\n",flag_2);
88 print(sum_back,flag_2);
89 if(sum=NULL)
90 {
91 free(sum);
92 }
93
94 return 0;
95
96 }
97
运行结果:
Please input 10 digits between by space
0 1 2 3 4 5 6 7 8 9
the total digit is 720
12 21 102 120 201 210 13 31 103 130 301 310 14 41 104 140 401 410 15 51 105 150 501 510 16 61 106 160 601 610 17 71 107 170 701 710 18 81 108 180 801 810 19 91 109 190 901 910 23 32 203 230 302 320 24 42 204 240 402 420 25 52 205 250 502 520 26 62 206 260 602 620 27 72 207 270 702 720 28 82 208 280 802 820 29 92 209 290 902 920 34 43 304 340 403 430 35 53 305 350 503 530 36 63 306 360 603 630 37 73 307 370 703 730 38 83 308 380 803 830 39 93 309 390 903 930 45 54 405 450 504 540 46 64 406 460 604 640 47 74 407 470 704 740 48 84 408 480 804 840 49 94 409 490 904 940 56 65 506 560 605 650 57 75 507 570 705 750 58 85 508 580 805 850 59 95 509 590 905 950 67 76 607 670 706 760 68 86 608 680 806 860 69 96 609 690 906 960 78 87 708 780 807 870 79 97 709 790 907 970 89 98 809 890 908 980 123 132 213 231 312 321 124 142 214 241 412 421 125 152 215 251 512 521 126 162 216 261 612 621 127 172 217 271 712 721 128 182 218 281 812 821 129 192 219 291 912 921 134 143 314 341 413 431 135 153 315 351 513 531 136 163 316 361 613 631 137 173 317 371 713 731 138 183 318 381 813 831 139 193 319 391 913 931 145 154 415 451 514 541 146 164 416 461 614 641 147 174 417 471 714 741 148 184 418 481 814 841 149 194 419 491 914 941 156 165 516 561 615 651 157 175 517 571 715 751 158 185 518 581 815 851 159 195 519 591 915 951 167 176 617 671 716 761 168 186 618 681 816 861 169 196 619 691 916 961 178 187 718 781 817 871 179 197 719 791 917 971 189 198 819 891 918 981 234 243 324 342 423 432 235 253 325 352 523 532 236 263 326 362 623 632 237 273 327 372 723 732 238 283 328 382 823 832 239 293 329 392 923 932 245 254 425 452 524 542 246 264 426 462 624 642 247 274 427 472 724 742 248 284 428 482 824 842 249 294 429 492 924 942 256 265 526 562 625 652 257 275 527 572 725 752 258 285 528 582 825 852 259 295 529 592 925 952 267 276 627 672 726 762 268 286 628 682 826 862 269 296 629 692 926 962 278 287 728 782 827 872 279 297 729 792 927 972 289 298 829 892 928 982 345 354 435 453 534 543 346 364 436 463 634 643 347 374 437 473 734 743 348 384 438 483 834 843 349 394 439 493 934 943 356 365 536 563 635 653 357 375 537 573 735 753 358 385 538 583 835 853 359 395 539 593 935 953 367 376 637 673 736 763 368 386 638 683 836 863 369 396 639 693 936 963 378 387 738 783 837 873 379 397 739 793 937 973 389 398 839 893 938 983 456 465 546 564 645 654 457 475 547 574 745 754 458 485 548 584 845 854 459 495 549 594 945 954 467 476 647 674 746 764 468 486 648 684 846 864 469 496 649 694 946 964 478 487 748 784 847 874 479 497 749 794 947 974 489 498 849 894 948 984 567 576 657 675 756 765 568 586 658 685 856 865 569 596 659 695 956 965 578 587 758 785 857 875 579 597 759 795 957 975 589 598 859 895 958 985 678 687 768 786 867 876 679 697 769 796 967 976 689 698 869 896 968 986 789 798 879 897 978 987











KevinHo 2009-05-01
  • 打赏
  • 举报
回复
随机种子如果要求精度的话,最好不要用time(),这个精度相对不是太好。最好能够取CPU的时钟,API里有这个函数
a110098 2009-05-01
  • 打赏
  • 举报
回复
我希望能将所有组合的数字不重复显示
并且每组数字内没有重复的
就如同概率中的组合一样
ZH408482684 2009-05-01
  • 打赏
  • 举报
回复
学习!!!!!
tlw112 2009-05-01
  • 打赏
  • 举报
回复
#include <stdlib.h>
可以不要
tlw112 2009-05-01
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(void)
{
int i,j;
int a[10]={1,2,3,4,5,6,7,8,9,10};
srand(time(0));
for(i=0;i <3;i++){
j=rand()%10;/*随机产生3个数 0到9*/
printf("%d\t",a[j]);
}
getchar();
}

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧