C语言入门基础编程案例-10道题

1.编写程序,要求:
⑴ 设计函数,求字符串中的数字字符个数。
⑵ 设计函数,求一个整数的反转数。如f(2673)=3762
⑶ 在main函数中,
①输入一个字符串,求串中的数字字符个数,并输出;
②输入一个整数,输出其反转数。

这里是代码区块:

#include "iostream.h"

int TotalNumber(char *s);
int GetNumber(int n);

int main(int argc, char* argv[])
{
    char a[200];
    int n;
    cout << "\n输入一个字符串:";
    cin >> a;
    cout << "\n字符串中数字字符数=" << TotalNumber(a) <<endl;

    cout << "\n输入一个整数:";
    cin >> n;

    cout << n << "的反转数=" << GetNumber(n) <<endl;

    return 0;
}

int TotalNumber(char *s)
{//统计串中数字字符个数
//参数:s指向要处理的串
//返回值:串中数字字符个数
    int v=0,i;
    for(i=0;s[i];i++)
        if(s[i]>='0' && s[i]<='9')
            v++;
    return v;
}

int GetNumber(int n)
{
    int a;
    for(a=0;n;n/=10)
        a=a*10+n%10;
    return a;
}

2.编写程序,要求:
⑴设计函数,求字符串中的字母字符个数。
⑵设计函数,求一个整数各位数码的平均值。如f(2673)=(3+7+6+2)/4
⑶在main函数中,
①输入一个字符串,求串中的字母字符个数,并输出;
②输入一个整数,输出其各位数码的平均值。

这里是代码区块:

#include "iostream.h"

int Total(char *s);
float   GetAve(int n);

int main(int argc, char* argv[])
{
    char a[200];
    int n;
    cout << "\n输入一个字符串:";
    cin >> a;
    cout << "\n字符串中字母字符数=" << Total(a) <<endl;

    cout << "\n输入一个整数:";
    cin >> n;

    cout << n << "的各位数码平均值=" << GetAve(n) <<endl;

    return 0;
}

int Total(char *s)
{//统计串中字母字符个数
//参数:s指向要处理的串
//返回值:串中字母字符个数
    int v=0,i;
    for(i=0;s[i];i++)
        if((s[i]>='a' && s[i]<='z')||(s[i]>='A' && s[i]<='Z'))
            v++;
    return v;
}

float   GetAve(int n)
{
    float a;
    int i;
    for(i=0,a=0;n;n/=10,i++)
        a+=n%10;

    if(i)
        a/=i;
    return a;
}

3.编写程序,要求:
⑴ 设计函数,将字符串反转。如”abcd”变成”dcba”。
⑵ 设函数, ,编写一递归函数,求函数值。
⑷ 在main函数中,
① 输入一个字符串,将字符串反转,并输出;
②输入一个整数n,求函数f(n)的值,并输出。

#include "iostream.h"
#include "string.h"

double  f(int n);
void    SetXchg(char *s);

int main(int argc, char* argv[])
{
    char a[200];
    int n;
    cout << "\n输入一个字符串:";
    cin >> a;
    SetXchg(a);
    cout << "\n字符串反转后的串:" << a <<endl;
    cout << "\n输入一个整数:";
    cin >> n;
    cout << "f(" << n << ")="<< f(n) <<endl;
    return 0;
}
void    SetXchg(char *s)
{//串反转
//参数:s指向要处理的串
    char m;
    int i,j;
    for(i=0,j=strlen(s)-1;i<j;i++,j--)
    {
        m=s[i];s[i]=s[j];s[j]=m;
    }
}

double  f(int n)
{
    double a=1.3;

    if(n>0)
        a=1.5*f(n-1);
    return a;
}

4.编写程序,要求:
⑴ 设计函数,测试一个整数是否是素数。
⑵ 设计函数,统计整数n到整数m间的素数个数。
⑶ 在main函数中,输入两个整数n和m,求整数n到整数m间的素数个数,并输出。

#include "iostream.h"

int GetN(int m,int n);

