C 语言代码大全

先知 等级 215 1 0

1 两个数组的合并

题目描述 已知数组a中有m个按升序排列的元素,数组b中有n个按降序排列的元素,编程将a与b中的所有元素按降序存入数组c中。 输入 输入有两行,第一行首先是一个正整数m,然后是m个整数;第二行首先是一个正整数n,然后是n个整数,m, n均小于等于1000000。 输出 输出合并后的m+n个整数,数据之间用空格隔开。输出占一行。 样例输入 4 1 3 5 7 3 6 4 2 样例输出 7 6 5 4 3 2 1

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int m,n,i,k,j;
    scanf("%d",&m);
    int a[m];
    for(i=0;i<m;i++)
    {
        scanf("%d",&a[i]);
    }
    scanf("%d",&n);
    int b[n],c[m+n];
    for(i=0;i<n;i++)
        scanf("%d",&b[i]);
    for(i=m-1,j=0,k=0;i>=0,j<=n-1,k<m+n;k++)
    {
        if(a[i]>=b[j])
        {
            c[k]=a[i];
            i--;
        }
        else
        {
            c[k]=b[j];
            j++;
        }
    }
    if(m>=n)
    {
        for(i,k;i>=0,k<m+n;i--,k++)
        {
            c[k]=a[i];
        }
    }
    else
    {
        for(j,k;j<=n-1;j++,k++)
        {
            c[k]=b[j];
        }
    }
    for(k=0;k<m+n;k++)
        printf("%d ",c[k]);
    return 0;
}

2 数组测试案例

题目描述 给出一组数据,求这组数据的最大值,最小值,平均值,并按照要求输出结果。 输入 输入一个n,代表数的个数,接下来输入n个数(a1,a2,a3.........an),求出这n个数的最大值,最小值和平均值,最后把这n个数的升序和降序各输出一遍。(n<1000,an <= 1000) 输出 输出共分为5行,分别是: 最大值 最小值 平均值 数据的升序 数据的降序 样例输入 5 1 2 3 4 5 样例输出 5 1 3.00 1 2 3 4 5 5 4 3 2 1

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,i,j,s;
    float y,x=0;
    int a[10000];
    scanf("%d",&n);
    for(i=0; i<n; i++)
    {
        scanf("%d",&a[i]);
    }
    for(i=1; i<n; i++)
    {
        for(j=0; j<n-i; j++)
        {
            if(a[j]>a[j+1])
            {
                s=a[j];
                a[j]=a[j+1];
                a[j+1]=s;
            }
        }
    }
    printf("%d\n",a[n-1]);
    printf("%d\n",a[0]);
    for(i=0; i<n; i++)
        x=x+a[i];
    y=x/n;
    printf("%.2f\n",y);
    for(i=0; i<n; i++)
        printf("%d ",a[i]);
    printf("\n");
    for(i=n-1; i>=0; i--)
        printf("%d ",a[i]);
    return 0;
}

3 两个整数的四则运算

题目描述 输入两个整数num1和num2,请你设计一个程序,计算并输出它们的和、差、积、整数商及余数。 输入 输入只有两个正整数num1、num2。 输出 输出占一行,包括两个数的和、差、积、商及余数,数据之间用一个空格隔开。 样例输入 1 2 样例输出 3 -1 2 0 1

#include<stdio.h>
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("%d ",a+b);
    printf("%d ",a-b);
    printf("%d ",a*b);
    printf("%d ",a/b);
    printf("%d ",a%b);
    return 0;
}

4 迹

题目描述 矩阵中主对角线元素之和叫做迹,输入矩阵的阶数n,然后输入n*n个元素,输出该矩阵的迹. 输入 一个正整数n,2<=n<20 输出 该矩阵的迹 样例输入 3 6 1 2 1 13 6 62 4 35 样例输出 54

#include<stdio.h>
int main()
{
    int n,i=0,j=0;
    scanf("%d",&n);
    if(n<=20&&n>=2)
{
            int a[n][n];
        for(i=0;i<n;i++)
        {
            for(j=0;j<n;j++)
            {
                   scanf("%d",&a[i][j]);
            }
        }
        int sum=0;
        for(i=0;i<n;i++)
        {
            sum=sum+a[i][i];
        }
        printf("%d",sum);
        return 0;
}
}

5 矩阵转置

