1. 首页 > 科技

C语言编程求解(C语言编程求解!~)

C语言编程求解(C语言编程求解!~)

C语言编程求解!~

/**

* 描述:解决百度知道中一位网友提出的问题

* 作者:QQwen

*/

#include <stdio.h>

#define M 3 //定义数组的一维

#define N 5 //定义数组的二维

//定义一个测试用数组,用来调试程序

int testArray[3][5] =

{

{ 11, 12, 13, 14, 15 },

{ 21, 22, 23, 24, 25 },

{ 31, 32, 33, 34, 35 }, };

/**

* 数组转换函数

* @param int (*a)[N] 需要转换的二维数组

* @param int k 从第k列左移

*/

//在这里第一个参数是很有说法的,这个直接影响到函数中的写法,如果函数中出现“a[i][j]”这种操作的时候

//一定要这样定义参数,否则编译器会提示你对a的下标操作是错误的,也就是说只有这样定义第一个个参数在函数

//体中才能以下标的形式操作数组中的元素

void fun(int (*a)[N], int k)

{

//int i, j, p, temp; //ij为循环变量,temp用来存储每行第一个元素,p这个变量意义不大用来配合k使用

int i, j, temp;

for (; k>0; k--)

//for (p = 1; p <= k; p++) //这里的p定义的有些多余,改为上面的方式更好

for (i = 0; i < M; i++)

{//行循环

temp = a[i][0]; //将每行的第一个元素先存储在临时的变量中,

//这样就空出了自己的位置,即使后面的变量覆盖了数据也不会丢失

//下面的操作是将数组中后一个元素搬运到前面一个位置,比如testArray[0][0] = 11,在执行

//完下面操作一次之后testArray[0][0] = 12。

for (j = 0; j < N - 1; j++)

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

//再一行的元素都向前移动一位之后将先前保存的第0个元素赋值给本行最后的

a[i][N - 1] = temp;

}

}

/**

* 打印数组中的元素

*/

void printArray()

{

int i, j;

for (i = 0; i < M; i++)

{

for (j = 0; j < N; j++)

{

printf("%d \t", testArray[i][j]);

}

printf("\n"); //换行

}

}

int main()

{

int column = 0; //从哪列左移

printf("请输入要从第几列左移(1--5):\n");

scanf("%d",&column);

printf("二维数组转换之前为:\n");

printArray();

fun(testArray, column);

printf("二维数组转换之后为:\n");

printArray();

return 0;

}

程序输出为:

请输入要从第几列左移(1--5):

2

二维数组转换之前为:

11 12 13 14 15

21 22 23 24 25

31 32 33 34 35

二维数组转换之后为:

13 14 15 11 12

23 24 25 21 22

33 34 35 31 32

C语言编程。。。求解。。急!!!

展开全部

本来写好了,昨天一调试就死机,今天早晨就好了

程序如下:

/*全部是用C的最基本的东西写的,也算是自创的算法*/

#include "stdio.h"

#include "string.h"

//全局变量

//个位,

char name_a[10][10]={"","one","two","three","four","five","six","seven","eight","nine"};

//十到二十之间的,

char name_b[10][10]={"ten","eleven","twelve","threeteen","fourteen","fifteen","sixteen","eighteen","nineteen"};

//十位,

char name_c[10][10]={"","","twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"};

//输出一个小于4位的数字,因为英语都是几百几十几billion/milliom/thousand,所以将三位数放在一起输出。

void small1000(int s1,int s2,int s3)

{

if(s1)printf("%s hundred",name_a[s1]);

//百位输出和HUNDRED

if(s2)

{

if(s2!=1)printf("%s %s",name_c[s2],name_a[s3]);

//如果不是十几就分别输出个位和十位,

else printf("%s",name_b[s3]);

//如果是十几就直接输出十几,

}

else printf("%s",name_a[s3]);

}

//主函数

void main()

{

for(;;)//整个函数的大循环,晕!

{

/*输入一个数,通过一个字符型数组,将它逐级分解到一个整型数组里边, */

int i,n[10]={0},j=0;

//定义两个循环变量,和整型数组。

char m[20]="";

//用来使用gets()函数录入的,因为gets()只能对字符串操作

printf("请输入一个小于e^9的整数:");

gets(m);

//下边这几行是我感觉最恶心的一部分,反复调试了n遍。

j=strlen(m); //求字符串长度(数字位数)

printf("这是一个%d位数\n",j);

printf("它的英文形式为:\n");

//下边四行是为了将数字移动到整型数组里边,

for(i=0;i{//让这它在n[]中右对齐

if(m[i]!='\0')

n[i+10-j]=int(m[i]-48);

//通过ASC2码值转换赋值

}

if(n[0])printf("%s billion ",name_a[n[0]]);

//输出亿以上的部分。

small1000(n[1],n[2],n[3]);

if(n[1]+n[2]+n[3])

//检验是否0百万,是就不输出MILLION。

printf(" million "); //输出多少百万

small1000(n[4],n[5],n[6]);

if(n[4]+n[5]+n[6])

//检验是否0千,是就不输出THOUSAND。

printf(" thousand "); //输出多少千

small1000(n[7],n[8],n[9]); //输出多少千以下的部分

printf("\n\n\n"); //开始下一次输入。

}

}

C程序编程,求解!谢谢

#include<stdio.h>

void main()

{

int i,s=0;

for(i=1;i<=100;i++)

s+=i;

printf("s=%d\n",s);

}

#include<stdio.h>

void main()

{

long i,s=1;

for(i=2;i<=10;i++)

s*=i;

printf("s=%ld\n",s);

}

求最简单的C语言程序

#include<stdio.h>

main()

{

int a,b,t=0;

scanf("%d %d",&a,&b);

if (a<b)

{

t=a;

a=b;

b=t;

}

printf("%d %d %d %d %d",(a+b),(a-b),(a/b),(a*b),(a%b));

}

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。