实验11
1.题目描述
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<ctime> struct date{ int y,m,d; }; struct NODE{ char s1[105]; char s2[105]; int c; char s3[105]; date pp; }; NODE p[105]; int main(){ int t=-1,pos=0,n; scanf("%d",&n); for(int i=1;i<=n;i++){ scanf("%s%s%d%s%d%d%d",p[i].s1,p[i].s2,&p[i].c,p[i].s3,&p[i].pp.y,&p[i].pp.m,&p[i].pp.d); if(p[i].c>t){ t=p[i].c; pos=i; } } printf("%s %s %d %s %d %d %d\n",p[pos].s1,p[pos].s2,p[pos].c,p[pos].s3,p[pos].pp.y,p[pos].pp.m,p[pos].pp.d); return 0; }
2.题目描述
【题目】根据超市存物柜号,自动产生一7位密码,并输出到屏幕。
【要求】
(1)定义一个函数void Conversion(char p[],long pass),功能是将7位整型数pass转换为7个相应数字字符的字符串保存到数组p中。输出该字符串至屏幕。
(2)主函数功能:
- 通过键盘输入一个柜号k(0<k<12),利用公式
(10+柜号k)*100000+rand()*65536随机产生一个7位整数n。要求将产生的这个7位整数输出至屏幕。(不用srand函数)
- 调用函数Conversion对产生的7位整数n按要求进行转换。
- 从函数返回后,找出字符串中的最大字符,并输出至屏幕。
【提示】随机函数rand()包含在stdlib.h头文件中
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<ctime> using namespace std; void Conversion(char p[],int n){ int k=0; while(n){ p[k++]=n%10+'0'; n/=10; } p[k]='\0'; } int main(){ int K; char p[8],f='0'; scanf("%d",&K); int N=((10+K)*100000+rand()*65536)%10000000; Conversion(p,N); for(int i=0;i<7;i++) if(p[i]>f) f=p[i]; for(int i=6;i>=0;i--) printf("%c",p[i]); cout<<endl; printf("%c\n",f); getchar(); getchar(); }
3.题目描述
【题目】从键盘输入一任意字符串,从中分别提取英文字母字符和数字字符分别组成2个新字符串,并输出这3个字符串。
【要求】
(1)定义一个函数void make(char p[],char s[],char t[]),其功能是将数组p中的字符串中分别提取英文字母字符和数字字符,分别组成2个新字符串,一个是字母串s,另一个是数字串t。
(2)在主函数功能:
建立3个一维字符数组a,b和c,通过键盘输入一字符串(字符个数大于15)存入a。
调用函数make进行字符串处理,得到b串和c串。
求3个字符串a,b和c的长度。
输出a,b和c3个字符串及它们的长度。
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<ctime> using namespace std; void make(char p[],char s[],char t[]){ int i=0,j=0,k=0; while(p[i]){ if(p[i]>='0' && p[i]<='9') t[k++]=p[i]; else if((p[i]>='A' && p[i]<='Z') || (p[i]>='a' && p[i]<='z')) s[j++]=p[i]; i++; } t[k]='\0'; s[j]='\0'; } int main(){ char a[105],b[105],c[105]; cin.getline(a,100); make(a,b,c); int a1=strlen(a),b1=strlen(b),c1=strlen(c); cout<<a<<endl<<b<<endl<<c<<endl; printf("%d %d %d\n",a1,b1,c1); getchar(); getchar(); }
4.题目描述
【程序功能】下列程序是把2000~3000之间的所有满足条件的数(条件是素数且有两位数字相同)放入数组中,并输出到屏幕。
【调试要求】在给定的程序中,可以修改或适当增加少数几个语句,但不允许删除语句。
【运行结果】 2011 2099 2111 2311 2333 2377 2399
#include<iostream> #include<math.h> using namespace std; int prime(int n) { int i,k=sqrt(double(n)); for(i=2;i<=k;i++) if(n%i==0)return 0; return 1; } void add(int a[],int m,int n) { int i,x,y,z,j=0; for(i=m;i<=n;i++) { x=i%10; y=i/10%10; z=i/100; if(prime(i)&&(x==y||y==z||x==z)) a[j++]=i; } } int main() { int a[50]={},i=0; add(a,2000,2400); while(a[i]) cout<<a[i++]<<'\t'; cout<<endl; getchar(); getchar(); }
5.题目描述
【程序功能】下列程序是一个字符串是否是回文,如果是回文,则屏幕上输出it is a reverse string!。
【调试要求】在给定的程序中,可以修改或适当增加少数几个语句,但不允许删除语句。
【运行结果】 it is a reverse string!
#include <iostream> #include<cstring> using namespace std; int IsReverseStr(char aStr[]) { int i,j; int found=1; if(aStr==NULL) return -1; j=strlen(aStr); for(i=0;i<j/2;i++) if( (aStr[i])!=(aStr[j-i-1]) ) { found=0; break; } return found; } int main() { char str[256] = "aabcbaa"; int found = IsReverseStr(str); if( found == 1 ) cout << "it is a reverse string!" << endl; else if(found == 0) cout << "it isn't a reverse string!" << endl; else if(found == -1) cout << "it is a empty string!" << endl; getchar(); getchar(); }