这个是c++的,你要c的话,可以自己把前后的输入输出改成scanf和printf,把头文件改成iostream.h 和 math.h
#include <iostream>
#include <cmath>
using namespace std
int main(){
double x,y,temp
cin>>x
if( x<-1 ){
y= x*x*x -1
} else if(x>=-1 &&x<=1){
y= -3*x + 1
} else if(x>1 &&x<=10){
temp= 2*x-1
y= 3 * log(temp)+5
} else if(x >10){
temp = 2*x*x -1
y= 5*x + 3*log10(temp) -13
}
cout<<y
return 0
}
#include<stdio.h>void main()
{
int i,j,k,a=5,m[6][6]
i=1//初始化i的值为1
k=(a+1)/2//初始化k的值为(a+1)/2,即k=3
/*循环过程如下:
j=1, m[1][3]=1, k=4,i=5,a=5
j=2, m[5][4]=2, k=5,i=4,a=5
j=3, m[4][5]=3, k=1,i=3,a=5
j=4, m[3][1]=4, k=2,i=2,a=5
j=5, m[2][2]=5, k=2,i=3,a=5 执行第一个if语句,continue了
j=6, m[3][2]=6, k=3,i=2,a=5
j=7, m[2][3]=7, k=4,i=1,a=5
j=8, m[1][4]=8, k=5,i=5,a=5
j=9, m[5][5]=9, k=1,i=4,a=5
j=10,m[4][1]=10,k=1,i=5,a=5 执行第一个if语句,continue了
j=11,m[5][1]=11,k=2,i=4,a=5
j=12,m[4][2]=12,k=3,i=3,a=5
j=13,m[3][3]=13,k=4,i=2,a=5
j=14,m[2][4]=14,k=5,i=1,a=5
j=15,m[1][5]=15,k=5,i=2,a=5 执行第一个if语句,continue了
j=16,m[2][5]=16,k=1,i=1,a=5
j=17,m[1][1]=17,k=2,i=5,a=5
j=18,m[5][2]=18,k=3,i=4,a=5
j=19,m[4][3]=19,k=4,i=3,a=5
j=20,m[3][4]=20,k=4,i=4,a=5 执行第一个if语句,continue了
j=21,m[4][4]=21,k=5,i=3,a=5
j=22,m[3][5]=22,k=1,i=2,a=5
j=23,m[2][1]=23,k=2,i=1,a=5
j=24,m[1][2]=24,k=3,i=5,a=5
j=25,m[5][3]=25,k=3,i=4,a=5
j=26退出循环 */
for(j=1j<=a*aj++) //从1到25循环
{
m[i][k]=j //将循环的索引值j赋值给数组m的第i行第k列
if(j%a==0)
{
i=(i%a)+1
continue
}
k=(k%a)+1
i--
if(i==0)
i=a
}
/*执行结果为:
17 24 1 8 15
23 5 7 14 16
4 6 13 20 22
10 12 19 21 3
11 18 25 2 9
*/
for(i=1i<=ai++)//从1到5循环:控制行
{
for(j=1j<=aj++)//内层从1到5循环:控制列
printf("%4d",m[i][j])//以4位整数输出数组中第2行第2列的值到数组最后的值
printf("\n")//行结束打印换行符
}
}