#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#if(0) // 全部的代码我只想说一句(看答案之后我在思考我要不要学习编程了)
// 0 编写一个程序,接收用户的输入,并将前 9 个字符以正方形矩阵(3 * 3)的方式输出
int main(void){
char (*p)[3] ; //声明一个数组指针
int i,n=0;
char str[255]; //接收用户输入的任意东西
printf("请输入一穿内容:\n");
scanf("%s",str);
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
*(*(p+i)+j) = str[n]; // 对数组指针进行赋值
n++;
}
}
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
printf("%c ", *(*(p+i)+j)); //对数组指针进行打印输出
}
printf("\n");
}
system("pause");
}
#endif
#if(0)
// 1 要求程序自动计算用户输入的字符,并以最大的正方形矩阵输出;
int main(){
char str[255];
int length , n=1,m=0;
printf("请输入一段内容");
scanf("%s",str); //获取输入的任意字符串
length = strlen(str); // 获取输入的字符串的长度
while ((n*n)<length) //得到最适合输出的方针数组
{
n++;
}
char (*p)[n-1]; // 声明数组
for (int i = 0; i < n-1; i++)
{
for (int j = 0; j < n-1; j++)
{
*(*(p+i)+j) = str[m]; //对二维数组的赋值
m++;
}
}
// 打印二维数组的内容
for (int i = 0; i < n-1; i++)
{
for (int j = 0; j < n-1; j++)
{
printf("%c ",*(*(p+i)+j)); //对数组指针的打印
}
printf("\n");
}
system("pause");
}
#endif
#if(0)
// 2用户输入待查询年月份(输入格式:2015-03),输出该月份的 PM2.5 值。 (个人版初版)
int main(){
float arr[3][12]={
{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.3, 35.5, 58.7, 49.6, 55.5},
{59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38.5, 41.5, 44.7, 38.1, 41.5},
{34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34.3, 0.0, 0.0, 0.0, 0.0}
};
float (*p)[12] ;
p = arr; //数组指针的初始化
int year , month;
printf("请输入带查询的日期(年-月):");
scanf("%d-%d",&year,&month); // 接收用户的输入 并判断 出结果
switch (year)
{
case 2014:
// printf("2014");
printf("%d年%d月PM2.5的值为:%.2f\n",year,month,**(p+(month-1)));
break;
case 2015:
// printf("2015");
printf("%d年%d月PM2.5的值为:%.2f\n",year,month,*(*(p+1)+(month-1)));
break;
case 2016:
printf("%d年%d月PM2.5的值为:%.2f\n",year,month,*(*(p+2)+(month-1)));
default:
break;
}
system("pause");
}
#endif
#if(0)
// 2用户输入待查询年月份(输入格式:2015-03),输出该月份的 PM2.5 值。 (个人版初版)
int main(){
float arr[3][12]={
{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.3, 35.5, 58.7, 49.6, 55.5},
{59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38.5, 41.5, 44.7, 38.1, 41.5},
{34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34.3, 0.0, 0.0, 0.0, 0.0}
};
float (*p)[12] ;
p = arr;
int year , month;
printf("请输入带查询的日期(年-月):");
scanf("%d-%d",&year,&month);
printf("%d年%d月PM2.5的值为:%.2f\n",year,month,*(*(p+(year-2014))+(month-1))); //不需要判断年份,年份-2014 得到的值为数组的偏移量
system("pause");
}
#endif
#if(0)
// 将下列数据打印为横向直方图 无大小值 (没看答案之前的代码,真的是太可爱了)
int main(){
float arr[3][12]={
{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.3, 35.5, 58.7, 49.6, 55.5},
{59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38.5, 41.5, 44.7, 38.1, 41.5},
{34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34.3, 0.0, 0.0, 0.0, 0.0}
};
float (*p)[12] = arr;
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 12; j++)
{
if(i==0){ //蠢到不想解释
if(*(*(p+i)+j)==0 ){
continue;
}else
{
printf("2014年 %2d月:",j);
for (int m = 0; m < *(*(p+i)+j); m++)
{
printf("*");
}
printf("\n");
}
}else if(i==1){
if(*(*(p+i)+j)==0 ){
continue;
}else
{
printf("2015年 %2d月:",j);
for (int m = 0; m < *(*(p+i)+j); m++)
{
printf("*");
}
printf("\n");
}
}else
{
if(*(*(p+i)+j)==0 ){
continue;
}else
{
printf("2016年 %2d月:",j);
for (int m = 0; m < *(*(p+i)+j); m++)
{
printf("*");
}
printf("\n");
}
}
}
}
system("pause");
}
#endif
#if(1)
//4 将下列数据打印为横向直方图
int main(){
float arr[3][12]={
{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.3, 35.5, 58.7, 49.6, 55.5},
{59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38.5, 41.5, 44.7, 38.1, 41.5},
{34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34.3, 0.0, 0.0, 0.0, 0.0}
};
float (*p)[12] = arr; //数组指针的初始化
float MAX ,MIN;
MAX = MIN =arr[1][0];
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 12; j++)
{
if(*(*(p+i)+j)==0 ){ //当值为0的时候 不进行任何操作
continue;
}else
{
if(*(*(p+i)+j) > MAX){ // 大小值得 判断
MAX = *(*(p+i)+j);
}
if(*(*(p+i)+j) < MIN){
MIN = *(*(p+i)+j);
}
}
}
}
printf("最小值:%.2f,最大值%.2f\n",MAX,MIN);
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 12; j++)
{
if(*(*(p+i)+j)==0 ){ //当值为0的时候 不进行任何操作
continue;
}else
{
printf("%d年 %2d月:",i+2014,j+1); // 打印年月
for (int m = 0; m < *(*(p+i)+j); m++) // 打印 *
{
printf("*");
}
printf("\n");
}
}
}
system("pause");
}
#endif