//给一个不多于5位的正整数,
//要求:一、求它是几位数,二、逆序打印出各位数字。
#include<stdio.h>
void reverse(int number,int *count)
{
if(number>0){
int digit = number%10;
printf("%d",digit);
(*count)++;
reverse(number/10,count);
}
}
int main()
{
int number,count=0;
printf("请输入一个不多于五位的数:\n");
scanf("%d",&number);
if(number<0||number>99999){
printf("输入错误。");
return 1;
}
printf("逆序打印出各位数字为:");
reverse(number,&count);
printf("\n它是%d位数。\n",count);
return 0;
}
//一个5位数,判断它是不是回文数。
//即12321是回文数,个位与万位相同,十位与千位相同。
#include<stdio.h>
int main()
{
int num,org,reverse=0,endnum;
printf("请输五位数:\n");
scanf("%d",&num);
org=num;
while(num!=0){
endnum=num%10;
reverse=reverse*10+endnum;
num/=10;
}
if(org==reverse){
printf("%d是一个回文数。\n",org);
}else{
printf("%d不是一个回文数。\n",org);
}
return 0;
}
#include <stdio.h>
int main() {
int num, wan, qian, shi, ge, temp;
printf("请输入一个5位数:");
scanf("%d", &num);
// 分别取出第一位和最后一位数字
wan = num / 10000; // 万位
ge = num % 10; // 个位
// 分别取出第二位和倒数第二位数字
temp = num / 1000; // 去掉个位
qian = temp % 10; // 千位
temp = num / 10; // 去掉万位
shi = temp % 10; // 十位
// 比较第一位和最后一位,以及第二位和倒数第二位
if (wan == ge && qian == shi) {
printf("%d 是一个回文数。\n", num);
} else {
printf("%d 不是一个回文数。\n", num);
}
return 0;
}
//请输入星期几的第一个字母来判断一下是星期几,
//如果第一个字母一样,则继续判断第二个字母。
//monday,tuesday,wednesday,thursday,friday,saturday,sunday
#include<stdio.h>
int main()
{
char first,second;
printf("请输入星期几的第一个字母:\n");
first = getchar();
getchar();
switch (first) {
case 'm':
printf("monday\n");
break;
case 'w':
printf("wednesday\n");
break;
case 'f':
printf("friday\n");
break;
case 't':
printf("请输入星期几的第二个字母:\n");
second=getchar();
if(second=='u'){
printf("tuesday\n");
}else if(second=='h'){
printf("thursday\n");
}else{
printf("没有匹配的星期几。\n");
}
break;
case 's':
printf("请输入星期几的第二个字母:\n");
second=getchar();
if(second=='u'){
printf("sunday\n");
}else if(second=='a'){
printf("saturday\n");
}else{
printf("没有匹配的星期几。\n");
}
break;
default:
printf("没有匹配的星期几。\n");
break;
}
return 0;
}
//删除一个字符串中的指定字母,
//如:字符串 "aca",删除其中的 a 字母。
#include<stdio.h>
#include<string.h>
void deletechar(char *str,char n)
{
int i,j=0;
int len= strlen(str);
char newstr[len+1];
for(i=0;str[i]!='\0';i++){
if(str[i]!=n){
newstr[j++]=str[i];
}
}
newstr[j]='\0';
strcpy(str,newstr);
}
int main()
{
char str[100],n;
printf("请输入字符串:\n");
scanf("%s",str);
printf("请输入要删除的字符:\n");
scanf(" %c",&n);
deletechar(str,n);
printf("删除指定字符%c后的字符串为:%s\n",n,str);
return 0;
}
//判断一个数字是否为质数。
//质数(prime number)又称素数,有无限个。
//一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。
#include<stdio.h>
int isprime(int n)
{
if(n<=1){
return 0;
}
if(n==2){
return 1;
}
for(int i=2;i<n;i++){ //提高效率可以改成i<sqrt(n),头文件#include<math.h>
if(n%i==0){
return 0;
}
}
return 1;
}
int main()
{
int n;
printf("请输入一个数:\n");
scanf("%d",&n);
if(isprime(n)){
printf("%d是质数。\n",n);
}else{
printf("%d不是质数。\n",n);
}
return 0;
}
//字符串反转。
//如将字符串 "I like Kobe"反转为“eboK ekil I”。
#include<stdio.h>
#include<string.h>
int main()
{
char s[100];
printf("请输入一串字符:\n");
gets(s);
int len = strlen(s);
int i;
char temp;
for(i=0;i<len/2;i++){
temp = s[i];
s[i] = s[len-1-i];
s[len-1-i] = temp;
}
printf("反转以后的字符串是:%s\n",s);
return 0;
}
#include<stdio.h>
void reverse(char *str)
{
if(*str){
reverse(str+1);
putchar(*str);
}
}
int main()
{
char str[100];
printf("请输入一串字符:\n");
gets(str);
printf("相反顺序输出为:\n");
reverse(str);
return 0;
}
//实现输入一串字符,将单词顺序逆置
//如输入''I like Beijing.'' 输出“Beijing. like I”
#include<stdio.h>
#include<string.h>
void reverse(char *left,char *right)
{
while(left<right)
{
char temp = *left;
*left = *right;
*right = temp;
left++;
right--;
}
}
int main()
{
char a[100];
gets(a);
int len = strlen(a);
char *start=a;
while(*start)
{
char *end=start;
while(*end!=' '&&*end!='\0'){
end++;
}
reverse(start,end-1);
if(*end!='\0')
end++;
start=end;
}
reverse(a,a+len-1);
printf("%s\n",a);
return 0;
}
//求100之内的素数
#include<stdio.h>
int main()
{
for(int i=0;i<=100;i++){
int j=0;
for(j=2;j<=i;j++){
if(i%j==0){
break;
}
}
if(j==i){
printf("%d ",i);
}
}
return 0;
}
//求一个3*3矩阵对角线之和
#include<stdio.h>
int main()
{
int a[3][3],i,j;
int sum=0;
for(i=0;i<3;i++){
for(j=0;j<3;j++){
scanf("%d",&a[i][j]);
}
}
for(i=0;i<3;i++){
sum+=a[i][i];
}
printf("对角线之和为:%d\n",sum);
return 0;
}
//有一个已经排好序的数组。现输入一个数,
//要求按原来的规律将它插入数组中。
#include<stdio.h>
int main()
{
int a[11]={1,3,4,6,8,9,13,15,66,100};
int b;
int i,j;
printf("原来的数组是:\n");
for(i=0;i<10;i++){
printf("%-3d",a[i]);
}
printf("\n");
printf("请输入要插入的数字:\n");
scanf("%d",&b);
if(b>a[9]){
a[10]=b;
}else{
for(i=0;i<11;i++){
if(a[i]<b){
continue;
}else{
for(j=9;j>=i;j--){
a[j+1]=a[j];
}
a[j+1]=b;
}
break;
}
}
printf("插入%d的数组是:\n",b);
for(i=0;i<11;i++){
printf("%-3d",a[i]);
}
return 0;
}