实验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();
}
posted @ 2021-12-18 16:41  LittleOrange  阅读(48)  评论(0编辑  收藏  举报