#include <stdioh>
#define N 100
main()
{
char all[N];
int i,xx=0,shuzi=0,qita=0,dx=0;
printf("请输入一个字符串(不超过100个):");
gets(all);
for(i=0;all[i];i++)
{
if(all[i]>='a'&&all[i]<='z'||all[i]>='A'&&all[i]<='Z')
if(all[i]>='A'&&all[i]<='Z')
dx++;
else
xx++;
else
if(all[i]>='0'&&all[i]<='9')
shuzi++;
else
qita++;
}
printf("其中大写字母%d个,小写字母%d个,数字%d个,其他字符%d个\n",dx,xx,shuzi,qita);
}
您举例的是端口地址
物理地址是在内存中,保护模式下一般禁止直接读写内存地址!但是可以取数据段偏移地址
如 scanf(“%d”,&d);中的&d就是数据段偏移地址。
#include <stdioh>
void main()
{
int i=1;
bool mark=true;
double sum=0;
do {
sum+=mark10/i:-10/i;
i++;
mark = !mark;
} while(10/i>1e-4);
printf("n=%d\n", i);
printf("总和=%lf\n", sum);
}
输入一个四位数x,编程计算每一位数字相加之和的C语言:
#include <stdioh>
void main()
{
int x;
int dig[4], rest, dx=1000;
int sum=0;
printf("请输入4位整数:\n");
scanf("%d", &x);
rest=x;
for(int i=3; i>=0; i--) {
dig[i]=rest/dx;
rest-=dig[i]dx;
dx/=10;
sum+=dig[i];
}
printf("各位数字之和=%d\n", sum);
}
如对答案满意,欢迎采纳,谢谢,如有问题,欢迎追问
这个不用计算机编吧?任一个数的平方大于等于0,你这式子中,要想其成立,则ax1x1=0;bx2x2=0;cx3x3=0;dx4x4=0同时成立。取ax1x1=0讲,a≠0则x1=0;a=0则x1为任意实数。
#include<stdioh>
void main()
{
float a,b,c,d;
printf("计算ax1x1+bx2x2+cx3x3+dx4x4=0的解的个数。\n");
printf("请输入a,b,c,d的值:\n");
printf("a=");
scanf("%f",&a);
printf("b=");
scanf("%f",&b);
printf("c=");
scanf("%f",&c);
printf("d=");
scanf("%f",&d);
if(a==0)printf("\nx1有无穷解,");
else printf("\nx1=0");
if(b==0)printf("\nx2有无穷解,");
else printf("\nx2=0");
if(c==0)printf("\nx3有无穷解,");
else printf("\nx3=0");
if(d==0)printf("\nx4有无穷解。\n");
else printf("\nx4=0\n");
}
计算 f(x1,x2)=x1^2+2x2^2-4x1-2x1x2 的无约束极值,初始点x0=[1,1]。
/
tt ---- 一维搜索初始步长
ff ---- 差分法求梯度时的步长
ac ---- 终止迭代收敛精度
ad ---- 一维搜索收敛精度
n ----- 设计变量的维数
xk[n] -- 迭代初始点
/
#include<stdioh>
#include<stdlibh>
#include<mathh>
#include<conioh>
#define tt 001
#define ff 10e-6
#define ac 10e-6
#define ad 10e-6
#define n 2
double ia;
double fny(double x)
{
double x1=x[0],x2=x[1];
double f;
f=x1x1+2x2x2-4x1-2x1x2;
return f;
}
double iterate(double x,double a,double s)
{
double x1;
int i;
x1=(double )malloc(nsizeof(double));
for(i=0;i<n;i++)
x1[i]=x[i]+as[i];
return x1;
}
double func(double x,double a,double s)
{
double x1;
double f;
x1=iterate(x,a,s);
f=fny(x1);
return f;
}
void finding(double a[3],double f[3],double xk,double s)
{
double t=tt;
int i;
double a1,f1;
a[0]=0;f[0]=func(xk,a[0],s);
for(i=0;;i++)
{
a[1]=a[0]+t;
f[1]=func(xk,a[1],s);
if(f[1]<f[0]) break;
if(fabs(f[1]-f[0])>=ad)
{
t=-t;
a[0]=a[1];f[0]=f[1];
}
else
{
if(ia==1) return; //break
t=t/2;ia=1;
}
}
for(i=0;;i++)
{
a[2]=a[1]+t;
f[2]=func(xk,a[2],s);
if(f[2]>f[1]) break;
t=2t;
a[0]=a[1];f[0]=f[1];
a[1]=a[2];f[1]=f[2];
}
if(a[0]>a[2])
{
a1=a[0];
f1=f[0];
a[0]=a[2];
f[0]=f[2];
a[2]=a1;
f[2]=f1;
}
return;
}
double lagrange(double xk,double ft,double s)
{
int i;
double a[3],f[3];
double b,c,d,aa;
finding(a,f,xk,s);
for(i=0;;i++)
{
if(ia==1) { aa=a[1]; ft=f[1]; break; }
d=(pow(a[0],2)-pow(a[2],2))(a[0]-a[1])-(pow(a[0],2)-pow(a[1],2))(a[0]-a[2]);
if(fabs(d)==0) break;
c=((f[0]-f[2])(a[0]-a[1])-(f[0]-f[1])(a[0]-a[2]))/d;
if(fabs(c)==0) break;
b=((f[0]-f[1])-c(pow(a[0],2)-pow(a[1],2)))/(a[0]-a[1]);
aa=-b/(2c);
ft=func(xk,aa,s);
if(fabs(aa-a[1])<=ad) {if(ft>f[1]) aa=a[1];break;}
if(aa>a[1])
{
if(ft>f[1]) {a[2]=aa;f[2]=ft;}
else if(ft<f[1]) {a[0]=a[1];a[1]=aa;f[0]=f[1];f[1]=ft;}
else if(ft==f[1])
{
a[2]=aa;a[0]=a[1];
f[2]=ft;f[0]=f[1];
a[1]=(a[0]+a[2])/2;
f[1]=func(xk,a[1],s);
}
}
else
{
if(ft>f[1]) {a[0]=aa;f[0]=ft;}
else if(ft<f[1]) {a[2]=a[1];a[1]=aa;f[2]=f[1];f[1]=ft;}
else if(ft==f[1])
{a[0]=aa;a[2]=a[1];
f[0]=ft;f[2]=f[1];
a[1]=(a[0]+a[2])/2;
f[1]=func(xk,a[1],s);
}
}
}
if(ft>f[1]) {ft=f[1];aa=a[1];}
return aa;
}
double gradient(double xk)
{
double g,f1,f2,q;
int i;
g=(double)malloc(nsizeof(double));
f1=fny(xk);
for(i=0;i<n;i++)
{q=ff;
xk[i]=xk[i]+q; f2=fny(xk);
g[i]=(f2-f1)/q; xk[i]=xk[i]-q;
}
return g;
}
double bfgs(double xk)
{
double u[n],v[n],h[n][n],dx[n],dg[n],s[n];
double aa,ib;
double ft,xk1,g1,g2,xx,x0=xk;
double fi;
int i,j,k;
ft=(double )malloc(sizeof(double));
xk1=(double )malloc(nsizeof(double));
for(i=0;i<n;i++)
{
s[i]=0;
for(j=0;j<n;j++)
{
h[i][j]=0;
if(j==i) h[i][j]=1;
}
}
g1=gradient(xk);
fi=fny(xk);
x0=xk;
for(k=0;k<n;k++)
{
ib=0;
if(ia==1) { xx=xk; break; }
ib=0;
for(i=0;i<n;i++) s[i]=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
s[i]+= -h[i][j]g1[j];
aa=lagrange(xk,ft,s);
xk1=iterate(xk,aa,s);
g2=gradient(xk1);
for(i=0;i<n;i++)
if((fabs(g2[i])>=ac)&&(fabs(g2[i]-g1[i])>=ac))
{ib=ib+1;}
if(ib==0) { xx=xk1; break; }
fi=ft;
if(k==n-1)
{ int j;
xk=xk1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
h[i][j]=0;
if(j==i) h[i][j]=1;
}
g1=g2; k=-1;
}
else
{
int j;
double a1=0,a2=0;
for(i=0;i<n;i++)
{
dg[i]=g2[i]-g1[i];
dx[i]=xk1[i]-xk[i];
}
for(i=0;i<n;i++)
{
int j;
u[i]=0;v[i]=0;
for(j=0;j<n;j++)
{
u[i]=u[i]+dg[j]h[j][i];
v[i]=v[i]+dg[j]h[i][j];
}
}
for(j=0;j<n;j++)
{
a1+=dx[j]dg[j];
a2+=v[j]dg[j];
}
if(fabs(a1)!=0)
{
a2=1+a2/a1;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
h[i][j]+=(a2dx[i]dx[j]-v[i]dx[j]-dx[i]u[j])/a1;
}
xk=xk1; g1=g2;
}
}
if(ft>fi) { ft=fi; xx=xk;}
xk=x0;
return xx;
}
void main ()
{
int k;
double xx,f;
double xk[n]={1,1};
xx=bfgs(xk);
f=fny(xx);
printf("\n\nThe Optimal Design Result Is:\n");
for(k=0;k<n;k++)
{printf("\n\tx[%d]=%f",k+1,xx[k]);}
printf("\n\tf=%f",f);
getch();
}
这是基于一本书上的算法。但我很奇怪,原书中的算法有结果列出,但是我却不能通过编译。真是纳闷!修改后可以得到结果了,如果你要使用这个简单的程序,你只需更改 维数n、double fny(double x)的实现部分以及main函数中的xk初值就可以了。不过这个程序也不是很好。
以上就是关于输入一行字符串,统计其中英文字母不分大小写c语言编程全部的内容,包括:输入一行字符串,统计其中英文字母不分大小写c语言编程、用C语言编写的程序,怎么从一个物理地址读数、C语言程序:计算1-1/2+1/3-1/4+···+1/99-1/100+···,直到最后一项绝对值等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)