您的位置:首页 > 其它

20150601数组练习

2015-06-09 19:34 246 查看
assistant_main.h文件:

//
// assistant_main.h
// IOS150601_Exercise
//
// Created by
Peng Junlong on 15/6/2.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#ifndef __IOS150601_Exercise__assistant_main__
#define __IOS150601_Exercise__assistant_main__

#include <stdio.h>
void mostTimes();
void valueTransfer(int a, int c);
void addressTransfer(int *a,int *b);

//静态局部变量
int localVariable(int a);

#endif /* defined(__IOS150601_Exercise__assistant_main__) */

assistant_main.c文件:

//
// assistant_main.c
// IOS150601_Exercise
//
// Created by
Peng Junlong on 15/6/2.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#include "assistant_main.h"

//4..输入10个数,找出出现次数最多的数 (如果多个并列,则按数字出现顺序分别输出)

//比如:
//输入:1 2 2 3 4 5 6 7 8 9
//输出:2

//数据结构: 定义一个整型数组 int count[10] 存储每个元素的个数, 开始时每个元素个数初始化为1

int ab = 10;

void mostTimes()
{
int a[10];
int count[10];
for (int i=0; i<10; i++) {
scanf("%d",&a[i]);
count[i] = 1;
}
for (int i=0; i<10; i++) {
if (count[i]) {
for (int j=i+1; j<10; j++) {
if (a[i] == a[j]) {
count[i]++;
count[j] = 0;
}
}
}
}

int max = count[0];
for (int i=1; i<10; i++) {
if (max < count[i]) {
max = count[i];
}
}
for (int i=0; i<10; i++) {
if (max == count[i]) {
printf("%3d",a[i]);
}
}
}

void valueTransfer(int a ,int b)
{
int temp;
temp = a;
a = b;
b = temp;
printf("a = %d\nb = %d\n",a,b);
}

void addressTransfer(int *a,int *b)
{
int p;
p = *b;
*b = *a;
*a = p;
printf("a = %d\nb = %d\n",*a,*b);
}

int localVariable(int a)
{
int b = 0;
int static c = 3;
b = b +1;
c = c+1;
return (a+b+c);
}

main.c文件
//
// main.c
// IOS150601_Exercise
// 数组练习
// Created by
Peng Junlong on 15/6/1.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include "assistant_main.h"

extern ab;
int main(int arg,const char *argv[])
{
int x = 1;
int y = 2;
int x1 = 3;
int y1 = 4;
//mostTimes();
valueTransfer(x,y);
addressTransfer(&x1,&y1);
printf("x = %d\ny = %d\nx1 = %d\ny1 = %d\n",x,y,x1,y1);
int a = 2;
int i=0;
for (i=0; i<3; i++) {
printf("%d\n",localVariable(a));
}
printf("%d\n",ab);
return 0;
}

//3.给定某个拥有 5 个元素的字符数组,数组的成员都有阿拉伯字符构成,试着将该数
//组转换成一个整数,比如字符数组的内容是:{‘1’,’2’,’3’,’3’,’2’} 则将被转换成 12332。
//int main(int argc, const char * argv[]) {
// char char_str[10] = {'1','2','3','4','5','6','7','8','9','0'};
//// for (int i=0; i<10; i++) {
//// scanf("%c",&char_str[i]);
//// }
//
// for (int i=0; i<10; i++) {
// printf("%d",char_str[i]-'0');
// }
// return 0;
//}

//4.给定一个完全由英文字符构成的数组,将数组中的小写字母转换成大写字母,大写

//字母转换成小写字母并输出。例如“abcGGG”转化为“ABCggg”。
//int main(int arg ,const char *argv[])
//{
// char engChar[20];
// scanf("%s",engChar);
// for (int i=0; engChar[i]!='\0'; i++) {
// if (engChar[i]>='a' && engChar[i]<='z') {
// engChar[i] = engChar[i]-('a'-'A');
// }
// if (engChar[i]>='A' && engChar[i]<='A') {
// engChar[i] = engChar[i]+('a'-'A');
// }
// }
// for (int i=0; engChar[i] !='\0'; i++) {
// printf("%c",engChar[i]);
// }
// return 0;
//}