题目描述 求一个N行N列的矩阵的转置矩阵。(矩阵的行换成列,列换成行。) 输入 第一行一个整数n<20,表示有n组测试数据,下面是n组数据; 第二行是一个数N(2<N<10) 接下来N行每行有N个整数(所有数据均小于10000)。 输出 输出每组测试数据的转置矩阵; 每个数字后加一个空格, 请在每组输出之后加一个换行。 提示(每行最后一个数字后面也有一个空格) 样例输入 2 3 1 2 3 4 5 6 7 8 9 3 9 8 7 6 5 4 3 2 1 样例输出 1 4 7 2 5 8 3 6 9 9 6 3 8 5 2 7 4 1

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int n;
    scanf("%d",&n);
    while(n--)
    {
        int j,i,m;
        scanf("%d",&m);
        int a[m][m];//定义一个m*m的矩阵
        for(i=0;i<m;i++)
        {
            for(j=0;j<m;j++)
            {
                scanf("%d",&a[i][j]);//输出这个矩阵
            }
        }
           for(i=0;i<m;i++)
        {
            for(j=0;j<m;j++)
            {
                printf("%d ",a[j][i]);//交换i和j的位置并输出
            }
            printf("\n");
        }

    }
    return 0;
}

6 上三角矩阵的判断

题目描述 编写程序,输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,如果a是上三角矩阵,输出“YES”,否则,输出“NO”。 上三角矩阵即主对角线以下(不包括主对角线)的元素都为0的矩阵,主对角线为从矩阵的左上角至右下角的连线。

要求定义函数IsUpperTriMatrix()判断矩阵a是否是上三角矩阵,如果是返回1,否则返回0。函数原型如下:

IsUpperTriMatrix(int a, int n);

输入 输入一个正整数n(1<=n<=10)和n阶方阵a中的元素,均为整数。

输出 如果a是上三角矩阵,输出“YES”,否则,输出“NO”

样例输入 4 1 2 3 4 0 2 2 2 0 0 3 4 0 0 0 4 样例输出 YES

#include <stdio.h>
#include <string.h>
int main()
{
    int a;
    scanf("%d",&a);
    int i,j,flag=1;
    int b[11][11];
        for(i=0;i<a;i++)
        {
            for(j=0;j<a;j++)
            {
                scanf("%d",&b[i][j]);
            }
        }
        for(i=0;i<a;i++)
        {
            for(j=0;j<i;j++)
            {
                if(b[i][j]!=0)
                {
                    flag=0;
                }
            }
        }
    if(flag==0)
    {
        printf("NO");
    }
    if(flag!=0)
    {
        printf("YES");
    }
    return 0;
}

7 字符逆序

题目描述 将一个字符串str的内容颠倒过来,并输出。str的长度不超过100个字符。 输入 输入包括一行。 第一行输入的字符串。 输出 输出转换好的逆序字符串。 样例输入 I am a student 样例输出 tneduts a ma I

#include <stdio.h>
#include <string.h>

int main()

{

 int i;

 char s[100];

 gets(s);

 for(i=strlen(s)-1;i>=0;i--)
 { 
  putchar(s[i]);
 }

 return 0;

}

8 字符串的输入输出

输入 第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。 输出 先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。 样例输入 2 www.njupt.edu.cn NUPT A C M N U P Ter 样例输出 www.njupt.edu.cn NUPT

A C M

N

U

P

Ter

#include<stdio.h>
#include<string.h>
int main()
{
char a[1001];
int n;

scanf("%d\n",&n);

for(int i=0;i<n;i++)
{
    gets(a);
    puts(a);
    printf("\n");
}

while(scanf("%s",a)!=EOF)
{
  printf("%s\n",a);
  printf("\n");
}
return 0;
}

9 两个字符串的连接

题目描述 写一函数,将两个字符串连接 输入 两行字符串 输出 链接后的字符串 样例输入 123 abc 样例输出 123abc

#include<stdio.h>
#include<string.h>
int main()
{
    char str1[100],str2[100];
    gets(str1);
    gets(str2);
    strcat(str1,str2);
    puts(str1);
    return 0;
}

10 两个字符串中的元音字母复制到另一个字符串

题目描述 写一函数,将两个字符串中的元音字母复制到另一个字符串,然后输出。 输入 一行字符串 输出 顺序输出其中的元音字母(aeiuo) 样例输入 abcde 样例输出 ae

#include<stdio.h>
 char a[1000];
int main()
{
    int n;
    gets(a);
    int i;
    for(i=0;i<strlen(a);i++)
    {
        if(a[i]='a'||a[i]=='e'||a[i]=='i'||a[i]=='u'||a[i]=='o')
        printf("%c",a[i]);
    }
    return 0;
}

11 首字母变大写

题目描述 输入一个英文句子,将每个单词的第一个字母改成大写字母。

输入 输入数据包含多个测试实例,每个测试实例是一个长度不超过100个字符的英文句子,占一行。

输出 请输出按照要求改写后的英文句子。

样例输入 one car come one car go two car peng peng people die people walk lushang bei car zhuang 样例输出 One Car Come One Car Go Two Car Peng Peng People Die People Walk Lushang Bei Car Zhuang

#include<stdio.h>
#include<string.h>

int main()
{
    char a[100];
    int d,i;
    while(gets(a))
    {
        d=strlen(a);
        for(i=0;i<d;i++)
        {
            if(i==0)
            a[0]=a[0]-32;
            if(a[i]==' ')
            a[i+1]=a[i+1]-32;
            printf("%c",a[i]);
        }
    }
}

