mooc c语言练习题

本文提供了多个C语言编程练习题,包括字符转换、姓名首字母大写、分段计费、成绩转换、水仙花数判断等。通过这些题目,可以提升C语言编程和逻辑思维能力。

编写程序,输入一个字符,若是大写字母,转换成小写字母,若是小写字母,则转换成大写字母输出。
输入格式:
getchar()
输出格式:
putchar()
输入样例:
a
输出样例:
A

#include <stdio.h>
int main()
{
char a,c,d,z;
a=getchar();
if(a>96)
{d=a-32;
putchar(d);}
else{ d=a+32;
putchar(d);}
return 0;
}

从键盘输入某同学的英文名(小写输入,假设学生的英文名只包含3个字母。如: tom),编写程序在屏幕上输出该同学的英文名,且首字母大写(如: Tom)。同时输出组成该英文名的所有英文字符在26个英文字母中的序号。
以下为程序的运行结果示例:
Input your English name:
tom
Tom
t:20
o:15
m:13

输入提示信息:“Input your English name:\n”
输入格式: “%c%c%c”
输出格式:
首字母大写的英文姓名的输出格式:"%c%c%c\n"
姓名中每个字母在26个英文字母中的序号的输出格式:"%c:%d\n"

#include <stdio.h>
int main()
{char A,a,b,c;
	printf("Input your English name:\n");
	scanf("%c%c%c",&a,&b,&c);
	A=a-32;
		printf("%c%c%c\n%c:%d\n%c:%d\n%c:%d\n",A,b,c,a,a-96,b,b-96,c,c-96);
return 0;}

为鼓励居民节约用水,自来水公司采取按月用水量分段计费的办法,居民应交水费y(元)与月用水量x(吨)的函数关系式如下(设x>0)。编写程序,输入用户的用水量x(吨),计算并输出用户应该支付的水费y(元)的值(保留两位小数)。

输入格式:
%lf
输出格式:
%.2f
输入样例:
12
输出样例:
y=16.00

#include <stdio.h>
int main()
{
double x,b,y;
scanf("%lf,%lf",&x);
if(x<0)y=0;
else {if(x>=0&&x<=15)y=4.0/3.0*x;
else y=2.5*x-10.5;
}
printf("y=%.2f",y);
return 0;
}

百分制成绩转换为五级分制成绩(8分)
题目内容:
编写程序,输入一个百分制成绩,输出所对应的成绩等级“ A ”、“ B ”、“ C ”、“ D ”、“ E ”。 (使用switch语句)
转换原则为:100~90 分为“A”,80 ~ 89 分为“B”,70 ~ 79 分为“C”,60 ~ 69 分为“D ”,60 分以下为“E”。
输入格式:
%f

输出格式:
printf(“grade:B\n”);

输入样例:
85

输出样例:
grade:B

#include <stdio.h>
int main()
{int x,y;
scanf("%d",&x);
switch(x/10)
{case 1:
case 2:
case 3:
case 4:
case 5:printf("grade:E\n");break;
case 6:printf("grade:D\n");break;
case 7:printf("grade:C\n");break;
case 8:printf("grade:B\n");break;
case 9:
case 10:printf("grade:A\n");break;
}

return 0;
}

题目内容:
编写程序,从键盘输入任意一个3位正整数,判断是否"水仙花数"。若是水仙花数,则输出"该三位数是水仙花数!",否则输出“该三位数不是水仙花数!”。
提示:所谓"水仙花数"是指一3位数,其各位数字立方和等于该数本身。
例如:153是一个水仙花数,因为153=1+125+27。

输入格式:
%d

输出格式:

输入样例:
153

输出样例:
153是水仙花数!
#include <stdio.h>
int main()
{int x,a,b,c,y;
scanf("%d",&x);
a=x/100;
c=x%10;
b=(x-100a)/10;
y=a
aa+bbb+cc*c;
if(x==y)
printf("%d是水仙花数!",x);
else
printf("%d不是水仙花数!",x);
return 0;}
银行存款税率问题

#include<math.h>
#include<stdio.h>
int main()
{
int n;
double deposit,rate,capital;
printf("Please enter rate year capital:\n");
scanf("%lf%d%lf", &rate, &n, &capital);
deposit=capital*pow(1+rate,n);
printf("deposit=%.2f",deposit);
return 0;
}

或者
#include<math.h>

#include<stdio.h>
int main()
{int money,year;

double sum,rate;

scanf("%d%d%lf" ,&money,&year, &rate);sum=money*pow(1+rate,year);

printf("sum=%7.2f",sum);

return 0;}

用for语句实现判断并求和。(10分)
题目内容:
求1~100以内 ( 包括100)能被3整除同时被5整除余数为1的所有数之和。要求用for语句完成。

输入格式:

输出格式:
“sum=%d\n”

输入样例:

输出样例:
sum=357