//5.给定一个完全由英文字符构成的数组,将数组中下标为偶数的字符都转换为大写(如

//果原来是大写则不变)。
//int main(int arg,const char *argv[])
//{
// char engChar[20];
// scanf("%s",engChar);
// for (int i=0; engChar[i]!='\0'; i++) {
// if (engChar[i]>='a' && engChar[i]<='z') {
// engChar[i] = engChar[i]-('a'-'A');
// }
// }
// for (int i=0; engChar[i] !='\0'; i++) {
// printf("%c",engChar[i]);
// }
// return 0;
//}

//6.给一个完全由英文字符构成的字符数组加密,加密原则如下,除了字符‘Z’和‘z’
//之外,每个字符变成 ASCII 码值比它大 1 的字符,也就是‘A’变成‘B’。‘Z’或
//者‘z’转化为‘A’或者‘a’。
//int main(int arg,const char *argv[])
//{
// char engChar[20];
// scanf("%s",engChar);
// for (int i=0; engChar[i]!='\0'; i++) {
// if (engChar[i] == 'Z' || engChar[i] == 'z') {
// engChar[i] = engChar[i]-25;
// }
// else
// {
// engChar[i] = engChar[i]+1;
// }
// }
// for (int i=0; engChar[i] !='\0'; i++) {
// printf("%c",engChar[i]);
// }
// return 0;
//}

//7.计算某个由英文、数字以及标点符号构成的数组的总宽度,其中英文字符的宽度为
//1cm,数字宽度为 0.5cm、标点符号宽度为 0.8cm。
//int main(int arg , const char *argv[])
//{
// char engChar[20];
// float totalLength = 0;
// scanf("%s",engChar);
// for (int i=0; engChar[i]!='\0'; i++) {
// if ((engChar[i] >= 'a' && engChar[i] <= 'z')||(engChar[i] >= 'A' && engChar[i] <= 'Z')) {
// totalLength += 1;
// }
// else if(engChar[i] >= '0' && engChar[i] <= '9')
// {
// totalLength += 0.5;
// }
// else
// {
// totalLength += 0.8;
// }
// }
// printf("%.3f",totalLength);
//
// return 0;
//}

//8.接上题,如果规定行的宽度为 10cm,将某个字符长度超过 50 的字符串截断,恰好 使 10cm 宽的行能容纳。输出这个被截断的子数组。
//int main(int arg , const char *argv[])
//{
// char engChar[100];
// float totalLength = 0;
// scanf("%s",engChar);
// for (int i=0; engChar[i]!='\0'; i++) {
// if ((engChar[i] >= 'a' && engChar[i] <= 'z')||(engChar[i] >= 'A' && engChar[i] <= 'Z')) {
// totalLength += 1;
//
// }
// else if(engChar[i] >= '0' && engChar[i] <= '9')
// {
// totalLength += 0.5;
// }
// else
// {
// totalLength += 0.8;
// }
// if (totalLength >10.0) {
// engChar[i] = '\0';
// break;
// }
// }
// printf("%s",engChar);
// printf("\n%.3f",totalLength);
//
// return 0;
//}

//9.给定某个整型数组,计算该数组所有偶数的和。
//int main(int arg , const char *argv[])
//{
// int int_Array[10];
// int sum = 0;
// for (int i=0; i<10; i++) {
// scanf("%d",&int_Array[i]);
// }
// for (int i=0; i<10; i++) {
// if (int_Array[i]%2 == 0) {
// sum+=int_Array[i];
// }
// }
// printf("Sum=%d\n",sum);
// return 0;
//}

//10.给某个整型数组赋值,赋值规律如下,下标能被 3 整除的都赋值为 1,能被 5 整除

//的都赋值为 2,能被 7 整除的都赋值为 3,能被 3、5、7 任意两个或者 3 个都能整除