12 字母字符加密

题目描述 输入一行电报文字,将字母变成其下一字母(如’a’变成’b’……’z’变成’a’其它字符不变)。 输入 一行字符 输出 加密处理后的字符 样例输入 a b 样例输出 b c

#include <stdio.h>
#include <string.h>

int main()
{
    char a[100];
    gets(a);
    int x=strlen(a);
    for(int i=0;i<x;i++)
    {
        if(a[i]>='a'&&a[i]<'z'||a[i]>='A'&&a[i]<'Z')
            a[i]=a[i]+1;
        else if(a[i]=='z'||a[i]=='Z')
        a[i]+=1;
        a[i]=a[i];
    }
    puts(a);
    return 0;
}

13 函数专题

1. how do you do(函数专题)

题目描述 利用函数,(无参)打印出如下字样。


How do you do!


样例输出


How do you do! ****

#include <stdio.h>
#include <stdlib.h>

myprint()
{
    printf("****************\n");
    printf("How do you do!  \n");
    printf("****************\n");
}
int main()
{
    myprint();
    return 0;
}

2. 水仙花数(函数专题)

题目描述 春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=13+53+33。 现在要求输出所有在m和n范围内的水仙花数。

输入 输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。

输出 对于每个测试实例,要求输出所有在给定范围内的水仙花数,就是说,输出的水仙花数必须大于等于m,并且小于等于n,如果有多个,则要求从小到大排列在一行内输出,之间用一个空格隔开; 如果给定的范围内不存在水仙花数,则输出no; 每个测试实例的输出占一行。

样例输入 100 120 300 380 样例输出 no 370 371

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,m,k=0;
    int b,c,d;
    while(scanf("%d%d",&m,&n)!=EOF)
    {
        for(m;m<=n;m++)
        {
            b=m/100;
            c=(m/10)%10;
            d=m%10;
        if(m==b*b*b+c*c*c+d*d*d)
             {
                 printf("%d ",m);
                 k=1;
             }
        }
        if(k==1)
            printf("\n");
        if(k==0)
            printf("no\n");
          k=0;
    }
    return 0;
}

3. 复合函数求值(函数专题)

题目描述 求复合函数F(G(x)),其中函数F(x)=|x-3|+|x+1|,函数G(x)=x^2-3x。要求编写函数funF()和funG()分别求F(x)和G(x),其余功能在main()中实现。 double funF(double x) { //函数返回F(x)的值; } double funG(double x) { //函数返回G(x)的值; }

输入 输入一个实数x。 输出 输出复合函数的值,结果保留2位小数。输出占一行。

样例输入 10.2 样例输出 144.88

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
    double c,x;
    double z;
    double fung(double x);
    double funf(double x);
    scanf("%lf",&x);

    z=fung(x);
    c=funf(z);
    printf("%.2lf",c);
    return 0;
}

double fung(double x)
{
    double z;
    z=x*x-3*x;
    return (z);
}

double funf(double x)
{
    double m,a,b;
    a=x-3;
    b=x+1;
    m=fabs(a)+fabs(b);
    return (m);
}

4. 比大小(函数专题)

题目描述 利用函数(带参)比大小,从键盘接收2个整形数字, 利用函数比较其值的大小, 并输出最小值。 输入 输入2个整数 输出 输出最小值 样例输入 1 2 样例输出 1

#include <stdio.h>
#include <stdlib.h>
int min(int a,int b)
{
    if(a>=b)
        return b;
    else
        return a;
}
int main()
{
    int a,b;
    scanf("%d%d",&a,&b);
    printf("%d\n",min(a,b));
}

5. n的阶乘(函数专题)

题目描述 使用函数输出n的阶乘(使用循环或者递归2种方式实现) 输入 输入一个正整数 输出 输出这个数的阶乘 样例输入 2 样例输出 2

#include<stdio.h>
#include<string.h>

int main()
{
    int factorial(int n);
    int n,y;
    scanf("%d",&n);
    y=factorial(n);
    printf("%d",y);
}
int factorial(int n)
{
    int z;
    if(n==0||n==1)
        return 1;
    else
        z=factorial(n-1)*n;
    return (z);
}

6. 打印数字图形(函数专题)

题目描述 从键盘输入一个整数n(1≤n≤9),打印出指定的数字图形。要求在程序中定义并调用函数PrintLine()来输出一行数字,函数原型如下:

void PrintLine(int n);

输入 正整数n(1≤n≤9)。

输出 指定数字图形。

样例输入 5 样例输出 1 121 12321 1234321 123454321 1234321 12321 121 1

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a,i,j;
    scanf("%d",&a);
    for(i=1;i<a;i++)
    {
        for(j=1;j<=a-i;j++)
            printf(" ");
        for(j=1;j<=i;j++)
            printf("%d",j);
        for(j=i-1;j>0;j--)
            printf("%d",j);
        printf("\n");
    }
    for(i=0;i<=a;i++)
    {
        for(j=1;j<=i;j++)
            printf(" ");
        for(j=1;j<=a-i;j++)
            printf("%d",j);
        for(j=a-i-1;j>0;j--)
            printf("%d",j);
        printf("\n");
    }
    return 0;
}

