C
201707XX
1、等差数列求和,通项是3n-2,a1=1,公差d=3。
/*****************头文件(库函数)**********************/
#include"stdio.h"
/*****************函数原型声明**************************/
unsigned int Beauty(unsigned int n);
/*****************主函数********************************/
int main(void)
{
unsigned int Sum=0,n=1; //变量定义与初始化
printf("请输入你期望的项数:\n"); //显示输入的提示信息
scanf("%d",&n); //读取输入的值,传给指定变量
if(getchar()!='\n')
{
printf("输入的不是数字!!!\n");
return 0;
}
Sum=Beauty(n); //调用函数,进行公示计算
printf("1+4+7+10+13+...+(3n-2)=%d\n",Sum); //输出结果
return 0;
}
/*****************子函数*******************************/
unsigned int Beauty(unsigned int n)
{
/*等差数列,通项是3n-2,a1=1,公差d=3*/
return (unsigned int)(n*1+n*(n-1)*1.5);
}
运行结果:
kshine@kshine-virtual-machine:~/桌面/GCC$ gcc test2.c -o main -Wall
kshine@kshine-virtual-machine:~/桌面/GCC$ ./main
请输入你期望的项数:
5
1+4+7+10+13+...+(3n-2)=35
2、字母金字塔
/*****************头文件(库函数)**********************/
#include"stdio.h"
/*****************函数原型声明**************************/
void Draw_picture(unsigned int num);
/*****************主函数********************************/
int main(void)
{
unsigned int num=0; //变量定义与初始化
printf("请输入你期望的层数:\n"); //显示输入的提示信息
scanf("%d",&num); //读取输入的值,传给指定变量
if(num>26)
{
num=26; //限制最多26行。
printf("根据要求最多只能显示26行!!!\n");
}
if(getchar()!='\n') //防止输入错误!
{
printf("请输入数字!!!\n");
return 0;
}
Draw_picture(num); //调用函数,进行绘图
printf("Thanks!\n"); //The END
return 0;
}
/*****************子函数******************************/
void Draw_picture(unsigned int num)
{
unsigned int i=1,j=1;
for(i=1;i<=num;i++)
{
for(j=1;j<=2*num-1;j++)
{
if(j<=num-i)printf(" ");
else if(j<=num+i-1) printf("%c",('A'+i-1));
else ;
}
printf("\n");
}
}
运行结果
3、水仙花数(各位数字立方之和等于数本身的三位整数)
/*****************头文件(库函数)**********************/
#include"stdio.h"
/*****************函数原型声明***********************/
void Flower_in_water(void);
/*****************主函数********************************/
int main(void)
{
printf("求出所有的水仙花数(各位数字立方之和等于数本身的三位整数)并输出?\n"); //显示输入的提示信息
Flower_in_water(); //开始解题并输出结果
printf("Thanks!!!\n\n"); //the end
return 0;
}
/*****************子函数*******************************/
void Flower_in_water(void)
{
unsigned int The_num=100,temp_save=0,temp_num=0,bitt=0;
unsigned int i=0,counter=0;
/*首先考虑100~999之间的数字*/
for(The_num=100;The_num<=999;The_num++)
{
temp_num=The_num; //传值,由temp_num参与计算
temp_save=0; //这个地方一定要记得清零。
for(i=1;i<=3;i++)
{
bitt=(temp_num%10);
temp_save+=bitt*bitt*bitt; //计入三次方后的数
// printf("Yu%d_temp_save%d\t",bitt,temp_save); //@@这里用于调试程序时,辅助显示,程序完成后,已被注释!
temp_num/=10; //去除低位
}
if(temp_save==The_num)
{
printf("数字:%d是水仙花数\n",The_num);
counter++;
}
else ; // printf("%d\t%d\n",The_num,temp_save); //@@用于调试,已经被注释!
}
printf("\n共计%d个数\n",counter);
}
运行结果
kshine@kshine-virtual-machine:~/桌面/GCC$ gcc test4.c -o main -Wall
kshine@kshine-virtual-machine:~/桌面/GCC$ ./main
求出所有的水仙花数(各位数字立方之和等于数本身的三位整数)并输出?
数字:153是水仙花数
数字:370是水仙花数
数字:371是水仙花数
数字:407是水仙花数
共计4个数
Thanks!!!
4、计算圆环的面积
#include"stdio.h"
#define PI 3.14
/*
函数原型声明
*/
float area(int r);
/*
主函数
*/
void go();
int main()
{
/*写求圆的面积的函数,并调用该函数求出圆环的面积 */
go();
return 0;
}
/*
子函数1 总运行
*/
void go()
{
int R=0,r=0;
float S=0;
printf("请输入圆环的内外半径\n");
scanf("%d%d",&r,&R);
if(r>R)
{
r=r^R;
R=r^R;
r=r^R;
}
S=area(R)-area(r);
printf("圆环面积是:%f\n",S);
}
/*
子函数 计算面积
*/
float area(int r)
{
return r*r*PI;
}
运行结果
kshine@kshine-virtual-machine:~/桌面/GCC$ gcc test5.c -o main -Wall
kshine@kshine-virtual-machine:~/桌面/GCC$ ./main
请输入圆环的内外半径
5 10
圆环面积是:235.500000
5、计算 m ~ n 之和
#include"stdio.h"
int fun(int m,int n);
void go();
int main()
{
/* 编写函数 fun 计算 m ~ n 之和? */
go();
return 0;
}
int fun(int m,int n)
{
if(m>n)
{
m=m^n;
n=m^n;
m=m^n;
}
return (m+n)*(n-m+1)/2;
}
void go()
{
int num_m=0,num_n=0;
printf("please insert two number\n");
scanf("%d%d",&num_m,&num_n);
printf("%d~%d之间的数字之和为%d\n",num_m,num_n,fun(num_m,num_n));
}
运行结果
kshine@kshine-virtual-machine:~/桌面/GCC$ gcc test6.c -o main -Wall
kshine@kshine-virtual-machine:~/桌面/GCC$ ./main
please insert two number
23 88
23~88之间的数字之和为3663
6、求出1000以内所有的完数
一个数如果恰好等于它的因子之和,这个数就称为“完数”,例如6的因子为1、2、3,而6=1+2+3,因此6是“完数”。
#include"stdio.h"
void go();
int perfect(int num);
int main()
{
go();
return 0;
}
void go()
{
int i=1;
for(i=1;i<=1000;i++)
{
if(perfect(i)==1)printf("%d\t",i);
}
printf("\n");
}
int perfect(int num)
{
int i=0,sum=0;
if(num==1)return 1;
for(i=num-1;i>=1;i--)
{
if(num%i==0)sum+=i;
}
if(sum==num)return 1;
return 0;
}
运行结果
kshine@kshine-virtual-machine:~/桌面/GCC$ gcc test7.c -o main -Wall
kshine@kshine-virtual-machine:~/桌面/GCC$ ./main
1 6 28 496
7、字符串操作,大写变小写,小写变大写,数字变#,0不变
/*----------------------------------------------------------
功能:输入一个字符串(有大小写,数字和0),调用功能函数,大写变小写,小写变大写,数字变#,0不变。
-----------------------------------------------------------*/
#include"stdio.h"
/*
主函数
*/
void change_string(char str[]);
int main(void)
{
char str[1024]="";//定义并初始化
printf("please input string:");
scanf("%s",str);
puts(str);
change_string(str);
puts(str);
return 0;
}
void change_string(char str[])
{
int i=0;
while(str[i]!='\0')
{
if(str[i]>='A'&&str[i]<='Z')
{
str[i]=str[i]+'a'-'A';
}
else if(str[i]>='a'&&str[i]<='z')
{
str[i]=str[i]+'A'-'a';
}
else if(str[i]=='0')
{
;
}
else
{
str[i]='#';
}
i++;
}
}
运行结果
kshine@kshine-virtual-machine:~/桌面/GCC$ gcc test12.c -o main -Wall
kshine@kshine-virtual-machine:~/桌面/GCC$ ./main
please input string:Kshine2017_20181218
Kshine2017_20181218
kSHINE#0####0######
8、剔除字符串中的字母‘a’,后面的字符向前补位。
如abcd\0变为bcd\0,happy\0变为hppy\0,切记该方法虽然巧妙,但后面的补位对象一定不能超过范围
#include"stdio.h"
void dealing_num(char *str);
int main()
{
char str[30]="";
scanf("%s",str);
puts(str);
dealing_num(str);
puts(str);
return 0;
}
void dealing_num(char *str)
{
int i=0,counter=0;
while(str[i]!='\0'||i<30)
{
if(str[i]=='a')
{
i++;
counter++; //已发现counter个a;
continue; //跳过本次的移位;
}
str[i-counter]=str[i];
i++;
}
}
运行结果
kshine@kshine-virtual-machine:~/桌面/GCC$ ./main
kasahaianaea2a0a1a7a
kasahaianaea2a0a1a7a
kshine2017
9、找到整型数组中只出现一次的数字
略
10、手动输入一串字符,包括大写字母和小写字母,还有数字以及其他字符,将这些字母存入dig[100]数组中,将小写字母存入low[]数组中,将数字存入num[100]中,其他字符存入another[100];
略
11、回文数组,通过指针判断
这里只给出关键代码
int judge_palindrome_array(int *array,int k)
{
int *p1=array,*p2=array+k-1;
while(p1<p2)
{
if(*p1!=*p2)
{
return 0;
}
p1++;
p2--;
}
return 1;
}
也可以参考图片中所示