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语言题,不涉及数据结构的话就较为简单一点,明天计划复习顺序表和链表的题。