7. 逆序数字(函数专题)

题目描述 输入一个正整数n,计算n的逆序数m,输出m与n的和。要求程序定义一个inverse()函数和一个main()函数,inverse()函数接收一个整数值,返回这个数中数字逆序后的结果值。例如,给定数7631,函数返回1367 。 int inverse(int n) { //计算并返回n的逆序数字 }

输入 一个正整数n,输入保证计算结果在int范围内。

输出 输出一个整数,n与n的逆序数的和。输出占一行。

样例输入 1780 样例输出 2651

#include<stdio.h>
int main()
{
    int n,j,i;
    scanf("%d",&n);
    j=inverse(n);
    i=j+n;
    printf("%d",i);
}
int inverse(int n)
{
    int s=0;
    while(n>0)
    {
        s=s*10+n%10;
        n=n/10;
    }
    return s;
}

8. 火车票退票费计算

题目描述 2013年起,火车票退票费比例下调:票面乘车站开车时间前48小时以上的按票价5%计退票费。同时,车票退票费的计算方法不再四舍五入到元为单位,而是以5角为单位:尾数小于0.25元的舍去、0.25元以上且小于0.75元的计为0.5元、0.75元以上的进为1元。编写一个函数,计算退票费,假定退票时间举例开车时间在48小时以上。函数原型如下:

double CancelFee(double price);

输入 输入一个实数,表示火车票票面价格。 输出 输出一个实数,表示退票费。

样例输入 106 样例输出 5.5

#include<stdio.h>
double CancelFee(double price)
{
    double x=price*0.05;
    float y=(int)x;
    if(x-0.25<y)
    y+=0;
    else if(x-0.25>=y&&x-0.25<y+0.5)
    y+=0.5;
    else y+=1;
    printf("%.1f",y);
}
int main()
{
    double x;
    scanf("%lf",&x);
    CancelFee(x);
}

14 斐波那契数列

题目描述 斐波那契数列(Fibonacci sequence),又称黄金分割数列、兔子数列,是数学家列昂纳多·斐波那契于1202年提出的数列。斐波那契数列为1、1、2、3、5、8、13、21、34……此数列从第3项开始,每一项都等于前两项之和,递推公式为F(n)=F(n-1)+F(n-2),n≥3,F(1)=1,F(2)=1。

输入 输入一个整数n(1<=n<=20) 输出 输出斐波那契数列的第n项 样例输入 3 样例输出 2

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int n,a[1000],i;
    a[1]=1;
    a[2]=1;
    scanf("%d",&n);
    for(i=3;i<=20;i++)
    {
        a[i]=a[i-1]+a[i-2];
    }
    printf("%d",a[n]);
    return 0;
}

15 递归调用的次数统计(函数专题)

题目描述 如下程序的功能是计算 Fibonacci数列的第n项。函数fib()是一个递归函数。请你改写该程序,计算第n项的同时,统计调用了多少次函数fib(包括main()对fib()的调用)。

#include<stdio.h>
int fib(int k);
int main(void )
{
    int n;
    scanf("%d", &n);
    printf("%d\n", fib(n));  
    return 0;
}

int fib(int k)
{
    if(k == 1 || k == 2)
        return 1;
    else
        return fib(k-1) + fib(k-2);
}

输入 输入一个正整数n。

输出 输入包含两行,第一行是一个整数,表示第n项的值;第二行输入递归调用了多少次,具体格式见输出样例。

样例输入 20 样例输出 6765 递归调用了13529次

#include<stdio.h>
int i=0;
int fib(int k);
int b(int n);
int main(void )
{
    int n,m;
    scanf("%d",&n);
    b(n);
}
int b(int n)
{
    printf("%d\n",fib(n));
    printf("递归调用了%d次",i);
}
int fib(int k)
{ 
    i++;
if(k == 1 || k == 2)
{
       return 1;
    } 
Else
{
        return fib(k-1) + fib(k-2);
    } 
    return i; 
}

16 进制转换

题目描述 将十进制整数n转换成二进制,并保存在字符数组中,最后输出。要求定义并调用convert()函数, 将十进制整数n对应的二进制数存入字符数组str中。

void convert(int n, char str[]);

输入 输入一个非负整数n,n<2^31。(多组测试数据) 输出 输出一个01字符串,即n对应的二进制数,不含前导0。输出占一行。

样例输入 13 样例输出 1101

