您的位置:首页 > 编程语言 > C语言/C++

C语言的简单应用(三)

2017-07-15 18:28 393 查看
第三天

1、题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

分析:这种方式很好,get到了一个逆序的新用法

#include<stdio.h>
#define MAX 5
void print(int n)
{
int a;
if(n<=1)
{
a=getchar();
putchar(a);
}
else {
a=getchar();
print(n-1);
putchar(a);
}
}
int main()
{
int n=MAX;
print(n);
putchar('\n');
return 0;
}


2、题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

#include<stdio.h>
int age(int n)
{
int c;
if(n==1)
c=10;
else c=age(n-1)+2;
return c;
}
int main()
{
printf("the fifth:%d",age(5));
return 0;
}


3、题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

#include<stdio.h>
#define max 100
int main()
{
int a,b[max],i=0;
printf("input the number:");scanf("%d",&a);
while(a)
{
b[i]=a%10;
i++;
a/=10;
}
a=i;
printf("It is %d位,It is:",i);
for(i=0;i<a;i++)
printf("%d",b[i]);
return 0;
}


4、题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

改良后可判断任意回文序列,当然限int内

#include<stdio.h>
#define max 100
int judge(int b[],int n)
{
int i,a;
for(i=0;i<n;i++)
{
a=n-1-i;
if(b[i]==b[a])
return 1;
else return 0;
}
}
int main()
{
int a,b[max],i=0;
printf("input the number:");scanf("%d",&a);
while(a)
{
b[i]=a%10;
i++;
a/=10;
}
a=i;
printf("It is %d位,It is:",i);
for(i=0;i<a;i++)
printf("%d",b[i]);
if(judge(b,i))
printf("\nIt is palindrome");
else printf("\nIt isn't");
return 0;
}


5、题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母。

#include<stdio.h>
int main()
{
char letter;
printf("input the first letter:");
while((letter=getchar())!='Y')
{
switch(letter)
{
case 's':printf("input second letter\n");
if((letter=getchar())=='a')
printf("saturday\n");
else if((letter=getchar())='u')
printf("sunday\n");
else printf("error data\n");
break;
case 'f':printf("friday\n");break;
case 'm':printf("monday\n");break;
case 't':printf("input second letter\n");
if((letter=getchar())=='u')
printf("tuesday\n");
else if((letter=getchar())=='h')
printf("thursday\n");
else printf("error data\n");break;
case 'w':printf("wednesday\n");break;
default :printf("error data;\n");
}
}
return 0;
}


6、题目:对10个数进行排序(选择排序法)

#include<stdio.h>
#define N 10
int main()
{
int i,j,min,a
;
printf("input %d number:\n",N);
for(i=0;i<N;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("the sort number:\n");
for(i=0;i<N;i++)
{
min=i;
for(j=i+1;j<N;j++)
if(a[min]>a[j])
min=j;
int temp=a[i];
a[i]=a[min];
a[min]=temp;
}
for(i=0;i<N;i++)
printf("%d ",a[i]);
return 0;
}


7、矩阵的相关运算(对角线之和,两个矩阵相乘)

#include<stdio.h>
#define N 3
int main()
{
int i,j,k,sum=0,a

,b

,c

={0};
printf("input a[%d][%d] matrix:\n",N,N);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&a[i][j]);
printf("input b[%d][%d] matrix:\n",N,N);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
scanf("%d",&b[i][j]);
for(i=0;i<N;i++)
{
printf("a[%d][%d] ",i,i);
sum+=a[i][i];
}
printf("=%d\n",sum);
for(i=0;i<N;i++)
for(j=0;j<N;j++)
for(k=0;k<N;k++)
c[i][j]+=a[i][k]*b[k][j];
for(i=0;i<N;i++)
for(j=0;j<N;j++)
{
printf("%d ",c[i][j]);
if(j/(N-1)==1)
putchar('\n');
}
return 0;
}


8、输入从大到小排好序的数组,然后插入一个数字(插入排序)

#include<stdio.h>
#define N 20
int main()
{
int i,j,temp,number,a
;
puts("input some numbers:");
for(i=0;i<N-1;i++)
{
printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("input the insert number:");
scanf("%d",&number);
if(number>a[N-2])
a[N-1]=number;
else {
for(i=0;i<N-1;i++)
if(a[i]>number)
{
temp=a[i];
break;
}
a[i]=number;
for(j=N-1;j>=i+2;j--)
{
a[j]=a[j-1];
}
a[i+1]=temp;
}
puts("the sort number:");
for(i=0;i<N;i++)
printf("a[%d]=%d\n",i,a[i]);
return 0;
}


9、题目:取一个整数a从右端开始的4~7位。

#include<stdio.h>
int main()
{
unsigned a=0xf0,b,c,d;
printf("input a:");
b=a>>4;
c=~(~0<<4);
d=b&c;
printf("%x\n%x\n",a,d);
return 0;
}


10、一个恶搞小程序(‾◡◝)(关于调用windows系统的库文件)

解除命令:百度知道

#include<stdio.h>
#include<windows.h>
int main()
{
int a=180;
system("shutdown -s -t 180");
while(a)
{
system("color 02");
Sleep(1000);
printf("the count down :%d\n",a--);
SetCursorPos(0,0);
if(a==100)
{
printf("remember fen me,next to see\n");
exit(1);
}
}
return 0;
}


总结

本次代码量较之前两日有些改变,但很有意思的是居然出现了好几个排序,冒泡版,选择版、还有插入版,很不错,适合练手,明天继续。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: