怎么让这个函数string suijiNum(int N) { string number; for (int i = 0; i < N; i++) { char x = i == 0 ? rand() % 9 + '1' : rand() % 10 + '0'; while (number.find(x) != string::npos) { x = rand() % 10 + '0'; } number += x; } return number; }在主函数中等于一个新的字符串
时间: 2024-03-19 17:43:10 浏览: 57
你可以在主函数中声明一个新的字符串变量,然后调用 `suijiNum()` 函数将返回值赋值给这个新的字符串变量,如下所示:
```
int main() {
string newString = suijiNum(10); // 生成长度为10的随机字符串并赋值给newString
// 其他操作
return 0;
}
```
这样就可以生成一个长度为10的随机字符串并将其赋值给 `newString` 变量。当然,你可以根据需要调用 `suijiNum()` 函数生成不同长度的随机字符串。
相关问题
#include<stdio.h> #include<string.h> int main() { char xuehao[46];int p[46]={0};char xingming[46],compare[46]; printf("please write down the student's number!\n"); for(int i=1;i<=45;i++) { scanf("%s",xuehao+i); } printf("please write down the student's name\n"); for(int i=1;i<=45;i++) { scanf("%s",xingming+i); } //读取录入姓名学号,未重复的为p==0 //读取做完的学生信息,姓名和学号串 int n=0; printf("please write down the finished student's name or number or name and number!\n"); while(scanf("%s",compare+n)!=EOF) { n++; } int s=45-n;//s为未完成的人数量 printf("print down the unfinished number %d",s); int i; for(i=1;i<=n;i++) { if(11==strlen(compare+i)) { for(int j=1;j<=45;j++) { if(strcmp(compare+i,xuehao+j)==0){p[j]=1;} } } else if(11>strlen(compare+i)) { for(int j=1;j<=45;j++) { if(strcmp(compare+i,xingming+j)==0){p[j]=1;} } } else{ char cc[100]; for(int j=1;j<=45;j++) { strncpy(cc, compare+i,strlen(xingming+j)); if(strcmp(cc,xingming+j)==0){p[j]=1;} strncpy(cc, compare+i,strlen(xuehao+j)); if(strcmp(cc,xuehao+j)==0){p[j]=1;} } } printf("print out the data!\n"); for(i=1;i<=45;i++) { if(p[i]==0)printf("%s",xuehao[i]); } } return 0; }
这段代码的作用是从输入中读取学生姓名和学号信息,并记录每个学生的完成情况。它包括以下步骤:
1. 读取45个学生的学号信息,存储在字符数组xuehao中。
2. 读取45个学生的姓名信息,存储在字符数组xingming中。
3. 从输入中读取已完成学生的信息,存储在字符数组compare中。
4. 根据compare中的信息,更新每个学生的完成情况,将完成的学生对应的p数组元素设置为1。
5. 打印未完成的学生的学号信息。
该代码存在一些问题,以下是一些需要注意的点:
1. 学号和姓名的长度都是46,但是在循环中却只读取了45个元素。这可能会导致访问越界的问题。
2. 在每次循环中,都会重新从头遍历xuehao和xingming数组,这样会导致效率较低。
3. 在更新每个学生的完成情况时,应该使用break语句跳出循环,避免不必要的遍历。
4. 在打印未完成学生信息时,应该使用空格或换行符进行分隔,否则所有学生的学号信息会连在一起输出。
5. 在比较姓名和学号信息时,应该使用strncmp函数而不是strcmp函数,以避免截断字符串的问题。
6. 当输入的已完成学生信息中既包含学号又包含姓名时,该代码的比较方法可能存在问题。
详细分析以下代码#include<iostream> #include<cstring> #include<cmath> using namespace std; int Node[50]; int number; int Calculate(char x)//计算偏移 { if(x>=97&&x<=122) return 0; switch(x) { case '!': case '^': case '(': case ')': return 1; case '|': case '-': return 2; case '<': return 3; default: return 1; } } int CalculateOut(string &Word,int n,int m)//输出||、->、<->,等等 { int i; if(m!=0) { for(i=1; i<m; i++)cout<<Word[n+i]; if(Word[i+n]!='\0') cout<<" "; } } int Input(string &Word)//输出数据 { int m,i,tag,q; number=0; for(i=0; Word[i]!='\0'; ) { q=i; if(Word[i]==' ') { i++; continue; } cout<<Word[i]; tag=Calculate(Word[i]); CalculateOut(Word,i,tag); i+=tag;//偏移 if(!tag)//数字计数 { Node[Word[q]-97]++; number++; if(Word[i+1]!='\0') cout<<" "; i++; } } cout<<endl; return number; } int Bin(int n,int m) { int bin[10000]; int a,b,i=0; do { a=n%2; n/=2; bin[i++]=a; } while(n>0); for(n=0; n<m-i; n++) { cout<<"0 "; } for(n=i-1; n>=0; n--) { cout<<bin[n]; if(n) cout<<" "; } } int Outnumber(int n) { int i,m=1; for(i=1; i<n; i++) { m=m*2+1; } for(i=m; i>=0; i--) { Bin(i,n); cout<<endl; } } void CoutNode() { int i,temp=0; for(i=0; i<50; i++) { if(temp==0&&Node[i]!=0) { cout.put(97+i); temp++; } else if(Node[i]!=0) { cout<<" "; cout.put(97+i); temp++; } } number=temp; cout<<endl; } int ReNode()//初始化 { for(int i=0; i<110; i++) Node[i]=0; } int Turn(char Map[400],string &Word) { int n,i; for(i=0,n=0;i<=strlen(Map);i++) { if(Map[i]!=' ') { Word[n]=Map[i]; n++; } } Word[n]='\0'; } int main() { int n,i; string Word; char Map[400]; while(gets(Map)!=NULL)//输入 { ReNode(); Turn(Map,Word); Input(Word); CoutNode(); Outnumber(number); } // Bin(2); }
这段代码是一个命题逻辑的计算器,能够对输入的命题进行分析并输出结果。具体来说,它的主要实现包括以下几个函数:
1. Calculate(char x):计算符号的偏移,返回对应符号所需要的偏移长度。
2. CalculateOut(string &Word,int n,int m):输出||、->、<->等运算符,其中m表示当前符号的偏移长度。
3. Input(string &Word):处理输入的命题,输出命题中包含的数字和变量,并返回数字的个数。
4. Bin(int n,int m):将十进制数n转化为二进制数并输出,其中m表示二进制数的位数。
5. Outnumber(int n):输出n位二进制数的所有可能性。
6. CoutNode():输出命题中出现的变量。
7. ReNode():初始化变量数组。
8. Turn(char Map[400],string &Word):去除输入命题中的空格,将其存储到字符串Word中。
在主函数中,通过不断读取输入并调用上述函数,实现了对命题的计算和输出。具体来说,主要流程如下:
1. 读取输入命题。
2. 初始化变量数组。
3. 处理命题并输出其中包含的数字和变量。
4. 输出所有变量的组合方式。
5. 重复1-4直至没有输入。
需要注意的是,这段代码使用了gets函数进行输入,这是一个不安全的函数,可能会导致缓冲区溢出等问题。建议使用更加安全的输入方式,例如使用std::cin替代gets。
阅读全文