#include<stdio.h>
void convert(int n,char str[])
{
    int i,t=0,m;
    for(i=0;n!=0;i++)
    {
        str[i]=n%2;
        n=n/2;
        t++;
    }
    for(i=t-1;i>=0;i--)
    {
        if(str[i]!=0)
        {
            m=i;
            break;
        }
    }
    for(i=m;i>=0;i--)
    {
        printf("%d",str[i]);
    }
}
int main()
{
    int n;
    char str[1000000];
    scanf("%d",&n);
    convert(n,str);
}

17 时间间隔(多实例测试)

题目描述 从键盘输入两个时间点(24小时制),输出两个时间点之间的时间间隔,时间间隔用“小时:分钟:秒”表示。要求程序定义如下两个函数,并在main()中调用这两个函数实现相应的功能

/三个形参分别为为用于表示一个时间点的时、分、秒,函数返回对应的秒。/

int HmsToS(int h, int m, int s);

/* 形参s表示一个时间段的长度,单位是秒,该函数将该时间段转换为对应的“小时:分钟:秒” 格式输出 */

void PrintTime(int s);

输入 输入数据有多组。每组输入包括两行。第一行为时间点1,第二行为时间点2,时间点均以“HH:MM:SS”的格式输入。测试数据保证时间点1早于时间点2。

输出 对应每组数据,有一行输出,以“HH:MM:SS”的格式输出时间间隔。注意不足两位要补占位符0。格式参看输入输出。

样例输入 12:01:12 13:09:43 12:40:12 13:09:43 样例输出 01:08:31 00:29:31 提示 注意:要输出01:08:31中的占位符0,printf中的格式控制符用"%02d"

#include<stdio.h>
int miao(int x,int y,int z);
int shuchu(int a);
int main()
{
    int x,y,z,x1,y1,z1,s,s1,a;
    while(scanf("%d:%d:%d\n%d:%d:%d",&x,&y,&z,&x1,&y1,&z1)!=EOF)
    {
        s=miao(x,y,z);
        s1=miao(x1,y1,z1);
        a=s1-s;
        shuchu(a);
    }
    return 0;
}
int miao(int x,int y,int z)
{
    int s;
    s=x*3600+y*60+z;
    return s;
}
int shuchu(int a)
{
    int x,y,z;
    x=a/3600;
    y=(a-(x*3600))/60;
    z=a-x*3600-y*60;
    printf("%02d:%02d:%02d\n",x,y,z);
}

18 判断友好对数(函数专题)

题目描述 输入两个正整数m和n,顺序输出m到n之间的所有友好数对。

