C语言(十八)

1、大小写字母转换
输入:输入字符串a
输出:输出将小写字母变为大写字母的字符串a
优化目标:无

#include <stdio.h>
void toupper(char a[]);
int main(){
	char a[50];
	scanf("%s",a);
	toupper(a);
	printf("%s",a);
}
void toupper(char a[]){
	int i=0;
	while(a[i]!='\0'){
		if('a'<=a[i]&&a[i]<='z'){
			a[i]=a[i]-32;
		}
		i++;
	}
}

2、统计字符串中的字母,数字,空格,其他个数
输入:输入多个字符
输出:输出字符串中的字母,数字,空格,其他的个数
优化目标:无

#include <stdio.h>
int main(void)
{
	char ch;
	int zimu,shuzi,kongge,other;
	zimu=shuzi=kongge=other=0;
	 while((ch=getchar())!='\n')
	 {
		if ((ch>='a'&& ch<='z')||(ch>='A'&&ch<='Z'))
			zimu++;
		else if(ch>='1'&&ch<='9')
			shuzi++;
		else if(ch==' ')
			kongge++;
		else
			other++;
	 }
	printf("字母有:%d 个\n", zimu);
	printf("数字有:%d 个\n", shuzi);
	printf("空格有:%d 个\n", kongge);
	printf("其他有:%d 个\n", other);
	printf("\n");
	return 0;
}

3、判断闰年
输入:输入整型变量year
输出:输出该年份是否闰年
优化目标:无

#include <stdio.h>
int main(){
	int year;
	scanf("%d",&year);
	if((year%4==0&&year%100!=0)||year%400==0){  //判断闰年的条件
		printf("%d year is leap year\n", year);
	}
	else{
		printf("%d year is not leap year\n", year);
	}
	return 0;
}

4、 百分制成绩和等级制成绩转换
给出一百分制成绩,要求输出成绩等级’A’、‘B’、‘C’、‘D’、‘E’。90分以上为’A’,80-89分为’B’,70-79分为’C’,60-69分为‘D’,60分以下为’E’。
输入:输入整型变量score
输出:输出该score属于的成绩等级
优化目标:无

#include <stdio.h>
int main(){
	int score;
	char result;
	do{
		scanf("%d",&score);
	}while(score<0||score>100);
	
	switch((int)(score/10)){
		case 10 :result='A';break;                
		case 9 :result='A';break;
		case 8 :result='B';break;
		case 7 :result='C';break;
		case 6 :result='D';break;
		default:result='E';
	}
	printf("%c",result);
	return 0;
}

5、 求两数最大公因数和最小公倍数(辗转相除法/欧几里得算法)
输入:输入两个整型变量a、b
输出:输出a、b的最大公因数和最小公倍数
优化目标:无

#include <stdio.h>
int main(){
	int a,b,m,n,o;
	scanf("%d%d",&a,&b);
	m=a;
	n=b;
	if(a<b){    //a<b则交换顺序
		m=b;
		n=a;
	}
	while(n!=0){    //辗转相除法
		o=m%n;
		m=n;
		n=o;
	}
	printf("最大公约数 %d,最小公倍数 %d\n",m,a*b/m);    
	return 0;
}

6、 验证哥德巴赫猜想(素数验证应用)
数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。
输入:输入一个整型变量n
输出:输出n分解成的两个素数之和
优化目标:无

#include <stdio.h>
#include <math.h>
bool is_prime(int num);
int main(){
	int n,i;
	scanf("%d",&n);
	for(i=2;i<n;i++){
		if(is_prime(i) && is_prime(n-i)){
			printf("%d = %d + %d\n",n,i,n-i);
			break;
		}
	}
	return 0;
}
bool is_prime(int num){
	int i,k;
	k=sqrt(num);
	for(i=2;i<=k;i++){  
	//素数验证可简化为仅需判断是否能够被 2~√n 之间整数整除即可
		if(num%i==0)break;
	}
	if(i<=k){
		return false;
	}
	else
		return true;
}

7、年月日判断是年份的第几天
输入:输入三个整型变量year、mouth、day
输出:输出是年份的第几天
优化目标:无

#include <stdio.h>
int main(){
	int mon[12]={31,28,31,30,31,30,31,31,30,31,30,31};
	int year,mouth,day,num,i;
	printf("Please input year/mouth/day:");
	scanf("%d/%d/%d",&year,&mouth,&day);
	if((year%4==0 && year%100!=0) || (year%400==0)){
		mon[1]=29;
	}
	num=day;
	for(i=0;i<mouth-1;i++){
		num += mon[i];
	}
	printf("its %d day\n",num);
	return 0;
}

总结:今天练习了一些C语言题,不涉及数据结构的话就较为简单一点,明天计划复习顺序表和链表的题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值