#include <stdio.h>
int main()
{
	int  i,sum=0;
		for(i=1;i<=100;i++)
		{if(i%3==0&&i%5==1)
			sum=sum+i;}
		printf("sum=%d\n",sum);
			

return 0;}

用do while 语句实现从键盘输入一组整数,求平均值。(10分)
题目内容:
用do while 语句实现反复从键盘输入一个整数,如果大于或等于零,累加求和,直到输入负数结束。然后求出平均值并输出。

输入格式:
“%d”

输出格式:
“AVE=%.2f\n”

输入样例:
25 35 45 55 -1

输出样例:
AVE=40.00
#include <stdio.h>
int main()
{int a,i=0;
float b,sum=0;
do
{scanf("%d",&a);
if(a<0) break;
sum=sum+a;
i++;}
while(a>=0);
b=sum/i;
printf(“AVE=%.2f\n”,b);
return 0;}
用while语句实现计算圆周率 pi (3.14) 的近似值。(10分)
题目内容:
用while语句计算圆周率的近似值。(直到累加项的绝对值小于 0.00001 )
公式 : pi /4 ≈1-1/3+1/5-1/7 …

输入格式:

输出格式:
“pi=%.2f\n”

输入样例:

输出样例:
pi=3.14

#include <stdio.h>
int main()
{float i=1,pi,sum=0,k=1;
while(i<=1e5)
{sum=sum+k/i;
k=-1*k;
i=i+2;}
pi=4*sum;
printf("pi=%.2f\n",pi);
return 0;}

已知某大学期末考试学分绩的计算公式为:学分绩 =(工科数学 * 5 + 英语 * 1.5 + 线性代数 * 3.5) / 10
请编程从键盘按顺序输入某学生的工科数学、英语和线性代数成绩,计算并输出其学分绩。

以下为程序的运行结果示例:
Input math1, English and math2:80,70,100
Final score = 85.50

输入提示信息:“Input math1, English and math2:”
输入格式: “%d,%d,%d”
输出格式:“Final score = %.2f\n”

#include <stdio.h>
#include<stdlib.h>
	 int main()
 {   
	 int mat1,mat2,eng;   
	 printf("Input math1, English and math2:");  
	 scanf("%d,%d,%d",&mat1,&eng,&mat2);   
	 printf("Final score = %.2f\n",(mat1*5.0+eng*1.5+mat2*3.5)/10);   
	 return 0;
 }

上海市的某快递公司根据投送目的地距离公司的远近,将全国划分成5个区域:

0区
1区
2区
3区
4区
同城
临近两省
1500公里(含)以内
1500——2500公里
2500公里以上
上海
江苏,浙江
北京,天津,河北,辽宁,河南,安微,陕西,湖北,江西,湖南,福建,广东,山西。
吉林,辽宁,甘肃,四川,重庆,青海,广西,云南,海南,内蒙古,黑龙江,贵州。
新疆,西藏。

快递费按邮件重量计算,由起重费用、续重费用两部分构成:
(1) 起重(首重)1公斤按起重资费计算(不足1公斤,按1公斤计算),超过首重的重量,按公斤(不足1公斤,按1公斤计算)收取续重费;
(2) 同城起重资费10元,续重3元/公斤;
(3) 寄往1区(江浙两省)的邮件,起重资费10元,续重4元;
(4) 寄往其他地区的邮件,起重资费统一为15元。而续重部分,不同区域价格不同:2区的续重5元/公斤,3区的续重6.5元/公斤,4区的续重10元/公斤。

编写程序,从键盘输入邮件的目的区域编码和重量,计算并输出运费,计算结果保留2位小数。程序中所有浮点数的数据类型均为float。
提示:续重部分不足一公斤,按1公斤计算。因此,如包裹重量2.3公斤:1公斤算起重,剩余的1.3公斤算续重,不足1公斤按1公斤计算,1.3公斤折合续重为2公斤。如果重量应大于0、区域编号不能超出0-4的范围。

#include <stdio.h>
int main() 
{int a,d;
float b,c;
	scanf("%d,%f",&a,&b);d=b;
	switch(a) 
{	case 0: if(b<=1)c=10;else{if(d==b)c=3*(d-1)+10;else c=3*(d)+10;};break;
	case 1: if(b<=1)c=10;else{if(d==b)c=3*(d-1)+10;else c=3*(d)+10;};break;
	case 2:if(b<=1)c=15;else{if(d==b)c=5.0*(d-1)+15;else c=5.0*(d)+15;};break;
	case 3:if(b<=1)c=15;else{if(d==b)c=6.5*(d-1)+10;else c=6.5*(d)+15;};break;
	case 4:if(b<=1)c=15;else{if(d==b)c=10.0*(d-1)+15;else c=10.0*(d)+15;};break;
	}
	printf("%5.2f",c);
	return 0;}

3
斐波那契数列求和(10分)
题目内容:参考前面富文本的内容,了解斐波那契数列,然后编写程序求斐波那契数列前20项之和。