如果两个整数的所有正因子之和(包括1,不包括自身)等于对方,就称这对数是友好的。例如:1184和1210是友好数对,因为 1184的因子之和为1+2+4+8+16+32+37+74+148+296+592=1210 1210的因子之和为1+2+5+10+11+22+55+110+121+242+605=1184 要求程序定义一个facsum ()函数和一个main()函数,facsum ()函数计算并返回n的所有正因子之和,其余功能在main()函数中实现。 int facsum (int n) { //计算n的所有正因子之和sum,本函数返回sum }

输入 输入两个正整数m和n,1<m<=n<=10000。

输出 输出m和n之间的所有友好数对。 在输出每个友好数对时,要求小数在前、大数在后,并去掉重复的数对。例如,220和284是一对友好数,而284和220也是一对友好数,此时只需输出220和284这对友好数。每个友好数对占一行,两数之间用空格隔开。

如果m和n之间没有友好数对,则输出“No answer”。

样例输入 100 8000 样例输出 220 284 1184 1210 2620 2924 5020 5564 6232 6368

#include<stdio.h>
#include<math.h>
int FacSum(int x)
{
    int sum=1,m=2;
    while(m<x)
    {
        if(x%m==0) sum+=m;
        m++;
    }
    return sum;
}
int main()
{
    int x,y,m,n,i,j,t,flag=1;
    scanf("%d %d",&x,&y);
    for(i=x;i<=y;i++)
    {
        t=FacSum(i);
        if(i<t&&FacSum(t)==i)
        {
            printf("%d %d\n",i,t);
            flag=0;
        }
    }
    if(flag)
    {
        printf("No answer");
    }

    return 0;
}

19 素数表(函数专题)

题目描述 输入两个正整数m和n,输出m和n之间的所有素数。 要求程序定义一个prime()函数和一个main()函数,prime()函数判断一个整数n是否是素数,其余功能在main()函数中实现。 int prime(int n) { //判断n是否为素数, 若n为素数,本函数返回1,否则返回0 }

输入 输入两个正整数m和n,m<=n,且都在int范围内。

输出 输出占一行。输出m和n之间的所有素数,每个数后有一个空格。如果m到n之间没有素数,输出”No Answer”。

样例输入 2 6 样例输出 2 3 5

#include <stdio.h>
#include <math.h>
int prime(int n)
{
 int i,a;
 if(n == 1)
      return 0;
 a=(int)sqrt(n);
 for(i=2;i<=a;i++)
 {
     if(n%i==0)
        return 0;
 }
 return 1;
}
int main()
{
 int i, m, n, b,flag=0;
 scanf("%d%d", &m, &n);
 for(i=m; i<=n; i++)
 {
     b=prime(i);

  if(b==1&&flag==0)
  {
      printf("%d ", i);
      flag=1;
      continue;
  }
 if(b==1)
    printf("%d ",i);
 }
 if(flag==0)
     printf("No Answer\n");
}

20 统计元音(函数专题)

题目描述 输入一个字符串,统计其中元音字母的个数。要求使用函数vowel()用来判断是否为元音,其余功能在main()函数中实现。 int vowel(char ch) { //如果ch是元音,返回1,否则返回0 }

输入 输入一个字符串,长度不超过1000,以回车符结束。

输出 输出一个整数,表示元音字母个数。输出单独占一行。

样例输入 Hello world! 样例输出 3

#include<stdio.h>
#include<string.h>
int vowel(char ch)
{
    int flag=0;
    if(ch=='a'||ch=='e'||ch=='i'||ch=='o'||ch=='u'||ch=='A'||ch=='E'||ch=='I'||ch=='O'||ch=='U')
    {
        flag=1;
    }
    return flag;
}
int main()
{
    int a,b,c=0;
    char ch[10000];
    gets(ch);
    for(a=0;ch[a]!='\0';a++);
    for(b=0;b<a;b++)
    {
        if(vowel(ch[b]))
        {
            c+=1;
        }
    }
    printf("%d",c);
    return 0;
}

21 求最大值(函数专题)

题目描述 定义一个含有n个元素的数组, 编写一个函数,使其实现输出数组中最大值的运算

(使用函数)

输入 第一行输入1个n

第二行输入n个整数

输出 输出最大值 样例输入 5 1 2 3 4 5 样例输出 5

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int max(int n,int a[n]);
    int n,i,x;
    scanf("%d",&n);
    int a[n];
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    {
        x=max(n,a);
    }
    printf("%d",x);
}
int max(int n,int a[n])
{
    int i,j=1,t;
    for(j=1;j<n;j++)
        for(i=0;i<n-j;i++)
    {
        if(a[i]<a[i+1])
        {
            t=a[i+1];
            a[i+1]=a[i];
            a[i]=t;
        }
    }
    return a[0];
}

22 输出变量值(指针专题)

题目描述 定义一个整型变量和一个整型指针变量, 用整形指针变量输出整形变量的值 输入 输入一个整形变量值 输出 用整形指针变量输出整形变量的值 样例输入 5 样例输出 5

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a;
    int *ia;
    scanf("%d",&a);
    ia=&a;
    printf("%d",*ia);
    return 0;
}

B 三个整数排序(指针专题) 题目描述 输入 a, b, c 三个整数, 使用指针变量使这三个数从大到小排序并输出排序后的结果。

输入 输入三个数 输出 使用指针变量按从大到小排序并输出 样例输入 1 2 3 样例输出 3 2 1

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
    int a,b,c,*p1,*p2,*p3,*t;
    p1=&a;
    p2=&b;
    p3=&c;
    scanf("%d %d %d",p1,p2,p3);
    if(*p1<*p2)
    {
        t=p1;
        p1=p2;
        p2=t;
    }
    if(*p1<*p3)
    {
        t=p1;
        p1=p3;
        p3=t;
    }
    if(*p2<*p3)
    {
        t=p2;
        p2=p3;
        p3=t;
    }
    printf("%d %d %d",*p1,*p2,*p3);
    return 0;
}

23 输出数组中的值(指针专题)

题目描述:定义一个长度为 10 的整型数组并赋初始值(10 9 8 7 5 5 4 3 2 1),用指针方式输出数组中的元素。

输入无 输出:用指针方式输出数组中的元素。 样例输出:10 9 8 7 5 5 4 3 2 1

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int a[10]={10,9,8,7,5,5,4,3,2,1},*p,i;
    p=a;
    for(i=0;i<10;i++)
        printf("%d ",*(p++));
    return 0;
}

24 成绩统计

#include <stdio.h> #include <stdlib.h> 题目描述 从键盘输入若干个学生的信息,每个学生信息包括学号、姓名、3门课的成绩,计算每个学生的总分,输出总分最高的学生的信息。 输入 首先输入一个整数n(1<=n<=100),表示学生人数,然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及三个整数,表示语文、数学、英语三门课成绩,数据之间用空格隔开。 输出 输出总成绩最高的学生的学号、姓名、及三门课成绩,用空格隔开。若有多个最高分,只输出第一个。 样例输入 3 541207010188 Zhangling 89 78 95 541207010189 Wangli 85 87 99 541207010190 Fangfang 85 68 76 样例输出 541207010189 Wangli 85 87 99

