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、打印杨辉三角形
在这里插入代码片