#include <stdio.h>
#include <string.h>
void measurement(){
char str[4][10]={"England","China","Hong_Kong","Germany"};//声明二维字符串数组
char max;//定义存储最大ascii码数值的变量
int i,j,col,row;//声明四个整形的变量
max=str[0][0];//把二维数组的第一行第一列位置内存赋值给max
row=0;//为int型变量赋初始值
col=0;
for (i=0; i<4; i++) //外层循环遍历三次
for (j=0; j<strlen(str[i]);j++)//内层循环遍历数组元素最大长度个个数
if (str[i][j]>max) {//if语句判断二维数组元素是否大于坐标值的ascii码对应的数值
max=str[i][j];//最大的ascii码值
row=i;//最大ascii码值的行坐标
col=j;//最大ascii码值的列坐标
}
printf("%c,%d,%d\n",max,row,col);//找出二维数组所有元素中最大ascii码值对应的位置
}
void fuzzy3(){//输出数组中最长的那个字符串
char str[4][10]={"England","China","Chicago","Hong_Kong"};//声明一个字符型的二维数组
long i,len;//声明长整形变量i和len
len=strlen(str[0]);//将第一个字符数组的长度赋值给变量len
for (i=1; i<4; i++){//for循环执行三次
if(len<strlen(str[i]))//如果第一个串的长度小于第二个
len=strlen(str[i]);//把较长的那个串重新赋值给变量len
puts(str[i]);
}
printf("%ld\n",len);//输出数组中最长的那个字符串的长度
}
void fuzzy2(){//选出ascii码值最大的字符串数组
char s[10],str[4][10]={"England","China","Chicago","Germany"};//声明一个字符型的一维数组和一个
//字符型的二维数组
int i;//声明一个整形的变量
strcpy(s, str[0]);//将数组str的元素拷贝到数组s里面
for (i=1; i<4; i++)//for循环执行三次
if (strcmp(s, str[i])<0)//如果第一个字符串数组第一个字母ascii码值减去第二个字符串数组
//第一个字母的ascii码值为负值
strcpy(s, str[i]);//将ascii码值较大的字符串数组放到数组s中
printf("%s\n",s);//最终选出ascii码值最大的字符串
}
void fuzzy1(){//对比遍历顺序与遍历平方的区别
int x[7];//声明整形一维数组
int *p,i;//声明指针变量与整形b变量
p=x;//指针指向数组的首地址
for (i=0; i<7; i++) {
*(p+i)=i;//将i的值循环赋值给指针变量
printf("%d,",*(p+i));//输出指针变量的值
}
printf("\n");
for (i=0; i<7; i++) {
*p*=i;//将i的值循环乘入指针变量中
printf("%d,",*p++);//将指针地址后移
}
printf("\n");
}
void fuzzy(){//研究ascii值之间的运算
char *p,s[6];//声明char型指针与一个char型数组
int i,n=0;//声明一个整形变量
p=s;//将指针指向数组的首个地址
//输入字符型的数组元素且自动换行
for(i=0;i<6;i++){
scanf("%s",p);
while (*p) {//当字符型数组元素的值为非零时执行循环
n=n*8+*p-'0';//鸡肋功能
p++;//指针移动地址
}
}
printf("%d\n",n);
}
int main(int argc, const char * argv[]) {
measurement();
fuzzy3();
fuzzy2();
fuzzy1();
fuzzy();
return 0;
}
output:
y,3,6
China
Chicago
Hong_Kong
9
Germany
0,1,2,3,4,5,6,
0,1,4,9,16,25,36,
1 2 3 4 5 6
5349
Program ended with exit code: 0