#include <stdio.h>
#include <stdlib.h>
typedef struct student
{
    char no[30];
    char name[100];
    int a,b,c;
}A;
int main()
{
    A stu,z;
    z.a=0;
    z.b=0;
    z.c=-1;
    int n,i;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s",stu.no);
        scanf("%s",stu.name);
        scanf("%d %d %d",&stu.a,&stu.b,&stu.c);
        if((stu.a+stu.b+stu.c)>(z.a+z.b+z.c))
            z=stu;
    }
    printf("%s ",z.no);
    printf("%s ",z.name);
    printf("%d %d %d\n",z.a,z.b,z.c);
    return 0;
}

E 选票统计(一)(结构体专题) 题目描述 1483. 某单位进行选举,有5位候选人:zhang、wang、zhao、liu、miao。编写程序,统计每人所得的票数。要求每人的信息里包括两部分:name和votes,分别描述姓名和所得票数。每个人的信息用一个结构体来表示,5个人的信息使用结构体数组。 输入 首先输入一个整数n,表示一张选票,接下来n行,每行是一个由小写英文字母组成的字符串,表示以上5个候选人之一。

输出 输出5行,按zhang、wang、zhao、liu、miao的顺序输出5个候选人的姓名和所得票数,用空格隔开。

样例输入 8 zhang wang zhang zhao wang liu wang wang 样例输出 zhang 2 wang 4 zhao 1 liu 1 miao 0

#include <stdio.h>
#include <stdlib.h>

struct person
{
    char name[100];
    int a;
} A[5]= {"zhang",0,"wang",0,"zhao",0,"liu",0,"miao",0};
int main()
{
    int n,i,j;
    char a[20];
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s",&a);
        for(j=0;j<5;j++)
        if(strcmp(A[j].name,a)==0)
            A[j].a++;
    }
    for(i=0;i<5;i++)
        printf("%s %d\n",A[i].name,A[i].a);
    return 0;
}

25 I love 闰年!

题目描述 根据一个年份,判断是否是闰年。 输入 输入为一个整数,表示一个年份。 输出 如果是闰年,输出"Yes",否则输出"No"。输出单独占一行。 样例输入 2012 样例输出 Yes

#include<stdio.h>

int main()
{
    int y;
    scanf("%d",&y);
    if ((y%4==0)&&(y%100!=0) || (y%400==0))
    {
        printf("Yes");
    }
    else
    {
        printf("No");
    }
    return 0;
}

26 兔子繁殖问题

题目描述 这是一个有趣的古典数学问题,著名意大利数学家Fibonacci曾提出一个问题:有一对小兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。按此规律,假设没有兔子死亡,第一个月有一对刚出生的小兔子,问第n个月有多少对兔子?

输入 输入月数n(1<=n<=44)。

输出 输出第n个月有多少对兔子。

样例输入 3 样例输出 2

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int i,n;
    int j,b,k;
    scanf("%d",&n);
    j=b=1;
    for(i=3;i<=n;i++)
    {
        k=b;
        b=b+j;
        j=k;
    }
    printf("%d\n",b);
    return 0;
}

27 对10个整数的排序

题目描述 给你10个整数,然后对这10个整数从小到大排序并输出,输出时每个数占一行。

输入 n个整数

输出 排序好的n个整数

样例输入 4 85 3 234 45 345 345 122 30 12

样例输出 3 4 12 30 45 85 122 234 345 345

#include <stdio.h>

int main()
{
    int i,j,a[10],t;
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    for(j=1;j<10;j++)
    {
        for(i=0;i<=9-j;i++)
        {
            if(a[i]>a[i+1])
            {
                t=a[i+1];
                a[i+1]=a[i];
                a[i]=t;
            }
        }
    }
    for(i=0;i<10;i++)
    {
        printf("%d\n",a[i]);
    }
}

28 课程平均分

题目描述

期末考试结束,班主任拿到了本班学生的成绩汇总表,由m行n列组成(本班共有m名学生,本学期有n门课程),每行是一个同学的n门课程成绩,请编写程序,计算并输出每门课的平均分,结果保留2位小数。

输入 第一行是两个整数m和n,表示本班的人数和本学期课程数目,0<m<=1000,0<n<=10。 接下来是成绩单,有m行,每行n个实数。

输出 输出一行,有n个实数,保留两位小数,表示每门课的平均分,用空格隔开。

样例输入 5 4 80 65 70 95 99 38 59 90 30 78 81 85 90 43 13 80 65 87 79 80 样例输出 72.80 62.20 60.40 86.00

#include<stdio.h>
int main()
{
    double a[1000][10],t,sum=0;
    int m,n,i,j;
    scanf("%d%d",&m,&n);
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%lf",&a[i][j]);
        }
    }
    for(j=0;j<n;j++)
    {
        sum=0;
        for(i=0;i<m;i++)
        {
            sum+=a[i][j];
        }
        t=sum*1.0/m;
        printf("%.2lf ",t);
    }
    return 0;
}

29 素数表

题目描述 输入两个正整数m和n,输出m和n之间的所有素数。 要求程序定义一个prime()函数和一个main()函数,prime()函数判断一个整数n是否是素数,其余功能在main()函数中实现。

