7-1 查找整数(10 分)
#include<stdio.h>
int main(void){
int n,x;
scanf("%d%d",&n,&x);
int num[20],index=-1;
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
if(x==num[i]){
index=i;
}
}
if(index!=-1){
printf("%d",index);
}else{
printf("Not Found");
}
return 0;
}
7-2 将数组中的数逆序存放(20 分)
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int num[n];
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
}
for(int i=0;i<n/2;i++){
int temp=num[i];
num[i]=num[n-i-1];
num[n-i-1]=temp;
}
for(int i=0;i<n;i++){
if(i==0){
printf("%d",num[i]);
}else{
printf(" %d",num[i]);
}
}
return 0;
}
7-3 选择法排序(20 分)
#include <stdio.h>
int main()
{
int n;
scanf("%d",&n);
int num[n];
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
}
for(int i=0;i<n;i++){
for(int j=i+1;j<n;j++){
if(num[i]<num[j]){
int temp=num[i];
num[i]=num[j];
num[j]=temp;
}
}
}
for(int i=0;i<n;i++){
if(i==0){
printf("%d",num[i]);
}else{
printf(" %d",num[i]);
}
}
return 0;
}
7-4 交换最小值和最大值(15 分)
#include <stdio.h>
int main()
{
int n,min,minad=0,max,maxad=0;
scanf("%d",&n);
int num[n];
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
if(i==0){
min=num[0];
max=num[0];
}
if(min>num[i]){
min=num[i];
minad=i;
}
if(max<num[i]){
max=num[i];
maxad=i;
}
}
int temp2=num[minad];
num[minad]=num[0];
num[0]=temp2;
if(maxad==0){
maxad=minad;
}
int temp1=num[maxad];
num[maxad]=num[n-1];
num[n-1]=temp1;
for(int i=0;i<n;i++){
printf("%d ",num[i]);
}
return 0;
}
7-5 简化的插入排序(15 分)
#include <stdio.h>
int main()
{
int n,num1,ad=0;
scanf("%d",&n);
int num[n+1];
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
}
scanf("%d",&num1);
for(int i=0;i<n;i++){
if(num1>=num[i]&&num1<=num[i+1]){
ad=i+1;
}
}
for(int i=n;i>ad;i--){
num[i]=num[i-1];
}
num[ad]=num1;
for(int i=0;i<n+1;i++){
printf("%d ",num[i]);
}
return 0;
}
7-6 求一批整数中出现最多的个位数字(20 分)
#include <stdio.h>
int main()
{
int n,flag=1;
scanf("%d", &n);
int i, a[n], b[10] = {0};
for(i = 0 ; i < n ; i++) {
scanf("%d", &a[i]);
while(a[i] != 0) {
b[a[i] % 10]++;
a[i] /= 10;
}
}
int max=0;
for(i = 0 ; i < 10 ; i++) {
if(max<b[i]){
max=b[i];
}
}
for(i=0;i<10;i++){
if(b[i]==max){
if(flag==1){
printf("%d: %d",max,i);
flag=0;
}else{
printf(" %d",i);
}
}
}
return 0;
}
7-7 输出数组元素(15 分)
#include <stdio.h>
int main()
{
int n,num1,ad=0;
scanf("%d",&n);
int num[n];
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
}
for(int i=1;i<n;i++){
if(i%3==1){
printf("%d",num[i]-num[i-1]);
}else{
printf(" %d",num[i]-num[i-1]);
}
if(i%3==0){
printf("\n");
}
}
return 0;
}
7-8 找出不是两个数组共有的元素(20 分)
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i, j, n1, n2, repeat, existence, index = 0;
scanf("%d", &n1);
int num1[n1];
for (i=0; i<n1; i++) {
scanf("%d", &num1[i]);
}
scanf("%d", &n2);
int num2[n2], num[n1+n2];
for (i=0; i<n2; i++) {
scanf("%d", &num2[i]);
}
for (i=0; i<n1; i++) {
repeat = 0;
for (j=0; j<n2; j++) {
if (num1[i] == num2[j] ) {
repeat = 1;
break;
}
}
if (repeat==0) {
existence = 0;
for (j=0; j<index; j++) {
if (num1[i] == num[j]) {
existence = 1;
break;
}
}
if (existence==0) {
num[index++] = num1[i];
}
}
}
for (i=0; i<n2; i++) {
repeat = 0;
for (j=0; j<n1; j++) {
if (num2[i] == num1[j]) {
repeat = 1;
break;
}
}
if (repeat==0) {
existence = 0;
for (j=0; j<index; j++) {
if (num2[i] == num[j]) {
existence = 1;
break;
}
}
if (existence==0) {
num[index++] = num2[i];
}
}
}
for (i=0; i<index; i++) {
if(i==0){
printf("%d", num[i]);
} else{
printf(" %d", num[i]);
}
}
return 0;
}
方法2:
其实就是装成了一个函数。
#include <stdio.h>
#include <stdlib.h>
int func(int index,int n1,int n2,int num[],int num1[],int num2[]);
int main()
{
int i, j, n1, n2, index = 0;
scanf("%d", &n1);
int num1[n1];
for (i=0; i<n1; i++) {
scanf("%d", &num1[i]);
}
scanf("%d", &n2);
int num2[n2], num[n1+n2];
for (i=0; i<n2; i++) {
scanf("%d", &num2[i]);
}
index=func(index,n1,n2,num,num1,num2);
index=func(index,n2,n1,num,num2,num1);
for (i=0; i<index; i++) {
if(i==0){
printf("%d", num[i]);
} else{
printf(" %d", num[i]);
}
}
return 0;
}
int func(int index,int n1,int n2,int num[],int num1[],int num2[]){
int repeat,existence;
for (int i=0; i<n1; i++) {
repeat = 0;
for (int j=0; j<n2; j++) {
if (num1[i] == num2[j] ) {
repeat = 1;
break;
}
}
if (repeat==0) {
existence = 0;
for (int j=0; j<index; j++) {
if (num1[i] == num[j]) {
existence = 1;
break;
}
}
if (existence==0) {
num[index] = num1[i];
index++;
}
}
}
return index;
}
7-9 求整数序列中出现次数最多的数(15 分)
#include <stdio.h>
int main()
{ int n,count,count1=1,NUM,NUM1;
scanf("%d",&n);
int num[n];
for(int i=0;i<n;i++){
scanf("%d",&num[i]);
}
NUM1=num[0];
for(int i=0;i<n;i++){
NUM=num[i]; count=0;
for(int j=0;j<n;j++){
if(NUM==num[j]){
count++;
}
}
if(count>count1){
count1=count;
NUM1=NUM;
}
}
printf("%d %d",NUM1,count1);
return 0;
}