//
// main.c
// 数组练习
//
// Created by zhangxueming on 15/6/2.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
//
#include <stdio.h>
//#include <stdbool.h>
//7.计算某个由英文、数字以及标点符号构成的数组的总宽度,其中英文字符的宽度为
//1cm,数字宽度为 0.5cm、标点符号宽度为 0.8cm。
//8.接上题,如果规定行的宽度为 10cm,将某个字符长度超过 50 的字符串截断,恰好 使 10cm 宽的行能容纳。输出这个被截断的子数组。
//rtyuiopgfdfgj\0fghjklkjh
float getCharacterWidth(
char ch)
{
if ((ch>=
'A' && ch<=
'Z') || (ch>=
'a' && ch<=
'z')) {
return 1.0;
}
else if(ch>=
'0' && ch<=
'9')
{
return 0.5;
}
else
{
return 0.8;
}
}
//int main(int argc, const char * argv[]) {
// char str[100]={};
// int cnt =0;
// float length = 0.0;
//
// for (int i=0; i<100; i++) {
// scanf("%c",&str[i]);
// if (str[i]=='\n') {
// str[i]='\0';
// break;
// }
// cnt++;
// }
// int i=0;
// for (; i<cnt; i++) {
// length+= getCharacterWidth(str[i]);
// if (length>10.0) {
// str[i]='\0';
// break;
// }
// }
//
//// for (int j=0; j<i; j++) {
//// printf("%c", str[j]);
//// }
// printf("%s\n", str);
// return 0;
//}
//13.给定一个 5 个元素构成的整型数组,每个元素的值都在 0-9 之间,按照位置将其组成一个 5 位数并输出,例如 int a[5] = {1,2,2,3,7};则输出 73221。
//num = 7
//num*10+3 = 73
//num*10+2 = 732
//num*10+2 = 7322
//num*10+1 = 73221
//int main(int argc,const char *argv[])
//{
// int a[5]={};
// int num = 0;
// for (int i=0; i<5; i++) {
// scanf("%d", &a[i]);
// }
// for (int i=4; i>=0; i--) {
// num = num*10+a[i];
// }
// printf("num = %d\n", num);
// return 0;
//}
//18.判断一个整型数组是否是对称数组,例如a[6]={1,2,3,3,2,1}和{1,6,8,1,8,6,1}都是对称数组。
typedef
enum {
false,
//0
true //1
}
bool;
bool isSymmetryArray(
int a[],
int len)
{
for (
int i=
0; i<len/
2; i++
) {
if (a[i]!=a[len-i-
1]) {
return false;
}
}
return true;
}
//int main(int argc,const char *argv[])
//{
// int a[6]={1,2,3,3,2,1};
// printf("%d\n", isSymmetryArray(a,6));
// return 0;
//}
//30.给定一个英文句子,单词之间用 1 个空格分开,求出第 2 个单词的偏移位置。例如
//“Professor du comes from Korea”的偏移位置是 10。
//int main(int argc,const char *argv[])
//{
// char str[100]={};
// scanf("%[^\n]", str);
// //scanf("%[A-Z,a-z,0-9]",str);
// //printf("%s", str);
// int i=0;
// while (str[i]) {
// if (str[i]==' ') {
// break;
// }
// i++;
// }
// printf("%d",i+1);
//
// return 0;
//}
//43.围圈报数
//有n个人围成一圈,顺序排号。从第一个人开始报数(从1到m报数),凡报到m的人退出圈子,问最后留下的是原来第几号的哪位.
//0 0 0 1 0 3
//int main(int argc,const char *argv[])
//{
// int a[100]={};
// int n,m;
// int cnt=0;//统计出局的人数
// int k=0;//报数
// int i=0;
// scanf("%d%d", &n, &m);
// if (n<0||n>100) {
// return -1;
// }
//
// for (i=0; i<n; i++) {
// a[i]=1;
// }
// i=0;
// while (cnt<n-1) {
// if (a[i]) {
// k++;
// if(k==m)
// {
// a[i]=0;
// k=0;
// cnt++;
// }
// }
// i++;
// if (i==n) {//判断边界
// i=0;
// }
// }
// for (i=0; i<n; i++) {
// if (a[i]) {
// printf("%d", i+1);
// break;
// }
// }
// return 0;
//}
//猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
//10 1
//9 (1+1)*2 4
//8 (4+1)*2 10
int func(
int n)
{
if (n==
10) {
return 1;
}
else if(n>
10)
{
return 0;
}
return (func(n+
1)+
1)*
2;
}
//int main(int argc, const char *argv[])
//{
//
// printf("%d\n", func(8));
//
// return 0;
//}
//4..输入10个数,找出出现次数最多的数 (如果多个并列,则按数字出现顺序分别输出)
//比如:a[10]=
//输入:1 2 2 3 4 5 6 7 8 9
//输出:2
//数据结构: 定义一个整型数组 int count[10] 存储每个元素的个数, 开始时每个元素个数初始化为1
//
//算法:
//(1) 利用双层循环, 每一个元素都与后面一个元素比较, 如果两者相同, 则该元素次数+1,
//(2) 以上的算法中两个相同的元素的次数是一样的, 优化如下, 比较两个元素的时候, 如果两者相等, 则该元素次数+1, 后面的元素次数设置为0, 比较的时候再判断这个元素是否已经比较
//
//伪代码:
//
//定义数组保存每个元素次数
//
//使用双层循环遍历数组
//如果当前元素后后面元素相等, 并且后面的元素次数不为0
//当前元素次数+1, 后面的元素次数设置为0
//
//从保存每个元素次数的数组中查找最大的值
//a[10]=
//1 2 2 5 4 5 2 7 5 9
//count[10]
//1 3 0 2 1 0 0 1 1 1
int main(
int argc,
const char *
argv[])
{
int a[
10]=
{};
int cnt[
10]=
{};
for (
int i=
0; i<
10; i++
) {
scanf("%d", &
a[i]);
}
for (
int i=
0;i<
10; i++
) {
cnt[i]=
1;
}
for (
int i=
0; i<
10; i++
) {
if (cnt[i]) {
for (
int j=i+
1; j<
10; j++
) {
if (a[i]==
a[j]) {
cnt[i]++
;
cnt[j]=
0;
}
}
}
}
// for (int i=0; i<10; i++) {
// printf("%d ", cnt[i]);
// }
//查找cnt数组中的最大值
int max = cnt[
0];
for (
int i=
1; i<
10; i++
) {
if (max<
cnt[i]) {
max =
cnt[i];
}
}
//输出数值
for (
int i=
0; i<
10; i++
) {
if (max==
cnt[i]) {
printf("%d ", a[i]);
}
}
return 0;
}
转载于:https://www.cnblogs.com/0515offer/p/4547170.html
相关资源:Java 数组练习
转载请注明原文地址: https://win8.8miu.com/read-1541799.html