首页 > 其他分享 >期末复习C语言练题——哈工大平台

期末复习C语言练题——哈工大平台

时间:2023-02-12 11:55:05浏览次数:48  
标签:main int C语言 char 练题 str printf 哈工大 include

1.
我的做法:

#include <stdio.h>
#include <stdlib.h>
#define LONG 100
void inverse(char str[],int m,int n);
int main()
{
    char str[LONG];
    int m,n;
    printf("input m,n:");
    scanf("%d,%d",&m,&n);
    getchar();
    printf("input the string:");
    gets(str);
    inverse(str,m-1,n);
    puts(str);
    return 0;
}

void inverse(char str[],int m,int n)
{
    char temp[LONG];
    int i;
    char *move;
    move=str;
    for(i=0;i<m;i++)
    {
        move++;
    }
    for(i=0;i<n;i++)
    {
        temp[i]=*move;
        move++;
    }
    for(i=0;i<n;i++)
    {
        str[n+m-1-i]=temp[i];
    }
}

结果截图:

他人的做法:

#include<stdio.h>

void inverse (char str[], int m, int n);

int main (void)
{
    char str[50];
    int m, n;

    printf("input m,n:");
    scanf("%d,%d", &m, &n);
    getchar();

    printf("input the string:");
    gets(str);

    inverse(str, m, n);

    printf("the inverse string:%s", str);

    return 0;
}

void
inverse (char str[], int m, int n)
{
    int i, j;

    for (i = m - 1, j = n + m - 2; i < n / 2 + m - 1; i ++, j --)
    {
        char temp = str[i];
        str[i] = str[j];
        str[j] = temp;
    }
}

2.

我的做法:

#include <stdio.h>
#include <stdlib.h>
#define M 10
#define N 10
void Transpose(int (*a)[N],int (*at)[M],int m,int n);
void InputMatrix(int (*a)[N],int m,int n);
void PrintMatrix(int (*at)[M],int n,int m);
int main()
{
    int m,n;
    printf("Input m,n:");
    scanf("%d,%d",&m,&n);
    int a[m][n],at[n][m];//行指针只是访问数组的一个工具,没有定义和表示数组的功能,数组要单独定义
    InputMatrix(a,m,n);
    Transpose(a,at,m,n);
    PrintMatrix(at,n,m);
    return 0;
}

void Transpose(int (*a)[N],int (*at)[M],int m,int n)
{
    int i,j;
     for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            *(at[j]+i)=*(a[i]+j);
        }
    }

}
void InputMatrix(int (*a)[N],int m,int n)
{
    int i,j;
    printf("Input %d*%d matrix:\n",m,n);
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",a[i]+j);
        }
    }
}
void PrintMatrix(int (*at)[M],int n,int m)
{
    int i,j;
    printf("The transposed matrix is:\n");
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%d\t",*(at[i]+j));
        }
        printf("\n");//换行符不要落下,否则输出的形式不是一个二维数组
    }
}

结果截图:

他人的做法:

#include <stdio.h>
#include <stdlib.h>
#define N 10
#define M 10
 
 
void InputMatrix(int (*a)[N], int m, int n);
void Transpose(int (*a)[N], int (*at)[M], int m, int n);
void PrintMatrix(int (*at)[M], int n, int m);
 
int main()
{
    int m,n;
    int a[10][10];
    int at[10][10];
    printf("Input m, n:");
    scanf("%d,%d",&m,&n);
    printf("Input %d*%d matrix:\n",m,n);
    InputMatrix(a,m,n);
    Transpose(a,at,m,n);
    printf("The transposed matrix is:\n");
    PrintMatrix(at,n,m);
}
 
void InputMatrix(int (*a)[N], int m, int n)
{
    int i,j;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            scanf("%d",&a[i][j]);
        }
    }
}
 
void Transpose(int (*a)[N], int (*at)[M], int m, int n)
{
    int i,j;
    for(i=0;i<m;i++)
    {
        for(j=0;j<n;j++)
        {
            at[j][i]=a[i][j];
        }
    }
}
 