int main(int argc, char* argv[])
{
    int m,n;
    cout << "\n统计整数m到n之间的素数个数\n\n输入整数m,n:";
    cin >> m >> n;
    cout << "整数" << m << "到" << n << "之间的素数个数="
        << GetN(m,n) <<endl;
    return 0;
}

bool    Test(int n)
{//测试n是否为素数,返回真,是;否则,不是
    bool    v=true;
    int i;
    for(i=2;i<=n/2;i++)
        if(n%i==0)
        {
            v=false;break;
        }
    return v;
}

int GetN(int m,int n)
{
    int v;
    for(v=0;m<=n;m++)
        if(Test(m))
            v++;
    return v;
}

5.编写程序,要求:
⑴ 设计函数,对字符串中的字符按ASCII码值进行从小到大排序。
⑵ 设计函数,删除字符串相同字符,使得相同字符只保留一个。
⑶ 在main函数中,输入一个字符串,删除字符串相同字符,使得相同字符只保留一个,并输出。

#include "iostream.h"
#include "string.h"

void    DelC(char a[]);
void    Sort(char a[]);

int main(int argc, char* argv[])
{
    char a[200];
    cout << "\n输入一个字符串:";
    cin >> a;
    Sort(a);
    DelC(a);
    cout << a <<endl;
    return 0;
}

void    Sort(char a[])
{//串a中字符按ASII代码值升序
    int i,j;
    char m;
    for(i=strlen(a);i>1;i--)
        for(j=1;j<i;j++)
        if(a[j-1]>a[j])
        {
            m=a[j];a[j]=a[j-1];a[j-1]=m;
        }
}

void    DelC(char a[])
{//有序串中删除相同字符
    int i,j;
    for(i=j=0;a[j];j++)
        if(a[i]!=a[j])
            a[++i]=a[j];
    a[++i]=0;
}

6.编写程序,要求:
⑴ 设计函数,对字符串中小写字母进行改变,使得
‘a’变成‘h’,‘b’变成‘i’,……,‘y’变成‘f’,‘z’变成‘g’,其它字符不变。如”0A1abcdefghijklmnopqrstuvwxyz9Q”变成”0A1hijklmnopqrstuvwxyzabcdefg9Q”。
⑵ 设计函数,求n行4列的整型二维数组中偶数个数。
⑶ 在main函数中,
① 输入一个字符串,将字符串中小写字母进行改变,并输出;
② 输入20个整数到5行4列数组中,求该数组中偶数个数,并输出。

void    xchg(char a[]);
int f(int a[][4],int n);

void    main()
{
    char s[100];
    int a[5][4];

    cout << "\n输入字符串:";
    cin >> s;
    xchg(s);
    cout << "\n转换后的字符串:" << s << endl;

    cout << "\n输入20个整数到5行4列数组中:";

/*  for(int i=0;i<5;i++)
        for(int j=0;j<4;j++)
            cin >> a[i][j];
*/
    for(int i=0;i<20;i++)
        cin >> a[0][i];

    cout << "\n偶数个数=" << f(a,5) << endl;
}


void    xchg(char a[])
{
    for(int i=0;a[i];i++)
        if(a[i]>='a' && a[i]<='z')
            a[i]=(a[i]-'a'+7)%26+'a';
}


int f(int a[][4],int n)
{
    int v,i,j;
    for(v=i=0;i<n;i++)
        for(j=0;j<4;j++)
            if(a[i][j]%2==0)
                v++;
    return v;
}

7.编写程序,要求:
⑴ 设计函数,删除字符串中大写字母。如”0A1def9Q”变成” 01def9”。
⑵ 设计函数,求n行4列的整型二维数组中的最小值。
⑶ 在main函数中,
① 输入一个字符串,删除字符串中大写字母,并输出;
③ 输入20个整数到5行4列数组中,求该数组中最小值,并输出。


void    xchg(char a[]);
int f(int (*a)[4],int n);
void    g(int (*a)[4],int n,int &row,int &col);