输入格式:

输出格式:
“sum=%d\n”

输入样例:

输出样例:
sum=17710

#include <stdio.h>
int main()
{int a1=1,a2=1,sum=2,i=1,c;
do{c=a2;
a2=a1+a2;
a1=c;
sum+=a2;
i++
;}
while(i<=18);
printf("sum=%d",sum);
return 0;
 }

题目内容:
找出一个大于给定整数且紧随这个整数的素数,例如 给定整数3,找到的素数是5。

输入格式:
“%d”

输出格式:
“prime=%d\n”

输入样例:
8

输出样例:
prime=11

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

求两个整数的最大公约数。(10分)
题目内容:
参考课件中富文本提供的内容,(三种方法任选其一)求两个整数的最大公约数。

输入格式:
“%d%d”

输出格式:
“GCD=%d\n”

输入样例:
36 8

输出样例:
GCD=4

#include <stdio.h>
int main()
{int a,b,c,d=1;
scanf("%d%d",&a,&b);
if(a<=b){c=a;a=b;b=c;};
while(d)
{
d=a%b;
a=b;
b=d;

};
printf("GCD=%d",a);
return 0;}

逆序存放数据(10分)
题目内容:
编写程序,输入6个整数存入数组中,按输入顺序的逆序存放在该数组中并输出。

输入格式:
“%d”

输出格式:
“%d\n”

输入样例:
1 2 3 4 5 6

输出样例:
6
5
4
3
2
1

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

找出一维整型数组中的次最大值。(10分)
题目内容:
定义一维整型数组,输入5个数,从大到小排序,输出次最大值。

输入格式:
“%d”

输出格式:
“次最大值=%d”

输入样例:
1 5 6 8 2

输出样例:
次最大值=6

#include <stdio.h>
int main()
{int a[5],i,j,max,t;
for(i=0;i<5;i++)
scanf("%d",&a[i]);
for(j=0;j<2;j++)
   {max=j;

{for(i=max+1;i<5;i++)
if(a[max]<a[i])max=i;
if(max!=j)
{t=a[j];a[j]=a[max];a[max]=t;}
}

   }
printf("次最大值=%d",a[1]);
return 0;
	
}

调整最大值的位置。(10分)
题目内容:
输入一维数组的6个元素,将最大值与最后一个交换。

输入格式:
“%d”

输出格式:
“%d\n”

输入样例:
3 5 6 8 1 2

输出样例:
3
5
6
2
1
8

#include <stdio.h>
int main()
{int a[6],i,j,max,t;
for(i=0;i<6;i++)
scanf("%d",&a[i]);
for(i=0,j=1;j<6;j++)
if(a[i]<a[j]) i=j;
if(i!=5){t=a[i];a[i]=a[5];a[5]=t;
} 
for(i=0;i<6;i++)
printf("%d\n",a[i]);
return 0;

}
1
连接两个字符串(6分)
题目内容:
将两个字符串连接,不要用stract函数

输入格式:
“%s”

输出格式:
“%s”

输入样例:
abc
edf
输出样例:
Abcedf

#include <stdio.h>
int main()
{char m[10],n[10],z[10],i,j;
scanf("%s",m);
scanf("%s",n);
for(i=0;m[i]!='\0';i++)
z[i]=m[i];
for(i,j=0;n[j]!='\0';i++,j++)
z[i]=n[j];
z[i]='\0';
printf("%s",z);
return 0;}

2
求矩阵外围元素之和(8分)
题目内容:
求3行3列矩阵的外围元素之和。

输入格式:
“%d”

输出格式:
“%d”

输入样例:
1 2 3
4 5 6
7 8 9
输出样例:
40

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

求矩阵主对角线和副对角线元素之和(8分)
题目内容:
求5行5列矩阵的主对角线和副对角线元素之和。

输入格式:
“%d”

输出格式:
“sum=%d”

输入样例:
1 2 3 4 3
2 3 4 1 6
3 4 5 6 7
4 2 6 7 8
1 6 7 8 9
输出样例:
sum=37

#include <stdio.h>
int main()
{int m[5][5],a,b,c=0;
for(a=0;a<5;a++)
for(b=0;b<5;b++)
scanf("%d",&m[a][b]);
for(a=0;a<5;a++)
c+=m[a][a]+m[a][4-a];


	printf("sum=%d",c);
return 0;}

4
将字符串的小写字母转换为大写字母。(提示:不允许使用字符串转换函数)(8分)
题目内容:
编写程序,把键盘输入的字符串中的小写字母转换为大写字母。

输入格式:
gets

输出格式:
“%s”

输入样例:
aAB23edf
输出样例:
AAB23EDF

#include <stdio.h>
#include <string.h>
int main()
{char a[20];
int i,j;
gets(a);
for(i=0;a[i]!='\0';i++)
if(a[i]>96&&a[i]<123)a[i]-=32;
printf("%s",a);
	return 0;
}
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值