//的数赋值为 8,其余都赋值为 0.

//int main(int arg,const char *argv[])
//{
// int int_Array[10];
// for (int i=0; i<10; i++) {
// if (i%3 == 0) {
// int_Array[i] = 1;
// if (i%5 == 0 || i%7 == 0) {
// int_Array[i] = 8;
// }
// }
// else if(i%5 == 0)
// {
// int_Array[i] = 2;
// if (i%3 == 0 || i%7 == 0) {
// int_Array[i] = 8;
// }
// }
// else if(i%7 == 0)
// {
// int_Array[i] = 3;
// if (i%3 == 0 || i%5 == 0) {
// int_Array[i] = 8;
// }
// }
// else
// {
// int_Array[i] = 0;
// }
// }
// for (int i=0; i<10; i++) {
// printf("%d ",int_Array[i]);
// }
// return 0;
//}

//11.通过终端输入 10 个整数并将其保存在一个整型数组中,数字保存在数组中的顺序与

//下标正好相反,也就是第一个被输入的数放在数组最后一个元素中,最后一个输入

//的数字放到第一个元素中。
//int main(int arg ,const char *argv[])
//{
// int int_Array[10];
// for (int i=9; i>=0; i--) {
// scanf("%d",&int_Array[i]);
// }
// for (int i=0; i<10; i++) {
// printf("%d ",int_Array[i]);
// }
// return 0;
//}

//12.通过终端输入 10 个整数,计算 10 个整数中所有能被 3 整除的数的合。
//int main(int arg , const char *argv[])
//{
// int int_Array[10];
// int sum = 0;
// for (int i=0; i<10; i++) {
// scanf("%d",&int_Array[i]);
// }
// for (int i=0; i<10; i++) {
// if (int_Array[i]%3 == 0) {
// sum+=int_Array[i];
// }
// }
// printf("Sum=%d\n",sum);
// return 0;
//}

//13.给定一个 5 个元素构成的整型数组,每个元素的值都在 0-9 之间,按照位置将其组
//成一个 5 位数并输出,例如 int
a[5] = {1,2,2,3,7};则输出 73221。
//int main(int arg , const char *argv[])
//{
// int int_Array[5];
// int mul;
// int sum =0;
// for (int i=0; i<5; i++) {
// scanf("%d",&int_Array[i]);
// }
// for (int i=4; i>=0; i--) {
// mul = 1;
// for (int j = i; j>0; j--) {
// mul*=10;
// }
// sum+=int_Array[i]*mul;
// }
// printf("Result=%d",sum);
// return 0;
//}

//14.给定 2 个大小一样的整型数组,将某个数组作为源数组,另一个作为目的数组,然

//后将源数组的内容拷贝到目的数组。
//int main(int arg,const char *argv[])
//{
// int int_ArrayS[10];
// int int_ArrayD[10];
// for (int i=0; i<10; i++) {
// scanf("%d",&int_ArrayS[i]);
// }
// for (int i=0; i<10; i++) {
// int_ArrayD[i] = int_ArrayS[i];
// }
// for (int i=0; i<10; i++) {
// printf("int_ArrayD[%d]=%d ",i,int_ArrayD[i]);
// }
// return 0;
//}

//16.给定一个整型数组,从第 1 个元素开始将相邻的两个元素分别相互交换。交换完后,

//第 1 个元素将变成最后一个元素,其余元素都前进一位。
//a[5]={2,3,4,5,1}
//int main(int arg,const char *argv[])
//{
// int int_ArrayS[10];
// int temp;
// for (int i=0; i<10; i++) {
// scanf("%d",&int_ArrayS[i]);
// }
// for (int i=0; i<9; i++) {
// temp = int_ArrayS[i];
// int_ArrayS[i] = int_ArrayS[i+1];
// int_ArrayS[i+1] = temp;
// }
// for (int i=0; i<10; i++) {
// printf("int_ArrayS[%d]=%d ",i,int_ArrayS[i]);
// }
// return 0;
//}

