首页 热点资讯 义务教育 高等教育 出国留学 考研考公

...字符串,其中每个位置都可取26个字母中的任何一个,且可重复,用C语言...

发布网友 发布时间:2024-10-24 02:43

我来回答

6个回答

热心网友 时间:8分钟前

应该是52^5吧。大小写字母均可以啊。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
int genRandInt(int low,int high) //产生从low至high之间的随机数
{
int k;
loop: k=(double)rand()/((double)RAND_MAX+1)*(high-low);
if(k>=26&&k<=31) goto loop; //在大小写所对应的ASCII码值交接处还有一些符号如[、\等,要去除这些。
return low+k;
}
void main()
{
int i,k;
srand((unsigned)time(NULL)); //设定种子值
for(i=0;i<5;i++)
{
k=genRandInt(0,58);
printf("%c",'A'+k); //输出随机产生的大小写字母
}
putchar('\n');
}
具体的代码再根据你的要求去修改吧。

你是想罗列出所有可能的组合吧?那么这个代码应该可以实现:
#include<stdio.h>
void main()
{
int i,j;
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
printf("%c%c ",'a'+i,'a'+j);
}
putchar('\n');
}
这是个比较笨的方法,但是我是在想不出其他的方法,还望谅解。该程序可以实现你补充的内容所想要的结果。

热心网友 时间:1分钟前

你要把所有结果罗列出来还是只是要生成一个这样的字符串?

热心网友 时间:8分钟前

是26^5吧,做法就是建立一个双层嵌套的循环,
外层循环5次每次代表一个字符
内层循环26次每次代表一个字母
中间可以添加你自己的逻辑,比如打印输出
最后不要忘记在字符串的末尾加上'\0',所以你存放字符串的内存(可能是数组)最少要6个字符长

热心网友 时间:1分钟前

外部for循环,1-5,内部使用一个random函数

热心网友 时间:1分钟前

1 #include <iostream>
2 using namespace std;
3
4 static char array[26];
5 static char* p[5] ;
6
7 int main()
8 {
9 for(int i=0; i<26; i++)
10 {
11 array[i] = 'a'+i;
12 cout << array[i];
13 }
14 cout << endl;
15 for(int i=0; i<5; i++)
16 {
17 p[i]=array;
18 }
19
20 for(int i=0; i<26; i++)
21 {
22 p[0]=array+i;
23 for(int j=0; j<26; j++)
24 {
25 p[1]=array+j;
26 for(int l=0; l<26;l++)
27 {
28 p[2] = array+l;
29 for(int m=0;m<26;m++)
30 {
31 p[3]=array+m;
32 for(int n=0; n<26; n++)
33 {
34 p[4]=array+n;
35
36 for(int o=0; o<5; o++)
37 {
38 cout << *(p[o]);
39 }
40 cout << endl;
41 sleep(1);
42 }
43
44 }
45 }
46
47 }
48 }
49 return 0;
50 }
这样可以输出所有的组合。
aaaaa
aaaab
aaaac
...

热心网友 时间:7分钟前

#include "stdio.h"
#include "stdlib.h"
void main(void){
char a[6]="",i;
unsigned long k=0;
while(++k){
for(i=0;i<5;*(a+i++)=rand()%26+97);
printf("%s\n",a);
}
}
不知道是不是这个意思。这个代码其实输出不了5^26那么多个,因为这个数太大了。这里不是计算而是输出,要计算这么大的数得用字符串……

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com