C语言。找出不是两个数组共有的元素。
输入格式:
输入分别在两行中给出两个整型数组,每行先给出正整数N(≤20),随后是N个整数,其间以空格分隔。
输出格式:
在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。
输入样例:
10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1
输出样例:
3 5 -15 6 4 1
下面是我写的程序
#include "stdio.h"
int main(){
int num1[20],num2[20],num3[40],num4[40];
int a,b,c=0,d,e=0,f=1,g,h=0,i=0,x,y,N,M;
int count1=0,count2=0,count3=0;
scanf("%d",&N);
for(a=0;a<N;a++){
scanf("%d",&num1[a]);
}
scanf("%d",&M);
for(b=0;b<M;b++){
scanf("%d",&num2[b]);
}
for(a=0;a<N;a++){
for(b=0;b<M;b++){
if(num1[a]!=num2[b]){
count1++;
}
}
if(count1==M){
num3[c] = num1[a];
c++;
count1=0;
}
}
for(b=0;b<M;b++){
for(a=0;a<N;a++){
if(num1[b]!=num2[a]){
count2++;
}
}
if(count2==N){
num3[c] = num2[b];
c++;
count2=0;
}
}
for(e=0;e<c;e++){
for(g=0;g<c;g++){
if(num3[e]!=num3[g]){
count3++;
}
}
if(count3==(c-1)){
num4[h] = num3[e];
h++;
count3=0;
}
}
for(i=0;i<h;i++){
printf("%d ",num4[i]);
}
return 0;
}
求大神帮我这个初学者修改。 展开
给定两个整型数组,本题要求找出不是两者共有的元素。
输入格式:
输入分别在2行中给出2个整型数组,每行先给出正整数N(<=20),随后是N个整数,其间以空格分隔。
输出格式:
在一行中按照数字给出的顺序输出不是两数组共有的元素,数字间以空格分隔,但行末不得有多余的空格。题目保证至少存在一个这样的数字。同一数字不重复输出。
输入样例:10 3 -5 2 8 0 3 5 -15 9 100
11 6 4 8 2 6 -5 9 0 100 8 1
输出样例:3 5 -15 6 4 1
我的想法是先拿A数组去跟B数组比一遍,然后再反过来比一遍,把不是共有的数放到C数组中,最后消去数组C中相同的数输出,这样输出的就不会存在同一个数了
拓展资料
编译/执行 C 程序
实例
实例解析:
所有的 C 语言程序都需要包含 main() 函数。 代码从 main() 函数开始执行。
/* ... */ 用于注释说明。
stdio.h 是一个头文件 (标准输入输出头文件) , #include 是一个预处理命令,用来引入头文件。 当编译器遇到 printf() 函数时,如果没有找到 stdio.h 头文件,会发生编译错误。
return 0; 语句用于表示退出程序。
运行 C 程序,main(int argc, char *argv[]) 函数传参,argc 为参数个数,argv 是字符串数组, 下标从 0 开始,第一个存放的是可执行程序的文件名字,然后依次存放传入的参数,举个例子 HelloWorld.c :
当是 int main() 时,main() 的返回值是 int 类型,所以是 return 0; 现在 C 标准里规定 main() 返回值必须为 int,所以必须写成是 int main()。
for(int i = 0;i < n.length – 1;i++){ //循环开始元素
for(int j = i + 1;j < n.length;j++){ //循环后续所有元素
//如果相等,则重复
if(n[i] != n[j]){
不想等,则输出n[i]
#include<stdio.h>
void main()
{
int a[40];
int b[40];
int c[80];
int n,m,count=0,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",a+i);
}
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d",b+i);
}
for(i=0;i<n;i++) //找出a数组中与b数组不同的数存入数组c
{
for(j=0;j<m;j++)
{
if(a[i] == b[j])
{
break;
}
}
if(j == m)
{
c[count] = a[i];
count++;
}
}
for(i=0;i<m;i++) //找出b数组中与a数组不同的数存入数组c
{
for(j=0;j<n;j++)
{
if(b[i] == a[j])
{
break;
}
}
if(j == n)
{
c[count] = b[i];
count++;
}
}
printf("%d ",count);
for(i=0;i<count;i++)
{
printf("%d ",c[i]);
}
}
思路:
第一,数组定义只需要三个,num1[20],num2[20],num3[20]。
第二,循环变量用完就扔,没必要定义那么多,i,j足够。
第三,num1中的元素取出来与num2的一一比较,如果相等则存入num3,你的第三个循环写的就是,只是条件要改,if(num1[a]==num2[b]),把num1[a]存入num3,而且count也是没用的,题目要求只要你输出重复数字没让你计数。
第四,将num3中的不重复数字输出,循环代码如下。
for(int i = 0;i < n.length – 1;i++){ //循环开始元素
for(int j = i + 1;j < n.length;j++){ //循环后续所有元素
//如果相等,则重复
if(n[i] != n[j]){
不想等,则输出n[i]
拓展资料
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
正确代码如下:
#include <stdio.h>
int main()
{
int m;
while(scanf("%d",&m)!=EOF)
{
int a[20],i;
for(i=0;i<m;i++)
scanf("%d",&a[i]);
int n;
scanf("%d",&n);
int b[20];
for(i=0;i<n;i++)
scanf("%d",&b[i]);
int j;
int c[20],k;
k=0;
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
if(a[i]==b[j])
break;
}
if(j>=n)
{
c[k]=a[i];
k++;
}
}
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
if(b[i]==a[j])
break;
}
if(j>=m)
{
c[k]=b[i];
k++;
}
}
printf("%d",c[0]);
for(i=1;i<k;i++)
{
for(j=0;j<i;j++)
{
if(c[i]==c[j])
break;
}
if(j>=i)
printf(" %d",c[i]);
}
printf("\n");
}
return 0;
}
源代码截图:
参考资料:百度百科-网页链接
扩展资料:
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。[1] 目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。
其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
答主的程序命名方式繁杂,变量符过多
直接暴力破解即可
#include <stdio.h>
int main(){
int a[20],b[20],c[100],m,n,i,j,e,h,k;
k=0;
scanf("%d",&m);
for(i=0;i<m;i++)
scanf("%d",&a[i]);
scanf("%d",&n);
for(j=0;j<n;j++)
scanf("%d",&b[j]);
//先比较同一数组中是否有相同的数
for(i=0;i<m;i++){
e=1;
for(j=0;j<i;j++)
if(a[i]==a[j])
e=0;
if(e) {
h=1;
for(j=0;j<n;j++)
if(a[i]==b[j]){
h=0;
break;
}
if(h)
c[k++]=a[i];
}
}
for(i=0;i<n;i++){
e=1;
for(j=0;j<i;j++)
if(b[i]==b[j])
e=0;
if(e){
h=1;
for(j=0;j<m;j++)
if(b[i]==a[j]){
h=0;
break;
}
if(h)
c[k++]=b[i];
}
}
printf("%d",c[0]);
for(i=1;i<k;i++){
printf(" %d",c[i]);
}
return 0;
}
运行结果如图所示
我不知道怎么改,自己编了一个,你看看吧
#include<stdio.h>
void main()
{
int a[40];
int b[40];
int c[80];
int n,m,count=0,i,j;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d",a+i);
}
scanf("%d",&m);
for(i=0;i<m;i++)
{
scanf("%d",b+i);
}
for(i=0;i<n;i++) //找出a数组中与b数组不同的数存入数组c
{
for(j=0;j<m;j++)
{
if(a[i] == b[j])
{
break;
}
}
if(j == m)
{
c[count] = a[i];
count++;
}
}
for(i=0;i<m;i++) //找出b数组中与a数组不同的数存入数组c
{
for(j=0;j<n;j++)
{
if(b[i] == a[j])
{
break;
}
}
if(j == n)
{
c[count] = b[i];
count++;
}
}
printf("%d ",count);
for(i=0;i<count;i++)
{
printf("%d ",c[i]);
}
}