//17.给定一个有 10 个整形数的元素,将前 5 个元素跟后 5 个元素做整体交换,比如
//{1,1,1,1,1,2,3,2,2,2}->{2,3,2,2,2,1,1,1,1,1}。
//int main(int arg,const char *argv[])
//{
// int int_ArrayS[10];
// int temp;
// for (int i=0; i<10; i++) {
// scanf("%d",&int_ArrayS[i]);
// }
// for (int i=0; i<5; i++) {
// temp = int_ArrayS[i];
// int_ArrayS[i] = int_ArrayS[i+5];
// int_ArrayS[i+5] = temp;
// }
// for (int i=0; i<10; i++) {
// printf("%d ",int_ArrayS[i]);
// }
// return 0;
//}

//18.判断一个整型数组是否是对称数组,例如{1,2,3,3,2,1}和{1,6,8,1,8,6,1}都是对称数组。
//{1,1,1,1,1,2,3,2,2,2}->{2,3,2,2,2,1,1,1,1,1}。
//int main(int arg,const char *argv[])
//{
// int int_ArrayS[10];
// for (int i=0; i<10; i++) {
// scanf("%d",&int_ArrayS[i]);
// }
// int i=0;
// int j=9;
// for (i=0,j=9; i<j; i++,j--) {
// if (int_ArrayS[i] != int_ArrayS[j]) {
// break;
// }
// }
// if (i >= j) {
// printf("是对称的\n");
// }
// else
// {
// printf("不是对称的\n");
// }
// return 0;
//}

//19.给定两个大小一样的整型数组,交换这两个数组的内容。
//int main(int arg,const char *argv[])
//{
// int int_Array1[10];
// int int_Array2[10];
// int temp;
// printf("请输入数组1的值:");
// for (int i=0; i<10; i++) {
// scanf("%d",&int_Array1[i]);
// }
// printf("请输入数组2的值:");
// for (int i=0; i<10; i++) {
// scanf("%d",&int_Array2[i]);
// }
// for (int i=0; i<10; i++) {
// temp = int_Array2[i];
// int_Array2[i] = int_Array1[i];
// int_Array1[i] = temp;
// }
// for (int i=0; i<10; i++) {
// printf("int_Array1[%d]=%d\n",i,int_Array1[i]);
// }
// for (int i=0; i<10; i++) {
// printf("int_Array2[%d]=%d\n",i,int_Array2[i]);
// }
// return 0;
//}

//20.给定两个大小一样的整型数组,将两个数组中下标一样的元素两两相加,相加后的

//结果作为这两个数组对应下标的新值,也就是操作完毕后两个数组的内容完全相同。
//int main(int arg,const char *argv[])
//{
// int int_Array1[10];
// int int_Array2[10];
// int temp;
// printf("请输入数组1的值:");
// for (int i=0; i<10; i++) {
// scanf("%d",&int_Array1[i]);
// }
// printf("请输入数组2的值:");
// for (int i=0; i<10; i++) {
// scanf("%d",&int_Array2[i]);
// }
// for (int i=0; i<10; i++) {
// temp = int_Array1[i]+int_Array2[i];
// int_Array2[i] = temp;
// int_Array1[i] = temp;
// }
// printf("int_Array1=");
// for (int i=0; i<10; i++) {
// printf("%d ",int_Array1[i]);
// }
// printf("\nint_Array2=");
// for (int i=0; i<10; i++) {
// printf("%d ",int_Array2[i]);
// }
// return 0;
//}

//21.给定一个能容纳 10 个元素的整型数组,现有 9 个元素,现在第 5 个元素的位置插入

//一个数字 88,后面的数字顺序后移。
//int main(int arg,const char *argv[])
//{
// int int_Array1[10]={};
// int n;
// int i;
// printf("请输入数组1的值:");
// for (int i=0; i<9; i++) {
// scanf("%d",&int_Array1[i]);
// }
// printf("请输入要插入的值:");
// scanf("%d",&n);
// for (i=8; i>=4; i--) {
// int_Array1[i+1] = int_Array1[i];
// }
// int_Array1[i+1] = n;
// printf("int_Array1=");
// for (int i=0; i<10; i++) {
// printf("%d ",int_Array1[i]);
// }
// return 0;
//}

//22.给定一个 10 个元素的整型数组,现在将第 2 个元素删除,后面的数组顺序前移。
//int main(int arg,const char *argv[])
//{
// int int_Array1[10]={};
// int n;
// int i;
// printf("请输入数组1的值:");
// for (int i=0; i<10; i++) {
// scanf("%d",&int_Array1[i]);
// }
// printf("请输入要删除第几个值的下标:");
// scanf("%d",&n);
// for (i=n; i<10; i++) {
// int_Array1[i] = int_Array1[i+1];
// }
// printf("int_Array1=");
// for (int i=0; i<9; i++) {
// printf("%d ",int_Array1[i]);
// }
// return 0;
//}

//23.给定一个有 100 个元素的数组,查询数组中是否有元素的值等于某个数 n。
//int main(int arg,const char *argv[])
//{
// int int_Array1[100]={};
// int n;
// int i;
// int k=0;
// srand((unsigned)time(NULL));
// printf("100个随机数如下:");
// for (int i=0; i<100; i++) {
// int_Array1[i] = rand()%100;
// }
// for (int i=0; i<100; i++) {
// if (i % 10 ==0) {
// printf("\n");
// }
// printf("%-3d",int_Array1[i]);
// }
// printf("\n请输入一个数:");
// scanf("%d",&n);
// for (i=0; i<100; i++) {
// if(int_Array1[i] == n){
// printf("int_Array1[%d]=%d\n",i,int_Array1[i]);
// k = 1;
// }
// }
// if(!k)
// {
// printf("数组中没有%d:",n);
// }
// return 0;
//}

//24.给定一个整型数组,求该数组元素中最大值的下标。
//int main(int arg,const char *argv[])
//{
// int int_Array1[10]={};
// int max;
// int i;
// int index;
// srand((unsigned)time(NULL));
// printf("10个随机数如下:");
// for (int i=0; i<10; i++) {
// int_Array1[i] = rand()%100;
// printf("%-3d",int_Array1[i]);
// }
// max = int_Array1[0];
// index = 0;
// for (i=1; i<10; i++) {
// if (int_Array1[i] >max) {
// max = int_Array1[i];
// index = i;
// }
// }
// printf("\n最大值是int_Array1[%d] = %d",index,max);
// return 0;
//}

//25.给定一个整型数组,求该数组中第二大的数的下标。
//int main(int arg,const char *argv[])
//{
// int int_Array1[10]={};
// int firstmax;
// int secondmax;
// int i;
// int index1;
// int index2;
// srand((unsigned)time(NULL));
// printf("10个随机数如下:");
// for (int i=0; i<10; i++) {
// int_Array1[i] = rand()%100;
// printf("%-3d",int_Array1[i]);
// }
// firstmax = 0;
// secondmax = 0;
// index1 = 0;
// index2 = 0;
// for (i=1; i<10; i++) {
// if (int_Array1[i] > firstmax) {
// secondmax = firstmax;
// index2 = index1;
// firstmax = int_Array1[i];
// index1 = i;
// }else if(int_Array1[i] > secondmax){
// secondmax = int_Array1[i];
// index2 = i;
// }
// }
// printf("\n最大值是int_Array1[%d] = %d\n第二大值是int_Array1[%d]
= %d",index1,firstmax,index2,secondmax);
// return 0;
//}

//26.给定一个整型数组,求该数组中数值小于 10 的元素的个数。
//int main(int arg,const char *argv[])
//{
// int int_Array1[10]={};
// int n=0;
// int i;
//
// srand((unsigned)time(NULL));
// printf("10个随机数如下:");
// for (int i=0; i<10; i++) {
// int_Array1[i] = rand()%100;
// printf("%-3d",int_Array1[i]);
// }
//
// for (i=0; i<10; i++) {
// if (int_Array1[i] < 10) {
// n++;
// }
// }
// printf("\n小于10的个数有%d",n);
// return 0;
//}

