您的位置:

妹子问我一个c语言问题,C语言的问号

本文目录一览:

几道C语言题,跪求高手详细帮助

//我写了几个,都经过dev-c调试通过。

//第一题:

#includestdio.h

#includestdlib.h

int fib(int n){

if(n==1||n==2)

return 1;

else

return(fib(n-1)+fib(n-2));

}

int main(){

int a[40],i;

printf("前40个数为:\n");

for(i=0;i40;i++)

{

a[i]=fib(i+1);

printf("%-10d",a[i]);

if((i+1)%5==0)

printf("\n");

}

system("PAUSE");

return 0;

}

//第二题:

includestdio.h

#includestdlib.h

int main(){

int a[10],i,j,temp;

printf("请输入10个数:\n");

for(i=0;i10;i++)

scanf("%d",a[i]);

for(i=0;i10;i++)

for(j=0;j10-i;j++)

if(a[j]a[j+1])

{

temp=a[j];

a[j]=a[j+1];

a[j+1]=temp;

}

printf("排序后:\n");

for(i=0;i10;i++)

printf("%4d",a[i]);

system("PAUSE");

return 0;

}

//第三题:

#includestdio.h

#includestdlib.h

int change(int *a,int *b){

int temp;

temp=*a;

*a=*b;

*b=temp;

}

int main(){

int a[10],i,j,k=0,m=0;

printf("请输入10个数:\n");

for(i=0;i10;i++)

scanf("%d",a[i]);

for(j=1;j10;j++)

{

if(a[k]a[j]) k=j;

if(a[m]a[j]) m=j;

}

change(a[0],a[k]);

change(a[9],a[m]);

printf("排序后:\n");

for(i=0;i10;i++)

printf("%4d",a[i]);

system("PAUSE");

return 0;

}

//第四题:

#includestdio.h

#includestdlib.h

int main(){

int m=0,i,j;

while(m2||m9){

printf("请输入一个2到9的数:\n");

scanf("%d",m);

}

int a[m][m];

for(i=0;im;i++)

for(j=0;jm;j++)

a[i][j]=(i+1)*(j+1);

printf("output:\n");

for(i=0;im;i++)

for(j=0;jm;j++)

{

printf("%4d",a[i][j]);

if(j==m-1)

printf("\n");}

system("PAUSE");

return 0;

}

//第五题:

#includestdio.h

#includestdlib.h

#includestring.h

int main(){

char a[4][10],b[10];

int i,j ;

printf ("input:\n");

for(i=0;i4;i++)

scanf("%s",a[i]);

for(i=0;i4;i++)

for(j=0;j3-i;j++)

if(strcmp(a[j],a[j+1])0)

{

strcpy(b,a[j]);

strcpy(a[j],a[j+1]);

strcpy(a[j+1],b);

}

j=0;

printf("排序后:\n");

for(i=0;i4;i++)

{

while(a[i][j])

{

printf("%c",a[i][j]);

j++;

}

printf("\n");

j=0;

}

system("PAUSE");

return 0;

}

//第七题:

#includestdio.h

#includestdlib.h

int main(){

char a[20];

int i=0;

printf("请输入:\n");

gets(a);

while(a[i]){

if(i%2==0)

if(a[i]'a'a[i]'z')

a[i]-=32;

i++;

}

puts(a);

system("PAUSE");

return 0;

}

//余下的下次再发给你吧!

另外,站长团上有产品团购,便宜有保证

妹子学C语言伤不起啊,求看这段拉普拉斯代码怎么运行

你直接用这个式子就可以了,输出的图像已经经过处理了

outimage[i][j]=-(inimage[i-1][j]+inimage[i][j+1]+inimage[i+1][j]+inimage[i][j-1])+5*inimage[i][j];

其实matlab里面有现成的函数可用,数字图像处理用它最方便了

C语言问题。定义一个二维数组

#includestdio.h

int main()

{

    int arr[5][6];

    int i,j,max,min,sum,a,b,c,d,e;

    float ave;

    printf("Input 30 numbers:\n");

    for(i=0;i5;i++)

for(j=0;j6;j++)

scanf("%d",arr[i][j]);//此处为srr[i][j],你写成srr[5][6]就成了为crr第6行第七列赋值了,不但错误,更是越界了!

    printf("\n");

    min=max=arr[0][0];//将最大值与最小值都初始化为第一个元素

a=b=c=d=0;//下标也要初始化!

    for(i=0;i5;i++)

        for(j=0;j6;j++)

{

if(maxarr[i][j])

{

max=arr[i][j];

a=i;

b=j;

}

if(minarr[i][j])

{

min=arr[i][j];

c=i;

d=j;

}

}

    printf("max=arr[%d][%d]=%d\n",a,b,max);

    printf("min=arr[%d][%d]=%d\n",c,d,min);

    sum=0;

    for(i=0;i5;i++)

    {

for(j=0;j6;j++)

sum+=arr[i][j];

e=i;

ave=sum/6.0;//写成6.0使得sum提升到浮点型

printf("ave=arr[%d]=%f\n",e,ave);

}

    return 0;

}

楼主基本没有大错误,只是不够仔细,用来保存特定值的变量使用前一定要初始化,如本例中的最大值,最小值,下标,都是必须初始化的!

整型与整型运算会得到整型,1/2=0,5/4=1;系统会舍去小数部分。只要将其中一个提升至浮点型即可,如1.0/2,5/4.0,如果是两个整型变量,可以写成(float)a/b,即可使得得到浮点型结果!

2013 5 25 7:05

1L

耗时 4min

C语言调试出现问题“内存不能为written”,妹纸急需大神求解,谢谢谢谢!

scanf("%s",s[M].kind);、scanf("%s",s[M].price);……这几个得一致起来吧,为什么前者没有而后者有?估计统一一下就好了……

C语言 求解答

【第一行】:

x=1,y=1,z=1;

if((x=2)(y=2)(z=2))

首先,x=2是赋值,执行后x==2,并且此等式的值为2,所以if (x=2)的结果是true。

其次,按照if的判断规则,遇到abc这样的判断,当a为true后,会进行b的判断,如果b也为true,就继续进行c的判断。所以这一行会依次进行x=2,y=2,z=2的赋值并且总的判断结果是true (truetruetrue),结果打印出222。

【第二行】:

一样的,先进行x=0的赋值和判断。赋值后x的值为零。但是由于x=0这个等式的值为0即false,所以此处(x=0)(y=2)(z=2)总的结果也为false,并且后面的y=2和z=2的赋值并不进行,因为第一项为false了,后两项就不进行判断了(效率上的优化),无论后两项是true还是false,总的结果都是false。所以此时x==0,y==1,z==1,但是不会打印。

【第三行】:

一样的,先进行x=2的赋值和判断,结果为true,此时x==2。

但是注意此时是if(a||b||c)这样形式的判断,如果a是true了,无论后两项结果是什么,总的结果都是true,后两项就 不进行赋值和判断了(效率上的优化)。所以此时x==2,y==1,z==1。

打印出211。

【第四行】:

先进行x=0的赋值和判断,此时x==0,(x=0)的结果是false,所以需要继续进行y=2的赋值和判断。此时y==2,并且(y=2)的值为true。

此时总的结果是false||true||?,为true,第三项不需要进行赋值和判断了(效率上的优化)。

打印出此时xyz的值021

【第五行】:

先进行x=0的赋值和判断,此时x==0,(x=0)的结果是false,所以(x=0)(y=2)的结果就是false了,y=2这一步不进行赋值和判断了(效率上的优化),y的值仍旧为1。

因为(x=0)(y=2)的结果是false,所以需要进行和它相或的z=2的赋值和判断,此时z==2,并且(z=2)的值为true,总的结果是(false?||true),为true。

打印出此时xyz的值012

【总的原则】:

abc...的时候,只要遇到false的,总的结果就是false了,后面的就不必进行了。

a||b||c...的时候,只要遇到true的,总的结果就是true了,后面的就不必进行了。

这题考的就是这种提高效率的机制。

以上,未理解的话可以继续追问。