c语言编程 新浪博客,[c语言编程]经典编程
用pi/4=1-1/3+1/5-1/7+...公式求PI的近似值,直到最后一项的绝对值小有10的-6次方为止。
#include
main()
{int i=-1;
float j,s=0.0;
for(j=1.0;fabs(1.0/j)>=1e-6;j=j+2.0)
{i=-i;
s+=i*1.0/j;}
s=s*4.0;
printf("%f\n",s);
}
输入四个整数,要求按由小到大的顺序输出。
main()
{int a,b,c,d;
printf("请输入4个整数:");
scanf("%d,%d,%d,%d",&a,&b,&c,&d);
printf("\n a=%d, b=%d, c=%d, d=%d \n",a,b,c,d);
if(a>b)
{t=a;a=b;b=t;}
if(a>c)
{t=a;a=c;c=t;}
if(a>d)
{t=a;a=d;d=t;}
if(b>c)
{t=b,b=c;c=t;}
if(b>d)
{t=b;b=d;d=t;}
if(c>d)
{t=c;c=d;d=t;}
printf("排序结果如下:\n");
printf("%d %d %d %d\n",a,b,c,d);
}
译密码。为使电文保密,往往按一定规律将其转换成密码,收报人再按约定的规律将其译回原文。例如,可以按以下规律电文变为密码:
将字母A变成字母E,a变成e,即变成其后的第4个字母,W变成A,X变成B,Y变成C,Z变成D。字母按上述规律转换,非字母字符不变。如“China!”转换为“Glmre!”。输入一行字符,要求输出其相应的密码。
#include
main()
{char a,b[100];
int i,j=0;
printf("qing shu ru,yi hui che jie shu:");
for(i=0;(b[i]=getchar())!='\n';i++)
{if((b[i]>='a'&&b[i]<='z')||(b[i]>='A'&&b[i]<='Z'))
b[i]+=4;
if(b[i]>'Z'&&b[i]<='Z'+4||b[i]>'z')b[i]=b[i]-26;
}
while(b[j]!='\0')
{printf("%c",b[j]);
j++;}
}
输入两个正整数m和n,求其最大公约数和最小公倍数。
main()
{int p,r,n,m,temp;
printf("请输入两个正整数 n,m");
scanf("%d,%d",&n,&m);
if(n
{temp=n;
n=m;
m=temp;
}
p=n*m;
while(m!=0)
{r=n%m;
n=m;
m=r;
}
printf("它们的最大公约数为:%d\n",n);
printf("它们的最小公倍数为:%d\n",p\n);
}
打印出所有的“水仙花数”。所谓“水仙花数”是指一个3位数,其各位数字的立方和等于该数本身。例如,153是一个“水仙花数”,因为153=1的立方+5的立方+3的立方。
main()
{int i,j,k,n;
printf("水仙花"数是:");
for(n=100;n<1000;n++)
{i=n/100;
j=n/10-i*10;
k=n%10;
if(n==i*i*i+j*j*j+k*k*k)
printf("%4d",n);
}
printf("\n");
}
两个乒乓球队进行比赛,各出三人。甲队为A、B、C三人,乙队为X、Y、Z三人。已抽签决定比赛名单。有人向队员打听比赛的名单,A说他不和X比,C说他不和X、Z比。请编程序找出三对赛手的名单。
main()
{char i,j,k;
for(i='X';i<='Z';i++)
for(j='X';j<='Z';j++)
if(i!=j)
for(k='X';k<='Z';k++)
if(i!=k&&j!=k)
if(i!='X'&&k!='X'&&k!='Z')
printf("A--%c\tB--%c\tC--%c\n",i,j,k);
}
用起泡法对10个数排序(由小到大)。
main()
{int a[10],t,i,j;
printf("qing shu ru 10 ge shu:\n");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<9;i++)
for(j=0;j<9-i;j++)
if(a[j]>=a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
for(i=0;i<10;i++)
printf("%5d",a[i]);
}
输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。
#include
main()
{
char string[81];
int i,num=0,word=0;
char c;
gets(string);
for(i=0;(c=string[i])!='\0';i++)
if(c==' ')word=0;
else if(word==0)
{
word=1;
num++;
}
printf("there are %d wprd in the line.\n",num);
}
用选择法对10个整数排序(从小到大)。
main()
{int i,j,temp,a[11];
printf("Enter data:\n");
for(i=1;i<=10;i++)
{printf("a[%d]=",i);
scanf("%d",&a[i]);
}
printf("\n");
for(i=1;i<=10;i++)
printf("%5d",a[i]);
printf("\n");
for(i=1;i<=9;i++)
{for(j=i+1;j<=10;j++)
if(a[i]>a[j])
{temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
printf("\nThe sorted numbers:\n");
for(i=1;i<=10;i++)
printf("%5d",a[i]);
}
将一个数组中的直按逆序重新存放。列如原来顺序为:8、6、5、4、1。要求改为:1、4、5、6、8。
#define N 5
main()
{int a[N],i,temp;
printf("qing shu ru :");
for(i=0;i
scanf("%d",&a[i]);
for(i=0;i
{temp=a[i];
a[i]=a[N-i+1];
a[N-i+1]=temp;}
for(i=0;i
printf("%4d",a[i]);
printf("\n");
}
打印“打印魔方阵”,所谓魔方阵是指这样的方阵,它的每一行、每一列和对角线之和均相等。要求打印1……平方的自然数构成的魔方阵。
main()
{int a[16][16],i,j,k,p,m,n;
p=1;
while(p==1)
{printf("Enter
n(n=1~15):");
scanf("%d",&n);
if((n!=0)&&(n<=15)&&(n%2!=0))
p=0;
}
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
a[i][j]=0;
j=n/2+1;
a[1][j]=1;
for(k=2;k<=n*n;k++)
{i=i-1;
j=j+1;;
if((i<1)&&(j>n))
{i=i+2;
j=j-1;
}
else
{if(i<1)i=n;
if(j>n)j=1;
}
if(a[i][j]==0)
a[i][j]=k;
else
{i=i+2;
j=j-1;
a[i][j]=k;
}
}
for(i=1;i<=n;i++)
{for(j=1;j<=n;j++)
printf("%4d",a[i][j]);
printf("\n");
}
}
有一个已排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中(以两两交换的方式)。
main()
{int a[11]={1,4,6,13,16,19,28,40,100};
int temp1,temp2,number,end,i,j;
printf("array a:\n");
for(i=0;i<10;i++)
printf("%5d",a[i]);
printf("\n");
printf("Insert data:");
scanf("%d",&number);
end=a[9];
if(number>end)
a[10]=number;
else
{for(i=0;i<10;i++)
{if(a[i]>number)
{temp1=a[i];
a[i]=number;
for(j=i+1;j<11;j++)
{temp2=a[j];
a[j]=temp1;
temp1=temp2;
}
break;
}
}
}
printf("Now,array a:\n");
for(i=0;i<11;i++)
printf("%6d",a[i]);
}
写一函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字间有一个空格。如输入1990,应输出“1 9 9 0”。
main()
{char str[80];
void insert(char s[]);
printf("\nInput four digits:");
scanf("%s",str);
insert(str);
}
void insert(char str[])
{int i;
for(i=strlen(str);i>0;i--)
{str[2*i]=str[i];
str[2*i-1]='
';
}
printf("\nOutput:\n%s",str);
}
写一函数,输入一行字符,将此字符串中最长的单词输出。
int alphabetic(char c)
{if((c>='a'&&c<='z')||(c>='A'&&c<='z'))
return(1);
else
return(0);
}
int longest(char string[])
{int len=0,i,length=0,flag=1,place=0,point;
for(i=0;i<=strlen(string);i++)
if(alphabetic(string[i]))
if(flag)
{point=i;
flag=0;
}
else
len++;
else
{flag=1;
if(len>=length)
{length=len;
place=point;
len=0;
}
}
return(place);
}
main()
{int
i;
char line[100];
printf("Input one line:\n");
gets(line);
printf("\nThe longest word is:");
for(i=longest(line);alphabetic(line[i]);i++)
printf("%c",line[i]);
printf("\n");
}
有15个数按由大到小的顺序存放在一个数组中,输入一个数,要求用折半查找法找出该数是数组中第几个元素的值。如果该数不在数组中,则打印出“无此表”。
#include
#define N 15
main()
{int i,j,number,top,bott,mid,loca,a[N],flag=1,sign=1;
char c;
printf("Enter data:\n");
scanf("%d",&a[0]);
i=1;
while(i
{scanf("%d",&a[i]);
if(a[i]>=a[i-1])
i++;
else
printf("Enter this data again:");
}
printf("\n");
for(i=0;i
printf("%4d",a[i]);
printf("\n");
while(flag)
{printf("Input number to look
for:");
scanf("%d",&number);
loca=0;
top=0;
bott=N-1;
if((numbera[N-1]))
loca=-1;
while((sign==1)&&(top<=bott))
{mid=(bott+top)/2;
if(number==a[mid])
{loca=mid;
printf("Find %d,its position is %d\n",number,loca+1);
sign=0;
}
else if(number
bott=mid-1;
else
top=mid+1;
}
if(sign==1||loca==-1)
printf("%d is not found.\n",number);
printf("Continue or not(Y/N)?");
scanf(" %c",&c);
if(c=='N'||c=='n')
flag=0;
}
}
写一函数,输入一个十六进制数,输出相应的十进制数。
#include
#define MAX 1000
main()
{char t[MAX],c;
int i,flag,flag1;
i=0;
flag=0;
flag1=1;
printf("\nInput a hex
number:");
while((c=getchar())!='\0'&&i
{if(c>='0'&&c<='9'||c>='a'&&c<='f'||c>='A'&&c<='F')
{flag=1;
t[i++]=c;
}
else if(flag)
{t[i]='\0';
printf("decimal number %d:\n",htoi(t));
printf("Continue or not?");
c=getchar();
if(c=='N'||c=='n')
flag1=0;
else
{flag=0;
i=0;
printf("\nInput a hex number:");
}
}
}
}
htoi(char s[])
{int i,n;
n=0;
for(i=0;s[i]!='\0';i++)
{if(s[i]>='0'&&s[i]<='9')
n=n*16+s[i]-'0';
if(s[i]>='a'&&s[i]<='f')
n=n*16+s[i]-'a'+10;
if(s[i]>='A'&&s[i]<='F')
n=n*16+s[i]-'A'+10;
}
return(n);
}
10进制转k进制(2<=k<=9)编程
给定程序功能是将十进制正整数m转化为k进制(2<=k<=9)数的数字输出。例如,若输入8和2,则应输出1000(即十进制数8转化为二进制表示是1000)。
#include
void fun( int m, int k )
{
int aa[20], i;
for( i = 0; m; i++ ) {
aa[i] = m%k;
m /= k;
}
for( ; i; i-- )
printf( "%d", aa[ i-1 ] );
}
main()
{
int b, n;
printf( "\nPlease enter a number and a base:\n" );
scanf( "%d
%d", &n, &b );
fun( n, b );}
用递归法将一个整数n 转换成字符串。例如输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。
#include
void convert(int n)
{int i;
if((i=n/10)!=0)
convert(i);
putchar(n%10+'0');
}
main()
{int number;
printf("\n Input an integer:");
scanf("%d",&number);
printf("Output:");
if(number<0)
{putchar('_');
number=-number;
}
convert(number);
}
有n个整数,使其前面各数顺序向后移m个位置,最后m个数变成最前面m个数,见图10.3。写一函数实现以上功能,在主函数中输入n个整数,并输出调整后的n个数。
main()
{int number[20],n,m,i;
printf("How many numbers?");
scanf("%d",&n);
printf("Input %d numbers:\n",n);
for(i=0;i
scanf("%d",&number[i]);
printf("How many place you want to move?");
scanf("%d",&m);
move(number,n,m);
printf("Now,they are:\n");
for(i=0;i
printf("%d",number[i]);
}
move(int array[20],int n,int m)
{int *p,array_end;
array_end=*(array+n-1);
for(p=array+n-1;p>array;p--)
*p=*(p-1);
*array=array_end;
m--;
if(m>0)
move(array,n,m);
}
有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位。
main()
{int n,i,a[100],*p,tr=0;
printf("qing shu ru ren shu:");
scanf("%d",&n);
for(i=0;i
a[i]=i+1;
p=a;
while(tr
{
if(*p!=0)
{if(i==3)
{*p=0;
tr++;
}
i++;
}
p++;
if(p>a+n-1)
p=a;
}
for(i=0;i
if(a[i]!=0)
{printf("zui hou liu zai dui wu zhong de shi %d",a[i]);
break;}
}
写一个函数,将一个3*3的矩阵转置。
main()
{int a[3][3],*p,i,j;
printf("Input matrix:\n");
for(i=0;i<3;i++)
scanf("%d %d
%d",&a[i][0],&a[i][1],&a[i][2]);
p=&a[0][0];
move(p);
printf("Now,matrix:\n");
for(i=0;i<3;i++)
printf("%d %d %d\n",a[i][0],a[i][1],a[i][2]);
}
move(int *pointer)
{int i,j,t;
for(i=0;i<3;i++)
for(j=i;j<3;j++)
{t=*(pointer+3*i+j);
*(pointer+3*i+j)=*(pointer+3*j+i);
*(pointer+3*j+i)=t;
}
}
用指向指针的指针的方法对5个字符串排序并输出。
#define LINEMAX 20
#include
#include
main()
{char *str[5],temp[LINEMAX],a[5][LINEMAX],**p;
int i,j;
printf("qing yi ci shu ru zi fu chuan:");
for(i=0;i<5;i++)
gets(a[i]);
for(i=0;i<5;i++)
str[i]=a[i];
p=str;
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(strcmp(*(p+i),*(p+j))>0)
{strcpy(temp,*(p+i));
strcpy(*(p+i),*(p+j));
strcpy(*(p+j),temp);}
for(i=0;i<5;i++)
{puts(a[i]);
printf("\n");
}
}
写一个函数,对一个16位的二进制数取出它的奇数位(即从左边起第1、3、5、...、15位)。
main()
{unsigned getbits(unsigned);
unsigned int a;
printf("\nInput an octal number:");
scanf("%o",&a);
printf(""result:%o\n",getbits(a));
}
unsigned getbits(unsigned value)
{int i,j,m,n;
unsigned int z,a,q;
z=0;
for(i=1;i<=15;i+=2)
{q=1;
for(j=1;j<=(16-i-1)/2;j++)
q=q*2;
a=value>>(16-i);
a=a<<15;
a=a>>15;
z=z+a*q;
}
return(z);
}
编一函数用来实现左右循环移位。
main()
{unsigned moveright(unsigned,int);
unsigned moveleft(unsigned,int);
unsigned a;
int n;
printf("\nInput an octal number:");
scanf("%o",&a);
printf("Input n: ");
scanf("%d",&n);
if(n>0)
{moveright(a,n);
printf("result:%o\n",moveright(a,n));
}
else
{n=-n;
moveleft(a,n);
printf("result:%o\n",moveleft(a,n));
}
}
unsigned moveright(unsigned value,int n)
{unsigned z;
z=(value>>n)|(value<
return(z);
}
unsigned moveleft(unsigned value,int n)
{unsigned z;
z=(value>>(16-n))|(value<
return(z);
}
c语言编程 新浪博客,[c语言编程]经典编程相关推荐
- 计算机语言zuv,我们的拼语_大家的语言_新浪博客
(2019-03-06 14:15) 标签: 杂谈 我们的拼语,大家的语言. 汉 语 拉 文 xoe 近 pio zaz lez meo guv daz bov tol soc , zua zeg s ...
- 关于幂律分布的一个笔记_哈克_新浪博客
关于幂律分布的一个笔记_哈克_新浪博客 关于幂律分布的一个笔记 (2011-03-02 18:12:27) 转载▼ 标签: 幂律 二八法则 杂谈 ...
- 欢迎访问我的新浪博客
我的新浪博客(http://blog.sina.com.cn/u/1690987771)是大一开始学习编程时建立的,里面放的大部分是我大一时的程序代码,欢迎大家光临指导.现在开始学习项目管理方面的知识 ...
- 发布一个mmap的trie_midrmm02_新浪博客
发布一个mmap的trie_midrmm02_新浪博客 发布一个mmap的trie (2012-04-13 03:09:22) 转载▼ 标签: 杂谈 ...
- 文献与逻辑的联手——评林奎成《吴三桂与甲申之变》王立群新浪博客
甲申日记>.<甲申日记>令当今"甲申之变"研究者最感兴趣的是其书收入五封吴三桂写给其父吴襄的"家书".在历史书写中,日记.家书往往是最重要最可 ...
- 我的新浪博客搬家到CSDN博客啦!
我的新浪博客搬家到CSDN博客啦! CSDN上有更专业的专家和技术爱好者,有更好的C/C++.数值算法.混合编程的技术文章,所以我也搬过去跟技术大牛一起住,哈哈,我将在CSDN有个新家啦.
- Action Golf 四个魔法球实战训练系列_huatuo_新浪博客
Action & Golf 四个魔法球实战训练系列_huatuo_新浪博客
- 普度网络营销策划_普度网络营销策划-齐宁_新浪博客
标签: 杂谈 自媒体的盛行,让我们知道了文案的重要性.一条好的文案,可以让你的广告如虎添翼.一篇好的内容可以瞬间刷爆朋友圈.今天我要总结的就是如何做一个打动人内心心智的好文案. 文案最主要的目的是让消 ...
- 黄聪:wordpress文章同步发布到网易、天涯、新浪博客、百度空间插件
新浪博客,网易博客,百度空间,天涯博客都是权重很高的第三方博客平台.如果能保持更新,有助于提升主站权重.有了博客同步插件,直接在wordpress 后台设置一下,wordpress 自动把更新的日志同 ...
最新文章
- Springboot配置不当
- Linux操作系统下Sudo命令的使用方法说明
- 量子相干与量子纠缠_量子分类
- (34)FPGA原语设计(BUFGMUX)
- 双向链表示意图_java双向链表示意图
- python 核心编程 第一部分
- c语言作业统计字符,C语言统计字符数(示例代码)
- 基于持续集成的轻量级接口自动化测试 【持续更新...】
- 依赖注入及AOP简述(四)——“好莱坞原则”和依赖注入框架简介 .
- [zhuan]asp.net程序性能优化的七个方面 (c#(或vb.net)程序改进)
- 四川理工学院计算机学院在哪里,四川理工计算机学院
- 蓝牙音箱项目:记录CSR8635芯片的蓝牙音箱的开发过程
- 2023华南农业大学计算机考研信息汇总
- MOOC-大型开放式网络课程massive open online courses
- vue中使用腾讯地图选择地址
- oracle gbk ebcdic,文件编码 ANSI、GBK、GB2312、MS936、MS932、SJIS、Windows-31 、EUC-JP 、EBCDIC 等等之间的区别与联系...
- JavaFX店铺管理软件
- 浅谈企业数字化转型之主数据管理系统(MDM)
- 庚顿风电场远程集中监控系统、 庚顿风电集控中心一体化应用系统解决方案
- Java生成二维码或条形码
热门文章
- 机器学习导论(张志华):随机向量性质
- Linux内核源代码获取方法
- MPICH3环境配置
- 【Matlab】定义顺序增加的字符串数组(A1,A2 ... An)并写到Excel的第一行
- 目标检测,目标识别的SAR数据集构建和标注
- USTC English Club Note20171014
- [MATLAB学习笔记]sprintf将数据格式化为字符串或字符向量
- 台湾大学林轩田机器学习基石课程学习笔记1 -- The Learning Problem
- 跨服务器post数据失败:验证视图状态 MAC 失败。如果此应用程序由网络场或群集承载,请确保 machineKey 配置指定了相同的 validationKey 和验证算法。的解决办法
- THttprio连接WebService的内存泄漏问题