三、C语言校内题库

1、输入两个正整数,m和n,求其最大公约数和最小公倍数

#include<stdio.h>
int  main(){
	int gcd(int m,int n);
	int lcm(int m,int n,int g);
	int a,b,g,l;
	scanf("%d,%d",&a,&b);
	g=gcd(a,b);
	l=lcm(a,b,g);
	printf("最大公约数是%d,最小公倍数是%d",g,l);
	return 0;
}
int gcd(int m,int n){
	if(m<n){
		int t=m;
		m=n;
		n=t;
	}
	int x=m%n;
	while(x>0){
		m=n;
		n=x;
		x=m%n;
	}
	return n;
	
}
int lcm(int m,int n,int g){
	return m*n/g;
}

2、输入一行字符,分别统计出其中字母,空格,数字和其它字符的个数

#include<stdio.h>
int main(){
	char a[100];
	gets(a);       //输入字符串要用gets 
	int english=0,space=0,num=0,other=0;
	char *c=a;
	while(*c!='\0'){
		if(*c>='a'&&*c<='z'||*c>='A'&&*c<='Z'){
			english++;
		}
		else if(*c==' '){
			space++;
		}
		else if(*c>='0'&&*c<='9'){
			num++;
		}else{
			other++;
		}
		c++;
	}
	printf("%d,%d,%d,%d",english,space,num,other);
	return 0;
}

3、输入一个正整数,逆序打印出各位数字

#include <stdio.h>
int main() {
    int num;
    scanf("%d", &num);
    while (num != 0) {
        int digit = num % 10;
        printf("%d ", digit);
        num /= 10;
    }
    return 0;
}

4、从键盘上输入若干学生的一门课成绩,统计并输出最高成绩和最低成绩及相应的序号,当输入负数时结束输入

#include <stdio.h>
int main() {	
    int score,counter=1,minScore=100000000, maxScore=0,minIndex=0, maxIndex=0;
    while (1) {
        scanf("%d", &score);
        if (score < 0) {
            break;
        }
        // 更新最低成绩和最高成绩
            if (score < minScore) {
                minScore = score;
                minIndex = counter;
            }
            if (score > maxScore) {
                maxScore = score;
                maxIndex = counter;
            }
        counter++;
    }
    printf("最低成绩:%d,序号:%d\n", minScore, minIndex);
    printf("最高成绩:%d,序号:%d\n", maxScore, maxIndex);
    return 0;
}

5、求1!+2!+3!+ … 20!,将结果输出

#include <stdio.h>
int main() {	
    long long sum=0;
    for(int i=1;i<=20;i++){
    	int x=1;
    	for(int j=1;j<=i;j++){
    		x*=j;
		}
		printf("%d\n",x);
		sum+=x;
	}
	printf("%lld",sum);
}

6、求下列式子的值:1-1/2+1/3-1/4+…+1/99-1/100,将结果输出

#include <stdio.h>
int main() {	
	float sum=0;
	int sign=-1;
    for(int i=1;i<=100;i++){
    	sign=-sign;
    	sum+=(float)1/i*sign;
	}
	printf("%f",sum);
}

7、打印出100-999之间的所有水仙花数

#include <stdio.h>
int main() {	
   for(int i=100;i<1000;i++){
   	  int a=i%10;
   	  int b=i/100;
   	  int c=(i-b*100)/10;
   	  if(i==a*a*a+b*b*b+c*c*c){
   	 		printf("%d\n",i);	
	}
   }
}

8、求Sn=a+aa+aaa+…+aaa…aa的值,n和a由键盘输入

#include <stdio.h>
int main() {	
	int a,n;
	scanf("%d,%d",&a,&n);
	int sn=0;
	int x=a;
	for(int i=1;i<=n;i++){
		sn+=x;
		x+=x*10;
	}
	printf("%d",sn);
}

9、给出年月日,计算该日是该年的第几天

#include<stdio.h>
int main(){
	int year,month,day,res=0;
	int leap_num[12]={31,29,31,30,31,30,31,31,30,31,30,31};
	int num[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	scanf("%d %d %d",&year,&month,&day);
	if(year%4==0&&year%100!=0||year%400==0){  //判断是否为闰年 
		for(int i=0;i<month-1;i++){
			res+=leap_num[i];
		}
		res+=day;
	}
	else{
		for(int i=0;i<month-1;i++){
			res+=num[i];
		}
		res+=day;
	}
	printf("%d",res);
	return 0;
} 

10、求一个4*4的矩阵中元素的最大值,并判断是否为对称矩阵

#include<stdio.h>
int main(){
	float a[4][4],max=-10000000;
	for(int i=0;i<4;i++){
		for(int j=0;j<4;j++){
			scanf("%f",&a[i][j]);
			if(max<a[i][j]) max=a[i][j];
		}
	}
	printf("%f\n",max);
	for(int i=0;i<4;i++){
		for(int j=0;j<4;j++){
			if(a[i][j]!=a[j][i]){
				printf("不是对称矩阵");
				return 0;
			}
		}
	}
	printf("是对称矩阵");
	return 0;
} 

11、将字符数组str1中下标为偶数的元素赋给另一字符数组str2,并输出str1和str2

在这里插入代码片

12、编写一个程序,将两个字符串连接起来,不要使用strcat函数

在这里插入代码片

13、编写一个程序,将字符数组a中的全部字符复制到字符数组b中,不要使用strcpy函数

在这里插入代码片

14、编写一个程序,找出3个字符串中的最大者,将他输出

在这里插入代码片

15、输入三角形三边长a,b,c,是否是构成三角形,若能,计算面积,并判断是何种类型的三角形:等腰,等边,直角,等腰直角,一般。

在这里插入代码片

16、求解方程ax2+bx+c=0的解,输入a,b,c

在这里插入代码片

17、使用数组编程,求斐波拉契数列的前20个数字

在这里插入代码片

18、将一个4*3的矩阵转置,输出转置矩阵

在这里插入代码片

19、输入一个正整数,求出它的质因子之和,如12的质因子之和=2+2+3=7

在这里插入代码片

20、判断一个正整数是否为完数:如果一个数除他本身之外所有因数之和等于他本身,他就是完数

在这里插入代码片

21、打印杨辉三角形

在这里插入代码片
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值