void PrintMatrix(int (*at)[M], int n, int m)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<m;j++)
        {
            printf("%d\t",at[i][j]);
        }
        printf("\n");
    }
}

3.


他人的做法:

#include <math.h>
#include <stdio.h>
 
#define  CONST 1e-6
#define  SIZE 20
 
void InputMatrix (double a[][SIZE], int n);
double DeterminantValue(double a[][SIZE], int n);
void SubMatrix(double a[][SIZE], double b[][SIZE], int n, int row, int col);
void PrintMatrix(double a[][SIZE], int n);
int main(void)
{                        
    double  a[SIZE][SIZE];
    int     n;
    double  result;
    printf("Please enter matrix size n(1<=n<%d):", SIZE);
    scanf("%d", &n);
    printf("Please input matrix line by line:\n");
    InputMatrix(a, n);
    printf("matrix a:\n");
    PrintMatrix(a, n);
    printf("\n");
    result = DeterminantValue(a, n);
    printf("result = %f\n", result);
    return 0;
}                        
//  函数功能: 输入一个n×n矩阵的元素
void InputMatrix (double a[][SIZE], int n)
{                        
    int i, j;
    for (i = 0; i < n; i++)
    {                        
        for (j = 0; j < n; j++)
        {                        
            scanf("%lf", &a[i][j]);
        }
    }
}                        
//  函数功能: 计算n×n矩阵的行列式的值
double DeterminantValue(double a[][SIZE], int n)
{                        
    int    i = 0, j = 0;
    double temp, result, b[SIZE][SIZE];
    if (n == 1)
    {                        
        result = a[0][0];
    }
    else if (n == 2)
    {                        
        result = a[0][0] * a[1][1] - a[0][1] * a[1][0];
    }
    else
    {                        
        result = 0.0;
        for (j = 0; j < n; j++)
        {                        
            SubMatrix(a, b, n, i, j);
            printf("Submatrix:\n");
            PrintMatrix(b, n - 1);
            temp = DeterminantValue(b, n - 1);
            result += pow(-1, i + j) * a[0][j] * temp;
            printf("DValue of the Submatrix is %6.1f\n", temp);
        }
    }
    return result;
}                        
//  函数功能: 计算n×n矩阵a中第row行col列元素的(n-1)×(n-1)子矩阵b
void SubMatrix(double a[][SIZE], double b[][SIZE], int n, int row,
               int col)
{                        
    int i, j, ii = 0, jj = 0;
    for (i = 0; i < n; i++)
    {                        
        jj = 0;
        for (j = 0; j < n; j++)
        {                        
            if (i != row && j != col)
            {                        
                b[ii][jj] = a[i][j];
                jj++;
            }
        }
        if (i != row && j != col)
        {                        
            ii++;
        }
    }
}                        
//  函数功能: 输出一个n×n矩阵的元素
void PrintMatrix(double a[][SIZE], int n)
{                        
    int i, j;
    for (i = 0; i < n; i++)
    {                        
        for (j = 0; j < n; j++)
        {                        
            printf("%6.1f\t", a[i][j]);
        }
        printf("\n");
    }
}                       

4.

我的做法:

#include<math.h>
#include<stdio.h>
#include<stdlib.h>
float calculate(int x,int n);
int main(void)
{
    int n;
    double x;
    printf("Enter X and N:");
    scanf("%lf%d",&x,&n);
    printf("px=%f\n",calculate(x,n));
}

float calculate(int x,int n)
{
    if(n==1)
    {
        return x;
    }
    else if(n>1)
    {
        return calculate(x,n-1) + pow(-1,n-1)*pow(x,n);
    }
    else
    {
        exit(0);
    }
}


结果截图:

他人的做法:

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

double px(double x,int n);
int main ()
{
  printf("Enter X and N:");
  double x;
  int n;
  scanf("%lf%d",&x,&n);
  printf("px=%lf\n",px(x, n));
    
}
double px(double x,int n)//计算前n项和
{
     if(n == 1)
     {
         return pow(-1,n-1)*pow(x,n);
         
     }
     else
     {
         return pow(-1,n-1)*pow(x,n) + px(x,n-1);
         
     }
}

5.

我的做法:

#include<math.h>
#include<stdio.h>
#include<stdlib.h>
int main()
{
    int matrix[100];
    int n;
    printf("the total numbers is:");
    scanf("%d",&n);
    int m;
    printf("back m;");
    scanf("%d",&m);
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%d",&matrix[i]);//输入时注意1和i的区别
    }
    for(i=m;i<n;i++)
    {
        printf("%d,",matrix[i]);
    }
    for(i=0;i<m-1;i++)
    {
        printf("%d,",matrix[i]);
    }
    printf("%d",matrix[m-1]);
}

结果截图:

他人的做法:

#include<stdio.h>
void move(int a[],int n,int m) {
	int *p,end;
	end = *(a+n-1);
	for(p=a+n-1; p>a; p--)
		*p=*(p-1);
	*a=end;
	m--;
	if(m>0)
		move(a,n,m);	//递归
}
int main() {
	int n,i,m;
	printf("你要输入多少个数?");
	scanf("%d",&n);
	int a[n];
	printf("输入%d个数:\n",n);
	for(i=0; i<n; i++)
		scanf("%d",&a[i]);
	printf("你想将最后多少个数前移?");
	scanf("%d",&m);
	move(a,n,m);
	printf("排好了:\n");
	for(i=0; i<n; i++)
		printf("%d,",a[i]);
	return 0;
}

6.

他人的做法:

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
    int  cases, sum[10], i, max;
    char str[1000];
    scanf("%d", &cases);
    while (cases > 0)
    {
        scanf("%s", str);
        for (i = 0; i < 10; i++)
            sum[i] = 0;
        for (i = 0; i < strlen(str); i++)
        {
            sum[str[i] - '0'] += 1;
        }

        max = 0;
        int min;
        for (i = 0; i < 10; i++)
            if (sum[i] > sum[max])
            {
                max = i;
            }
        printf("%c %d\n",  max + '0', sum[max]);
        cases--;
    }
}


6.

我的做法

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int i;
    printf("请输入星期几(0-6):");
    scanf("%d",&i);
    char *string[7]={"日","一","二","三","四","五","六"};//可用字符串字面量对指针数组进行初始化,指针数组得到的是每个字符串字面量的首地址
    printf("你输入的是星期");
    switch(i)
    {
    case 0:
        printf("%s",string[0]);
        break;
    case 1:
        printf("%s",string[1]);
        break;
    case 2:
        printf("%s",string[2]);
        break;
    case 3:
        printf("%s",string[3]);
        break;
    case 4:
        printf("%s",string[4]);
        break;
    case 5:
        printf("%s",string[5]);
        break;
    case 6:
        printf("%s",string[6]);
        break;

    }
    return 0;
}

结果截图:

7.

错误原码:

#include <stdio.h>

main()
{
    int i = 0;
    char str[6] = {'C', 'h', 'i', 'n', 'a', '\0'}, str1[6] , *ptr, *ptr1, *ptr2 , str2[5];//str2[5]不够装下“China”
    while (str[i] != '\0')
    {
        putchar(*str);//putchar中间写的不是地址,而是变量储存的名称
        str++;//数组名无法自动累加
    }
    scanf("%s", ptr);//一定要使指针有明确的指向才能使其有效
    puts(ptr);
    ptr1 = str;
    puts(ptr1);
    ptr2 = "China";
    puts(ptr2);
    str2 = "China";
    printf("%s", str2);
}

他人的改法:

#include <stdio.h>
 
main()
{	   	    
    int i = 0;
    char str[6] = {'C', 'h', 'i', 'n', 'a', '\0'}, str1[6] , *ptr, *ptr1, *ptr2 , str2[6];
    while (str[i] != '\0')
    {	   	    
        putchar(str[i]);
        i++;
    }
    ptr = str1;
    scanf("%s", ptr);
    puts(ptr);
    ptr1 = str;
    puts(ptr1);
    ptr2 = "China";
    puts(ptr2);
    strcpy(str2, "China");
    printf("%s", str2);
}	   	    