void    main()
{
    char s[100];
    int a[5][4];

    cout << "\n输入字符串:" << endl;
    cin >> s;
    xchg(s);
    cout << "\n转换后的字符串:" << s << endl;

    cout << "\n输入20个整数到5行4列数组中:";

    for(int i=0;i<5;i++)
        for(int j=0;j<4;j++)
            cin >> a[i][j];

    for(int i=0;i<20;i++)
        cin >> a[0][i];

    cout << "\n最小值=" << f(a,5) << endl;

    int r,c;
    g(a,5,r,c);
    cout << "\n最小值=" << a[r][c] << "在第" << r+1 << "行,第" << c+1 << "列" << endl;
}


void    xchg(char a[])
{
    int i,j;
    for(i=j=0;a[j];j++)
        if(!(a[j]>='A' && a[j]<='Z'))
            a[i++]=a[j];
    a[i]=0;
}


int f(int (*a)[4],int n)
{
    int min,i,j;
    for(min=a[0][0],i=0;i<n;i++)
        for(j=0;j<4;j++)
            if(a[i][j]<min)
                min=a[i][j];
    return min;
}

void    g(int (*a)[4],int n,int &row,int &col)
{//记录最小值所在下标(row,col)
    int i,j;
    for(row=0,col=0,i=0;i<n;i++)
        for(j=0;j<4;j++)
            if(a[i][j]<a[row][col])
            {   row=i;
                col=j;
            }
}

9.编写程序,要求:
⑴ 设计函数,求一个整数的各位数码和。如f(267)=2+6+7=15。
⑵ 设计函数,求整型一维数组前n个数各位数码和的平均值。
⑶ 在main函数中,输入整数n,以及n个整数到数组中,求数组前n个数各位数码和的平均值,并输出。

int f(int n);
double g(int a[],int n);

void    main()
{
    int a[100],n;

    cout << "\n输入整数:" << endl;
    cin >> n;

    cout << "\n输入" << n << "个整数:";

    for(int i=0;i<n;i++)
        cin >> a[i];

    cout << "\n前" << n << "个整数各位数码和的平均值=" << g(a,n) << endl;
}

int f(int n)
{
    int v;
    for(v=0;n;n/=10)
        v+=n%10;
    return v;
}

double g(int a[],int n)
{
    int i;
    double v;
    for(i=v=0;i<n;i++)
        v+=f(a[i]);
    return v/n;
}

10.编写程序,要求:
⑴ 设计函数,测试一个数,是否能被7整除且个位为1。
⑵ 设计函数,求整型一维数组前n个数中否能被7整除且个位为1的数的个数。
⑶ 在main函数中,输入整数n,以及n个整数到数组中,求数组前n个数中否能被7整除且个位为1的数的个数。

bool f(int n);
int g(int a[],int n);

void    main()
{
    int a[100],n;

    cout << "\n输入整数:" << endl;
    cin >> n;

    cout << "\n输入" << n << "个整数:";

    for(int i=0;i<n;i++)
        cin >> a[i];

    cout << "\n前" << n << "个整数中,否能被7整除且个位为1的数的个数=" << g(a,n) << endl;
}

bool f(int n)
{
    return n%7==0 && n%10==1;
}

int g(int a[],int n)
{
    int v;
    for(v=0;n>0;n--)
        if(f(a[n-1]))
            v++;
    return v;
}

设计函数,求文本(字符串)中的单词的平均长度。

#include "iostream.h"
#include "stdio.h"

double  total(char a[]);

void    main()
{
    char a[200];
    cout << "\n输入字符串:" << endl;
    gets(a);

    cout << "\n单词个数=" << total(a) << endl;
}

double  total(char a[])
{
    double v_len;
    int i,num,flag;
    for(v_len=num=flag=i=0;a[i];i++)
        if((a[i]>='a' && a[i]<='z') || (a[i]>='A' && a[i]<='Z'))
        {
            v_len=v_len+1;
            if(flag==0) {   flag=1;num++;   }
        }
        else
            flag=0;

    return v_len/num;
}

猜你喜欢

转载自blog.csdn.net/qq_38101834/article/details/78133121