A. c语言结构体数组怎么交换数据呀!
结构体如果都要集体交换的话,建议使用 memcpy(); 这个函数,新建个中间结构体.. 就可以了, 这个函数有3个参数,具体请网络
B. c语言中怎么把一个数组的值赋到另一个数组中
#include "stdio.h"
void fun1(double str1[],int length) {
int i, j;
double temp;
for(i = 0; i < length; ++i) {
for(j = length - 1; j > i; --j) {
if(str1[j] > str1[j - 1]) {
temp = str1[j];
str1[j] = str1[j - 1];
str1[j - 1] = temp;
}
}
}
for(i = 0; i < length; ++i) printf("%.1f ",str1[i]);
}
void fun() {
double str[]= {-53,22,223,100,18.0,309,-10,209,101,900,-77,50};
fun1(str,sizeof(str)/sizeof(str[0]));
}
int main() {
fun();
}
C. C语言中,有什么方法可以把变化的数据传送到数组里面呢求高人指点
传递的方法只有两种,一个是变量,一个是指针,两者的共同点是,只有一个“量”,如果以值传送的方式传送数组,则必然涉及到多个量被传递,就很难用传值的方法来传递,所以,用数组指针作为参数传递显得清晰,方便。
D. C语言数组数据换位问题
你把程序写复杂了,我给你改成这样
#include <stdio.h>
#define N 80
void fun(int *arr, int pos, int num)
{
int i = 0;
int temp = 0;
while (0 < pos)
{
temp = arr[0];
for (i = 0; i < num; i++)
arr[i] = arr[i + 1];
arr[i-1] = temp;
pos--;
}
}
main()
{
int a[N] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };
int i, p, n = 15;
printf("The original data:\n");
for (i = 0; i < n; i++)
printf("%3d", a[i]);
printf("\n\nEnter p: ");
scanf("%d", &p);
fun(a, p, n);
printf("\nThe data after moving:\n");
for (i = 0; i < n; i++)
printf("%3d", a[i]);
printf("\n\n");
}
E. C语言中用数组开辟一块足够的空间,实现向数组中进行数据的添加,插入,删除,排序等功能。
你可以用宏来定义数组的大小
#define MAX 10000
datatype arr[MAX];
MAX的值可以随便你指定.
F. C语言如何对数组中的数据进行处理
类似下面简单处理下
#include"stdlib.h"
#include"stdio.h"
#include"string.h"
charrecord[100][5][16];
intcnt=0;
#defineIS_ALPHA(a)((a>='a'&&a<='z')||(a>='A'&&a<='Z')||(a>='0'&&a<='9')||(a=='_'))
char*get_record(char*str){
inti=0,j=0;
if(cnt>=100)returnNULL;
while(1){
if(IS_ALPHA(*str)){
if(j<15)
record[cnt][i][j++]=*str;
}
else{
if(j){
record[cnt][i][j++]=0;
j=0;
i++;
}
if(*str==0||i==5)break;
}
str++;
}
//addornot
if(i==5){
intn=cnt;
for(i=0;i<cnt;i++){
if(strcmp(record[i][0],record[cnt][0])==0&&
strcmp(record[i][1],record[cnt][1])==0){
if(atoi(record[i][4])<atoi(record[cnt][4])){
strcpy(record[i][4],record[cnt][4]);
}
n--;
break;
}
}
cnt=n+1;
}
return(*str?str:NULL);
}
voidprint_record(){
inti;
for(i=0;i<cnt;i++){
printf("%s%s%s%s%s ",
record[i][0],record[i][1],record[i][2],record[i][3],record[i][4]);
}
}
intmain(){
charstr[]="
DN100CDN_100123
DN100CDN_200216
DN100CDN_100106
DN100CDN_300106
DN100CDN_300107
DN100CDN_200218";
char*s=str;
while(s=get_record(s)){}
print_record();
return0;
}
G. C语言中,关于数组中数据转存的问题。。。编译环境为keil
就实际使用的情况而言,你的这种思路就是错误的。
实际上“足够大的数组”就是由若干个“缓冲区数组”组成,每次进中断以指针方式调用一个缓冲区数组并搬移数据,完事之后指针移动就行了。
H. C语言中如何复制数组的内容
C语言中复制数组的内容源代码如下:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define SIZE 10
void show_array(const int ar[], int n);
int main()
{
int values[SIZE] = {1,2,3,4,5,6,7,8,9,10};
int target[SIZE];
double curious[SIZE / 2] =
{2.0, 2.0e5, 2.0e10, 2.0e20, 5.0e30};
puts("memcpy() used:");
puts("values (original data): ");
show_array(values, SIZE);
memcpy(target, values, SIZE * sizeof(int));
puts("target ( of values):");
show_array(target, SIZE);
puts("
Using memmove() with overlapping ranges:");
memmove(values + 2, values, 5 * sizeof(int));
puts("values -- elements 0-5 copied to 2-7:");
show_array(values, SIZE);
puts("
Using memcpy() to double to int:");
memcpy(target, curious, (SIZE / 2) * sizeof(double));
puts("target -- 5 doubles into 10 int positions:");
show_array(target, SIZE/2);
show_array(target + 5, SIZE/2);
system("pause");
return 0;
}
void show_array(const int ar[], int n)
{
int i;
for (i = 0; i < n; i++)
printf("%d ", ar[i]);
putchar('
');
}
(8)c语言数组成块搬移数据扩展阅读
1、C语言编程中,将常用的操作封装成函数进行调用,可以大大简化程序的编写,而且在代码的维护性及可读性方面也提供了便利。
2、不同地方需要对处理后的数组内容多次进行显示,并且很多情况下并非显示数组里面的全部内容,而仅仅是想观察数组中的部分数据内容,若每次显示时都用printf函数写的话,可以写一个自定义的通用函数,用来根据需要显示数组中的内容。
I. C语言中,如何把数组里的数据写入文件
使用for循环语句+文件操作函数即可把数组里的数据写入文件。
1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。一般的C语言教程都有文件操作一章,可以找本教材进一步学习。
2、例程:
#include<stdio.h>
inti,a[100];
intmain(){
FILE*fp1=fopen("input.txt","r");//打开输入文件
FILE*fp2=fopen("output.txt","w");//打开输出文件
if(fp1==NULL||fp2==NULL){//若打开文件失败则退出
puts("不能打开文件!");
rturn0;
}
for(i=0;fscanf(fp1,"%d",a+i)!=EOF;i++);//从输入文件连续读取整数到数组a
for(;i--;)fscanf(fp2,"%d",a[i]);//把数组a逆序写入到输出文件当中
fclose(fp1);//关闭输入文件
fclose(fp2);//关闭输出文件,相当于保存
return0;
}
J. C语言中如何将double型数据转换为数组
思路是:
先将Double型的数字整数部分变为整型数字一一取到数组中去(用循环整除可以做到,比如double i=123.456,就可以先把整数部分用j=(int)i强制类型转换取出放入整型变量j中,再依次取到数组a中
(a[k++]=i%10;i/=10;)
这两句语句就可以做到(不过数字是倒序的,最后输出时要注意)。
再看小数部分,同理,但不用除法,而用乘法,先去除整数部分
(j=j-(int)j;)
再将小数部分不断的乘10取整,取一位去除一位,存入另一数组:
l=(int)(j*10);
b[k++]=l;
j=j*10-l;...直到j*10==0为止
这样就可以把j中的数按位取到了两个数组中,接下去只要将两数组合并到C数组中去,或者依次输出整数部分和小数部分,中间别忘加小数点,输出成字符在C语言里可以这样:
printf("%c",a[i]+'0');
printf(".");
printf("%c",b[i]+'0');
以上就是我的算法,请高手看了不要笑话,希望能给楼主带来启发。