8.

他人的做法:(存疑)

#include <stdio.h>
 
void Hanoi(int n, char a, char b, char c)//此时a是原柱,b是目标柱,c是辅助柱
{
	if (n == 1)
	{
		printf("移动%d:从%c到%c\n", n, a, b);//这个是当只剩下最底下的盘子时,直接移动到目标柱上
	}
	else
	{
		Hanoi(n - 1, a, c, b);//这个时候a是原柱,c是目标柱,b是辅助柱
		printf("移动%d:从%c到%c\n", n, a, b);//移动完上面的柱子后把最底下的柱子移动走
		Hanoi(n - 1, c, b, a);//这个时候c是原柱,b是目标柱,a是辅助柱
	}
}
int main()
{
	int n = 0;
	printf("输入放上的塔数:");
	scanf("%d", &n);
	Hanoi(n,'A', 'B', 'C');
	return 0;
}

9.

我的做法:

#include <stdio.h>
#include <stdlib.h>
typedef struct stu
{
    long number;
    char name[10];
    int score;
}STUDENT;
int main()
{
    int i,j;
    STUDENT stu[4];
    for(i=0;i<4;i++)
    {
        printf("输入第%d个学生的信息:学号、姓名、成绩:\n",i+1);
        scanf("%ld",&stu[i].number);
        scanf("%s",stu[i].name);//结构体中输入字符串成员无需加取地址符
        scanf("%d",&stu[i].score);
    }
    STUDENT temp;
    for(i=0;i<4;i++)
    {
        for(j=i+1;j<3;j++)//j不需要小于3-i,只需要小于4即可,且需令j的初始值为i+1
        {
            if(stu[i].score<stu[j].score)
            {
                temp=stu[i];
                stu[i]=stu[j];
                stu[j]=temp;

            }
        }
    }
    printf("排序后学生的信息:\n");//注意题目的输入提示不要复制错了,且要注意标点的大小写
    for(i=0;i<4;i++)
    {
        printf("%ld ",stu[i].number);//示例中间隔方式不是制表符而是空格
        printf("%s ",stu[i].name);
        printf("%d",stu[i].score);//最后一个数据不需要空格
        printf("\n");
    }
    return 0;
}

结果截图:

他人的做法:

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

typedef struct student
{
    unsigned int id;
    char name[10];
    int point;
} stu;

int main()
{
    stu sut1[5];//多一个位置用以排序
    int i, j;
    for (i = 0; i < 4; i++)
    {
        printf("输入第%d个学生的信息:学号、姓名、成绩\n");
        scanf("%u %s %d", &stu1[i].id, &syu1[i].name, &stu1[i].point);//可以一起输入的地方就一起输入,不需要分开
    }
    for (j = 4; j > 0; --j)
    {
        for (i = 0; i < 3; i++)
        {
            if (stu1[i].point < stu1[i + 1].point)
            {
                stu1[4] = stu1[i];
                stu1[i] = stu1[i + 1];
                stu1[i + 1] = stu1[4];
            }//排序处理
        }
    }
    puts("排序后学生的信息为:");
    for (i = 0; i < 4; i++)
    {
        printf("%u %s %d\n", stu1[i].id, stu1[i].name, stu1[i].point);//可以一起输出的地方就一起输出,不需要分开
    }
    system("pause");
    return 0;
}

10.