//27.给定一个整型数组,计算大于该数组平均值的元素的个数。
//int main(int arg,const char *argv[])
//{
// int int_Array1[10]={};
// int n=0;
// int sum = 0;
// int i;
//
// srand((unsigned)time(NULL));
// printf("10个随机数如下:");
// for (int i=0; i<10; i++) {
// int_Array1[i] = rand()%100;
// sum += int_Array1[i];
// printf("%-3d",int_Array1[i]);
// }
//
// for (i=0; i<10; i++) {
// if (int_Array1[i] > sum/10) {
// n++;
// }
// }
// printf("\n大于平均值%d的个数有%d",sum/10,n);
// return 0;
//}

//28.给定一个整型数组,找到数组中的最小值,并将其放到数组的首元素中,原来首元

//素的内容放到最小值所在的元素中。
//int main(int arg,const char *argv[])
//{
// int int_Array1[10]={};
// int temp;
// int min;
// int min_index;
// int i;
//
// srand((unsigned)time(NULL));
// printf("10个随机数如下:");
// for (int i=0; i<10; i++) {
// int_Array1[i] = rand()%100;
// printf("%-3d",int_Array1[i]);
// }
// min = int_Array1[0];
// min_index = 0;
// for (i=0; i<10; i++) {
// if (int_Array1[i] < min) {
// min = int_Array1[i];
// min_index = i;
// }
// }
// if(min_index != 0)
// {
// temp = int_Array1[min_index];
// int_Array1[min_index] = int_Array1[0];
// int_Array1[0] = temp;
// }
// printf("\n");
// for (int i=0; i<10; i++) {
// printf("%-3d",int_Array1[i]);
// }
// return 0;
//}

//41.编写函数将一个n*n矩阵转置,例如:(****)
//1 2 3 4 1 5 3 4
//5 6 7 8 -> 2 6 2 7
//3 2 5 9 3 7 5 2
//4 7 2 3 4 8 9 3
//*/
//int main(int arg,const char *argv[]){
// int a[][3] = {1,2,3,4,5,6};
// int b[3][2];
// printf("Array a:\n");
// for (int i=0; i<=1; i++) {
// for (int j=0; j<=2; j++) {
// printf("%2d",a[i][j]);
// b[j][i] = a[i][j];
// }
// printf("\n");
// }
//
// printf("Array b:\n");
// for (int i=0; i<=2; i++) {
// for (int j=0; j<=1; j++) {
// printf("%2d",b[i][j]);
// }
// printf("\n");
// }
//}

//42.

//// 杨辉三角 输入n打印一个n行的杨辉三角
//1
//1 1
//1 2 1
//1 3 3 1
//1 4 6 4 1
//1 5 10 10 5 1
//1 6 15 20 15 6 1
//int main(int arg,const char *argv[]){
// int data[10][10];
// for (int i=0; i<10; i++) {
// data[i][i] = 1;
// data[i][0] = 1;
// }
//
// for (int i=2; i<10; i++) {
// for (int j=1; j<i; j++) {
// data[i][j] = data[i-1][j-1]+data[i-1][j];
// }
// }
// for (int i=0; i<10; i++) {
// for (int j=0; j<=i; j++) {
// printf("%d ",data[i][j]);
// }
// printf("\n");
// }
// return 0;
//}

//43.围圈报数

//有n个人围成一圈,顺序排号。从第一个人开始报数(从1到m报数),凡报到m的人退出圈子,问最后留下的是原来第几号的哪位。

//45.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
//int main(int arg , const char *argv[])
//{
// int day,x1,x2;
// day = 9;
// x2 = 1;
// x1 = 0;
// while(day > 0)
// {
// x1 = (x2+1)*2;
// x2 = x1;
// day--;
// }
// printf("桃的数量:%d\n",x1);

//}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: