C语言.docx
- 文档编号:11616278
- 上传时间:2023-03-28
- 格式:DOCX
- 页数:11
- 大小:17.09KB
C语言.docx
《C语言.docx》由会员分享,可在线阅读,更多相关《C语言.docx(11页珍藏版)》请在冰豆网上搜索。
C语言
负数的补码是:
符号位不变,其余各位求反,末位加1,
反码是:
符号位为1,其余各位求反,但末位不加1.
在编写c程序语言时,所有的标点符号都应该为英文状态下的,包括括号。
用辗转相除法求.
比如求x,y的最大公约数
x=ay+b
先讨论(x%y)的余数b是否等于0,如果是,则y为最大公约数.否则将y的值赋给x,把b的值赋给y然后在继续对b讨论.一直循环下去直到b=0时的y值就是所求的最大公约数了.
求两个数字的最大公约数和最小公倍数的方法:
可以先用辗转相除法求出这两个数的最大公约数,
再用这两个数的乘积除以它们的最大公约数,就得到它们的最小公倍数
C语言中单精度浮点型的数据输出形式为%f,如果以%lf的形式输出,程序运行可能会得到错误的结果,或者是出现初错误。
Test001
#include
voidmain(){
inta=5,b=10,c=20;
printf("%d\n",a++);
printf("%d\n",a);
printf("d%n",++b);
printf("%d\n",b),
printf("%d,%d\n",c,c++);
}
Test002
#include
main(){
intx,sum;
printf("请输入x的值\n",x);
scanf("%d",&x);
if(x<=0)sum=5+x;
if(x>0&&x<10)sum=100-x;
if(x>=10)sum=x*7-6;
printf("sum=%d\n",sum);
}
Test003
#include
main()
{
inta;
printf("请输入a的值\n",a);
scanf("a=%d",&a);
if(a<50)
printf("空气质量为优\n");
if(a>51&&a<99)
printf("空气质量为俩\n");
if(a>100)
printf("空气质量为差\n");
}
Test005
#include
main(){
inta,n,s;
printf("请输入a,n的值",a,n)
scanf("a=%d,n=%d",&a,&n)
错误编程test005
#include
main(){
intx;
printf("请输入x的值",x);
scanf("x=%d",&x);
switch(x<0?
-1:
x>0?
1:
0);
printf("x=%d\n",x);
}
错误编程test6
#include
main(){
floata,b,c,d,t;
prinft(“输入a,b,c,d四个数”,a,b,c,d);
scanf("a%d,b%d,c%d,d%d",&a,&b,&c,&d);
if(a>b)
t=b;
b=a;
a=t;
if(a>c)
t=c;
c=a;
a=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=b;
if(c>d)
t=c;
c=d;
d=c;
printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);
}
程序编译时能通过,但是执行时不能通过
#include
main(){
floata,b,c,d,t;
prinft("请输入a,b,c,d的值",a,b,c,d);
scanf("a=%d,b=%d,c=%d,d=%d",&a,&b,&c,&d);
if(a>b)
t=b;
b=a;
a=t;
if(a>c)
t=c;
c=a;
a=t;
if(a>d)
t=d;
d=a;
a=t;
if(b>c)
t=c;
c=b;
b=t;
if(b>d)
t=d;
d=b;
b=t;
if(c>d)
t=d;
d=c;
c=t;
printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);
}
不懂问题
inta=-2;
printf(“%u\n”,a);//65534
1unsigneda=3;
|-2|+|65534|=65536
2
|-2|+|65534|=65536
|-2|+|65534|=65536
intfib(intn)
{intk;
if((n==1)||(n==2))k=1;
elsek=fib(n-1)+fib(n-2);
return(k);
}
#include
main()
{intn;
{printf("inputn:
");
scanf("%d",&n);}
printf("fib(%d)=%d\n",n,fib(n));}
打印出*
#include
main(){
inta,b;
for(a=1;a<=5;a++){
for(b=1;b<=5;b++)
printf("*");
printf("\n");}}
P81
#include
main(){
inta[]={12,23,43,123,12,43,654,76,76};
inti,j;
for(i=1;i<=3;i++){
for(j=1;j<=3;j++)
printf("%d,",a[j]);
printf("\n");}}
P80
#include
main(){
inta,b;
for(a=1;a<=20;a++){
for(b=1;b<=a;b++)
printf("*");
printf("\n");}}
指针变量初始化的值是该指针类型的地址值
P80
#include
#include
main(){
inti,j,d,sum=0;
inta[3][4]={{1,-2,3,-4},{1,5,0,6},{7,3,0,3}};
for(i=0;i<3;i++){
for(j=0;j<4;j++)
if(a[i][j]==0)break;
elseif(a[i][j]>0){sum=sum+a[i][j];
printf("%d",a[i][j]);}}
printf("sum=%d\n",sum);
}
实现行列互换
#include
#include
main(){
inta[2][3]={{1,2,3},{4,5,6}};
intb[3][2];
inti,j;
for(i=0;i<=1;i++)
for(j=0;j<=2;j++)
b[j][i]=a[i][j];
for(i=0;i<=2;i++){
for(j=0;j<=1;j++)
printf("%d",b[i][j]);
printf("\n");}}
怎么判断它是否为行列式的项,首先是看行下标和列下标分别有没有重复的,有重复的就不是。
没有重复的话,看上面讨论的那个逆序数,奇数为负号,偶数为正号。
将一个小写的字符串用函数的形式转换成大写的字符串。
#include
voidcov(char*s)
{
inti,count=0;
i=0;
while(s[i]!
='\0')
{
count++;
i++;
}
for(i=0;i { if(s[i]>=97&&s[i]<=122) s[i]=s[i]-32; } } intmain() { charstr[100]; printf("Pleaseinputsomeletters: \n"); scanf("%s",str); cov(str); printf("Afterchangeletters: \n"); printf("%s\n",str); return0; } 编写一个函数实现矩阵的置换 Tra(a,m,n,c) Intm,n; doublea[],c[]; {intk,j; For(k=0;k for(j=0;j c[j*m+k]=a[k*n+j]; return;} 编写一个函数,返回一组数组中的次大数 方法一: #include #include intfindSecond(int*a,intsize) { inti,max,s_max; max=a[0];//最大值 s_max=a[1];//次大值 for(i=0;i { if(a[i]>max) { s_max=max;//更新最大值和次大值 max=a[i]; } elseif(a[i] s_max=a[i]; } returns_max; } intmain() { intsecond,a[]={111,23,3,5,652,2,3}; second=findSecond(a,sizeof(a)/sizeof(a[0])); printf("次大值为: %d\n",second); system("pause"); return0; } 方法二: #include #include /* 写一个函数找出一个整数数组中,第二大的数要求效率尽可能高 */ intfind(int*a,intn)//从数组的第二个元素开始查找 { inti,second=a[1]; for(i=1;i { if(a[i]>second) second=a[i]; } returnsecond; } intfindSecond(int*a,intsize) { inti,first,second; first=second=a[0]; for(i=1;i { if(a[i]>first) { second=first; first=a[i]; } elseif(a[i] second=a[i]; } //最大值和次大值相等(数组的第一个元素为最大值的时候) if(first==second) { second=find(a,size);//从数组的第二个元素开始找一个最大值的即为次大值 } returnsecond; } intmain() { inta[]={12012,3,45,5,66,232,65,7,8,898,56,878,170,13,5}; intsecond=findSecond(a,sizeof(a)/sizeof(a[0])); printf("次大值为: %d\n",second); system("pause"); return0; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言