我的代码:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    int score[40][3],sum[40],sumcourse[3];
    float ave[40],avecourse[3];
    long number[40];
    int n,i,j;
    printf("Input the total number of the students(n<40):");
    scanf("%d",&n);
    printf("Input student’s ID and score as: MT  EN  PH:\n");
    for(i=0;i<n;i++)
    {
        scanf("%ld",&number[i]);
        for(j=0;j<3;j++)
        {
            scanf("%d",&score[i][j]);
        }
    }
    for(i=0;i<n;i++)
    {
        sum[i]=0;
        for(j=0;j<3;j++)
        {
            sum[i]=sum[i]+score[i][j];
        }
        ave[i]=(float)sum[i]/3.0;
    }
    printf("Counting Result:\n");
    printf("Student’s ID\t  MT \t  EN \t  PH \t SUM \t AVER\n");
    for(i=0;i<n;i++)
    {
        printf("%12ld\t",number[i]);
        for(j=0;j<3;j++)
        {
            printf("%4d\t",score[i][j]);
        }
        printf("%4d\t%5.1f\n",sum[i],ave[i]);
    }
    for(i=0;i<3;i++)
    {
        sumcourse[i]=0;
        for(j=0;j<n;j++)
        {
            sumcourse[i]=sumcourse[i]+score[j][i];//不要把行和列的变量输反了(这里的score应该是j行i列)
        }
        avecourse[i]=(float)sumcourse[i]/(float)n;
    }
    printf("SumofCourse \t");
    for(i=0;i<3;i++)
    {
        printf("%4d\t",sumcourse[i]);
    }
    printf("\nAverofCourse\t");
    for(i=0;i<3;i++)
    {
        printf("%4.1f\t",avecourse[i]);
    }
    return 0;
}

结果截图:

他人的做法:

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

#define   MAX_LEN  9                	/* 字符串最大长度 */
#define   STU_NUM 40                       /* 最多的学生人数 */

void  ReadScore(long num[],int score[][3],int n);//录入信息
void  Course(int Coursesum[3],float Courseaver[3],int score[][3],int n);//计算课程总分与平均分
void  Student(int Studentsum[STU_NUM],float Studentaver[STU_NUM],int score[][3],int n);//计算学生总分与平均分

int main()
{
    int n,i,k,g,t,score[STU_NUM][3],Coursesum[3],Studentsum[STU_NUM];
    long num[STU_NUM];
    float Courseaver[3],Studentaver[STU_NUM];
    printf("Input the total number of the students(n<40):");
    scanf("%d",&n);
    ReadScore(num,score,n);
    Course(Coursesum,Courseaver,score,n);
    Student(Studentsum,Studentaver,score,n);
    printf("Counting Result:\n");
    printf("Student’s ID\t  MT \t  EN \t  PH \t SUM \t AVER\n");
    for(i=0;i<n;i++)
    {
        printf("%12ld\t",num[i]);
        for(k=0;k<3;k++)
        {
            printf("%4d\t",score[i][k]);
        }
        printf("%4d\t%5.1f\n",Studentsum[i],Studentaver[i]);
    }
    printf( "SumofCourse \t");
    for(t=0;t<3;t++)
    {
        printf("%4d\t",Coursesum[t]);
    }
    printf("\nAverofCourse\t");
    for(g=0;g<3;g++)
    {
        printf("%4.1f\t",Courseaver[g]);
    }
    return 0;
}

void  ReadScore(long num[],int score[][3],int n)
{
    int i,k;
    printf("Input student’s ID and score as: MT  EN  PH:\n");
    for(i=0;i<n;i++)
    {
        scanf("%ld",&num[i]);
        getchar();//吞掉没用的回车符
        for(k=0;k<3;k++)
        {
            scanf("%d",&score[i][k]);
            getchar();//吞掉没用的回车符
        }
    }
}

void  Course(int Coursesum[3],float Courseaver[3],int score[][3],int n)
{
    int s,i,k;
    for(k=0;k<3;k++)
    {
        s=0;
        for(i=0;i<n;i++)
        {
           s+=score[i][k];
        }
        Coursesum[k]=s;
        Courseaver[k]=s/n;
    }
}

void  Student(int Studentsum[STU_NUM],float Studentaver[STU_NUM],int score[][3],int n)
{
    int i,k,s;
    for(i=0;i<n;i++)
    {
        s=0;
        for(k=0;k<3;k++)
        {
            s+=score[i][k];
        }
        Studentsum[i]=s;
        Studentaver[i]=(float)s/3;
    }
}


11.

我的做法:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char country[5][80],temp[80];
    int i,j;
    printf("Input five countries' names:\n");
    for(i=0;i<5;i++)
    {
        gets(country[i]);
    }
    for(i=0;i<5;i++)
    {
        for(j=i;j<5;j++)
        {
            if(strcmp(country[i],country[j])>0)
            {
                strcpy(temp,country[i]);
                strcpy(country[i],country[j]);
                strcpy(country[j],temp);
            }
        }
    }
    printf("The minimum is:%s\n",country[0]);
    return 0;
}

结果截图:

他人的做法:

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 80
int main()
{
    char str[5][N];
    printf("Input five countries' names:\n");
    for (int i = 0; i < 5; i++)
    {
        gets(str[i]);
    }
    for (int j = 0; j < 4; j++)
    {
        for (int i = 0; i < 4; i++)
        {
            if (strcmp(str[i], str[i + 1]) > 0)
            {
                char temp[N];
                strcpy(temp, str[i]);
                strcpy(str[i], str[i + 1]);
                strcpy(str[i + 1], temp);
            }
        }

    }


    printf("The minimum is:%s\n", str[0]);


    return 0;
}

12.

我的做法:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    int i,zhang=0,li=0,wang=0,wrong=0;
    char name[10][10];
    char eletion[3][10]={"li","zhang","wang"};
    for(i=0;i<10;i++)
    {
        printf("Input vote %d:",i+1);
        scanf("%s",&name[i][10]);
        getchar();
    }
    for(i=0;i<10;i++)
    {
        if(strcmp(name[i],"zhang")==0||strcmp(name[i],"Zhang")==0)
            zhang++;
        else if(strcmp(name[i],"li")==0||strcmp(name[i],"Li")==0)
            li++;
        else if(strcmp(name[i],"wang")==0||strcmp(name[i],"Wang")==0)
            wang++;
        else
            wrong++;
    }
    printf("Election results:\n");
    printf("%8s:%d\n",eletion[0],li);
    printf("%8s:%d\n",eletion[1],zhang);
    printf("%8s:%d\n",eletion[2],wang);
    printf("Wrong election:%d\n",wrong);
    return 0;
}
//结果是对的,但是最好用结构体来做

结果截图:

他人的做法:

#include  <stdio.h>
#include  <string.h>
#define NUM_ELECTORATE 10
#define NUM_CANDIDATE 3
 
int Election(struct  candidate[]);
 
struct candidate
{
    char  name[20];
    int   count;
} candidate[3] = {{"li", 0} {"zhang", 0} {"wang", 0}}
 
int main()
{
    int  i, wrong;
    wrong = Election(candidate[]);
    printf("Election results:\n");
    for (i = 0; i < NUM_CANDIDATE; i++)
    {
        printf("%8s:%d\n", candidate[i].name, candidate[i].count);
    }
    printf("Wrong election:%d\n", wrong);
    return 0;
}
int Election(struct candidate[])
{
    int  i, j, flag = 1, wrong;
    char  name[20];
    for (i = 1; i <= NUM_ELECTORATE; i++)
    {
        printf("Input vote %d:", i);
        scanf("%s", name);        
        for (j=0; j<20; j++)
        {
            if (name[j]>='A' || name[j]<='Z')
            {
                name[j] +=  'A' - 'a';
            }
        }
        flag = 1;
        for (j = 0; j < NUM_CANDIDATE; j++)
        {
            if (name = candidate[j].name)
            {
                candidate[j].count++;
                flag = 0;
            }
        }
        if (flag)
        {
            wrong++; 
        }
    }
    return wrong;
}

13.

我的做法:

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

int Fib(int n)
{
    if(n==1)
    {
        return 1;
    }
    else if(n==2)
    {
        return 1;
    }
    else
    {
        return Fib(n-1)+Fib(n-2);
    }
}

结果截图:

他人的做法:

#include <stdio.h>
long Fib(int a);
int main()
{  	  
    int n, i, x;
    printf("Input n:");
    scanf("%d", &n);
    for (i = 1; i <= n; i++)
    {  	  
        x = Fib(i);    /* 调用递归函数Fib()计算Fibonacci数列的第n项 */
        printf("Fib(%d)=%d\n", i, x);
    }
    return 0;
}  	  
/* 函数功能:用递归法计算Fibonacci数列中的第n项的值 */
long Fib(int n)
{  	  
    long f;
    if (n == 0)   f = 0;              /* 基线情况 */
    else if (n == 1)   f = 1;        /* 基线情况 */
    else   f = Fib(n - 1) + Fib(n - 2); /* 一般情况 */
    return f;
}  	  

14.

我的做法:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    char s[80],t[80];
    int ret;
    printf("Input s\n");
    gets(s);
    printf("Input t\n");
    gets(t);
    ret=MyStrcmp(s,t);
    if(ret>0)
    {
        printf("string s>string t.\n");
    }
    else if(ret<0)
    {
        printf("string s<string t.\n");
    }
    else
    {
        printf("string s=string t.\n");
    }
    return 0;
}

int MyStrcmp(char s[],char t[])
{
    int i;
    for(i=0;i<80;i++)
    {
        if(s[i]>t[i])
        {
            return s[i]-t[i];//s[i]和t[i]已经是字符了,做四则运算的时候不需要写成's[i]'-'t[i]'(不需要单独加单引号表示他是一个字符)
        }
        else if(s[i]<t[i])
        {
            return s[i]-t[i];
        }
        else
        {
            if(s[i]=='\0'&&t[i]=='\0')
            {
                return 0;
            }
            else
            {
                ;
            }
        }
    }
}

结果截图:

标签:main,int,C语言,char,练题,str,printf,哈工大,include
From: https://www.cnblogs.com/feng-tairui/p/17096413.html

相关文章

  • C语言学习:字符串的连接和复制
    1#include<io_utils.h>2#include<string.h>34intmain(){5charsrc[]="HelloWorld";6chardest[20]="Csaid123456";7//strcat(dest......
  • C语言的sizeof()计算数组参数结果错误
    在C语言中我们计算数组大小会使用sizeof(arr)/sizeof(arr[0])sizeof(arr):整个数组占用的字节数;sizeof(arr[0]):arr[0]占用的字节数;但是我们有时会遇到这种情况数......
  • C语言填空:鸡兔同笼 判断非法输入
    #include<stdio.h>//鸡兔同笼问题,兔子和鸡同处一个笼子,头的数量为x,脚的数量为y,输人x和y,输出鸡多少只兔子多少只(如输人错误则输出“输入非法!”)。main(){intx,y,j......
  • C语言填空:选票统计
    #include<stdio.h>//3个候选人,每个选民只能投票选一人,要求编一个统计选票的程序,先后输人被选人的名字,最后输出各人得票结果。【1】structperson{charname[20]......
  • C语言填空:英文单词首字母变大写
    #include<stdio.h>【1】//输人一行字符串,由英语单词和若干空格组成,将每个单词的第一个字母不是大写的变为大写并输出。main(){charch[100];inti=0,n=0;......
  • C语言填空:杨辉直角三角形
      //以下程序的输出结果如图所示,每行的最左和最右元素均为1,//中间的每个元素等于其左上方和上方两个元素之和,每个元素的宽度为4且左对齐。请完成程序填空。#includ......
  • C语言填空:输出数字组成的三角形
      //.要输出图形tu.png样式,请完善程序。#include<stdio.h>main(){inti,j,k;for(i=1;【1】;i++){for(j=1;【2】;j++)【3】;......
  • C语言填空:最低分 最高分
    //输入十个评委的打分,去掉一个最高分,去掉一个最低分,求平均分。#include<stdio.h>main(){intmark,max,min,sum=0,i;【1】;for(i=1;i<......
  • C语言填空:保持原有顺序
    //已有一个已经排好序的序列,输入一个数,将其插入到该序列中,使之仍然保持有序。#include<stdio.h>main(){inta[20]={3,7,10,12,18,20};inti,j,t;s......
  • C语言填空:本年第几天
    //输入一个日期,输出是本年的第几天。#include<stdio.h>main(){intyear,month,day,i;scanf("%d%d%d",&year,&month,&day);for(i=1;i<【1】;i++)......