A. 急!!!c语言:输出两组数组中相同的数字
//示例代码如下
#include<stdio.h>
#include<stdlib.h>
intmain()
{
intm,n,i,j,flag=0;
int*pm,*pn;
scanf("%d%d",&n,&m);
pm=(int*)malloc(sizeof(int)*m);
pn=(int*)malloc(sizeof(int)*n);
for(i=0;i<m;i++)
scanf("%d",pm+i);
for(i=0;i<n;i++)
scanf("%d",pn+i);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
if(pm[i]==pn[j]){
printf("%d",pn[j]);
flag=1;
}
}
if(!flag)
printf("NO ");
printf(" ");
free(pm);
free(pn);
return0;
}
//示例运行结果
F:c_work>a.exe
57
5917123698
789161792698
917698
B. c语言中如何输入一组数据,输出case1;输入两组数据,这两组数据分别输出case1,case2
这简单,用一两个
if
加个循环
就行了
主要是你的数据数量怎么分割的,如果是满足输入某个分隔符,(#
,
。
或回车之类的)
再分割的话,可以考虑用字符数组,
用
getchar()
当(ch=getchar())不等于限定分隔符时就继续读取,输出的时候也逐个输出,当输出了分隔符之后在输出一个或两个回车(如果以回车为分隔符的话只需一个),这样就可以实现每两组数据之间有一个空行。
如果你是以数据的数量来界定每一组数据的话,那更简单咯。先设定一个计时器
假设是
j
j
从0开始
,当
j
等于每组数据上限的话就输出两个回车,再把
j
归零
C. c语言两组数据的间隔怎么算的
%3d表示右对齐,左补空格,所以0(一位数)输出时,前面会有2个空格
%-3d表示左对齐,右补空格,所以0(一位数)输出时,后面会有2个空格
因此,相邻的两组之间,会有2+2=4个空格!!
D. c语言中二元组是什么 他是二元数组吗
二元组是用来表示一维数组的(数组数据稀疏是可以节省空间)。二元组一般写成m[x][2]。x表示一维数组的长度,2是指二元即这个用于表示一维数组的二维数组只有两列。二元组的本质是二元数组,用途是更节省空间的表示一维数组。
例如一个一维数组a[10]其内容为0 0 1 0 4 0 0 0 9 0 这样10个元素分别放在a[0]~a[9]中。看这个数组中到多是0,那么我们可以这样想:我记录非零位置的位置号和数组值,零的可以不记录,那么用二元组来存就是三个元素而已:2,1 4,4 8,9,这个二元组的意思是a[2]中是1 a[4]中是4 a[8]中是9 其他位置都是零。可以看出二元组其实就是固定为两列的行的一个二维数组。用这个二维数组的第一列表示一维数组a[x]的x,用第二列表示一维数组a[x]的值。
引自:
http://..com/link?url=-mP9cS5WFMOM1BQq3orIiPhxzX4_9Xl8E7K
E. 求一段C语言程序,主要是比较两个数据组。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct link
{
char a[6];
link *next;
link *pre;
}link;
/*输入数据组的函数*/
void input(link *x,int num)
{
int i,j;
printf("一组的数据:");
getchar();
gets(x->a);
x->pre=NULL;
link *q=x;
for(j=0;j<num-1;j++)
{
link *p=(link *)malloc(sizeof(link));
gets(p->a);
q->next=p;
p->pre=q;
q=p;
}
q->next=NULL;
}
/*输出*/
void output(link *x)
{
int i;
link *p=x;
printf("结果为:\n");
for(;p!=NULL;)
{
puts(p->a);
p=p->next;
}
}
/*比较*/
link * compare(link *x1,link *x2)
{
link *bian1=(link *)malloc(sizeof(link));
link *bian2=(link *)malloc(sizeof(link));
link *p=x1;
link *q=x2;
for(;p!=NULL;p=p->next)
{
for(q=x2;q!=NULL;q=q->next)
{
if(strcmp(p->a,q->a)==0)
{
if((p->pre!=NULL)&&(p->next!=NULL))
{
bian1=p->pre;
bian2=p->next;
bian1->next=bian2;
bian2->pre=bian1;
}
else if(p->pre==NULL)
{
x1=x1->next;
x1->pre=NULL;
}
else
{
bian1=p->pre;
bian1->next=NULL;
}
}
}
}
return(x1);
}
void main()
{
link *x1=(link *)malloc(sizeof(link));
link *x2=(link *)malloc(sizeof(link));
int num1,num2;
printf("输入第一组数据的个数:");
scanf("%d",&num1);
input(x1,num1);
printf("输入第二组数据的个数:");
scanf("%d",&num2);
input(x2,num2);
x1=compare(x1,x2);
output(x1);
}
这是输入样例及答案,你可以参考一下,按照我的输入格式来编辑你的输入数据测试:
输入第一组数据的个数:3
一组的数据:asdfg
qwert
zxcvb
输入第二组数据的个数:2
一组的数据:asdfg
zxcvb
结果为:
qwert
Press any key to continue
F. 怎么用C语言来解决比较两组数据是否完全相同的问题
如果4 6 5 和6 4 5 是相同的话就先排序,再一个一个比较,遇到不同就比较下一组数据直到将所有数据比较完或遇到相同的。也可以是以一组数据为模板,在另一组数据中找不同的,找到就输出no否则输出yes
G. C语言 分别输入两组各n个数据,分别求和,并取两个和的大者,该怎样编程求助
这是我写的,不知符不符合你的意思。
#include<iostream.h>
voidmain()
{
intn,i,max,sum1=0,sum2=0;
cout<<"请输入数据的个数:";
cin>>n;
int*num1=newint[n];
int*num2=newint[n];
cout<<"请输入第一组数: ";
for(i=0;i<n;i++)
{
cin>>num1[i];
sum1+=num1[i];
}
cout<<"请输入第二组数: ";
for(i=0;i<n;i++)
{
cin>>num2[i];
sum2+=num2[i];
}
if(sum1>sum2)
max=sum1;
else
max=sum2;
cout<<"两组中和的最大者为:";
cout<<max<<endl;
delete[]num1;
delete[]num2;
}
H. 急!!!C语言程序设计题:设有如下两组数:{2,8,7,6,4,28,70,25}、{79,27,32,41,57,66,7...
#include<stdio.h>
#include<math.h>
int main(void)
{
int i,a[8],b[8],c[8];
FILE *fp;
printf("请输入第一个数组a的元素,数与数之间用空格隔开:\n");
for(i=0;i<8;i++)
scanf("%d",&a[i]);
printf("请输入第二个数组b的元素,数与数之间用空格隔开:\n");
for(i=0;i<8;i++)
scanf("%d",&b[i]);
for(i=0;i<8;i++)
c[i]=a[i]+b[i];
fp=fopen("myfile.text","w");
for(i=0;i<8;i++)
{
fprintf(fp,"%d\t",a[i]);
printf("%d\t",a[i]);
if(i==7)
{
fprintf(fp,"\n");
printf("\n");
}
}
for(i=0;i<8;i++)
{
fprintf(fp,"%d\t",b[i]);
printf("%d\t",b[i]);
if(i==7)
{
fprintf(fp,"\n");
printf("\n");
}
}
for(i=0;i<8;i++)
{
fprintf(fp,"%d\t",c[i]);
printf("%d\t",c[i]);
if(i==7)
{
fprintf(fp,"\n");
printf("\n");
}
}
}
经过实验过,望采纳
I. C语言输入两组各十个数据,存入链表并排序输出,最后归并入第三个链表并排序输出
#include<stdio.h>
#include<malloc.h>
//#define NULL 0
//这里有两个问题,1.此处没有 ;号
//2 . 不用定义NULL 为0
//你为啥将一个整型0赋给一个指针呢
//应该将这句注释掉,因为NULL本来
//就代表空指针,不要画蛇添足
struct numb
{
int data;
struct numb *next;
};
struct numb *creat()
{
struct numb *head,*s,*p;
int i;
head=s=p=NULL;
p=(struct numb *)malloc(sizeof(struct numb));
printf("please input 10 numbers\n");
for(i=0;i<10;i++)
{
s=(struct numb *)malloc(sizeof(struct numb));
p->next=s;
if(i==0) head=p;
scanf("%d",&p->data);
p=p->next;
if(i==9) p->next=NULL;
} //此处也没有 ; 号
return head;
}
void print(struct numb *head)
{
struct numb *current;
int i;
printf("The result are:\n");
current=head;
for(i=0;i<10;i++)
{
printf("%3d\t",current->data); //此处注意修改,不是(*current)
current=current->next;
}
printf("\n");
}
void sort(struct numb *head)
{
struct numb *p,*q;
int temp,i,j;
//下面排序的思想是每次让j 循环中的所有元素
//和当前的第i个元素比较,若果比第i个元素小就
//交换第j个和第i个元素,这样是按照从小到大的
//顺序排,从小到大的方法雷同
p=head;
for(i=0;i<9;i++)
{
//p=q=head;
//q=q->next;
q=p;
for(j=i+1;j<10;j++)
{
q=q->next;
if(p->data > q->data)
{
temp=p->data;
p->data=q->data;
q->data=temp;
}
}
p=p->next;
}
//上面的排序方法比较好理解
//你的代码中每次进行外层的for循环时,
//p 和q 的值都是从数组的开头位置进行排序的,
//这就有问题了,应该每进行一次外层for循环,
//p 和q 的值从上一次循环的位置开始,而不是从头
//重新开始,希望这样解释你能理解
}
struct numb *combin(struct numb *head1,struct numb *head2)
{
//我给的归并函数是在前两个链表已经
//排好序的基础上,每次选择两个链表中的
//比较小的值归入第三次链表,这样依次归并下去
struct numb *Head,*p,*s,*fir,*sec;
int flag=1,temp;
Head=(struct numb *)malloc(sizeof(struct numb));
p=Head;
fir=head1,sec=head2;
while(flag)
{
if(fir==NULL && sec==NULL) //如果两个链表中的元素都归并完了,
{ //就退出
flag=0;
}
else if(fir==NULL && sec!=NULL) //如果第一个链表归并完了,第二个
{ //链表还有元素,就将第二个的元素
p->data=sec->data; //之间放到第三个链表中
sec=sec->next;
}
else if(fir!=NULL && sec==NULL) //如果第二个链表归并完了,第一个
{ //链表还有元素,就将第一个的元素
p->data=fir->data; //之间放到第三个链表中
fir=fir->next;
}
else
{
if(fir->data < sec->data)
{
p->data=fir->data;
fir=fir->next;
}
else
{
p->data=sec->data;
sec=sec->next;
}
}
s=(struct numb *)malloc(sizeof(struct numb));
p->next=s;
p=s;
}
return Head;
}
void printlen(struct numb *head) //注意排序后数组元素就不止10个了,在
{ //这里我采用偷懒的方法,有复制了一份
struct numb *current;
int i;
printf("The result are:\n");
current=head;
for(i=0;i<20;i++)
{
printf("%3d\t",current->data); //此处注意修改,不是(*current)
current=current->next;
}
printf("\n");
}
int main()
{
struct numb *pHead1,*pHead2; //注意phead声明的类型,不是int
struct numb *pHead3;
pHead1=creat();
pHead2=creat();
sort(pHead1);
sort(pHead2);
print(pHead1);
print(pHead2);
pHead3=combin(pHead1,pHead2);
printlen(pHead3);
return 0;
}
J. 多组 两组数组相加,输出多组数组,用C语言
C语言中实现多组数据输入输出主要有两种方式:
1.首先输入一个n,表示将有n个输入输出,例如:
#include <stdio.h>int main(){ int n,a; scanf("%d",&n); while(n--){ scanf("%d",&a); printf("输出:%d\n",a); } return 0;}/*运行结果:3255输出:255156输出:156125输出:125 */
2.使用while(scanf("%d",&n)!=EOF){}语句,直达输入ctrl+z,结束输入,例如:
#include <stdio.h>int main(){ int a; while(scanf("%d",&a)!=EOF){ printf("输出:%d\n",a); } return 0;}/*运行结果:54输出:545156输出:515621输出:21^Z */