int prime(int n) { //判断n是否为素数, 若n为素数,本函数返回1,否则返回0 }

输入 输入两个正整数m和n,m<=n,且都在int范围内。

输出 输出占一行。输出m和n之间的所有素数,每个数后有一个空格。如果m到n之间没有素数,输出”No Answer”。

样例输入 2 6

样例输出 2 3 5

#include<stdio.h>
#include<math.h>

int prime(int a)
{
    int b=2,flag=1;
    while(b<=sqrt(a))
    {
        if(a%b==0)
        {
            flag=0;
        }
        b++;
    }
    if(a==1)
    {
        flag=0;
    }
    return flag;
}
int main()
{
    int m,n,t=0;
    scanf("%d %d",&m,&n);
    for(;m<=n;m++)
    {
        if(prime(m))
        {
            printf("%d ",m);
            t=1;
        }
    }
    if(t==0)
    {
        printf("No Answer");
    }
    return 0;
}

30 总成绩排序(结构体专题)

题目描述 有一学生成绩表,包括学号、姓名、3门课程成绩。请按如下规则排序:按总成绩降序排序,若总成绩相同,则按姓名升序排序。

输入 首先输入一个整数n(1<=n<=100),表示学生人数; 然后输入n行,每行包含一个学生的信息:学号(12位)、姓名(不含空格且不超过20位),以及3个整数,表示3门课成绩,数据之间用空格隔开。

输出 输出排序后的成绩单,格式见输出样例。

样例输入 3 541207010188 Zhangling 89 78 95 541207010189 Wangli 85 87 99 541207010190 Fangfang 89 88 85

样例输出 541207010189 Wangli 85 87 99 271 541207010190 Fangfang 89 88 85 262 541207010188 Zhangling 89 78 95 262

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student
{
    char a[20];
    char name[20];
    int s[4];
}stud;
int main(void)
{
    int n,i,j;
    stud stu[110],ch;
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        scanf("%s ",&stu[i].a);
        scanf("%s ",&stu[i].name);
        stu[i].s[3]=0;
        for(j=0;j<3;j++)
        {
            scanf("%d",&stu[i].s[j]);
            stu[i].s[3]=stu[i].s[3]+stu[i].s[j];
        }
    }
    for(i=0;i<n;i++)
    {
        for(j=(i+1);j<n;j++)
        {
            if(stu[i].s[3]<stu[j].s[3])
            {
                ch=stu[i];
                stu[i]=stu[j];
                stu[j]=ch;
            }
            if(stu[i].s[3]==stu[j].s[3])
            {
                if(strcmp(stu[i].name,stu[j].name)>0)
                {
                    ch=stu[i];
                    stu[i]=stu[j];
                    stu[j]=ch;
                }
            }
        }
    }
    for(i=0;i<n;i++)
    {
        printf("%s %s ",stu[i].a,stu[i].name);
        printf("%d %d %d %d",stu[i].s[0],stu[i].s[1],stu[i].s[2],stu[i].s[3]);
        printf("\n");
    }
    return 0;
}

31 字符串长度(指针专题)

题目描述 编写一函数len,求一个字符串的长度,注意该长度不计空格。要求用字符指针实现。在主函数中输入字符串,调用该len函数后输出其长度。

int len(char *sp) { //实现sp所指串的长度,不计空格。 }

输入 输入一个字符串,以回车结束,长度不超过100。

输出 输出一个整数,单独占一行。

样例输入 What day is today?

样例输出 15

#include<stdio.h>
#include<string.h>

int len(char *sp)
{
    int i,t=0,m;
    m=strlen(sp);
    for(i=0;i<m;i++)
        {
                if(sp[i]!=' ')
                {
                    t++;
                }
        }
    return t;
}
int main()
{
    char str[100];
    gets(str);
    printf("%d",len(str));
    return 0;
}

32 求两点之间距离(结构体专题)

题目描述 已知两点的坐标,求两点间的距离。 输入 两行,两点的坐标,中间用空格隔开 输出 它们之间的距离,保留两位小数 样例输入 1 1 2 2 样例输出 1.41 提示 定义point结构体,并使用函数解决。

#include<stdio.h>
#include<math.h>
struct point
{
    double x,y;
}p[10];
int main()
{
    scanf("%lf %lf",&p[0].x,&p[0].y);
    scanf("%lf %lf",&p[1].x,&p[1].y);

    double ans_x=p[0].x-p[1].x;
    double ans_y=p[0].y-p[1].y;

    double ans=ans_x*ans_x+ans_y*ans_y;

    ans=sqrt(ans);

    printf("%.2lf\n",ans);
    return 0;
}
收藏
评论区
守株待兔
最新文章
Ubuntu 20.04下载 QQ 2021-03-21 16:47
ubuntu 20.04 下载 WPS 2021-03-21 16:45
逻辑运算符详细归类 2021-03-20 21:41

导读