补充练习
目录
- 3.输入一个小于255的十进制非负整数,输出对应的二进制、八进制和十六进制
- 歌唱比赛
- 除法计算器
- 求平均值
- 4.输入一个字母,若输入小写字母,转换为大写输出,若输入大写字母,转换为小写输出
- 计算某月天数
- 最大公约数
- 歌德巴赫猜想
- 整数分析
- 选号程序
- 日期计算
- 统计正整数的个数
- 跳一跳
- 数值数位之和--多位数拆分练习
- 小球下落问题
- 输出金字塔
- 位数判断
- 回文数
- 0-1矩阵
- 相邻区域
- 灰度直方图
- 密码强度
- 图像旋转
- 画图
- 密码编译
- 数组逆序排列
- 数组元素平移
- 后项除以前项
- 单词排序--字符数组练习
- 字符拷贝--字符数组练习
- 寻找最长的行
- 括号匹配
- 表达式求值
- 字符串查找
- 目录操作
- 字符串相似度
- ISBN号码
- 处理字符串
3.输入一个小于255的十进制非负整数,输出对应的二进制、八进制和十六进制
#include <stdio.h>
#include<stdlib.h>
int main()
{
int a;
char s[10];
scanf("%d",&a);
itoa(a, s, 2);
printf("%s %o %X ",s,a,a);
return 0;
}
歌唱比赛
题目描述:
为歌唱比赛设计一个评分系统,规则如下:
共有n名评委给分(0~100分,整数),要求去掉一个最高分,去掉一个最低分,剩余成绩的平均分为最终得分。
输入一个正整数n(3≤n≤10),表示有n个评委,输入n个成绩,输出最终得分。
输入格式:第一行输入一个正整数n(3≤n≤10),第二行输入每位评委给分,用空格分隔。
输出格式:输出最终得分,结果保留两位小数。
示例:
输入:5
70 75 80 85 90
输出:80.00
#include<stdio.h>
int main()
{
/**************************函数参数********************************************
num 评委人数
average 平均分
score[10] 得分
i,j,k 临时变量
*******************************************************************************/
int num;
double average=0;
int score[10];
int i,j,k;
/*输入*/
scanf("%d",&num);
for(i=0;i<num;i++)
scanf("%d",&score[i]);
/*排序*/
for(i=0;i<num-1;i++)
for(j=i;j<num;j++)
if(score[i]<score[j]){
k=score[i];
score[i]=score[j];
score[j]=k;
}
/*求平均*/
for(i=1;i<num-1;i++)
average=average+score[i]*1.0/(num-2);
/*打印*/
printf("%.2f\n",average);
return 0;
}
除法计算器
标题
除法计算器
类别
基本计算
时间限制
1S
内存限制
256Kb
问题描述
小明的弟弟刚开始学习除法,为了检查弟弟的计算结果是否正确,小明决定设计一个简单计算器程序来验算。
输入说明
输入数据由四个整数m,n,q,r构成,m为被除数,n为除数,q和r为小明的弟弟计算出的商和余数。整数之间用空格分隔,所有整数取值范围在(-100000~100000),n不为0。
输出说明
如果验算结果正确,输出yes,否则输出正确的商和余数
输入样例
输入样例:
样例1:
10 3 3 1
样例2:
10 3 3 2
输出样例
样例1输出:
yes
样例2输出:
3 1
#include<stdio.h>
int main()
{
int m,n,p,r;
scanf("%d%d%d%d",&m,&n,&p,&r);
if(p==m/n&&r==m%n)
printf("yes");
else
printf("%d %d",m/n,m%n);
return 0;
}
求平均值
题目描述:计算三个整数的平均值,结果保留两位小数。
输入格式:共一行,包含三个整数,整数之间用空格分隔。
输出格式:共一行,输出平均值,结果保留两位小数。
输入示例:20 42 55
输出示例:39.00
#include<stdio.h>
int main()
{
int num1,num2,num3;
double ave;
scanf("%d%d%d",&num1,&num2,&num3);
ave=(num1+num2+num3)*1.0/3;
printf("%.2f",ave);
return 0;
}
4.输入一个字母,若输入小写字母,转换为大写输出,若输入大写字母,转换为小写输出
#include<stdio.h>
int main()
{
//输入一个字母,若输入小写字母,转换为大写输出,
//若输入大写字母,转换为小写输出
char a;
scanf("%c",&a);
if(a<'z'&&a>'a')
printf("%c",a-32);
else if(a<'Z'&&a>'A')
printf("%c",a+32);
return 0;
}
计算某月天数
标题:计算某月天数
类别:流程控制
时间限制:2S
内存限制:10000Kb
问题描述:
每年的1,3,5,7,8,10,12月有31天,4,6,9,11月有30天,闰年2月29天,其他年份2月28天,给定年份和月份求该月的天数
输入说明:
输入由两个正整数a和b构成,a表示年份,b表示月份,a和b之间用空格分隔
输出说明:
根据年份和月份计算该月天数并输出
输入样例
输入样例1
2000 3
输入样例2
2001 2
输出样例
输出样例1
31
输出样例2
28
#include<stdio.h>
int main()
{
int year,month,day;
scanf("%d%d",&year,&month);
if(month==2){
if((year%4==0&&year%100!=0)||year%400==0)
printf("29");
else
printf("28");
}
else if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
printf("31");
else
printf("30");
return 0;
}
最大公约数
标题:
最大公约数
类别:
时间限制:
1 S
内存限制:
1000 Kb
问题描述:
最大公约数(GCD)指某几个整数共有因子中最大的一个,最大公约数具有如下性质,
gcd(a,0)=a
gcd(a,1)=1
因此当两个数中有一个为0时,gcd是不为0的那个整数,
当两个整数互质时最大公约数为1。
输入两个整数a和b,求最大公约数
输入说明:
输入为两个非负整数a和b(0<=a,b<10000),a和b之间用空格分隔,
输出说明:
输出其最大公约数
输入样例:
样例1输入
2 4
样例2输入:
12 6
样例3输入:
3 5
输出样例:
样例1输出
2
样例2输出
6
样例3输出
1
#include<stdio.h>
void gcd(int x,int y);
int i;
int main()
{
int a,b;
scanf("%d%d",&a,&b);
if(a==0)
printf("%d",b);
else if(b==0)
printf("%d",a);
else if(a==1||b==1)
printf("1");
else
gcd(a,b);
return 0;
}
void gcd(int x,int y)
{
if(x<y)
i=y;
else
i=x;
while(1){
if(x%i==0&&y%i==0){
printf("%d",i);
break;
}
else {
i--;
}
}
}
歌德巴赫猜想
标题
歌德巴赫猜想
类别
函数与递归
时间限制
2S
内存限制
10000Kb
问题描述
德巴赫猜想:
任意一个大偶数都能分解为两个素数的和,
对与输入的一个正偶数,写一个程序来验证歌德巴赫猜想。
由于每个正偶数可能分解成多组素数和,仅输出分解值分别是最小和最大素数的一组,按从小到大顺序输出。
输入说明
输入一个正偶数n,1<n<1000。
输出说明
输出分解出的两个最小和最大素数。
输入样例
10
输出样例
3 7
#include<stdio.h>
int prime_number(int x);
int n;
int i,j,k,l,m,h;
int main()
{
scanf("%d",&n);
if(n==2||n==4)
printf("2 2");
else{
for(k=2;k<n;k++){
l=n-k;
if(prime_number(k)==1&&prime_number(l)==1){
printf("%d %d",k,l);
break;
}
}
}
return 0;
}
int prime_number(int x)
{
j=1;
i=2;
while(1){
if(x%i==0&&i<x){
j=0;
break;
}
else{
i++;
if(i>=x)
break;
}
}
return j;
}
整数分析
标题
整数分析
类别
流程控制
时间限制
1S
内存限制
256Kb
问题描述
给出一个整数n(0<=n<=100000000)。求出该整数的位数,以及组成该整数的所有数字中的最大数字和最小数字。
输入说明
输入一个整数n(0<=n<=100000000)
输出说明
在一行上依次输出整数n的位数,以及组成该整数的所有数字中的最大数字和最小数字,各个数字之间用空格分隔。
输入样例
217
输出样例
3 7 1
#include<stdio.h>
int main()
{
int count[20];
int num,xnum;
int i,j,k,l;
xnum=0;
i=0;
scanf("%d",&num);
if(num==0)
printf("1 0 0");
else {
while(num>0){
count[i]=num%10;
i++;
xnum++;
num=num/10;
}
for(j=0;j<i-1;j++)
for(k=j;k<i;k++)
if(count[j]<count[k]){
l=count[j];
count[j]=count[k];
count[k]=l;
}
printf("%d %d %d",xnum,count[0],count[i-1]);
}
return 0;
}
选号程序
标题
选号程序
类别
流程控制
时间限制
1S
内存限制
256Kb
问题描述
小明决定申请一个新的QQ号码,系统随机生成了若干个号码供他选择。小明的选号原则是:
- 选择所有号码中各位数字之和最大的号码。
- 如果有多个号码各位数字之和相同则选择数值最大的号码。
请你写一个程序帮助小明选择一个QQ号码。
输入说明
输入数据由两行构成,第一行为一个整数n表示有n个待选号码(0<n<100),第二行有n个正整数,表示各个待选的号码,每个号码长度不超过9位数。每个号码之间用空格分隔,且每个号码都不相同。
输出说明
输出根据小明的选号原则选出的号码。
输入样例
5
10000 11111 22222 333 1234
输出样例
22222
#include<stdio.h>
int xcount[9],xsum;
int j,i;
int sum(int x);
struct QQ{
int count;
int xxsum;
};
int main()
{
int num;
int l,m,n;
struct QQ xxnum[100];
scanf("%d",&num);
for(l=0;l<num;l++){
scanf("%d",&xxnum[l].count);
}
for(l=0;l<num;l++){
xxnum[l].xxsum=sum(xxnum[l].count);
}
for(l=0;l<num-1;l++)
for(m=l;m<num;m++)
{
if(xxnum[l].xxsum<xxnum[m].xxsum)
{
n=xxnum[l].xxsum;
xxnum[l].xxsum=xxnum[m].xxsum;
xxnum[m].xxsum=n;
n=xxnum[l].count;
xxnum[l].count=xxnum[m].count;
xxnum[m].count=n;
}
}
for(l=0;l<num;l++){
if(xxnum[l].xxsum==xxnum[0].xxsum)
{
if(xxnum[l].count>xxnum[0].count)
xxnum[0].count=xxnum[l].count;
}
}
printf("%d",xxnum[0].count);
return 0;
}
int sum(int x)
{
xsum=0;
i=0;
while(x>0){
xcount[i]=x%10;
i++;
x=x/10;
}
for(j=0;j<i;j++){
xsum=xsum+xcount[j];
}
return xsum;
}
日期计算
标题
日期计算
类别
流程控制
时间限制
1S
内存限制
256Kb
问题描述
给定一个年份y和一个整数d,问这一年的第d天是几月几日?
注意闰年的2月有29天,且满足下面条件之一的是闰年:
1) 年份是4的整数倍,而且不是100的整数倍;
2) 年份是400的整数倍
输入说明
输入包含两个整数y和d,y表示年份,年份在1900到2018之间(包含1900和2018)。 d表示这一年的第几天,d在1至365之间。
输出说明
在一行输出两个整数,分别表示答案的月份和日期。
输入样例
2015 80
输出样例
3 21
//由此可见,代码不是越长越好,只是我懒罢了,估计哪一天半夜迷迷糊糊地写的,哈哈哈哈,对自己充满嫌弃,像傻子一样
//下面公开处刑
#include<stdio.h>
int main()
{
int year,day;
scanf("%d%d",&year,&day);
if(year%100!=0&&year%4==0||year%400==0)
{
if(day<31)
printf("1 %d",day);
else if(day>31&&(day-31)<=29)
printf("2 %d",day-31);
else if(day>(31+29)&&(day-31-29)<=31)
printf("3 %d",day-31-29);
else if(day>(31+29+31)&&(day-31-29-31)<=30)
printf("4 %d",day-31-29-31);
else if(day>(31+29+31+30)&&(day-31-29-31-30)<=31)
printf("5 %d",day-31-29-31-30);
else if(day>(31+29+31+30+31)&&(day-31-29-31-30-31)<=30)
printf("6 %d",day-31-29-31-30-31);
else if(day>(31+29+31+30+31-30)&&(day-31-29-31-30-31-30)<=31)
printf("7 %d",day-31-29-31-30-31-30);
else if(day>(31+29+31+30+31-30-31)&&(day-31-29-31-30-31-30-31)<=31)
printf("8 %d",day-31-29-31-30-31-30-31);
else if(day>(31+29+31+30+31-30-31-31)&&(day-31-29-31-30-31-30-31-31)<=30)
printf("9 %d",day-31-29-31-<